diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index ff631612bb..fc85fbbe4b 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -28,4 +28,4 @@ jobs: run: pnpm i - name: Run Prettier - run: pnpm run prettier-check . + run: pnpm run format:check . diff --git a/.gitignore b/.gitignore index 2dc7c3acec..12817b742e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ node_modules target .snfoundry_cache -docs/dist \ No newline at end of file +docs/dist +.DS_Store +**/.DS_Store \ No newline at end of file diff --git a/.knip.json b/.knip.json new file mode 100644 index 0000000000..e30dacb9bb --- /dev/null +++ b/.knip.json @@ -0,0 +1,26 @@ +{ + "ignore": [ + "eliza/**", + + "**/*.js", + "**/vitest**", + "client/apps/game/src/setupTests.ts", + + "client/sdk/packages/eternum/global.d.ts", + + "**/**__test__**/**", + "**/**__tests__**/**", + "client/apps/game/src/setup-tests.ts", + + "client/apps/landing/src/routeTree.gen.ts", + "client/apps/landing/src/components/ui/**", + "client/apps/landing/src/components/typography/**", + "client/apps/landing/src/hooks/gql/**", + + "client/apps/game-docs/vocs.config.ts", + "client/apps/game-docs/docs/**", + "client/apps/game-docs/vocs.config.ts", + + "client/apps/game/src/ui/modules/chat/**" + ] +} diff --git a/client/.prettierignore b/.prettierignore similarity index 67% rename from client/.prettierignore rename to .prettierignore index 7eda7d21a8..9524c6022d 100644 --- a/client/.prettierignore +++ b/.prettierignore @@ -13,3 +13,11 @@ # ignore eliza folder **/eliza + +# ignore draco files +**/draco + +# ignore generated files +**/gql +**/*.graphql +**/*.gen.ts \ No newline at end of file diff --git a/client/.prettierrc b/.prettierrc similarity index 100% rename from client/.prettierrc rename to .prettierrc diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 785c3fe631..77064d9c72 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -47,6 +47,18 @@ Please adhere to the following guidelines when writing code for the Eternum proj - Ensure your code is compatible with the existing codebase and follows the project's coding conventions. - Include tests to verify the functionality of your changes. +### Naming Conventions + +| Entity Type | Naming Convention | Examples | +| ------------------ | ----------------- | ----------------------------------- | +| Files | kebab-case | `user-profile.tsx`, `api-utils.ts` | +| Components | PascalCase | `UserProfile`, `NavigationMenu` | +| Enums | PascalCase | `UserRole`, `PaymentStatus` | +| Types & Interfaces | PascalCase | `UserProfile`, `ApiResponse` | +| Functions | camelCase | `getUserData()`, `calculateTotal()` | +| Variables | camelCase | `userCount`, `totalPrice` | +| Constants | UPPER_SNAKE_CASE | `MAX_USERS`, `API_ENDPOINT` | + ## Review Process Once you submit a pull request, maintainers will review your changes and provide feedback. Your pull request may be diff --git a/bot/discord/src/actors/tick_sender.rs b/bot/discord/src/actors/tick_sender.rs index f88745d8d3..0faca9f2be 100644 --- a/bot/discord/src/actors/tick_sender.rs +++ b/bot/discord/src/actors/tick_sender.rs @@ -45,7 +45,7 @@ impl<'a> TickSender<'a> { Some(Felt::from_hex(TICK_ARMIES_ID).unwrap()), ], pattern_matching: PatternMatching::FixedLen, - models: vec!["s0_eternum-TickConfig".to_string()], + models: vec!["s1_eternum-TickConfig".to_string()], })), limit: 1, offset: 0, @@ -61,7 +61,7 @@ impl<'a> TickSender<'a> { let tick_interval_in_seconds = entity .models .iter() - .find(|model| model.name == "s0_eternum-TickConfig") + .find(|model| model.name == "s1_eternum-TickConfig") .expect("Tick interval in seconds not found") .children .iter() diff --git a/bot/discord/src/actors/torii_client_subscriber.rs b/bot/discord/src/actors/torii_client_subscriber.rs index c11285b514..20cad27c05 100644 --- a/bot/discord/src/actors/torii_client_subscriber.rs +++ b/bot/discord/src/actors/torii_client_subscriber.rs @@ -22,15 +22,15 @@ use crate::{ }; const TORII_SUBSCRIPTION_MODELS: [&str; 9] = [ - "s0_eternum-BattleClaimData", - "s0_eternum-BattleJoinData", - "s0_eternum-BattleLeaveData", - "s0_eternum-BattlePillageData", - "s0_eternum-BattleStartData", - "s0_eternum-SettleRealmData", - "s0_eternum-GameEnded", - "s0_eternum-HyperstructureFinished", - "s0_eternum-HyperstructureStarted", + "s1_eternum-BattleClaimData", + "s1_eternum-BattleJoinData", + "s1_eternum-BattleLeaveData", + "s1_eternum-BattlePillageData", + "s1_eternum-BattleStartData", + "s1_eternum-SettleRealmData", + "s1_eternum-GameEnded", + "s1_eternum-HyperstructureFinished", + "s1_eternum-HyperstructureStarted", ]; pub struct ToriiClientSubscriber { @@ -125,35 +125,35 @@ impl ToriiClientSubscriber { let felts = ty.serialize().unwrap(); let event = match model.name.as_str() { - "s0_eternum-BattleStartData" => { + "s1_eternum-BattleStartData" => { let event = BattleStart::cairo_deserialize(&felts, 0).unwrap(); Event { event: Box::new(event), identifier: event.defender, } } - "s0_eternum-BattleJoinData" => { + "s1_eternum-BattleJoinData" => { let event = BattleJoin::cairo_deserialize(&felts, 0).unwrap(); Event { event: Box::new(event), identifier: event.joiner, } } - "s0_eternum-BattleLeaveData" => { + "s1_eternum-BattleLeaveData" => { let event = BattleLeave::cairo_deserialize(&felts, 0).unwrap(); Event { event: Box::new(event), identifier: event.leaver, } } - "s0_eternum-BattleClaimData" => { + "s1_eternum-BattleClaimData" => { let event = BattleClaim::cairo_deserialize(&felts, 0).unwrap(); Event { event: Box::new(event), identifier: event.claimee_address, } } - "s0_eternum-BattlePillageData" => { + "s1_eternum-BattlePillageData" => { let event = BattlePillage::cairo_deserialize(&felts, 0).unwrap(); let event_clone = event.clone(); Event { @@ -161,28 +161,28 @@ impl ToriiClientSubscriber { identifier: event.pillaged_structure_owner, } } - "s0_eternum-SettleRealmData" => { + "s1_eternum-SettleRealmData" => { let event = SettleRealm::cairo_deserialize(&felts, 0).unwrap(); Event { event: Box::new(event), identifier: event.owner_address, } } - "s0_eternum-GameEnded" => { + "s1_eternum-GameEnded" => { let event = GameEnded::cairo_deserialize(&felts, 0).unwrap(); Event { event: Box::new(event), identifier: event.winner_address, } } - "s0_eternum-HyperstructureFinished" => { + "s1_eternum-HyperstructureFinished" => { let event = HyperstructureFinished::cairo_deserialize(&felts, 0).unwrap(); Event { event: Box::new(event), identifier: event.hyperstructure_owner_name, } } - "s0_eternum-HyperstructureStarted" => { + "s1_eternum-HyperstructureStarted" => { let event = HyperstructureStarted::cairo_deserialize(&felts, 0).unwrap(); Event { event: Box::new(event), diff --git a/bot/discord/src/eternum_enums.rs b/bot/discord/src/eternum_enums.rs index bec0dca0e1..948f12fd7d 100644 --- a/bot/discord/src/eternum_enums.rs +++ b/bot/discord/src/eternum_enums.rs @@ -33,15 +33,16 @@ pub enum ResourceIds { #[strum(serialize = "Ethereal Silica")] EtherealSilica = 21, Dragonhide = 22, + Demonhide = 23, #[strum(serialize = "Ancient Fragment")] - AncientFragment = 29, - Donkey = 249, - Knight = 250, - Crossbowman = 251, - Paladin = 252, - Lords = 253, - Wheat = 254, - Fish = 255, + AncientFragment = 24, + Donkey = 25, + Knight = 26, + Crossbowman = 27, + Paladin = 28, + Wheat = 29, + Fish = 30, + Lords = 31, } #[derive(FromPrimitive, Debug, Clone, Copy, strum_macros::Display)] diff --git a/bot/discord/src/events/battle_start.rs b/bot/discord/src/events/battle_start.rs index a36761f374..f7532925fe 100644 --- a/bot/discord/src/events/battle_start.rs +++ b/bot/discord/src/events/battle_start.rs @@ -16,7 +16,7 @@ use super::{duration_to_string, ToDiscordMessage, UNKNOWN_USER}; // abigen!( // _unused, -// "../contracts/target/dev/s0_eternum_e_BattleStartData.contract_class.json", +// "../contracts/target/dev/s1_eternum_e_BattleStartData.contract_class.json", // ); // TODO have a build.rs that can load the abis of the types we care about and writes them to a file // Dojo world can load local world from manifests and retrieve the abi diff --git a/client/.knip.json b/client/.knip.json deleted file mode 100644 index cbdd51f80a..0000000000 --- a/client/.knip.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "entry": ["eternum-docs/**/*.mdx", "eternum-docs/**/*.tsx"], - "ignore": [ - "eliza/**", - - ".trunk/**", - "**/*.js", - "bot/**", - "**/vitest**", - - "eternum-docs/vocs.config.ts", - - "sdk/packages/eternum/global.d.ts", - "config/bank/index.ts", - "config/speed.ts", - - "**/**__test__**/**", - "**/**__tests__**/**", - - "season_resources/scripts/deployment/config/index.ts", - "season_resources/scripts/deployment/config/provider/index.ts", - - "client/src/three/components/FogManager.ts", - "client/src/hooks/useUISound.tsx", - "balancing/**", - "landing/**", - "client/pwa-assets.config.ts", - - "docs/components/**", - "docs/utils/**", - "vocs.config.ts", - - "client/src/ui/modules/chat/types.tsx", - "client/src/ui/modules/chat/constants.tsx", - "client/src/ui/modules/chat/ChatTab.tsx", - "client/src/hooks/helpers/useGetAllPlayers.tsx", - "client/src/ui/modules/chat/InputField.tsx", - "client/src/ui/modules/chat/Chat.tsx", - "sdk/packages/eternum/src/scripts/extract.ts", - "sdk/packages/eternum/src/scripts/extractBuildings.ts" - ] -} diff --git a/client/apps/balancing/package.json b/client/apps/balancing/package.json index 9a3b26b9a4..38e666a1dd 100644 --- a/client/apps/balancing/package.json +++ b/client/apps/balancing/package.json @@ -7,6 +7,8 @@ "build": "tsc -b && vite build", "dev": "vite", "lint": "eslint .", + "format": "npx prettier --write . --root=..", + "format:check": "npx prettier --check . --root=..", "preview": "vite preview" }, "dependencies": { diff --git a/client/apps/balancing/public/vite.svg b/client/apps/balancing/public/vite.svg deleted file mode 100644 index e7b8dfb1b2..0000000000 --- a/client/apps/balancing/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client/apps/balancing/src/assets/react.svg b/client/apps/balancing/src/assets/react.svg deleted file mode 100644 index 6c87de9bb3..0000000000 --- a/client/apps/balancing/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client/apps/balancing/src/components/modules/resource-table.tsx b/client/apps/balancing/src/components/modules/resource-table.tsx index de4a085d58..91b662fc10 100644 --- a/client/apps/balancing/src/components/modules/resource-table.tsx +++ b/client/apps/balancing/src/components/modules/resource-table.tsx @@ -1,13 +1,13 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { - BUILDING_COSTS_SCALED, - RESOURCE_BUILDING_COSTS, - RESOURCE_INPUTS_SCALED, - RESOURCE_OUTPUTS, - RESOURCE_RARITY, - RESOURCE_TIERS, - Resources, - WEIGHTS_GRAM, + BUILDING_COSTS_SCALED, + RESOURCE_BUILDING_COSTS, + RESOURCE_PRODUCTION_INPUT_RESOURCES_SCALED, + RESOURCE_PRODUCTION_OUTPUT_AMOUNTS, + RESOURCE_RARITY, + RESOURCE_TIERS, + Resources, + WEIGHTS_GRAM, } from "@bibliothecadao/eternum"; import { Badge } from "../ui/badge"; @@ -46,16 +46,16 @@ export const ResourceTable = ({ resources }: { resources: Resources[] }) => { const multiplier = RESOURCE_RARITY[resourceId as keyof typeof RESOURCE_RARITY] || 1; // Default multiplier is 1 return ( - RESOURCE_INPUTS_SCALED[resourceId]?.map((input) => ({ + RESOURCE_PRODUCTION_INPUT_RESOURCES_SCALED[resourceId]?.map((input) => ({ ...input, adjustedAmount: input.amount * multiplier, })) || [] ); }; - // Sum up how many times each resource is used as an input based on RESOURCE_INPUTS_SCALED and BUILDING_COSTS_SCALED + // Sum up how many times each resource is used as an input based on RESOURCE_PRODUCTION_INPUT_RESOURCES_SCALED and BUILDING_COSTS_SCALED const resourceUsageCount = resources.reduce( (acc, resource) => { - const inputUsageCount = Object.values(RESOURCE_INPUTS_SCALED).reduce((count, inputs) => { + const inputUsageCount = Object.values(RESOURCE_PRODUCTION_INPUT_RESOURCES_SCALED).reduce((count, inputs) => { return count + inputs.filter((input: any) => input.resource === resource.id).length; }, 0); const buildingUsageCount = Object.values(BUILDING_COSTS_SCALED).reduce((count, costs) => { @@ -125,7 +125,7 @@ export const ResourceTable = ({ resources }: { resources: Resources[] }) => { {getResourceTier(resource.id)} {getResourceWeight(resource.id)} - {RESOURCE_INPUTS_SCALED[resource.id]?.map((input, idx) => ( + {RESOURCE_PRODUCTION_INPUT_RESOURCES_SCALED[resource.id]?.map((input, idx) => ( {resource.trait} x{" "} {input.amount} @@ -135,7 +135,7 @@ export const ResourceTable = ({ resources }: { resources: Resources[] }) => { {sumAdjustedInputs(resource.id)} [{adjustedDemand[resource.id].toFixed(2)}] - {RESOURCE_OUTPUTS[resource.id]} + {RESOURCE_PRODUCTION_OUTPUT_AMOUNTS[resource.id]} {resourceUsageCount[resource.id]} diff --git a/client/apps/balancing/src/components/ui/badge.tsx b/client/apps/balancing/src/components/ui/badge.tsx index 10c5d3f475..418a26e8a1 100644 --- a/client/apps/balancing/src/components/ui/badge.tsx +++ b/client/apps/balancing/src/components/ui/badge.tsx @@ -1,5 +1,5 @@ -import * as React from "react"; import { cva, type VariantProps } from "class-variance-authority"; +import * as React from "react"; import { cn } from "@/lib/utils"; @@ -20,10 +20,10 @@ const badgeVariants = cva( }, ); -export interface BadgeProps extends React.HTMLAttributes, VariantProps {} +interface BadgeProps extends React.HTMLAttributes, VariantProps {} function Badge({ className, variant, ...props }: BadgeProps) { return
; } -export { Badge, badgeVariants }; +export { Badge }; diff --git a/client/apps/balancing/src/components/ui/table.tsx b/client/apps/balancing/src/components/ui/table.tsx index 1f70268ebb..6c32ac9f8f 100644 --- a/client/apps/balancing/src/components/ui/table.tsx +++ b/client/apps/balancing/src/components/ui/table.tsx @@ -73,4 +73,4 @@ const TableCaption = React.forwardRef - {Object.entries(EternumGlobalConfig.questResources).map(([questType, rewards]) => ( + {Object.entries(ETERNUM_CONFIG().questResources).map(([questType, rewards]) => (
{addSpacesBeforeCapitals(QuestType[Number(questType)] || "Unknown Quest")} diff --git a/client/apps/game-docs/docs/components/ResourceTable.tsx b/client/apps/game-docs/docs/components/ResourceTable.tsx index acab99c169..9fbcc2afce 100644 --- a/client/apps/game-docs/docs/components/ResourceTable.tsx +++ b/client/apps/game-docs/docs/components/ResourceTable.tsx @@ -1,9 +1,8 @@ import { - EternumGlobalConfig, - findResourceById, - RESOURCE_INPUTS, - RESOURCE_OUTPUTS, - ResourcesIds, + findResourceById, + RESOURCE_PRODUCTION_INPUT_RESOURCES, + RESOURCE_PRODUCTION_OUTPUT_AMOUNTS, + ResourcesIds } from "@bibliothecadao/eternum"; import { useMemo } from "react"; import ResourceIcon from "./ResourceIcon"; @@ -11,15 +10,15 @@ import ResourceIcon from "./ResourceIcon"; export default function ResourceTable() { const resourceTable = useMemo(() => { const resources = []; - for (const resourceId of Object.keys(RESOURCE_INPUTS) as unknown as ResourcesIds[]) { + for (const resourceId of Object.keys(RESOURCE_PRODUCTION_INPUT_RESOURCES) as unknown as ResourcesIds[]) { if (resourceId === ResourcesIds.Lords) continue; const calldata = { resource: findResourceById(Number(resourceId)), - amount: RESOURCE_OUTPUTS[resourceId], + amount: RESOURCE_PRODUCTION_OUTPUT_AMOUNTS[resourceId], resource_type: resourceId, - cost: RESOURCE_INPUTS[resourceId].map((cost: any) => ({ + cost: RESOURCE_PRODUCTION_INPUT_RESOURCES[resourceId].map((cost: any) => ({ ...cost, - amount: cost.amount * EternumGlobalConfig.resources.resourcePrecision, + amount: cost.amount * ETERNUM_CONFIG().resources.resourcePrecision, name: findResourceById(cost.resource)?.trait || "", })), }; diff --git a/client/apps/game-docs/docs/components/TroopsTable.tsx b/client/apps/game-docs/docs/components/TroopsTable.tsx index c1780a5ddb..09d2164871 100644 --- a/client/apps/game-docs/docs/components/TroopsTable.tsx +++ b/client/apps/game-docs/docs/components/TroopsTable.tsx @@ -1,9 +1,8 @@ import { - EternumGlobalConfig, - ResourcesIds, - TROOPS_FOOD_CONSUMPTION, - TROOPS_STAMINAS, - findResourceById, + ResourcesIds, + TROOPS_FOOD_CONSUMPTION, + TROOPS_STAMINAS, + findResourceById } from "@bibliothecadao/eternum"; import { formatAmount, formatNumberWithSpaces } from "../utils/formatting"; import ResourceIcon from "./ResourceIcon"; @@ -67,12 +66,12 @@ export default function TroopsTable() {
Travel
-
{formatNumberWithSpaces(EternumGlobalConfig.stamina.travelCost)}
+
{formatNumberWithSpaces(ETERNUM_CONFIG().stamina.travelCost)}
Explore
-
{formatNumberWithSpaces(EternumGlobalConfig.stamina.exploreCost)}
+
{formatNumberWithSpaces(ETERNUM_CONFIG().stamina.exploreCost)}
diff --git a/client/apps/game-docs/docs/pages/development/contracts.mdx b/client/apps/game-docs/docs/pages/development/contracts.mdx index 9ff83a6408..65d503f011 100644 --- a/client/apps/game-docs/docs/pages/development/contracts.mdx +++ b/client/apps/game-docs/docs/pages/development/contracts.mdx @@ -84,17 +84,17 @@ Things to note: trait IBuildingContract { fn create( entity_id: ID, - building_coord: s0_eternum::models::position::Coord, - building_category: s0_eternum::models::buildings::BuildingCategory, + building_coord: s1_eternum::models::position::Coord, + building_category: s1_eternum::models::resource::production::building::BuildingCategory, produce_resource_type: Option ); } #[dojo::contract] -mod building_systems { - use s0_eternum::alias::ID; - use s0_eternum::models::{ - resources::{Resource, ResourceCost}, owner::Owner, hyperstructure::HyperStructure, +mod production_systems { + use s1_eternum::alias::ID; + use s1_eternum::models::{ + resource::resource::{Resource, ResourceCost}, owner::Owner, hyperstructure::HyperStructure, order::Orders, position::{Coord, Position, PositionTrait, Direction}, buildings::{BuildingCategory, Building, BuildingImpl}, production::{Production, ProductionRateTrait}, realm::{Realm, RealmImpl} diff --git a/client/apps/game-docs/docs/pages/index.mdx b/client/apps/game-docs/docs/pages/index.mdx index d49bb5588a..a72141e9c3 100644 --- a/client/apps/game-docs/docs/pages/index.mdx +++ b/client/apps/game-docs/docs/pages/index.mdx @@ -15,7 +15,7 @@ import { HomePage } from "vocs/components"; {" "} -Eternum Logo +Eternum Logo Eternum is a decentralized, open-source, and community-driven 4x MMO game built on the Dojo framework. diff --git a/client/apps/game-docs/docs/pages/mechanics/hyperstructures.mdx b/client/apps/game-docs/docs/pages/mechanics/hyperstructures.mdx index 3b431f679a..29b4770774 100644 --- a/client/apps/game-docs/docs/pages/mechanics/hyperstructures.mdx +++ b/client/apps/game-docs/docs/pages/mechanics/hyperstructures.mdx @@ -1,5 +1,5 @@ import { formatNumberWithCommas } from "@/utils/formatting"; -import { EternumGlobalConfig } from "@bibliothecadao/eternum"; +import { ETERNUM_CONFIG } from "@/utils/config"; import { HYPERSTRUCTURE_POINTS_FOR_WIN } from "@bibliothecadao/eternum"; # 🏛️ Hyperstructures @@ -55,7 +55,7 @@ When a Hyperstructure is completed, contributors receive one-time point rewards - The rarity value of their contributed resources Finishing the construction of a hyperstructure awards -{formatNumberWithCommas(EternumGlobalConfig.hyperstructures.hyperstructurePointsOnCompletion)} Victory Points, divided +{formatNumberWithCommas(ETERNUM_CONFIG().hyperstructures.hyperstructurePointsOnCompletion)} Victory Points, divided between all contributors. Points are calculated and distributed automatically upon construction completion. ### Holding shares of the Hyperstructure @@ -71,7 +71,7 @@ generated. If you don't set co-owners, NO POINTS WILL BE ACCRUED, even if the Hy Once co-owners are set, points are generated as follows: -- **{EternumGlobalConfig.hyperstructures.hyperstructurePointsPerCycle} Victory Points** are generated each Eternum day +- **{ETERNUM_CONFIG().hyperstructures.hyperstructurePointsPerCycle} Victory Points** are generated each Eternum day - Distribution follows a **share-based** system - Victory Points are automatically distributed according to **share percentages** diff --git a/client/apps/game-docs/docs/pages/mechanics/key-concepts.mdx b/client/apps/game-docs/docs/pages/mechanics/key-concepts.mdx index 39e7289b7b..fe81f5c060 100644 --- a/client/apps/game-docs/docs/pages/mechanics/key-concepts.mdx +++ b/client/apps/game-docs/docs/pages/mechanics/key-concepts.mdx @@ -1,5 +1,5 @@ import { formatNumberWithCommas } from "@/utils/formatting"; -import { EternumGlobalConfig } from "@bibliothecadao/eternum"; +import { ETERNUM_CONFIG } from "@/utils/config"; import { HYPERSTRUCTURE_POINTS_FOR_WIN } from "@bibliothecadao/eternum"; # Key Concepts diff --git a/client/apps/game-docs/docs/pages/mechanics/military/combat.mdx b/client/apps/game-docs/docs/pages/mechanics/military/combat.mdx index 222f5be636..6d352c7166 100644 --- a/client/apps/game-docs/docs/pages/mechanics/military/combat.mdx +++ b/client/apps/game-docs/docs/pages/mechanics/military/combat.mdx @@ -1,4 +1,4 @@ -import { EternumGlobalConfig } from "@bibliothecadao/eternum"; +import { ETERNUM_CONFIG } from "@/utils/config"; ## Combat System @@ -25,14 +25,14 @@ the in-game simulator to determine durations. Combat in Eternum is dynamic and fluid. Additional armies can reinforce either side during battle, and fighting continues until victory is achieved or retreat is called. -Retreating forces pay a steep price: deserting armies lose {EternumGlobalConfig.battle.TROOP_BATTLE_LEAVE_SLASH_NUM}% of +Retreating forces pay a steep price: deserting armies lose {ETERNUM_CONFIG().battle.TROOP_BATTLE_LEAVE_SLASH_NUM}% of their troops during withdrawal. ### Siege Mechanics 🏰 **Siege System** -When attacking a Realm or the Central Bank, combat begins with an {EternumGlobalConfig.battle.delaySeconds / 3600} hour +When attacking a Realm or the Central Bank, combat begins with an {ETERNUM_CONFIG().battle.delaySeconds / 3600} hour siege phase. During this time, defenders can: - Transfer resources in or out of the realm diff --git a/client/apps/game-docs/docs/pages/mechanics/realm/buildings.mdx b/client/apps/game-docs/docs/pages/mechanics/realm/buildings.mdx index 7b2f8b48d6..fb131e3f3b 100644 --- a/client/apps/game-docs/docs/pages/mechanics/realm/buildings.mdx +++ b/client/apps/game-docs/docs/pages/mechanics/realm/buildings.mdx @@ -1,6 +1,7 @@ import BuildingCard from "@/components/BuildingCard"; import BuildingCosts from "@/components/BuildingCosts"; -import { BuildingType, EternumGlobalConfig } from "@bibliothecadao/eternum"; +import { BuildingType} from "@bibliothecadao/eternum"; +import { ETERNUM_CONFIG } from "@/utils/config"; # Buildings diff --git a/client/apps/game-docs/docs/pages/mechanics/realm/realm.mdx b/client/apps/game-docs/docs/pages/mechanics/realm/realm.mdx index 7c38109965..77f3fa6ad9 100644 --- a/client/apps/game-docs/docs/pages/mechanics/realm/realm.mdx +++ b/client/apps/game-docs/docs/pages/mechanics/realm/realm.mdx @@ -1,7 +1,9 @@ import QuestRewards from "@/components/QuestRewards"; import RealmUpgradeCosts from "@/components/RealmUpgradeCosts"; import { divideByPrecision, formatNumberWithCommas } from "@/utils/formatting"; -import { CapacityConfigCategory, EternumGlobalConfig, RealmLevels } from "@bibliothecadao/eternum"; +import { CapacityConfigCategory, RealmLevels } from "@bibliothecadao/eternum"; +import { ETERNUM_CONFIG } from "@/utils/config"; + # Realms @@ -27,12 +29,12 @@ help you learn the game and reward you with starting resources. Claim your resou ### 🏰 **Base Castle Stats** -> - **Population**: {EternumGlobalConfig.populationCapacity.basePopulation} +> - **Population**: {ETERNUM_CONFIG().populationCapacity.basePopulation} > - **Military Capacity**: > - 3 attacking armies > - 1 defending army > - **Resource Storage**: -> {formatNumberWithCommas(divideByPrecision(EternumGlobalConfig.carryCapacityGram[CapacityConfigCategory.Storehouse]))} +> {formatNumberWithCommas(divideByPrecision(ETERNUM_CONFIG().carryCapacityGram[CapacityConfigCategory.Storehouse]))} > kg > > _These are the default values for a newly settled realm before any buildings are constructed._ @@ -42,7 +44,7 @@ help you learn the game and reward you with starting resources. Claim your resou When first settling a realm, you receive: - - {(EternumGlobalConfig.tick.armiesTickIntervalInSeconds / 3600) * EternumGlobalConfig.battle.graceTickCount} hour + {(ETERNUM_CONFIG().tick.armiesTickIntervalInSeconds / 3600) * ETERNUM_CONFIG().battle.graceTickCount} hour immunity from attacks and from attacking others diff --git a/client/apps/game-docs/docs/pages/mechanics/realm/wonders.mdx b/client/apps/game-docs/docs/pages/mechanics/realm/wonders.mdx index 9fb2ef2a7b..0e31be13a3 100644 --- a/client/apps/game-docs/docs/pages/mechanics/realm/wonders.mdx +++ b/client/apps/game-docs/docs/pages/mechanics/realm/wonders.mdx @@ -5,7 +5,7 @@ description: The Wonders of Realms Eternum # The Wonders -Wonder +Wonder ### Wonders are exclusive structures within Eternum, with only 50 out of the 8,000 realms designated a Wonders. ## Exclusive Benefits diff --git a/client/apps/game-docs/docs/pages/mechanics/resources/storage.mdx b/client/apps/game-docs/docs/pages/mechanics/resources/storage.mdx index 1914c7cf95..6809f7e39b 100644 --- a/client/apps/game-docs/docs/pages/mechanics/resources/storage.mdx +++ b/client/apps/game-docs/docs/pages/mechanics/resources/storage.mdx @@ -1,5 +1,7 @@ import { divideByPrecision, formatNumberWithCommas } from "@/utils/formatting"; -import { CapacityConfigCategory, EternumGlobalConfig, ResourcesIds } from "@bibliothecadao/eternum"; +import { CapacityConfigCategory, ResourcesIds } from "@bibliothecadao/eternum"; +import { ETERNUM_CONFIG } from "@/utils/config"; + ## Storage System @@ -11,20 +13,20 @@ your realm. Resources in Eternum have different weights that affect storage: - **Basic resources** (Wood, Stone, Coal,...): - {divideByPrecision(EternumGlobalConfig.resources.resourceWeightsGrams[ResourcesIds.Wood])}kg per unit -- **Military units**: {divideByPrecision(EternumGlobalConfig.resources.resourceWeightsGrams[ResourcesIds.Knight])}kg per + {divideByPrecision(ETERNUM_CONFIG().resources.resourceWeightsGrams[ResourcesIds.Wood])}kg per unit +- **Military units**: {divideByPrecision(ETERNUM_CONFIG().resources.resourceWeightsGrams[ResourcesIds.Knight])}kg per unit -- **Food** (Wheat, Fish): {divideByPrecision(EternumGlobalConfig.resources.resourceWeightsGrams[ResourcesIds.Wheat])}kg +- **Food** (Wheat, Fish): {divideByPrecision(ETERNUM_CONFIG().resources.resourceWeightsGrams[ResourcesIds.Wheat])}kg per unit -- **Lords**: {divideByPrecision(EternumGlobalConfig.resources.resourceWeightsGrams[ResourcesIds.Lords])}kg per unit -- **Donkey**: {divideByPrecision(EternumGlobalConfig.resources.resourceWeightsGrams[ResourcesIds.Donkey])}kg +- **Lords**: {divideByPrecision(ETERNUM_CONFIG().resources.resourceWeightsGrams[ResourcesIds.Lords])}kg per unit +- **Donkey**: {divideByPrecision(ETERNUM_CONFIG().resources.resourceWeightsGrams[ResourcesIds.Donkey])}kg ### Storehouses Storehouse Expand your storage capacity to support your growing realm: - **Capacity**: Each storehouse adds - {formatNumberWithCommas(divideByPrecision(EternumGlobalConfig.carryCapacityGram[CapacityConfigCategory.Storehouse] + {formatNumberWithCommas(divideByPrecision(ETERNUM_CONFIG().carryCapacityGram[CapacityConfigCategory.Storehouse] ))}kg of storage per resource - **Expansion**: Build additional storehouses to increase total storage. diff --git a/client/apps/game-docs/docs/pages/mechanics/trading.mdx b/client/apps/game-docs/docs/pages/mechanics/trading.mdx index b1d33b6fc2..e79166008c 100644 --- a/client/apps/game-docs/docs/pages/mechanics/trading.mdx +++ b/client/apps/game-docs/docs/pages/mechanics/trading.mdx @@ -1,5 +1,6 @@ import { DONKEY_SPEED } from "@bibliothecadao/eternum"; -import { CapacityConfigCategory, EternumGlobalConfig } from "@bibliothecadao/eternum"; +import { CapacityConfigCategory } from "@bibliothecadao/eternum"; +import { ETERNUM_CONFIG } from "@/utils/config"; # 🫏 Trading System @@ -44,7 +45,7 @@ your share and helps maintain a stable trading environment, increasing overall m ## Transport Donkey Donkeys are essential for all resource transfers. Each donkey can carry up to -**{(EternumGlobalConfig.carryCapacityGram[CapacityConfigCategory.Donkey] / 1000).toLocaleString()} kg**, and transport +**{(ETERNUM_CONFIG().carryCapacityGram[CapacityConfigCategory.Donkey] / 1000).toLocaleString()} kg**, and transport time depends on the distance to its destination. It's important to consider transport costs in your trade calculations. Ensure your realm has the necessary resources for transportation. diff --git a/client/apps/game-docs/docs/public/buildings/wonder.png b/client/apps/game-docs/docs/public/buildings/wonder.png deleted file mode 100644 index ac1c50a99b..0000000000 Binary files a/client/apps/game-docs/docs/public/buildings/wonder.png and /dev/null differ diff --git a/client/apps/game-docs/docs/public/resources/249.png b/client/apps/game-docs/docs/public/resources/249.png deleted file mode 100644 index 317cae0d6f..0000000000 Binary files a/client/apps/game-docs/docs/public/resources/249.png and /dev/null differ diff --git a/client/apps/game-docs/docs/utils/formatting.tsx b/client/apps/game-docs/docs/utils/formatting.tsx index 6e56d6155a..86dffaaa08 100644 --- a/client/apps/game-docs/docs/utils/formatting.tsx +++ b/client/apps/game-docs/docs/utils/formatting.tsx @@ -1,4 +1,3 @@ -import { EternumGlobalConfig } from "@bibliothecadao/eternum"; export function addSpacesBeforeCapitals(str: string): string { return str.replace(/([A-Z])/g, " $1").trim(); @@ -10,11 +9,11 @@ export function formatNumberWithSpaces(number: number): string { export const formatAmount = (amount: number) => { if (amount < 1) { - return `${amount * EternumGlobalConfig.resources.resourcePrecision}`; - } else if (amount < EternumGlobalConfig.resources.resourcePrecision) { + return `${amount * ETERNUM_CONFIG().resources.resourcePrecision}`; + } else if (amount < ETERNUM_CONFIG().resources.resourcePrecision) { return `${amount.toFixed(amount % 1 === 0 ? 0 : (amount % 1) % 0.1 === 0 ? 1 : 2)}K`; } else { - return `${(amount / EternumGlobalConfig.resources.resourcePrecision).toFixed(amount % EternumGlobalConfig.resources.resourcePrecision === 0 ? 0 : (amount % EternumGlobalConfig.resources.resourcePrecision) % 10 === 0 ? 1 : 2)}M`; + return `${(amount / ETERNUM_CONFIG().resources.resourcePrecision).toFixed(amount % ETERNUM_CONFIG().resources.resourcePrecision === 0 ? 0 : (amount % ETERNUM_CONFIG().resources.resourcePrecision) % 10 === 0 ? 1 : 2)}M`; } }; @@ -33,13 +32,13 @@ export function formatNumberWithCommas(number: number): string { } export const currencyFormat = (num: number, decimals: number): string => { - return formatNumber(num / EternumGlobalConfig.resources.resourcePrecision, decimals); + return formatNumber(num / ETERNUM_CONFIG().resources.resourcePrecision, decimals); }; export function multiplyByPrecision(value: number): number { - return Math.floor(value * EternumGlobalConfig.resources.resourcePrecision); + return Math.floor(value * ETERNUM_CONFIG().resources.resourcePrecision); } export function divideByPrecision(value: number): number { - return value / EternumGlobalConfig.resources.resourcePrecision; + return value / ETERNUM_CONFIG().resources.resourcePrecision; } diff --git a/client/apps/game-docs/package.json b/client/apps/game-docs/package.json index ff963716ec..908b84e8a3 100644 --- a/client/apps/game-docs/package.json +++ b/client/apps/game-docs/package.json @@ -4,6 +4,8 @@ "type": "module", "scripts": { "build": "vocs build -o ../dist", + "format": "npx prettier --write . --root=..", + "format:check": "npx prettier --check . --root=..", "dev": "vocs dev" }, "packageManager": "pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee" diff --git a/client/apps/game-docs/vocs.config.ts b/client/apps/game-docs/vocs.config.ts index 6ceb57eec2..900b773914 100644 --- a/client/apps/game-docs/vocs.config.ts +++ b/client/apps/game-docs/vocs.config.ts @@ -3,8 +3,8 @@ import { defineConfig } from "vocs"; export default defineConfig({ description: "Your Complete Guide to Mastering Eternum", - iconUrl: "/eternum_new_logo.svg", - logoUrl: "/eternum_new_logo.svg", + iconUrl: "/eternum-new-logo.svg", + logoUrl: "/eternum-new-logo.svg", ogImageUrl: "/eternum_documentation.png", theme: { colorScheme: "dark", diff --git a/client/apps/game/.env.local.sample b/client/apps/game/.env.local similarity index 63% rename from client/apps/game/.env.local.sample rename to client/apps/game/.env.local index 6ba81c83d4..ea7764bce8 100644 --- a/client/apps/game/.env.local.sample +++ b/client/apps/game/.env.local @@ -1,15 +1,15 @@ VITE_PUBLIC_MASTER_ADDRESS="0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec" VITE_PUBLIC_MASTER_PRIVATE_KEY="0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912" -VITE_PUBLIC_WORLD_ADDRESS="0x6a9e4c6f0799160ea8ddc43ff982a5f83d7f633e9732ce42701de1288ff705f" +VITE_PUBLIC_WORLD_ADDRESS="0x0009dd5e66cfa83f893c2a70b9ea5221e2df18aaf52a111fe9003264f948c7aa" VITE_PUBLIC_ACCOUNT_CLASS_HASH="0x07dc7899aa655b0aae51eadff6d801a58e97dd99cf4666ee59e704249e51adf2" VITE_PUBLIC_FEE_TOKEN_ADDRESS=0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7 -VITE_PUBLIC_TORII="http://localhost:8080" -VITE_PUBLIC_NODE_URL="http://localhost:5050/" +VITE_PUBLIC_TORII="http://127.0.0.1:8080" +VITE_PUBLIC_NODE_URL="http://127.0.0.1:5050" VITE_PUBLIC_DEV=true VITE_PUBLIC_GAME_VERSION="v1.0.0-rc0" VITE_PUBLIC_SHOW_FPS=false VITE_PUBLIC_GRAPHICS_DEV=false -VITE_PUBLIC_TORII_RELAY="/ip4/127.0.0.1/udp/9091/webrtc-direct/certhash/uEiCvYp_t42DmNpYQWtLJ2tLdd0GA99lyO1h1KLPxZbRe7g" +VITE_PUBLIC_TORII_RELAY="/ip4/127.0.0.1/udp/9091/webrtc-direct/certhash/uEiDry6d-bDv3UdIS6L9VMugoiZnfwqOeXyFWm6jgKf7aTw" VITE_PUBLIC_CHAIN=local @@ -20,9 +20,8 @@ VITE_PUBLIC_ARK_MARKETPLACE_API=https://abc.com VITE_PUBLIC_IMAGE_CDN_URL=https://abc.com VITE_PUBLIC_IMAGE_PROXY_URL=https://abc.com VITE_PUBLIC_IPFS_GATEWAY=https://abc.com -VITE_SEASON_PASS_ADDRESS=0x560d9b150473ba4d0211f5739b46cb73900179f6da78493aa98859553421c50 -VITE_REALMS_ADDRESS=0x755683a990769aad84fa4127bfc8dfa685d4f4fd751bd43e47ca46ff7288cb5 -VITE_LORDS_ADDRESS=0x5a4cee7e1bfee8a41f884cbdcb17f051ca7cd46bbd5598f91c01887b2f83ee6 -VITE_VRF_PROVIDER_ADDRESS="0x0" +VITE_PUBLIC_VRF_PROVIDER_ADDRESS="0x0" VITE_PUBLIC_CLIENT_FEE_RECIPIENT=0x045c587318c9ebcf2fbe21febf288ee2e3597a21cd48676005a5770a50d433c5 +VITE_SOCIAL_LINK="https://www.google.com" +VITE_PUBLIC_SLOT="eternum" \ No newline at end of file diff --git a/client/apps/game/.env.production b/client/apps/game/.env.mainnet similarity index 77% rename from client/apps/game/.env.production rename to client/apps/game/.env.mainnet index 4521e77093..9d561eff75 100644 --- a/client/apps/game/.env.production +++ b/client/apps/game/.env.mainnet @@ -12,10 +12,6 @@ VITE_PUBLIC_SHOW_FPS=false VITE_PUBLIC_GRAPHICS_DEV=false VITE_PUBLIC_TORII_RELAY=/dns4/api.cartridge.gg/tcp/443/x-parity-wss/%2Fx%2Feternum-prod%2Ftorii%2Fwss -VITE_SEASON_PASS_ADDRESS=0x057675b9c0bd62b096a2e15502a37b290fa766ead21c33eda42993e48a714b80 -VITE_REALMS_ADDRESS=0x07ae27a31bb6526e3de9cf02f081f6ce0615ac12a6d7b85ee58b8ad7947a2809 -VITE_LORDS_ADDRESS=0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49 - VITE_SOCIAL_LINK=http://bit.ly/3Zz1mpp VITE_PUBLIC_CHAIN=mainnet @@ -29,5 +25,5 @@ VITE_PUBLIC_IMAGE_CDN_URL=https://abc.com VITE_PUBLIC_IMAGE_PROXY_URL=https://abc.com VITE_PUBLIC_IPFS_GATEWAY=https://abc.com -VITE_VRF_PROVIDER_ADDRESS="0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f" +VITE_PUBLIC_VRF_PROVIDER_ADDRESS="0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f" VITE_PUBLIC_CLIENT_FEE_RECIPIENT=0x045c587318c9ebcf2fbe21febf288ee2e3597a21cd48676005a5770a50d433c5 diff --git a/client/apps/game/.env.preview b/client/apps/game/.env.sepolia similarity index 78% rename from client/apps/game/.env.preview rename to client/apps/game/.env.sepolia index 9c12605176..44d5dbebdf 100644 --- a/client/apps/game/.env.preview +++ b/client/apps/game/.env.sepolia @@ -3,19 +3,12 @@ VITE_PUBLIC_MASTER_PRIVATE_KEY=0x075362a844768f31c8058ce31aec3dd7751686440b4f220 VITE_PUBLIC_WORLD_ADDRESS="0x00fd85ef42eaed3b90d02d2cdc7417d6cae189ff4ba876aa5608551afbf1fb47" VITE_PUBLIC_ACCOUNT_CLASS_HASH="0x07dc7899aa655b0aae51eadff6d801a58e97dd99cf4666ee59e704249e51adf2" VITE_PUBLIC_FEE_TOKEN_ADDRESS=0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7 -VITE_PUBLIC_TORII=https://api.cartridge.gg/x/sepolia-rc-18/torii -VITE_PUBLIC_NODE_URL=https://api.cartridge.gg/x/starknet/sepolia + VITE_PUBLIC_DEV=false VITE_PUBLIC_GAME_VERSION="v1.0.0-rc7" VITE_PUBLIC_SHOW_FPS=false VITE_PUBLIC_GRAPHICS_DEV=false -VITE_PUBLIC_TORII_RELAY=/dns4/api.cartridge.gg/tcp/443/x-parity-wss/%2Fx%2Fsepolia-rc-18%2Ftorii%2Fwss -VITE_SEASON_PASS_ADDRESS=0x23cc88996a5f9c7bcb559fdcffc257c0f75abe60f2a7e5d5cd343f8a95967f7 -VITE_REALMS_ADDRESS=0x3205f47bd6f0b5e9cd5c79fcae19e12523a024709776d0a9e8b375adf63468d -VITE_LORDS_ADDRESS=0x0342ad5cc14002c005a5cedcfce2bd3af98d5e7fb79e9bf949b3a91cf145d72e -VITE_PUBLIC_CHAIN=sepolia -VITE_PUBLIC_SLOT=sepolia-rc-17 VITE_SOCIAL_LINK=http://bit.ly/3Zz1mpp @@ -27,5 +20,11 @@ VITE_PUBLIC_IMAGE_CDN_URL=https://abc.com VITE_PUBLIC_IMAGE_PROXY_URL=https://abc.com VITE_PUBLIC_IPFS_GATEWAY=https://abc.com -VITE_VRF_PROVIDER_ADDRESS="0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f" +VITE_PUBLIC_VRF_PROVIDER_ADDRESS="0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f" VITE_PUBLIC_CLIENT_FEE_RECIPIENT=0x045c587318c9ebcf2fbe21febf288ee2e3597a21cd48676005a5770a50d433c5 + +VITE_PUBLIC_CHAIN=sepolia +VITE_PUBLIC_SLOT=sepolia-rc-17 +VITE_PUBLIC_TORII=https://api.cartridge.gg/x/sepolia-rc-18/torii +VITE_PUBLIC_NODE_URL=https://api.cartridge.gg/x/starknet/sepolia +VITE_PUBLIC_TORII_RELAY=/dns4/api.cartridge.gg/tcp/443/x-parity-wss/%2Fx%2Fsepolia-rc-18%2Ftorii%2Fwss diff --git a/client/apps/landing/.env.sample b/client/apps/game/.env.slot similarity index 51% rename from client/apps/landing/.env.sample rename to client/apps/game/.env.slot index 43bbdd7004..e90462e295 100644 --- a/client/apps/landing/.env.sample +++ b/client/apps/game/.env.slot @@ -1,32 +1,29 @@ VITE_PUBLIC_MASTER_ADDRESS="0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec" VITE_PUBLIC_MASTER_PRIVATE_KEY="0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912" -VITE_PUBLIC_WORLD_ADDRESS="0x6a9e4c6f0799160ea8ddc43ff982a5f83d7f633e9732ce42701de1288ff705f" +VITE_PUBLIC_WORLD_ADDRESS="0x0009dd5e66cfa83f893c2a70b9ea5221e2df18aaf52a111fe9003264f948c7aa" VITE_PUBLIC_ACCOUNT_CLASS_HASH="0x07dc7899aa655b0aae51eadff6d801a58e97dd99cf4666ee59e704249e51adf2" VITE_PUBLIC_FEE_TOKEN_ADDRESS=0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7 -VITE_PUBLIC_TORII="http://localhost:8080" -VITE_PUBLIC_NODE_URL="http://localhost:5050/" -VITE_PUBLIC_DEV=true -VITE_PUBLIC_GAME_VERSION="v1.0.0-rc0" +VITE_PUBLIC_DEV=false +VITE_PUBLIC_GAME_VERSION="v1.0.0-rc7" VITE_PUBLIC_SHOW_FPS=false VITE_PUBLIC_GRAPHICS_DEV=false -VITE_PUBLIC_TORII_RELAY="/ip4/127.0.0.1/udp/9091/webrtc-direct/certhash/uEiCvYp_t42DmNpYQWtLJ2tLdd0GA99lyO1h1KLPxZbRe7g" -VITE_PUBLIC_CHAIN=local +VITE_SOCIAL_LINK=http://bit.ly/3Zz1mpp VITE_PUBLIC_CONSTRUCTION_FLAG=false VITE_PUBLIC_HIDE_THREEJS_MENU=false -VITE_PUBLIC_SLOT= VITE_PUBLIC_ARK_MARKETPLACE_API=https://abc.com VITE_PUBLIC_IMAGE_CDN_URL=https://abc.com VITE_PUBLIC_IMAGE_PROXY_URL=https://abc.com VITE_PUBLIC_IPFS_GATEWAY=https://abc.com - -VITE_SEASON_PASS_ADDRESS=0x2ebbc3ed3d0474fb7966704c5c8785c95fada44952bf9270c985e9a1f63ef0f -VITE_REALMS_ADDRESS=0x226c44324762bbd6f88640dc170b97bf22b822de3465cc48551d21c69bb4db4 -VITE_LORDS_ADDRESS=0x5f6c0fdb83120c1314d2152a98ade017117f1565333e13784b318ea32c58faa +VITE_PUBLIC_VRF_PROVIDER_ADDRESS="0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f" +VITE_PUBLIC_CLIENT_FEE_RECIPIENT=0x045c587318c9ebcf2fbe21febf288ee2e3597a21cd48676005a5770a50d433c5 -VITE_VRF_PROVIDER_ADDRESS="0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f" -VITE_PUBLIC_CLIENT_FEE_RECIPIENT=0x045c587318c9ebcf2fbe21febf288ee2e3597a21cd48676005a5770a50d433c5 +VITE_PUBLIC_CHAIN=slot +VITE_PUBLIC_SLOT=slot-old-star +VITE_PUBLIC_NODE_URL=https://api.cartridge.gg/x/slot-old-star/katana +VITE_PUBLIC_TORII=https://api.cartridge.gg/x/slot-old-star/torii +VITE_PUBLIC_TORII_RELAY=/dns4/api.cartridge.gg/tcp/443/x-parity-wss/%2Fx%2Fslot-old-star%2Ftorii%2Fwss \ No newline at end of file diff --git a/client/apps/game/.eslintrc.json b/client/apps/game/.eslintrc.json deleted file mode 100644 index cfd443bb31..0000000000 --- a/client/apps/game/.eslintrc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "env": { - "browser": true, - "es2021": true - }, - "extends": ["standard-with-typescript", "plugin:react/recommended"], - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module" - }, - "plugins": ["react"], - "rules": {} -} diff --git a/client/apps/game/.gitignore b/client/apps/game/.gitignore index ff9d741d2c..da2894f518 100644 --- a/client/apps/game/.gitignore +++ b/client/apps/game/.gitignore @@ -10,7 +10,6 @@ lerna-debug.log* node_modules dist dist-ssr -*.local # Editor directories and files .vscode/* diff --git a/client/apps/game/dojoConfig.ts b/client/apps/game/dojoConfig.ts index ce6e60739b..c67ed115eb 100644 --- a/client/apps/game/dojoConfig.ts +++ b/client/apps/game/dojoConfig.ts @@ -1,9 +1,7 @@ import { createDojoConfig } from "@dojoengine/core"; -import devManifest from "../../common/manifests/manifest_dev.json"; -import mainnetManifest from "../../common/manifests/manifest_mainnet.json"; -import productionManifest from "../../common/manifests/manifest_prod.json"; - +import { Chain, getGameManifest } from "../../common/utils"; import { env } from "./env"; +import { ETERNUM_CONFIG } from "./src/utils/config"; const { VITE_PUBLIC_NODE_URL, VITE_PUBLIC_TORII, @@ -11,14 +9,11 @@ const { VITE_PUBLIC_MASTER_ADDRESS, VITE_PUBLIC_MASTER_PRIVATE_KEY, VITE_PUBLIC_ACCOUNT_CLASS_HASH, - VITE_PUBLIC_DEV, VITE_PUBLIC_FEE_TOKEN_ADDRESS, VITE_PUBLIC_CHAIN, } = env; -let manifest = VITE_PUBLIC_DEV === true ? devManifest : productionManifest; - -manifest = VITE_PUBLIC_CHAIN === "mainnet" ? mainnetManifest : manifest; +const manifest = await getGameManifest(VITE_PUBLIC_CHAIN! as Chain); export const dojoConfig = createDojoConfig({ rpcUrl: VITE_PUBLIC_NODE_URL, @@ -31,3 +26,8 @@ export const dojoConfig = createDojoConfig({ feeTokenAddress: VITE_PUBLIC_FEE_TOKEN_ADDRESS || "0x0", manifest, }); + + +const config = await ETERNUM_CONFIG(); +console.log("logging eternum configuration json from file"); +console.log({config}); diff --git a/client/apps/game/env.ts b/client/apps/game/env.ts index d5093a6c45..4b77e2e219 100644 --- a/client/apps/game/env.ts +++ b/client/apps/game/env.ts @@ -12,11 +12,6 @@ const envSchema = z.object({ VITE_PUBLIC_CLIENT_FEE_RECIPIENT: z.string().startsWith("0x"), - // External Contracts - VITE_SEASON_PASS_ADDRESS: z.string().startsWith("0x"), - VITE_REALMS_ADDRESS: z.string().startsWith("0x"), - VITE_LORDS_ADDRESS: z.string().startsWith("0x"), - // API endpoints VITE_PUBLIC_TORII: z.string().url(), VITE_PUBLIC_NODE_URL: z.string().url(), @@ -28,13 +23,13 @@ const envSchema = z.object({ VITE_PUBLIC_GRAPHICS_DEV: z.string().transform((v) => v === "true"), // Version and chain info VITE_PUBLIC_GAME_VERSION: z.string(), - VITE_PUBLIC_CHAIN: z.enum(["sepolia", "mainnet", "testnet", "local"]), // Add other chains as needed + VITE_PUBLIC_CHAIN: z.enum(["sepolia", "mainnet", "slot", "local"]), // Add other chains as needed VITE_PUBLIC_CONSTRUCTION_FLAG: z.string().transform((v) => v === "true"), VITE_PUBLIC_HIDE_THREEJS_MENU: z.string().transform((v) => v === "true"), // VRF - VITE_VRF_PROVIDER_ADDRESS: z.string().startsWith("0x"), + VITE_PUBLIC_VRF_PROVIDER_ADDRESS: z.string().startsWith("0x"), // Ark Marketplace API VITE_PUBLIC_ARK_MARKETPLACE_API: z.string().url(), diff --git a/client/apps/game/hex/index.html b/client/apps/game/hex/index.html index 0ee05f500a..0ce088cb85 100644 --- a/client/apps/game/hex/index.html +++ b/client/apps/game/hex/index.html @@ -2,17 +2,16 @@ - + - - - - - - + + + + + + - @@ -64,16 +63,12 @@ - - - - diff --git a/client/apps/game/index.html b/client/apps/game/index.html index e12992714a..e66da11e66 100644 --- a/client/apps/game/index.html +++ b/client/apps/game/index.html @@ -2,17 +2,16 @@ - + - - - - - + + + + + - @@ -64,20 +63,30 @@ - - + + + + + + + + - - + + + + + + @@ -89,13 +98,13 @@ - - - + + + - +
diff --git a/client/apps/game/map/index.html b/client/apps/game/map/index.html index 0ee05f500a..0ce088cb85 100644 --- a/client/apps/game/map/index.html +++ b/client/apps/game/map/index.html @@ -2,17 +2,16 @@ - + - - - - - - + + + + + + - @@ -64,16 +63,12 @@ - - - - diff --git a/client/apps/game/package.json b/client/apps/game/package.json index 67e58b2852..1cb5e0cb59 100644 --- a/client/apps/game/package.json +++ b/client/apps/game/package.json @@ -7,6 +7,8 @@ "coverage": "vitest run --coverage", "dev": "vite", "generate-pwa-assets": "pwa-assets-generator", + "format": "npx prettier --write . --root=..", + "format:check": "npx prettier --check . --root=..", "lint": "eslint .", "lint:fix": "eslint . --ext .ts,.tsx --fix", "preview": "vite preview", diff --git a/client/apps/game/public/images/buildings/construction/archery.png b/client/apps/game/public/images/buildings/construction/archery.png deleted file mode 100644 index 6f79feacae..0000000000 Binary files a/client/apps/game/public/images/buildings/construction/archery.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/construction/barracks.png b/client/apps/game/public/images/buildings/construction/barracks.png deleted file mode 100644 index 65c41bdaba..0000000000 Binary files a/client/apps/game/public/images/buildings/construction/barracks.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/construction/farm.png b/client/apps/game/public/images/buildings/construction/farm.png deleted file mode 100644 index 4feb1e1063..0000000000 Binary files a/client/apps/game/public/images/buildings/construction/farm.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/construction/fishing_village.png b/client/apps/game/public/images/buildings/construction/fishing_village.png deleted file mode 100644 index cf8f3757ea..0000000000 Binary files a/client/apps/game/public/images/buildings/construction/fishing_village.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/construction/forge.png b/client/apps/game/public/images/buildings/construction/forge.png deleted file mode 100644 index 04138d353d..0000000000 Binary files a/client/apps/game/public/images/buildings/construction/forge.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/construction/lumber_mill.png b/client/apps/game/public/images/buildings/construction/lumber_mill.png deleted file mode 100644 index 911261e890..0000000000 Binary files a/client/apps/game/public/images/buildings/construction/lumber_mill.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/construction/market.png b/client/apps/game/public/images/buildings/construction/market.png deleted file mode 100644 index b9d66e7108..0000000000 Binary files a/client/apps/game/public/images/buildings/construction/market.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/construction/mine.png b/client/apps/game/public/images/buildings/construction/mine.png deleted file mode 100644 index 78dd58ba11..0000000000 Binary files a/client/apps/game/public/images/buildings/construction/mine.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/construction/stable.png b/client/apps/game/public/images/buildings/construction/stable.png deleted file mode 100644 index 33a3f948ae..0000000000 Binary files a/client/apps/game/public/images/buildings/construction/stable.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/construction/storehouse.png b/client/apps/game/public/images/buildings/construction/storehouse.png deleted file mode 100644 index f86332072f..0000000000 Binary files a/client/apps/game/public/images/buildings/construction/storehouse.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/construction/workers_hut.png b/client/apps/game/public/images/buildings/construction/workers_hut.png deleted file mode 100644 index 901073b97b..0000000000 Binary files a/client/apps/game/public/images/buildings/construction/workers_hut.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/thumb/archer-tower.png b/client/apps/game/public/images/buildings/thumb/archer-tower.png deleted file mode 100644 index 5bac1ced0f..0000000000 Binary files a/client/apps/game/public/images/buildings/thumb/archer-tower.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/thumb/army.png b/client/apps/game/public/images/buildings/thumb/army.png deleted file mode 100644 index 0d4a7df8a7..0000000000 Binary files a/client/apps/game/public/images/buildings/thumb/army.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/thumb/castle.png b/client/apps/game/public/images/buildings/thumb/castle.png deleted file mode 100644 index 6289d4d31d..0000000000 Binary files a/client/apps/game/public/images/buildings/thumb/castle.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/thumb/military.png b/client/apps/game/public/images/buildings/thumb/military.png deleted file mode 100644 index 761bec6bf7..0000000000 Binary files a/client/apps/game/public/images/buildings/thumb/military.png and /dev/null differ diff --git a/client/apps/game/public/images/buildings/thumb/realm.png b/client/apps/game/public/images/buildings/thumb/realm.png deleted file mode 100644 index 9a7b326964..0000000000 Binary files a/client/apps/game/public/images/buildings/thumb/realm.png and /dev/null differ diff --git a/client/apps/game/public/images/covers/03.png b/client/apps/game/public/images/covers/03.png deleted file mode 100644 index 8c910e9084..0000000000 Binary files a/client/apps/game/public/images/covers/03.png and /dev/null differ diff --git a/client/apps/game/public/images/icons/250.png b/client/apps/game/public/images/icons/250.png deleted file mode 100644 index 90fb8d116a..0000000000 Binary files a/client/apps/game/public/images/icons/250.png and /dev/null differ diff --git a/client/apps/game/public/images/icons/251.png b/client/apps/game/public/images/icons/251.png deleted file mode 100644 index 9399c6bdb0..0000000000 Binary files a/client/apps/game/public/images/icons/251.png and /dev/null differ diff --git a/client/apps/game/public/images/icons/252.png b/client/apps/game/public/images/icons/252.png deleted file mode 100644 index c6da9a6b59..0000000000 Binary files a/client/apps/game/public/images/icons/252.png and /dev/null differ diff --git a/client/apps/game/public/images/icons/troop.png b/client/apps/game/public/images/icons/troop.png deleted file mode 100644 index 636d870f80..0000000000 Binary files a/client/apps/game/public/images/icons/troop.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/1.png b/client/apps/game/public/images/resources/1.png deleted file mode 100644 index 7c8b359013..0000000000 Binary files a/client/apps/game/public/images/resources/1.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/10.png b/client/apps/game/public/images/resources/10.png deleted file mode 100644 index bb6d56ae25..0000000000 Binary files a/client/apps/game/public/images/resources/10.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/11.png b/client/apps/game/public/images/resources/11.png deleted file mode 100644 index 1cb79097af..0000000000 Binary files a/client/apps/game/public/images/resources/11.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/12.png b/client/apps/game/public/images/resources/12.png deleted file mode 100644 index f1a596f689..0000000000 Binary files a/client/apps/game/public/images/resources/12.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/13.png b/client/apps/game/public/images/resources/13.png deleted file mode 100644 index 3df9c0d30f..0000000000 Binary files a/client/apps/game/public/images/resources/13.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/14.png b/client/apps/game/public/images/resources/14.png deleted file mode 100644 index 0ca47a48f6..0000000000 Binary files a/client/apps/game/public/images/resources/14.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/15.png b/client/apps/game/public/images/resources/15.png deleted file mode 100644 index aa46c53ebc..0000000000 Binary files a/client/apps/game/public/images/resources/15.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/16.png b/client/apps/game/public/images/resources/16.png deleted file mode 100644 index a268ce883c..0000000000 Binary files a/client/apps/game/public/images/resources/16.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/17.png b/client/apps/game/public/images/resources/17.png deleted file mode 100644 index 78b1701ffb..0000000000 Binary files a/client/apps/game/public/images/resources/17.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/18.png b/client/apps/game/public/images/resources/18.png deleted file mode 100644 index dc32ad4469..0000000000 Binary files a/client/apps/game/public/images/resources/18.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/19.png b/client/apps/game/public/images/resources/19.png deleted file mode 100644 index e8c4d77817..0000000000 Binary files a/client/apps/game/public/images/resources/19.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/2.png b/client/apps/game/public/images/resources/2.png deleted file mode 100644 index 2152434a7c..0000000000 Binary files a/client/apps/game/public/images/resources/2.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/20.png b/client/apps/game/public/images/resources/20.png deleted file mode 100644 index b2cf70b1dc..0000000000 Binary files a/client/apps/game/public/images/resources/20.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/21.png b/client/apps/game/public/images/resources/21.png deleted file mode 100644 index a92794e06c..0000000000 Binary files a/client/apps/game/public/images/resources/21.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/22.png b/client/apps/game/public/images/resources/22.png deleted file mode 100644 index 74d739871a..0000000000 Binary files a/client/apps/game/public/images/resources/22.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/254.png b/client/apps/game/public/images/resources/254.png deleted file mode 100644 index 10c51b23ca..0000000000 Binary files a/client/apps/game/public/images/resources/254.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/255.png b/client/apps/game/public/images/resources/255.png deleted file mode 100644 index c4c0684832..0000000000 Binary files a/client/apps/game/public/images/resources/255.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/29.png b/client/apps/game/public/images/resources/29.png deleted file mode 100644 index 06135412a8..0000000000 Binary files a/client/apps/game/public/images/resources/29.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/3.png b/client/apps/game/public/images/resources/3.png deleted file mode 100644 index 537940af64..0000000000 Binary files a/client/apps/game/public/images/resources/3.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/4.png b/client/apps/game/public/images/resources/4.png deleted file mode 100644 index bd65736029..0000000000 Binary files a/client/apps/game/public/images/resources/4.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/5.png b/client/apps/game/public/images/resources/5.png deleted file mode 100644 index 113f453dcb..0000000000 Binary files a/client/apps/game/public/images/resources/5.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/6.png b/client/apps/game/public/images/resources/6.png deleted file mode 100644 index d8f0281a78..0000000000 Binary files a/client/apps/game/public/images/resources/6.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/7.png b/client/apps/game/public/images/resources/7.png deleted file mode 100644 index 14bcaf2c67..0000000000 Binary files a/client/apps/game/public/images/resources/7.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/8.png b/client/apps/game/public/images/resources/8.png deleted file mode 100644 index 5180be724e..0000000000 Binary files a/client/apps/game/public/images/resources/8.png and /dev/null differ diff --git a/client/apps/game/public/images/resources/9.png b/client/apps/game/public/images/resources/9.png deleted file mode 100644 index 51e5a0ab9a..0000000000 Binary files a/client/apps/game/public/images/resources/9.png and /dev/null differ diff --git a/client/apps/game/public/images/squire.png b/client/apps/game/public/images/squire.png deleted file mode 100644 index 31abdc98f3..0000000000 Binary files a/client/apps/game/public/images/squire.png and /dev/null differ diff --git a/client/apps/game/public/sound/buildings/storehouse.wav b/client/apps/game/public/sound/buildings/storehouse.wav deleted file mode 100644 index 5803f51e9e..0000000000 Binary files a/client/apps/game/public/sound/buildings/storehouse.wav and /dev/null differ diff --git a/client/apps/game/public/sound/ui/Click_8.wav b/client/apps/game/public/sound/ui/Click_8.wav deleted file mode 100644 index 9bfbf7093d..0000000000 Binary files a/client/apps/game/public/sound/ui/Click_8.wav and /dev/null differ diff --git a/client/apps/game/public/sound/ui/ESM_GB_fx_foley_one_shot_firebrst_crackle_crunchy_light_foley_fire_01_natural_organic_material.wav b/client/apps/game/public/sound/ui/ESM_GB_fx_foley_one_shot_firebrst_crackle_crunchy_light_foley_fire_01_natural_organic_material.wav deleted file mode 100644 index 5eab22762e..0000000000 Binary files a/client/apps/game/public/sound/ui/ESM_GB_fx_foley_one_shot_firebrst_crackle_crunchy_light_foley_fire_01_natural_organic_material.wav and /dev/null differ diff --git a/client/apps/game/public/sound/ui/click.mp3 b/client/apps/game/public/sound/ui/click.mp3 deleted file mode 100644 index a6f21e41b4..0000000000 Binary files a/client/apps/game/public/sound/ui/click.mp3 and /dev/null differ diff --git a/client/apps/game/public/sound/ui/harvest.mp3 b/client/apps/game/public/sound/ui/harvest.mp3 deleted file mode 100644 index 3cfe998fd6..0000000000 Binary files a/client/apps/game/public/sound/ui/harvest.mp3 and /dev/null differ diff --git a/client/apps/game/public/sound/ui/harvest_fish.mp3 b/client/apps/game/public/sound/ui/harvest_fish.mp3 deleted file mode 100644 index c4533b9963..0000000000 Binary files a/client/apps/game/public/sound/ui/harvest_fish.mp3 and /dev/null differ diff --git a/client/apps/game/public/sound/ui/harvest_wheat.mp3 b/client/apps/game/public/sound/ui/harvest_wheat.mp3 deleted file mode 100644 index e945373919..0000000000 Binary files a/client/apps/game/public/sound/ui/harvest_wheat.mp3 and /dev/null differ diff --git a/client/apps/game/public/sound/ui/katana.mp3 b/client/apps/game/public/sound/ui/katana.mp3 deleted file mode 100644 index 54d237a50a..0000000000 Binary files a/client/apps/game/public/sound/ui/katana.mp3 and /dev/null differ diff --git a/client/apps/game/public/sound/ui/mint.mp3 b/client/apps/game/public/sound/ui/mint.mp3 deleted file mode 100644 index 42b1bf0f05..0000000000 Binary files a/client/apps/game/public/sound/ui/mint.mp3 and /dev/null differ diff --git a/client/apps/game/public/sound/ui/sidebar_in.mp3 b/client/apps/game/public/sound/ui/sidebar_in.mp3 deleted file mode 100644 index 4b4cfe6654..0000000000 Binary files a/client/apps/game/public/sound/ui/sidebar_in.mp3 and /dev/null differ diff --git a/client/apps/game/public/sound/ui/sidebar_out.mp3 b/client/apps/game/public/sound/ui/sidebar_out.mp3 deleted file mode 100644 index 81ff324b9d..0000000000 Binary files a/client/apps/game/public/sound/ui/sidebar_out.mp3 and /dev/null differ diff --git a/client/apps/game/pwa-assets.config.ts b/client/apps/game/pwa-assets.config.ts deleted file mode 100644 index f72ad4fdec..0000000000 --- a/client/apps/game/pwa-assets.config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig, minimal2023Preset } from "@vite-pwa/assets-generator/config"; - -export default defineConfig({ - preset: minimal2023Preset, - images: ["public/images/Eternum-Mark-Black.png"], -}); diff --git a/client/apps/game/src/App.tsx b/client/apps/game/src/app.tsx similarity index 54% rename from client/apps/game/src/App.tsx rename to client/apps/game/src/app.tsx index ad945072ac..d90c5e6d40 100644 --- a/client/apps/game/src/App.tsx +++ b/client/apps/game/src/app.tsx @@ -1,8 +1,8 @@ import "./index.css"; -import { Toaster } from "./ui/components/Toaster"; -import { TransactionNotification } from "./ui/components/TxEmit"; -import { WorldLoading } from "./ui/components/WorldLoading"; -import { World } from "./ui/layouts/World"; +import { Toaster } from "./ui/components/toaster"; +import { TransactionNotification } from "./ui/components/tx-emit"; +import { WorldLoading } from "./ui/components/world-loading"; +import { World } from "./ui/layouts/world"; function App({ backgroundImage }: { backgroundImage: string }) { return ( diff --git a/client/apps/game/src/assets/icons/Check.svg b/client/apps/game/src/assets/icons/check.svg similarity index 100% rename from client/apps/game/src/assets/icons/Check.svg rename to client/apps/game/src/assets/icons/check.svg diff --git a/client/apps/game/src/assets/icons/Chest.svg b/client/apps/game/src/assets/icons/chest.svg similarity index 100% rename from client/apps/game/src/assets/icons/Chest.svg rename to client/apps/game/src/assets/icons/chest.svg diff --git a/client/apps/game/src/assets/icons/Coins.svg b/client/apps/game/src/assets/icons/coins.svg similarity index 100% rename from client/apps/game/src/assets/icons/Coins.svg rename to client/apps/game/src/assets/icons/coins.svg diff --git a/client/apps/game/src/assets/icons/Collapse Left.svg b/client/apps/game/src/assets/icons/collapse-left.svg similarity index 100% rename from client/apps/game/src/assets/icons/Collapse Left.svg rename to client/apps/game/src/assets/icons/collapse-left.svg diff --git a/client/apps/game/src/assets/icons/Combat.svg b/client/apps/game/src/assets/icons/combat.svg similarity index 100% rename from client/apps/game/src/assets/icons/Combat.svg rename to client/apps/game/src/assets/icons/combat.svg diff --git a/client/apps/game/src/assets/icons/Compass.svg b/client/apps/game/src/assets/icons/compass.svg similarity index 100% rename from client/apps/game/src/assets/icons/Compass.svg rename to client/apps/game/src/assets/icons/compass.svg diff --git a/client/apps/game/src/assets/icons/Controller.svg b/client/apps/game/src/assets/icons/controller.svg similarity index 100% rename from client/apps/game/src/assets/icons/Controller.svg rename to client/apps/game/src/assets/icons/controller.svg diff --git a/client/apps/game/src/assets/icons/Crown.svg b/client/apps/game/src/assets/icons/crown.svg similarity index 100% rename from client/apps/game/src/assets/icons/Crown.svg rename to client/apps/game/src/assets/icons/crown.svg diff --git a/client/apps/game/src/assets/icons/Digging.svg b/client/apps/game/src/assets/icons/digging.svg similarity index 100% rename from client/apps/game/src/assets/icons/Digging.svg rename to client/apps/game/src/assets/icons/digging.svg diff --git a/client/apps/game/src/assets/icons/eternum_new_logo.svg b/client/apps/game/src/assets/icons/eternum-new-logo.svg similarity index 100% rename from client/apps/game/src/assets/icons/eternum_new_logo.svg rename to client/apps/game/src/assets/icons/eternum-new-logo.svg diff --git a/client/apps/game/src/assets/icons/eternum_words_logo.svg b/client/apps/game/src/assets/icons/eternum-words-logo.svg similarity index 100% rename from client/apps/game/src/assets/icons/eternum_words_logo.svg rename to client/apps/game/src/assets/icons/eternum-words-logo.svg diff --git a/client/apps/game/src/assets/icons/Helmet.svg b/client/apps/game/src/assets/icons/helmet.svg similarity index 100% rename from client/apps/game/src/assets/icons/Helmet.svg rename to client/apps/game/src/assets/icons/helmet.svg diff --git a/client/apps/game/src/assets/icons/Info.svg b/client/apps/game/src/assets/icons/info.svg similarity index 100% rename from client/apps/game/src/assets/icons/Info.svg rename to client/apps/game/src/assets/icons/info.svg diff --git a/client/apps/game/src/assets/icons/Scroll.svg b/client/apps/game/src/assets/icons/scroll.svg similarity index 100% rename from client/apps/game/src/assets/icons/Scroll.svg rename to client/apps/game/src/assets/icons/scroll.svg diff --git a/client/apps/game/src/assets/icons/Shield.svg b/client/apps/game/src/assets/icons/shield.svg similarity index 100% rename from client/apps/game/src/assets/icons/Shield.svg rename to client/apps/game/src/assets/icons/shield.svg diff --git a/client/apps/game/src/assets/icons/Sparkles.svg b/client/apps/game/src/assets/icons/sparkles.svg similarity index 100% rename from client/apps/game/src/assets/icons/Sparkles.svg rename to client/apps/game/src/assets/icons/sparkles.svg diff --git a/client/apps/game/src/assets/icons/Swap.svg b/client/apps/game/src/assets/icons/swap.svg similarity index 100% rename from client/apps/game/src/assets/icons/Swap.svg rename to client/apps/game/src/assets/icons/swap.svg diff --git a/client/apps/game/src/assets/icons/Times.svg b/client/apps/game/src/assets/icons/times.svg similarity index 100% rename from client/apps/game/src/assets/icons/Times.svg rename to client/apps/game/src/assets/icons/times.svg diff --git a/client/apps/game/src/assets/icons/Wedge Down.svg b/client/apps/game/src/assets/icons/wedge-down.svg similarity index 100% rename from client/apps/game/src/assets/icons/Wedge Down.svg rename to client/apps/game/src/assets/icons/wedge-down.svg diff --git a/client/apps/game/src/assets/icons/Wrench.svg b/client/apps/game/src/assets/icons/wrench.svg similarity index 100% rename from client/apps/game/src/assets/icons/Wrench.svg rename to client/apps/game/src/assets/icons/wrench.svg diff --git a/client/apps/game/src/dojo/contractComponents.ts b/client/apps/game/src/dojo/contractComponents.ts deleted file mode 100644 index d173da9f4e..0000000000 --- a/client/apps/game/src/dojo/contractComponents.ts +++ /dev/null @@ -1,2213 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ - -import { defineComponent, Type as RecsType, type World } from "@dojoengine/recs"; - -export type ContractComponents = ReturnType; - -export function defineContractComponents(world: World) { - return { - AddressName: (() => { - return defineComponent( - world, - { address: RecsType.BigInt, name: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "AddressName", - types: ["felt252", "felt252"], - customTypes: [], - }, - }, - ); - })(), - Army: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - troops: { knight_count: RecsType.BigInt, paladin_count: RecsType.BigInt, crossbowman_count: RecsType.BigInt }, - battle_id: RecsType.Number, - battle_side: RecsType.String, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Army", - types: ["u32", "u64", "u64", "u64", "u32", "enum"], - customTypes: ["Troops", "BattleSide"], - }, - }, - ); - })(), - ArrivalTime: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, arrives_at: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "ArrivalTime", - types: ["u32", "u64"], - customTypes: [], - }, - }, - ); - })(), - Bank: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - owner_fee_num: RecsType.BigInt, - owner_fee_denom: RecsType.BigInt, - owner_bridge_fee_dpt_percent: RecsType.Number, - owner_bridge_fee_wtdr_percent: RecsType.Number, - exists: RecsType.Boolean, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Bank", - types: ["u32", "u128", "u128", "u16", "u16", "bool"], - customTypes: [], - }, - }, - ); - })(), - BankConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - lords_cost: RecsType.BigInt, - lp_fee_num: RecsType.BigInt, - lp_fee_denom: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BankConfig", - types: ["u32", "u128", "u128", "u128"], - customTypes: [], - }, - }, - ); - })(), - Battle: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - attack_army: { - troops: { - knight_count: RecsType.BigInt, - paladin_count: RecsType.BigInt, - crossbowman_count: RecsType.BigInt, - }, - battle_id: RecsType.Number, - battle_side: RecsType.String, - }, - attack_army_lifetime: { - troops: { - knight_count: RecsType.BigInt, - paladin_count: RecsType.BigInt, - crossbowman_count: RecsType.BigInt, - }, - battle_id: RecsType.Number, - battle_side: RecsType.String, - }, - defence_army: { - troops: { - knight_count: RecsType.BigInt, - paladin_count: RecsType.BigInt, - crossbowman_count: RecsType.BigInt, - }, - battle_id: RecsType.Number, - battle_side: RecsType.String, - }, - defence_army_lifetime: { - troops: { - knight_count: RecsType.BigInt, - paladin_count: RecsType.BigInt, - crossbowman_count: RecsType.BigInt, - }, - battle_id: RecsType.Number, - battle_side: RecsType.String, - }, - attackers_resources_escrow_id: RecsType.Number, - defenders_resources_escrow_id: RecsType.Number, - attack_army_health: { current: RecsType.BigInt, lifetime: RecsType.BigInt }, - defence_army_health: { current: RecsType.BigInt, lifetime: RecsType.BigInt }, - attack_delta: RecsType.BigInt, - defence_delta: RecsType.BigInt, - last_updated: RecsType.BigInt, - duration_left: RecsType.BigInt, - start_at: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Battle", - types: [ - "u32", - "u64", - "u64", - "u64", - "u32", - "enum", - "u64", - "u64", - "u64", - "u32", - "enum", - "u64", - "u64", - "u64", - "u32", - "enum", - "u64", - "u64", - "u64", - "u32", - "enum", - "u32", - "u32", - "u128", - "u128", - "u128", - "u128", - "u64", - "u64", - "u64", - "u64", - "u64", - ], - customTypes: [ - "BattleArmy", - "Troops", - "BattleSide", - "BattleArmy", - "Troops", - "BattleSide", - "BattleArmy", - "Troops", - "BattleSide", - "BattleArmy", - "Troops", - "BattleSide", - "BattleHealth", - "BattleHealth", - ], - }, - }, - ); - })(), - BattleConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - regular_immunity_ticks: RecsType.Number, - hyperstructure_immunity_ticks: RecsType.Number, - battle_delay_seconds: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BattleConfig", - types: ["u32", "u8", "u8", "u64"], - customTypes: [], - }, - }, - ); - })(), - Building: (() => { - return defineComponent( - world, - { - outer_col: RecsType.Number, - outer_row: RecsType.Number, - inner_col: RecsType.Number, - inner_row: RecsType.Number, - category: RecsType.String, - produced_resource_type: RecsType.Number, - bonus_percent: RecsType.Number, - entity_id: RecsType.Number, - outer_entity_id: RecsType.Number, - paused: RecsType.Boolean, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Building", - types: ["u32", "u32", "u32", "u32", "enum", "u8", "u32", "u32", "u32", "bool"], - customTypes: ["BuildingCategory"], - }, - }, - ); - })(), - BuildingCategoryPopConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - building_category: RecsType.String, - population: RecsType.Number, - capacity: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BuildingCategoryPopConfig", - types: ["u32", "enum", "u32", "u32"], - customTypes: ["BuildingCategory"], - }, - }, - ); - })(), - BuildingConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - category: RecsType.String, - resource_type: RecsType.Number, - resource_cost_id: RecsType.Number, - resource_cost_count: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BuildingConfig", - types: ["u32", "enum", "u8", "u32", "u32"], - customTypes: ["BuildingCategory"], - }, - }, - ); - })(), - BuildingGeneralConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - base_cost_percent_increase: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BuildingGeneralConfig", - types: ["u32", "u16"], - customTypes: [], - }, - }, - ); - })(), - BuildingQuantityv2: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, category: RecsType.String, value: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "BuildingQuantityv2", - types: ["u32", "enum", "u8"], - customTypes: ["BuildingCategory"], - }, - }, - ); - })(), - CapacityCategory: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, category: RecsType.String }, - { - metadata: { - namespace: "s0_eternum", - name: "CapacityCategory", - types: ["u32", "enum"], - customTypes: ["CapacityConfigCategory"], - }, - }, - ); - })(), - CapacityConfig: (() => { - return defineComponent( - world, - { - category: RecsType.String, - weight_gram: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "CapacityConfig", - types: ["enum", "u128"], - customTypes: ["CapacityConfigCategory"], - }, - }, - ); - })(), - Contribution: (() => { - return defineComponent( - world, - { - hyperstructure_entity_id: RecsType.Number, - player_address: RecsType.BigInt, - resource_type: RecsType.Number, - amount: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Contribution", - types: ["u32", "contractaddress", "u8", "u128"], - customTypes: [], - }, - }, - ); - })(), - DetachedResource: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - index: RecsType.Number, - resource_type: RecsType.Number, - resource_amount: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "DetachedResource", - types: ["u32", "u32", "u8", "u128"], - customTypes: [], - }, - }, - ); - })(), - EntityName: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, name: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "EntityName", - types: ["u32", "felt252"], - customTypes: [], - }, - }, - ); - })(), - EntityOwner: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, entity_owner_id: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "EntityOwner", - types: ["u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - Epoch: (() => { - return defineComponent( - world, - { - hyperstructure_entity_id: RecsType.Number, - index: RecsType.Number, - start_timestamp: RecsType.BigInt, - owners: RecsType.BigIntArray, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Epoch", - types: ["u32", "u16", "u64", "array"], - customTypes: [], - }, - }, - ); - })(), - Guild: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, is_public: RecsType.Boolean, member_count: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "Guild", - types: ["u32", "bool", "u16"], - customTypes: [], - }, - }, - ); - })(), - GuildMember: (() => { - return defineComponent( - world, - { address: RecsType.BigInt, guild_entity_id: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "GuildMember", - types: ["contractaddress", "u32"], - customTypes: [], - }, - }, - ); - })(), - GuildWhitelist: (() => { - return defineComponent( - world, - { address: RecsType.BigInt, guild_entity_id: RecsType.Number, is_whitelisted: RecsType.Boolean }, - { - metadata: { - namespace: "s0_eternum", - name: "GuildWhitelist", - types: ["contractaddress", "u32", "bool"], - customTypes: [], - }, - }, - ); - })(), - Health: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, current: RecsType.BigInt, lifetime: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Health", - types: ["u32", "u128", "u128"], - customTypes: [], - }, - }, - ); - })(), - Hyperstructure: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - current_epoch: RecsType.Number, - completed: RecsType.Boolean, - last_updated_by: RecsType.BigInt, - last_updated_timestamp: RecsType.Number, - access: RecsType.String, - randomness: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Hyperstructure", - types: ["u32", "u16", "bool", "contractaddress", "u64", "enum", "felt252"], - customTypes: ["Access"], - }, - }, - ); - })(), - HyperstructureConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - time_between_shares_change: RecsType.Number, - points_per_cycle: RecsType.BigInt, - points_for_win: RecsType.BigInt, - points_on_completion: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "HyperstructureConfig", - types: ["u32", "u64", "u128", "u128", "u128"], - customTypes: [], - }, - }, - ); - })(), - HyperstructureResourceConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - resource_tier: RecsType.Number, - min_amount: RecsType.BigInt, - max_amount: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "HyperstructureResourceConfig", - types: ["u32", "u8", "u128", "u128"], - customTypes: [], - }, - }, - ); - })(), - Leaderboard: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - registration_end_timestamp: RecsType.Number, - total_points: RecsType.BigInt, - total_price_pool: RecsType.OptionalBigInt, - distribution_started: RecsType.Boolean, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Leaderboard", - types: ["u32", "u64", "u128", "u256", "bool"], - customTypes: [], - }, - }, - ); - })(), - - LeaderboardEntry: (() => { - return defineComponent( - world, - { - address: RecsType.BigInt, - points: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "LeaderboardEntry", - types: ["contractaddress", "u128"], - customTypes: [], - }, - }, - ); - })(), - - LeaderboardRewardClaimed: (() => { - return defineComponent( - world, - { - address: RecsType.BigInt, - claimed: RecsType.Boolean, - }, - { - metadata: { - namespace: "s0_eternum", - name: "LeaderboardRewardClaimed", - types: ["contractaddress", "bool"], - customTypes: [], - }, - }, - ); - })(), - - LeaderboardRegistered: (() => { - return defineComponent( - world, - { - address: RecsType.BigInt, - registered: RecsType.Boolean, - }, - { - metadata: { - namespace: "s0_eternum", - name: "LeaderboardRegistered", - types: ["contractaddress", "bool"], - customTypes: [], - }, - }, - ); - })(), - - LeaderboardRegisterContribution: (() => { - return defineComponent( - world, - { - address: RecsType.BigInt, - hyperstructure_entity_id: RecsType.Number, - registered: RecsType.Boolean, - }, - { - metadata: { - namespace: "s0_eternum", - name: "LeaderboardRegisterContribution", - types: ["contractaddress", "u32", "bool"], - customTypes: [], - }, - }, - ); - })(), - - LeaderboardRegisterShare: (() => { - return defineComponent( - world, - { - address: RecsType.BigInt, - hyperstructure_entity_id: RecsType.Number, - epoch: RecsType.Number, - registered: RecsType.Boolean, - }, - { - metadata: { - namespace: "s0_eternum", - name: "LeaderboardRegisterShare", - types: ["contractaddress", "u32", "u16", "bool"], - customTypes: [], - }, - }, - ); - })(), - - Liquidity: (() => { - return defineComponent( - world, - { - bank_entity_id: RecsType.Number, - player: RecsType.BigInt, - resource_type: RecsType.Number, - shares: { mag: RecsType.BigInt, sign: RecsType.Boolean }, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Liquidity", - types: ["u32", "contractaddress", "u8", "u128", "bool"], - customTypes: ["Fixed"], - }, - }, - ); - })(), - - MapConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - reward_resource_amount: RecsType.BigInt, - shards_mines_fail_probability: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "MapConfig", - types: ["u32", "u128", "u128"], - customTypes: [], - }, - }, - ); - })(), - Market: (() => { - return defineComponent( - world, - { - bank_entity_id: RecsType.Number, - resource_type: RecsType.Number, - lords_amount: RecsType.BigInt, - resource_amount: RecsType.BigInt, - total_shares: { mag: RecsType.BigInt, sign: RecsType.Boolean }, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Market", - types: ["u32", "u8", "u128", "u128", "u128", "bool"], - customTypes: ["Fixed"], - }, - }, - ); - })(), - MercenariesConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - troops: { knight_count: RecsType.BigInt, paladin_count: RecsType.BigInt, crossbowman_count: RecsType.BigInt }, - rewards: RecsType.StringArray, - }, - { - metadata: { - namespace: "s0_eternum", - name: "MercenariesConfig", - types: ["u32", "u64", "u64", "u64"], - customTypes: ["Troops"], - }, - }, - ); - })(), - Message: (() => { - return defineComponent( - world, - { - identity: RecsType.BigInt, - channel: RecsType.BigInt, - content: RecsType.String, - salt: RecsType.BigInt, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Message", - types: ["felt252", "felt252", "BytesArray", "felt252", "u64"], - customTypes: [], - }, - }, - ); - })(), - Movable: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - sec_per_km: RecsType.Number, - blocked: RecsType.Boolean, - round_trip: RecsType.Boolean, - start_coord_x: RecsType.Number, - start_coord_y: RecsType.Number, - intermediate_coord_x: RecsType.Number, - intermediate_coord_y: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Movable", - types: ["u32", "u16", "bool", "bool", "u32", "u32", "u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - Orders: (() => { - return defineComponent( - world, - { order_id: RecsType.Number, hyperstructure_count: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "Orders", - types: ["u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - OwnedResourcesTracker: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, resource_types: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "OwnedResourcesTracker", - types: ["u32", "u256"], - customTypes: [], - }, - }, - ); - })(), - Owner: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, address: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Owner", - types: ["u32", "contractaddress"], - customTypes: [], - }, - }, - ); - })(), - Population: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, population: RecsType.Number, capacity: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "Population", - types: ["u32", "u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - PopulationConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, base_population: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "PopulationConfig", - types: ["u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - Position: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, x: RecsType.Number, y: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "Position", - types: ["u32", "u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - Production: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - resource_type: RecsType.Number, - building_count: RecsType.Number, - production_rate: RecsType.BigInt, - consumption_rate: RecsType.BigInt, - last_updated_tick: RecsType.BigInt, - input_finish_tick: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Production", - types: ["u32", "u8", "u8", "u128", "u128", "u64", "u64"], - customTypes: [], - }, - }, - ); - })(), - ProductionConfig: (() => { - return defineComponent( - world, - { - resource_type: RecsType.Number, - amount: RecsType.BigInt, - input_count: RecsType.BigInt, - output_count: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "ProductionConfig", - types: ["u8", "u128", "u128", "u128"], - customTypes: [], - }, - }, - ); - })(), - ProductionDeadline: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, deadline_tick: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "ProductionDeadline", - types: ["u32", "u64"], - customTypes: [], - }, - }, - ); - })(), - ProductionInput: (() => { - return defineComponent( - world, - { - output_resource_type: RecsType.Number, - index: RecsType.Number, - input_resource_type: RecsType.Number, - input_resource_amount: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "ProductionInput", - types: ["u8", "u8", "u8", "u128"], - customTypes: [], - }, - }, - ); - })(), - ProductionOutput: (() => { - return defineComponent( - world, - { input_resource_type: RecsType.Number, index: RecsType.Number, output_resource_type: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "ProductionOutput", - types: ["u8", "u8", "u8"], - customTypes: [], - }, - }, - ); - })(), - Progress: (() => { - return defineComponent( - world, - { hyperstructure_entity_id: RecsType.Number, resource_type: RecsType.Number, amount: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Progress", - types: ["u32", "u8", "u128"], - customTypes: [], - }, - }, - ); - })(), - Protectee: (() => { - return defineComponent( - world, - { army_id: RecsType.Number, protectee_id: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "Protectee", - types: ["u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - Protector: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, army_id: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "Protector", - types: ["u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - Quantity: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, value: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Quantity", - types: ["u32", "u128"], - customTypes: [], - }, - }, - ); - })(), - QuantityTracker: (() => { - return defineComponent( - world, - { entity_id: RecsType.BigInt, count: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "QuantityTracker", - types: ["felt252", "u128"], - customTypes: [], - }, - }, - ); - })(), - Quest: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, config_id: RecsType.Number, completed: RecsType.Boolean }, - { - metadata: { - namespace: "s0_eternum", - name: "Quest", - types: ["u32", "u32", "bool"], - customTypes: [], - }, - }, - ); - })(), - QuestBonus: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, resource_type: RecsType.Number, claimed: RecsType.Boolean }, - { - metadata: { - namespace: "s0_eternum", - name: "QuestBonus", - types: ["u32", "u8", "bool"], - customTypes: [], - }, - }, - ); - })(), - QuestConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, production_material_multiplier: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "QuestConfig", - types: ["u32", "u16"], - customTypes: [], - }, - }, - ); - })(), - QuestRewardConfig: (() => { - return defineComponent( - world, - { quest_id: RecsType.Number, detached_resource_id: RecsType.Number, detached_resource_count: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "QuestRewardConfig", - types: ["u32", "u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - Realm: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - realm_id: RecsType.Number, - produced_resources: RecsType.BigInt, - order: RecsType.Number, - level: RecsType.Number, - has_wonder: RecsType.Boolean, - settler_address: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Realm", - types: ["u32", "u32", "u128", "u8", "u8", "bool", "contractaddress"], - customTypes: [], - }, - }, - ); - })(), - RealmLevelConfig: (() => { - return defineComponent( - world, - { level: RecsType.Number, required_resources_id: RecsType.Number, required_resource_count: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "RealmLevelConfig", - types: ["u8", "u32", "u8"], - customTypes: [], - }, - }, - ); - })(), - RealmMaxLevelConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, max_level: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "RealmMaxLevelConfig", - types: ["u32", "u8"], - customTypes: [], - }, - }, - ); - })(), - Resource: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, resource_type: RecsType.Number, balance: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Resource", - types: ["u32", "u8", "u128"], - customTypes: [], - }, - }, - ); - })(), - ResourceAllowance: (() => { - return defineComponent( - world, - { - owner_entity_id: RecsType.Number, - approved_entity_id: RecsType.Number, - resource_type: RecsType.Number, - amount: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "ResourceAllowance", - types: ["u32", "u32", "u8", "u128"], - customTypes: [], - }, - }, - ); - })(), - ResourceBridgeFeeSplitConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - velords_fee_on_dpt_percent: RecsType.Number, - velords_fee_on_wtdr_percent: RecsType.Number, - season_pool_fee_on_dpt_percent: RecsType.Number, - season_pool_fee_on_wtdr_percent: RecsType.Number, - client_fee_on_dpt_percent: RecsType.Number, - client_fee_on_wtdr_percent: RecsType.Number, - velords_fee_recipient: RecsType.BigInt, - season_pool_fee_recipient: RecsType.BigInt, - max_bank_fee_dpt_percent: RecsType.Number, - max_bank_fee_wtdr_percent: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "ResourceBridgeFeeSplitConfig", - types: [ - "u32", - "u16", - "u16", - "u16", - "u16", - "u16", - "u16", - "ContractAddress", - "ContractAddress", - "u16", - "u16", - ], - customTypes: [], - }, - }, - ); - })(), - ResourceBridgeWhitelistConfig: (() => { - return defineComponent( - world, - { - token: RecsType.BigInt, - resource_type: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "ResourceBridgeWhitelistConfig", - types: ["ContractAddress", "u8"], - customTypes: [], - }, - }, - ); - })(), - ResourceCost: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, index: RecsType.Number, resource_type: RecsType.Number, amount: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "ResourceCost", - types: ["u32", "u32", "u8", "u128"], - customTypes: [], - }, - }, - ); - })(), - ResourceTransferLock: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, start_at: RecsType.BigInt, release_at: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "ResourceTransferLock", - types: ["u32", "u64", "u64"], - customTypes: [], - }, - }, - ); - })(), - Season: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - start_at: RecsType.BigInt, - is_over: RecsType.Boolean, - ended_at: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Season", - types: ["u32", "u64", "bool", "u64"], - customTypes: [], - }, - }, - ); - })(), - SeasonAddressesConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - season_pass_address: RecsType.BigInt, - realms_address: RecsType.BigInt, - lords_address: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "SeasonAddressesConfig", - types: ["u32", "ContractAddress", "ContractAddress", "ContractAddress"], - customTypes: [], - }, - }, - ); - })(), - SeasonBridgeConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - close_after_end_seconds: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "SeasonBridgeConfig", - types: ["u32", "u64"], - customTypes: [], - }, - }, - ); - })(), - - SettlementConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - angle_scaled: RecsType.BigInt, - center: RecsType.Number, - min_scaling_factor_scaled: RecsType.BigInt, - radius: RecsType.Number, - min_distance: RecsType.Number, - max_distance: RecsType.Number, - min_angle_increase: RecsType.BigInt, - max_angle_increase: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "SettlementConfig", - types: ["u32", "u128", "u32", "u128", "u32", "u32", "u32", "u64", "u64"], - customTypes: [], - }, - }, - ); - })(), - SpeedConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - speed_config_id: RecsType.Number, - entity_type: RecsType.Number, - sec_per_km: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "SpeedConfig", - types: ["u32", "u32", "u32", "u16"], - customTypes: [], - }, - }, - ); - })(), - Stamina: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, amount: RecsType.Number, last_refill_tick: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Stamina", - types: ["u32", "u16", "u64"], - customTypes: [], - }, - }, - ); - })(), - StaminaConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, unit_type: RecsType.Number, max_stamina: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "StaminaConfig", - types: ["u32", "u8", "u16"], - customTypes: [], - }, - }, - ); - })(), - StaminaRefillConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, amount_per_tick: RecsType.Number, start_boost_tick_count: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "StaminaRefillConfig", - types: ["u32", "u16", "u8"], - customTypes: [], - }, - }, - ); - })(), - Status: (() => { - return defineComponent( - world, - { trade_id: RecsType.Number, value: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Status", - types: ["u32", "u128"], - customTypes: [], - }, - }, - ); - })(), - Structure: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, category: RecsType.String, created_at: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Structure", - types: ["u32", "enum", "u64"], - customTypes: ["StructureCategory"], - }, - }, - ); - })(), - StructureCount: (() => { - return defineComponent( - world, - { coord: { x: RecsType.Number, y: RecsType.Number }, count: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "StructureCount", - types: ["u32", "u32", "u8"], - customTypes: ["Coord"], - }, - }, - ); - })(), - TickConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, tick_id: RecsType.Number, tick_interval_in_seconds: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "TickConfig", - types: ["u32", "u8", "u64"], - customTypes: [], - }, - }, - ); - })(), - Tile: (() => { - return defineComponent( - world, - { - col: RecsType.Number, - row: RecsType.Number, - explored_by_id: RecsType.Number, - explored_at: RecsType.BigInt, - biome: RecsType.String, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Tile", - types: ["u32", "u32", "u32", "u64", "enum"], - customTypes: ["Biome"], - }, - }, - ); - })(), - Trade: (() => { - return defineComponent( - world, - { - trade_id: RecsType.Number, - maker_id: RecsType.Number, - maker_gives_resources_origin_id: RecsType.Number, - maker_gives_resources_id: RecsType.Number, - maker_gives_resources_hash: RecsType.BigInt, - maker_gives_resources_weight: RecsType.BigInt, - taker_id: RecsType.Number, - taker_gives_resources_origin_id: RecsType.Number, - taker_gives_resources_id: RecsType.Number, - taker_gives_resources_hash: RecsType.BigInt, - taker_gives_resources_weight: RecsType.BigInt, - expires_at: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Trade", - types: ["u32", "u32", "u32", "u32", "felt252", "u128", "u32", "u32", "u32", "felt252", "u128", "u64"], - customTypes: [], - }, - }, - ); - })(), - TravelFoodCostConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - unit_type: RecsType.Number, - explore_wheat_burn_amount: RecsType.BigInt, - explore_fish_burn_amount: RecsType.BigInt, - travel_wheat_burn_amount: RecsType.BigInt, - travel_fish_burn_amount: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "TravelFoodCostConfig", - types: ["u32", "u8", "u128", "u128", "u128", "u128"], - customTypes: [], - }, - }, - ); - })(), - TravelStaminaCostConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - travel_type: RecsType.Number, - cost: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "TravelStaminaCostConfig", - types: ["u32", "u8", "u16"], - customTypes: [], - }, - }, - ); - })(), - TroopConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - health: RecsType.Number, - knight_strength: RecsType.Number, - paladin_strength: RecsType.Number, - crossbowman_strength: RecsType.Number, - advantage_percent: RecsType.Number, - disadvantage_percent: RecsType.Number, - max_troop_count: RecsType.Number, - pillage_health_divisor: RecsType.Number, - army_free_per_structure: RecsType.Number, - army_extra_per_building: RecsType.Number, - army_max_per_structure: RecsType.Number, - battle_leave_slash_num: RecsType.Number, - battle_leave_slash_denom: RecsType.Number, - battle_time_scale: RecsType.Number, - battle_max_time_seconds: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "TroopConfig", - types: [ - "u32", - "u32", - "u8", - "u8", - "u16", - "u16", - "u16", - "u64", - "u8", - "u8", - "u8", - "u8", - "u8", - "u8", - "u16", - "u64", - ], - customTypes: [], - }, - }, - ); - })(), - Weight: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, value: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Weight", - types: ["u32", "u128"], - customTypes: [], - }, - }, - ); - })(), - WeightConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - weight_config_id: RecsType.Number, - entity_type: RecsType.Number, - weight_gram: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "WeightConfig", - types: ["u32", "u32", "u32", "u128"], - customTypes: [], - }, - }, - ); - })(), - WorldConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, admin_address: RecsType.BigInt, realm_l2_contract: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "WorldConfig", - types: ["u32", "contractaddress", "contractaddress"], - customTypes: [], - }, - }, - ); - })(), - ...eventsComponents(world), - }; -} - -const eventsComponents = (world: World) => { - return { - events: { - AcceptOrder: (() => { - return defineComponent( - world, - { - taker_id: RecsType.Number, - maker_id: RecsType.Number, - id: RecsType.Number, - trade_id: RecsType.Number, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "AcceptOrder", - types: ["u32", "u32", "u32", "u32", "u64"], - customTypes: [], - }, - }, - ); - })(), - - BattleClaimData: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - event_id: RecsType.String, - structure_entity_id: RecsType.Number, - claimer: RecsType.BigInt, - claimer_name: RecsType.BigInt, - claimer_army_entity_id: RecsType.Number, - claimee_address: RecsType.BigInt, - claimee_name: RecsType.BigInt, - x: RecsType.Number, - y: RecsType.Number, - structure_type: RecsType.String, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BattleClaimData", - types: [ - "u32", - "EventType", - "u32", - "ContractAddress", - "felt252", - "u32", - "ContractAddress", - "felt252", - "u32", - "u32", - "StructureCategory", - "u64", - ], - customTypes: [], - }, - }, - ); - })(), - - BattleJoinData: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - event_id: RecsType.String, - battle_entity_id: RecsType.Number, - joiner: RecsType.BigInt, - joiner_name: RecsType.BigInt, - joiner_army_entity_id: RecsType.Number, - joiner_side: RecsType.String, - duration_left: RecsType.Number, - x: RecsType.Number, - y: RecsType.Number, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BattleJoinData", - types: [ - "u32", - "EventType", - "u32", - "ContractAddress", - "felt252", - "u32", - "BattleSide", - "u64", - "u32", - "u32", - "u64", - ], - customTypes: [], - }, - }, - ); - })(), - - BattleLeaveData: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - event_id: RecsType.String, - battle_entity_id: RecsType.Number, - leaver: RecsType.BigInt, - leaver_name: RecsType.BigInt, - leaver_army_entity_id: RecsType.Number, - leaver_side: RecsType.String, - duration_left: RecsType.Number, - x: RecsType.Number, - y: RecsType.Number, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BattleLeaveData", - types: [ - "u32", - "EventType", - "u32", - "ContractAddress", - "felt252", - "u32", - "BattleSide", - "u64", - "u32", - "u32", - "u64", - ], - customTypes: [], - }, - }, - ); - })(), - - BattlePillageData: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - event_id: RecsType.String, - pillager: RecsType.BigInt, - pillager_name: RecsType.BigInt, - pillager_realm_entity_id: RecsType.Number, - pillager_army_entity_id: RecsType.Number, - pillaged_structure_owner: RecsType.BigInt, - pillaged_structure_entity_id: RecsType.Number, - attacker_lost_troops: { - knight_count: RecsType.BigInt, - paladin_count: RecsType.BigInt, - crossbowman_count: RecsType.BigInt, - }, - structure_lost_troops: { - knight_count: RecsType.BigInt, - paladin_count: RecsType.BigInt, - crossbowman_count: RecsType.BigInt, - }, - pillaged_structure_owner_name: RecsType.BigInt, - winner: RecsType.String, - x: RecsType.Number, - y: RecsType.Number, - structure_type: RecsType.String, - pillaged_resources: RecsType.StringArray, - destroyed_building_category: RecsType.String, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BattlePillageData", - types: [ - "u32", - "EventType", - "ContractAddress", - "felt252", - "u32", - "u32", - "ContractAddress", - "u32", - // attacking troops - "u64", - "u64", - "u64", - // structure troops - "u64", - "u64", - "u64", - "felt252", - "BattleSide", - "u32", - "u32", - "StructureCategory", - "array", - "enum", - "u64", - ], - customTypes: ["Troops", "BuildingCategory"], - }, - }, - ); - })(), - - BattleStartData: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - event_id: RecsType.String, - battle_entity_id: RecsType.Number, - attacker: RecsType.BigInt, - attacker_name: RecsType.BigInt, - attacker_army_entity_id: RecsType.Number, - defender_name: RecsType.BigInt, - defender: RecsType.BigInt, - defender_army_entity_id: RecsType.Number, - duration_left: RecsType.Number, - x: RecsType.Number, - y: RecsType.Number, - structure_type: RecsType.String, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BattleStartData", - types: [ - "u32", - "EventType", - "u32", - "ContractAddress", - "felt252", - "u32", - "felt252", - "ContractAddress", - "u32", - "u64", - "u32", - "u32", - "StructureCategory", - "u64", - ], - customTypes: [], - }, - }, - ); - })(), - - BurnDonkey: (() => { - return defineComponent( - world, - { - player_address: RecsType.BigInt, - entity_id: RecsType.Number, - amount: RecsType.BigInt, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BurnDonkey", - types: ["ContractAddress", "u32", "u128", "u64"], - customTypes: [], - }, - }, - ); - })(), - - CreateGuild: (() => { - return defineComponent( - world, - { - guild_entity_id: RecsType.Number, - guild_name: RecsType.BigInt, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "CreateGuild", - types: ["u32", "felt252", "u64"], - customTypes: [], - }, - }, - ); - })(), - - GameEnded: (() => { - return defineComponent( - world, - { - winner_address: RecsType.BigInt, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "GameEnded", - types: ["ContractAddress", "u64"], - customTypes: [], - }, - }, - ); - })(), - - HyperstructureContribution: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - hyperstructure_entity_id: RecsType.Number, - contributor_entity_id: RecsType.Number, - contributions: RecsType.StringArray, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "HyperstructureContribution", - types: ["u32", "u32", "u32", "array", "u64"], - customTypes: [], - }, - }, - ); - })(), - - HyperstructureFinished: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - hyperstructure_entity_id: RecsType.Number, - contributor_entity_id: RecsType.Number, - timestamp: RecsType.Number, - hyperstructure_owner_name: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "HyperstructureFinished", - types: ["u32", "u32", "u32", "felt252", "u64"], - customTypes: [], - }, - }, - ); - })(), - - JoinGuild: (() => { - return defineComponent( - world, - { - guild_entity_id: RecsType.Number, - address: RecsType.BigInt, - guild_name: RecsType.BigInt, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "JoinGuild", - types: ["u32", "ContractAddress", "felt252", "u64"], - customTypes: [], - }, - }, - ); - })(), - - LiquidityEvent: (() => { - return defineComponent( - world, - { - bank_entity_id: RecsType.Number, - entity_id: RecsType.Number, - resource_type: RecsType.Number, - lords_amount: RecsType.BigInt, - resource_amount: RecsType.BigInt, - resource_price: RecsType.BigInt, - add: RecsType.Boolean, - timestamp: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "LiquidityEvent", - types: ["u32", "u32", "u8", "u128", "u128", "u128", "bool", "u64"], - customTypes: [], - }, - }, - ); - })(), - - MapExplored: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - col: RecsType.Number, - row: RecsType.Number, - id: RecsType.Number, - entity_owner_id: RecsType.Number, - biome: RecsType.String, - reward: RecsType.StringArray, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "MapExplored", - types: ["u32", "u32", "u32", "u32", "u32", "Biome", "array", "u64"], - customTypes: [], - }, - }, - ); - })(), - - SwapEvent: (() => { - return defineComponent( - world, - { - bank_entity_id: RecsType.Number, - entity_id: RecsType.Number, - id: RecsType.Number, - resource_type: RecsType.Number, - lords_amount: RecsType.BigInt, - resource_amount: RecsType.BigInt, - bank_owner_fees: RecsType.BigInt, - lp_fees: RecsType.BigInt, - resource_price: RecsType.BigInt, - buy: RecsType.Boolean, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "SwapEvent", - types: ["u32", "u32", "u32", "u8", "u128", "u128", "u128", "u128", "u128", "bool", "u64"], - customTypes: [], - }, - }, - ); - })(), - - SettleRealmData: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - event_id: RecsType.String, - entity_id: RecsType.Number, - owner_address: RecsType.BigInt, - owner_name: RecsType.BigInt, - realm_name: RecsType.BigInt, - produced_resources: RecsType.BigInt, - cities: RecsType.Number, - harbors: RecsType.Number, - rivers: RecsType.Number, - regions: RecsType.Number, - wonder: RecsType.Number, - order: RecsType.Number, - x: RecsType.Number, - y: RecsType.Number, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "SettleRealmData", - types: [ - "u32", - "EventType", - "u32", - "ContractAddress", - "felt252", - "felt252", - "u128", - "u8", - "u8", - "u8", - "u8", - "u8", - "u8", - "u32", - "u32", - "u64", - ], - customTypes: [], - }, - }, - ); - })(), - - Transfer: (() => { - return defineComponent( - world, - { - recipient_entity_id: RecsType.Number, - sending_realm_id: RecsType.Number, - sender_entity_id: RecsType.Number, - resources: RecsType.StringArray, - timestamp: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Transfer", - types: ["u32", "u32", "u32", "array", "u64"], - customTypes: ["Coord"], - }, - }, - ); - })(), - - Travel: (() => { - return defineComponent( - world, - { - destination_coord_x: RecsType.Number, - destination_coord_y: RecsType.Number, - owner: RecsType.BigInt, - entity_id: RecsType.Number, - travel_time: RecsType.BigInt, - travel_path: RecsType.StringArray, - timestamp: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Travel", - types: ["u32", "u32", "ContractAddress", "u32", "array", "u64"], - customTypes: ["Coord"], - }, - }, - ); - })(), - - TrophyProgression: (() => { - return defineComponent( - world, - { - player_id: RecsType.BigInt, - task_id: RecsType.BigInt, - count: RecsType.Number, - time: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "TrophyProgression", - types: ["felt252", "felt252", "u32", "u64"], - customTypes: [], - }, - }, - ); - })(), - HyperstructureCoOwnersChange: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - hyperstructure_entity_id: RecsType.Number, - co_owners: RecsType.StringArray, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "HyperstructureCoOwnersChange", - types: ["u32", "u32", "array", "u64"], - customTypes: [], - }, - }, - ); - })(), - }, - }; -}; diff --git a/client/apps/game/src/dojo/createSystemCalls.ts b/client/apps/game/src/dojo/create-system-calls.ts similarity index 100% rename from client/apps/game/src/dojo/createSystemCalls.ts rename to client/apps/game/src/dojo/create-system-calls.ts diff --git a/client/apps/game/src/dojo/createClientComponents.ts b/client/apps/game/src/dojo/createClientComponents.ts deleted file mode 100644 index 02316f36c3..0000000000 --- a/client/apps/game/src/dojo/createClientComponents.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { overridableComponent } from "@dojoengine/recs"; -import { SetupNetworkResult } from "./setupNetwork"; - -export type ClientComponents = ReturnType; - -export function createClientComponents({ contractComponents }: SetupNetworkResult) { - return { - ...contractComponents, - Building: overridableComponent(contractComponents.Building), - Position: overridableComponent(contractComponents.Position), - Stamina: overridableComponent(contractComponents.Stamina), - Tile: overridableComponent(contractComponents.Tile), - Population: overridableComponent(contractComponents.Population), - Resource: overridableComponent(contractComponents.Resource), - Weight: overridableComponent(contractComponents.Weight), - OwnedResourcesTracker: overridableComponent(contractComponents.OwnedResourcesTracker), - Army: overridableComponent(contractComponents.Army), - BuildingQuantityv2: overridableComponent(contractComponents.BuildingQuantityv2), - Structure: overridableComponent(contractComponents.Structure), - ArrivalTime: overridableComponent(contractComponents.ArrivalTime), - }; -} diff --git a/client/apps/game/src/dojo/debouncedQueries.ts b/client/apps/game/src/dojo/debounced-queries.ts similarity index 72% rename from client/apps/game/src/dojo/debouncedQueries.ts rename to client/apps/game/src/dojo/debounced-queries.ts index ea350511ac..9d8a7b8b65 100644 --- a/client/apps/game/src/dojo/debouncedQueries.ts +++ b/client/apps/game/src/dojo/debounced-queries.ts @@ -7,8 +7,6 @@ import { addMarketSubscription, addToSubscription, addToSubscriptionOneKeyModelbyRealmEntityId, - addToSubscriptionTwoKeyModelbyRealmEntityId, - syncPosition, } from "./queries"; // Queue class to manage requests @@ -52,40 +50,9 @@ class RequestQueue { } } -// Create separate queues for different types of requests -const positionQueue = new RequestQueue(); const subscriptionQueue = new RequestQueue(); const marketQueue = new RequestQueue(); const hyperstructureQueue = new RequestQueue(); -// Debounced functions that add to queues -export const debouncedSyncPosition = debounce( - async ( - client: ToriiClient, - components: Component[], - entityID: string, - onComplete?: () => void, - ) => { - await positionQueue.add(() => syncPosition(client, components, entityID), onComplete); - }, - 100, - { leading: true }, // Add leading: true to execute immediately on first call -); - -export const debouncedAddToSubscriptionTwoKey = debounce( - async ( - client: ToriiClient, - components: Component[], - entityID: string[], - onComplete?: () => void, - ) => { - await subscriptionQueue.add( - () => addToSubscriptionTwoKeyModelbyRealmEntityId(client, components, entityID), - onComplete, - ); - }, - 250, - { leading: true }, -); export const debouncedAddToSubscriptionOneKey = debounce( async ( @@ -142,7 +109,7 @@ export const debouncedAddMarketSubscription = debounce( { leading: true }, ); -export const debouncedAddHyperstructureSubscription = debounce( +const debouncedAddHyperstructureSubscription = debounce( async ( client: ToriiClient, components: Component[], @@ -153,11 +120,3 @@ export const debouncedAddHyperstructureSubscription = debounce( 500, { leading: true }, ); - -// Utility function to clear all queues if needed -export const clearAllQueues = () => { - positionQueue.clear(); - subscriptionQueue.clear(); - marketQueue.clear(); - hyperstructureQueue.clear(); -}; diff --git a/client/apps/game/src/dojo/entityWorker.js b/client/apps/game/src/dojo/entity-worker.js similarity index 100% rename from client/apps/game/src/dojo/entityWorker.js rename to client/apps/game/src/dojo/entity-worker.js diff --git a/client/apps/game/src/dojo/queries.ts b/client/apps/game/src/dojo/queries.ts index 99575f481d..e8190d9322 100644 --- a/client/apps/game/src/dojo/queries.ts +++ b/client/apps/game/src/dojo/queries.ts @@ -7,56 +7,6 @@ import { PatternMatching, ToriiClient } from "@dojoengine/torii-client"; // on hexception -> fetch below queries based on entityID // background sync after load -> - -export const syncPosition = async ( - client: ToriiClient, - components: Component[], - entityID: string, -) => { - await getEntities( - client, - { - Keys: { - keys: [entityID], - pattern_matching: "FixedLen" as PatternMatching, - models: ["s0_eternum-Position"], - }, - }, - components, - [], - [], - 5_000, - ); -}; - -export const addToSubscriptionTwoKeyModelbyRealmEntityId = async ( - client: ToriiClient, - components: Component[], - entityID: string[], -) => { - await getEntities( - client, - { - Composite: { - operator: "Or", - clauses: [ - ...entityID.map((id) => ({ - Keys: { - keys: [id, undefined], - pattern_matching: "VariableLen" as PatternMatching, - models: ["s0_eternum-BuildingQuantityv2"], - }, - })), - ], - }, - }, - components, - [], - [], - 5_000, - ); -}; - export const addToSubscriptionOneKeyModelbyRealmEntityId = async ( client: ToriiClient, components: Component[], @@ -72,7 +22,7 @@ export const addToSubscriptionOneKeyModelbyRealmEntityId = async ( client, { Member: { - model: "s0_eternum-DetachedResource", + model: "s1_eternum-DetachedResource", member: "resource_amount", operator: "Gt", value: { Primitive: { U128: "0" } }, @@ -168,14 +118,14 @@ export const addHyperstructureSubscription = async ( Keys: { keys: [undefined, undefined], pattern_matching: "FixedLen", - models: ["s0_eternum-Epoch", "s0_eternum-Progress"], + models: ["s1_eternum-Epoch", "s1_eternum-Progress"], }, }, { Keys: { keys: [undefined, undefined, undefined], pattern_matching: "FixedLen", - models: ["s0_eternum-Contribution"], + models: ["s1_eternum-Contribution"], }, }, ], @@ -205,7 +155,7 @@ export const addDonkeysAndArmiesSubscription = async ( operator: "Or", clauses: entityIds.map((id) => ({ Member: { - model: "s0_eternum-EntityOwner", + model: "s1_eternum-EntityOwner", member: "entity_owner_id", operator: "Eq", value: { Primitive: { U32: id } }, @@ -217,16 +167,16 @@ export const addDonkeysAndArmiesSubscription = async ( components, [], [ - "s0_eternum-Army", - "s0_eternum-Position", - "s0_eternum-Health", - "s0_eternum-EntityOwner", - "s0_eternum-Protectee", - "s0_eternum-Stamina", - "s0_eternum-Weight", - "s0_eternum-OwnedResourcesTracker", - "s0_eternum-ArrivalTime", - "s0_eternum-Quantity", + "s1_eternum-Army", + "s1_eternum-Position", + "s1_eternum-Health", + "s1_eternum-EntityOwner", + "s1_eternum-Protectee", + "s1_eternum-Stamina", + "s1_eternum-Weight", + "s1_eternum-OwnedResourcesTracker", + "s1_eternum-ArrivalTime", + "s1_eternum-Quantity", ], 1000, false, diff --git a/client/apps/game/src/dojo/setupNetwork.ts b/client/apps/game/src/dojo/setup-network.ts similarity index 85% rename from client/apps/game/src/dojo/setupNetwork.ts rename to client/apps/game/src/dojo/setup-network.ts index 84bd155a53..1b19cbe20e 100644 --- a/client/apps/game/src/dojo/setupNetwork.ts +++ b/client/apps/game/src/dojo/setup-network.ts @@ -1,6 +1,5 @@ -import { EternumProvider } from "@bibliothecadao/eternum"; +import { defineContractComponents, EternumProvider } from "@bibliothecadao/eternum"; import { DojoConfig } from "@dojoengine/core"; -import { defineContractComponents } from "./contractComponents"; import { world } from "./world"; import { BurnerManager } from "@dojoengine/create-burner"; @@ -8,12 +7,12 @@ import * as torii from "@dojoengine/torii-client"; import { Account } from "starknet"; import { env } from "./../../env"; -const { VITE_VRF_PROVIDER_ADDRESS, VITE_PUBLIC_DEV } = env; +const { VITE_PUBLIC_VRF_PROVIDER_ADDRESS, VITE_PUBLIC_DEV } = env; export type SetupNetworkResult = Awaited>; export async function setupNetwork({ ...config }: DojoConfig) { - const provider = new EternumProvider(config.manifest, config.rpcUrl, VITE_VRF_PROVIDER_ADDRESS); + const provider = new EternumProvider(config.manifest, config.rpcUrl, VITE_PUBLIC_VRF_PROVIDER_ADDRESS); const toriiClient = await torii.createClient({ rpcUrl: config.rpcUrl, diff --git a/client/apps/game/src/dojo/setup.ts b/client/apps/game/src/dojo/setup.ts index 0a2882286c..0d5f438fe2 100644 --- a/client/apps/game/src/dojo/setup.ts +++ b/client/apps/game/src/dojo/setup.ts @@ -1,8 +1,10 @@ -import { AppStore } from "@/hooks/store/useUIStore"; -import { LoadingStateKey } from "@/hooks/store/useWorldLoading"; +import { AppStore } from "@/hooks/store/use-ui-store"; +import { LoadingStateKey } from "@/hooks/store/use-world-loading"; +import { ETERNUM_CONFIG } from "@/utils/config"; import { BUILDING_CATEGORY_POPULATION_CONFIG_ID, ClientConfigManager, + createClientComponents, HYPERSTRUCTURE_CONFIG_ID, WORLD_CONFIG_ID, } from "@bibliothecadao/eternum"; @@ -11,15 +13,14 @@ import { Component, Metadata, Schema } from "@dojoengine/recs"; import { getEntities, getEvents, setEntities } from "@dojoengine/state"; import { Clause, EntityKeysClause, ToriiClient } from "@dojoengine/torii-client"; import { debounce } from "lodash"; -import { createClientComponents } from "./createClientComponents"; -import { createSystemCalls } from "./createSystemCalls"; -import { setupNetwork } from "./setupNetwork"; +import { createSystemCalls } from "./create-system-calls"; +import { setupNetwork } from "./setup-network"; export type SetupResult = Awaited>; export const configManager = ClientConfigManager.instance(); -export const syncEntitiesDebounced = async ( +const syncEntitiesDebounced = async ( client: ToriiClient, components: Component[], entityKeyClause: EntityKeysClause[], @@ -131,7 +132,7 @@ export async function setup(config: DojoConfig & { state: AppStore }) { Keys: { keys: [undefined, undefined], pattern_matching: "FixedLen", - models: ["s0_eternum-CapacityConfigCategory", "s0_eternum-ResourceCost"], + models: ["s1_eternum-CapacityConfigCategory", "s1_eternum-ResourceCost"], }, }, network.contractComponents as any, @@ -157,14 +158,14 @@ export async function setup(config: DojoConfig & { state: AppStore }) { Keys: { keys: [undefined, undefined], pattern_matching: "FixedLen", - models: ["s0_eternum-Epoch", "s0_eternum-Progress", "s0_eternum-LeaderboardRegisterContribution"], + models: ["s1_eternum-Epoch", "s1_eternum-Progress", "s1_eternum-LeaderboardRegisterContribution"], }, }, { Keys: { keys: [undefined, undefined, undefined], pattern_matching: "FixedLen", - models: ["s0_eternum-Contribution", "s0_eternum-LeaderboardRegisterShare"], + models: ["s1_eternum-Contribution", "s1_eternum-LeaderboardRegisterShare"], }, }, ], @@ -187,22 +188,22 @@ export async function setup(config: DojoConfig & { state: AppStore }) { keys: [undefined], pattern_matching: "FixedLen", models: [ - "s0_eternum-AddressName", - "s0_eternum-Realm", - "s0_eternum-PopulationConfig", - "s0_eternum-CapacityConfig", - "s0_eternum-ProductionConfig", - "s0_eternum-RealmLevelConfig", - "s0_eternum-BankConfig", - "s0_eternum-Bank", - "s0_eternum-Trade", - "s0_eternum-Structure", - "s0_eternum-Battle", - "s0_eternum-Guild", - "s0_eternum-LeaderboardRegistered", - "s0_eternum-Leaderboard", - "s0_eternum-LeaderboardRewardClaimed", - "s0_eternum-LeaderboardEntry", + "s1_eternum-AddressName", + "s1_eternum-Realm", + "s1_eternum-PopulationConfig", + "s1_eternum-CapacityConfig", + "s1_eternum-ProductionConfig", + "s1_eternum-RealmLevelConfig", + "s1_eternum-BankConfig", + "s1_eternum-Bank", + "s1_eternum-Trade", + "s1_eternum-Structure", + "s1_eternum-Battle", + "s1_eternum-Guild", + "s1_eternum-LeaderboardRegistered", + "s1_eternum-Leaderboard", + "s1_eternum-LeaderboardRewardClaimed", + "s1_eternum-LeaderboardEntry", ], }, }, @@ -216,8 +217,8 @@ export async function setup(config: DojoConfig & { state: AppStore }) { }); const sync = await syncEntitiesDebounced(network.toriiClient, network.contractComponents as any, [], false); - - configManager.setDojo(components); + const eternumConfig = await ETERNUM_CONFIG(); + configManager.setDojo(components, eternumConfig); // setLoading(LoadingStateKey.Events, true); @@ -231,7 +232,7 @@ export async function setup(config: DojoConfig & { state: AppStore }) { Keys: { keys: [undefined], pattern_matching: "VariableLen", - models: ["s0_eternum-GameEnded"], + models: ["s1_eternum-GameEnded"], }, }, false, @@ -252,17 +253,17 @@ export async function setup(config: DojoConfig & { state: AppStore }) { keys: [undefined], pattern_matching: "VariableLen", models: [ - // "s0_eternum-GameEnded", - "s0_eternum-HyperstructureFinished", - "s0_eternum-BattleClaimData", - "s0_eternum-BattleJoinData", - "s0_eternum-BattleLeaveData", - "s0_eternum-BattlePillageData", - "s0_eternum-BattleStartData", - "s0_eternum-AcceptOrder", - "s0_eternum-SwapEvent", - "s0_eternum-LiquidityEvent", - "s0_eternum-HyperstructureContribution", + // "s1_eternum-GameEnded", + "s1_eternum-HyperstructureFinished", + "s1_eternum-BattleClaimData", + "s1_eternum-BattleJoinData", + "s1_eternum-BattleLeaveData", + "s1_eternum-BattlePillageData", + "s1_eternum-BattleStartData", + "s1_eternum-AcceptOrder", + "s1_eternum-SwapEvent", + "s1_eternum-LiquidityEvent", + "s1_eternum-HyperstructureContribution", ], }, }, diff --git a/client/apps/game/src/dojo/worker.ts b/client/apps/game/src/dojo/worker.ts deleted file mode 100644 index 39e2a54f19..0000000000 --- a/client/apps/game/src/dojo/worker.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { Component, Metadata, Schema } from "@dojoengine/recs"; -import { setEntities } from "@dojoengine/state"; -import { EntityKeysClause, createClient } from "@dojoengine/torii-wasm"; - -export async function setupWorker( - config: { rpcUrl: string; toriiUrl: string; relayUrl: string; worldAddress: string }, - components: Component[], - entityKeyClause: EntityKeysClause[], - historical: boolean, - logging = false, -) { - if (logging) console.log("Starting syncEntities"); - - const worker = new Worker(new URL("./entityWorker.js", import.meta.url), { type: "module" }); - - // Create the client in the main thread - const toriiClient = await createClient({ - rpcUrl: config.rpcUrl, - toriiUrl: config.toriiUrl, - relayUrl: config.relayUrl, - worldAddress: config.worldAddress, - }); - - // Listen for batches from the Worker - worker.onmessage = (event) => { - const { updatedEntities } = event.data; - setEntities(updatedEntities, components, logging); - }; - - // Set up subscriptions in the main thread - await toriiClient.onEntityUpdated(entityKeyClause, (fetchedEntities: any, data: any) => { - if (logging) console.log("Main: Entity updated", fetchedEntities); - // Send updates to worker for processing - worker.postMessage({ - type: "update", - entities: { fetchedEntities, data }, - logging, - }); - }); - - await toriiClient.onEventMessageUpdated(entityKeyClause, historical, (fetchedEntities: any, data: any) => { - if (logging) console.log("Main: Event message updated", fetchedEntities); - // Send updates to worker for processing - worker.postMessage({ - type: "update", - entities: { fetchedEntities, data }, - logging, - }); - }); - - return { - cancel: () => { - worker.terminate(); - }, - }; -} diff --git a/client/apps/game/src/hooks/context/accountStore.tsx b/client/apps/game/src/hooks/context/account-store.ts similarity index 100% rename from client/apps/game/src/hooks/context/accountStore.tsx rename to client/apps/game/src/hooks/context/account-store.ts diff --git a/client/apps/game/src/hooks/context/DojoContext.tsx b/client/apps/game/src/hooks/context/dojo-context.tsx similarity index 92% rename from client/apps/game/src/hooks/context/DojoContext.tsx rename to client/apps/game/src/hooks/context/dojo-context.tsx index 7365d3324a..f2f2adc07e 100644 --- a/client/apps/game/src/hooks/context/DojoContext.tsx +++ b/client/apps/game/src/hooks/context/dojo-context.tsx @@ -1,10 +1,16 @@ import { ReactComponent as CartridgeSmall } from "@/assets/icons/cartridge-small.svg"; -import { SetupNetworkResult } from "@/dojo/setupNetwork"; -import { Position } from "@/types/Position"; -import { OnboardingContainer, StepContainer } from "@/ui/layouts/Onboarding"; -import { OnboardingButton } from "@/ui/layouts/OnboardingButton"; -import { CountdownTimer, LoadingScreen } from "@/ui/modules/LoadingScreen"; -import { ACCOUNT_CHANGE_EVENT, SpectateButton } from "@/ui/modules/onboarding/Steps"; +import { SetupResult } from "@/dojo/setup"; +import { SetupNetworkResult } from "@/dojo/setup-network"; +import { useAccountStore } from "@/hooks/context/account-store"; +import { useQuery } from "@/hooks/helpers/use-query"; +import { useAddressStore } from "@/hooks/store/use-address-store"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { Position } from "@/types/position"; +import { OnboardingContainer, StepContainer } from "@/ui/layouts/onboarding"; +import { OnboardingButton } from "@/ui/layouts/onboarding-button"; +import { CountdownTimer, LoadingScreen } from "@/ui/modules/loading-screen"; +import { ACCOUNT_CHANGE_EVENT, SpectateButton } from "@/ui/modules/onboarding/steps"; +import { displayAddress } from "@/ui/utils/utils"; import { ContractAddress } from "@bibliothecadao/eternum"; import ControllerConnector from "@cartridge/connector/controller"; import { BurnerProvider, useBurnerManager } from "@dojoengine/create-burner"; @@ -14,12 +20,6 @@ import { useAccount, useConnect } from "@starknet-react/core"; import { ReactNode, createContext, useContext, useEffect, useMemo, useState } from "react"; import { Account, AccountInterface, RpcProvider } from "starknet"; import { Env, env } from "../../../env"; -import { SetupResult } from "../../dojo/setup"; -import { displayAddress } from "../../ui/utils/utils"; -import { useQuery } from "../helpers/useQuery"; -import { useAddressStore } from "../store/useAddressStore"; -import useUIStore from "../store/useUIStore"; -import { useAccountStore } from "./accountStore"; interface DojoAccount { create: () => void; @@ -226,7 +226,6 @@ const DojoContextProvider = ({ } } else { if (controllerAccount) { - // console.log("Setting account from controllerAccount:", controllerAccount); useAccountStore.getState().setAccount(controllerAccount); const addressName = runQuery([ @@ -239,7 +238,6 @@ const DojoContextProvider = ({ setAccountsInitialized(true); } else { - // console.log("ControllerAccount is null in production or not connected."); setTimeout(() => { setRetries((prevRetries) => { if (prevRetries < 10) { diff --git a/client/apps/game/src/hooks/context/mainnet-policies.tsx b/client/apps/game/src/hooks/context/mainnet-policies.tsx deleted file mode 100644 index f0587b11e3..0000000000 --- a/client/apps/game/src/hooks/context/mainnet-policies.tsx +++ /dev/null @@ -1,574 +0,0 @@ -export const mainnetPolicies = [ - { - target: "0x7f4862123d52dffae89ec3fb4557690cd7fe2e92c9bf48d3bf8e44abfeafcf4", - method: "dojo_name", - }, - { - target: "0x7f4862123d52dffae89ec3fb4557690cd7fe2e92c9bf48d3bf8e44abfeafcf4", - method: "change_owner_amm_fee", - }, - { - target: "0x7f4862123d52dffae89ec3fb4557690cd7fe2e92c9bf48d3bf8e44abfeafcf4", - method: "change_owner_bridge_fee", - }, - { - target: "0x7f4862123d52dffae89ec3fb4557690cd7fe2e92c9bf48d3bf8e44abfeafcf4", - method: "world_dispatcher", - }, - { - target: "0x4ed3a7c5f53c6e96186eaf1b670bd2e2a3699c08e070aedf4e5fc6ac246ddc1", - method: "dojo_name", - }, - { - target: "0x4ed3a7c5f53c6e96186eaf1b670bd2e2a3699c08e070aedf4e5fc6ac246ddc1", - method: "battle_pillage", - }, - { - target: "0x4ed3a7c5f53c6e96186eaf1b670bd2e2a3699c08e070aedf4e5fc6ac246ddc1", - method: "world_dispatcher", - }, - { - target: "0x2620f65aa2fd72d705306ada1ee7410023a3df03da9291f1ccb744fabfebc0", - method: "dojo_name", - }, - { - target: "0x2620f65aa2fd72d705306ada1ee7410023a3df03da9291f1ccb744fabfebc0", - method: "battle_start", - }, - { - target: "0x2620f65aa2fd72d705306ada1ee7410023a3df03da9291f1ccb744fabfebc0", - method: "battle_force_start", - }, - { - target: "0x2620f65aa2fd72d705306ada1ee7410023a3df03da9291f1ccb744fabfebc0", - method: "battle_join", - }, - { - target: "0x2620f65aa2fd72d705306ada1ee7410023a3df03da9291f1ccb744fabfebc0", - method: "battle_leave", - }, - { - target: "0x2620f65aa2fd72d705306ada1ee7410023a3df03da9291f1ccb744fabfebc0", - method: "battle_claim", - }, - { - target: "0x2620f65aa2fd72d705306ada1ee7410023a3df03da9291f1ccb744fabfebc0", - method: "battle_resolve", - }, - { - target: "0x2620f65aa2fd72d705306ada1ee7410023a3df03da9291f1ccb744fabfebc0", - method: "world_dispatcher", - }, - { - target: "0x6bf57710571fd159e71b1ed155bb0759027e416c88a06556f321c94c214e768", - method: "dojo_name", - }, - { - target: "0x6bf57710571fd159e71b1ed155bb0759027e416c88a06556f321c94c214e768", - method: "leave_battle", - }, - { - target: "0x6bf57710571fd159e71b1ed155bb0759027e416c88a06556f321c94c214e768", - method: "leave_battle_if_ended", - }, - { - target: "0x6bf57710571fd159e71b1ed155bb0759027e416c88a06556f321c94c214e768", - method: "world_dispatcher", - }, - { - target: "0x4b6a35c0c541467674ebb9640113a6d79c6f5a468796e9299b8e484a770032a", - method: "dojo_name", - }, - { - target: "0x4b6a35c0c541467674ebb9640113a6d79c6f5a468796e9299b8e484a770032a", - method: "create", - }, - { - target: "0x4b6a35c0c541467674ebb9640113a6d79c6f5a468796e9299b8e484a770032a", - method: "pause_production", - }, - { - target: "0x4b6a35c0c541467674ebb9640113a6d79c6f5a468796e9299b8e484a770032a", - method: "resume_production", - }, - { - target: "0x4b6a35c0c541467674ebb9640113a6d79c6f5a468796e9299b8e484a770032a", - method: "destroy", - }, - { - target: "0x4b6a35c0c541467674ebb9640113a6d79c6f5a468796e9299b8e484a770032a", - method: "world_dispatcher", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "dojo_name", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_world_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_season_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_season_bridge_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_vrf_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_quest_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_quest_reward_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_map_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_capacity_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_travel_stamina_cost_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_weight_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_battle_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_tick_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_stamina_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_travel_food_cost_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_stamina_refill_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_leveling_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_production_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_speed_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_hyperstructure_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_bank_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_troop_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_building_category_pop_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_population_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_building_general_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_building_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_mercenaries_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_resource_bridge_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_resource_bridge_fee_split_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_resource_bridge_whitelist_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_realm_max_level_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_realm_level_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "set_settlement_config", - }, - { - target: "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - method: "world_dispatcher", - }, - { - target: "0xee829901be444844e0771a0c793b106c3192c312c8e58685f7c6941893b5f9", - method: "dojo_name", - }, - { - target: "0xee829901be444844e0771a0c793b106c3192c312c8e58685f7c6941893b5f9", - method: "create_admin_bank", - }, - { - target: "0xee829901be444844e0771a0c793b106c3192c312c8e58685f7c6941893b5f9", - method: "world_dispatcher", - }, - { - target: "0x729222a8e3757daec72d37dd434a3a44d3c0bddbec95cf087fb1b983b166b1a", - method: "dojo_name", - }, - { - target: "0x729222a8e3757daec72d37dd434a3a44d3c0bddbec95cf087fb1b983b166b1a", - method: "create", - }, - { - target: "0x729222a8e3757daec72d37dd434a3a44d3c0bddbec95cf087fb1b983b166b1a", - method: "world_dispatcher", - }, - { - target: "0x17410a6c37040ef285251f763799939f69033c69c6d5f9ddb61ff4a139d3f58", - method: "dojo_name", - }, - { - target: "0x17410a6c37040ef285251f763799939f69033c69c6d5f9ddb61ff4a139d3f58", - method: "mint", - }, - { - target: "0x17410a6c37040ef285251f763799939f69033c69c6d5f9ddb61ff4a139d3f58", - method: "world_dispatcher", - }, - { - target: "0x68a2cb801dc504acb121c7609d13f1f4bea6739dc80c31d789868ebda339067", - method: "dojo_name", - }, - { - target: "0x68a2cb801dc504acb121c7609d13f1f4bea6739dc80c31d789868ebda339067", - method: "world_dispatcher", - }, - { - target: "0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4", - method: "dojo_name", - }, - { - target: "0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4", - method: "create_guild", - }, - { - target: "0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4", - method: "join_guild", - }, - { - target: "0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4", - method: "whitelist_player", - }, - { - target: "0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4", - method: "transfer_guild_ownership", - }, - { - target: "0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4", - method: "remove_guild_member", - }, - { - target: "0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4", - method: "remove_player_from_whitelist", - }, - { - target: "0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4", - method: "world_dispatcher", - }, - { - target: "0x2fcc3c1691387321c2f4d6310eda7a14365bd274c1a37ed3948d2e93a56f821", - method: "dojo_name", - }, - { - target: "0x2fcc3c1691387321c2f4d6310eda7a14365bd274c1a37ed3948d2e93a56f821", - method: "get_points", - }, - { - target: "0x2fcc3c1691387321c2f4d6310eda7a14365bd274c1a37ed3948d2e93a56f821", - method: "create", - }, - { - target: "0x2fcc3c1691387321c2f4d6310eda7a14365bd274c1a37ed3948d2e93a56f821", - method: "contribute_to_construction", - }, - { - target: "0x2fcc3c1691387321c2f4d6310eda7a14365bd274c1a37ed3948d2e93a56f821", - method: "set_co_owners", - }, - { - target: "0x2fcc3c1691387321c2f4d6310eda7a14365bd274c1a37ed3948d2e93a56f821", - method: "end_game", - }, - { - target: "0x2fcc3c1691387321c2f4d6310eda7a14365bd274c1a37ed3948d2e93a56f821", - method: "set_access", - }, - { - target: "0x2fcc3c1691387321c2f4d6310eda7a14365bd274c1a37ed3948d2e93a56f821", - method: "world_dispatcher", - }, - { - target: "0xa052c5ca082356bcc8457f0f805eaf18f97d0fdddde3f90f5b238923859ed4", - method: "dojo_name", - }, - { - target: "0xa052c5ca082356bcc8457f0f805eaf18f97d0fdddde3f90f5b238923859ed4", - method: "add", - }, - { - target: "0xa052c5ca082356bcc8457f0f805eaf18f97d0fdddde3f90f5b238923859ed4", - method: "remove", - }, - { - target: "0xa052c5ca082356bcc8457f0f805eaf18f97d0fdddde3f90f5b238923859ed4", - method: "world_dispatcher", - }, - { - target: "0x7f274766f8f7fb0503d3d72b15a4d853f6189402a2ad1c9780fc7a1b017f678", - method: "dojo_name", - }, - { - target: "0x7f274766f8f7fb0503d3d72b15a4d853f6189402a2ad1c9780fc7a1b017f678", - method: "discover_shards_mine", - }, - { - target: "0x7f274766f8f7fb0503d3d72b15a4d853f6189402a2ad1c9780fc7a1b017f678", - method: "add_mercenaries_to_structure", - }, - { - target: "0x7f274766f8f7fb0503d3d72b15a4d853f6189402a2ad1c9780fc7a1b017f678", - method: "world_dispatcher", - }, - { - target: "0x4a212c52c4035bc9bd170125216604f406dcd75b41be11d3b4d89047366d84d", - method: "dojo_name", - }, - { - target: "0x4a212c52c4035bc9bd170125216604f406dcd75b41be11d3b4d89047366d84d", - method: "explore", - }, - { - target: "0x4a212c52c4035bc9bd170125216604f406dcd75b41be11d3b4d89047366d84d", - method: "world_dispatcher", - }, - { - target: "0x7e3bae0e253a0131063b63ee4d7b27b50329c617ae88b82d529a70f1a11c63", - method: "dojo_name", - }, - { - target: "0x7e3bae0e253a0131063b63ee4d7b27b50329c617ae88b82d529a70f1a11c63", - method: "set_address_name", - }, - { - target: "0x7e3bae0e253a0131063b63ee4d7b27b50329c617ae88b82d529a70f1a11c63", - method: "set_entity_name", - }, - { - target: "0x7e3bae0e253a0131063b63ee4d7b27b50329c617ae88b82d529a70f1a11c63", - method: "world_dispatcher", - }, - { - target: "0x30516789ee1b822d7b448f01be67cec7bf383d3ac4b2380a09f85ad0765f846", - method: "dojo_name", - }, - { - target: "0x30516789ee1b822d7b448f01be67cec7bf383d3ac4b2380a09f85ad0765f846", - method: "transfer_ownership", - }, - { - target: "0x30516789ee1b822d7b448f01be67cec7bf383d3ac4b2380a09f85ad0765f846", - method: "world_dispatcher", - }, - { - target: "0x1b480f620ea35431ab43dba634795b14f547ef3e77370db6f0a31f2fdc21d86", - method: "dojo_name", - }, - { - target: "0x1b480f620ea35431ab43dba634795b14f547ef3e77370db6f0a31f2fdc21d86", - method: "create", - }, - { - target: "0x1b480f620ea35431ab43dba634795b14f547ef3e77370db6f0a31f2fdc21d86", - method: "upgrade_level", - }, - { - target: "0x1b480f620ea35431ab43dba634795b14f547ef3e77370db6f0a31f2fdc21d86", - method: "quest_claim", - }, - { - target: "0x1b480f620ea35431ab43dba634795b14f547ef3e77370db6f0a31f2fdc21d86", - method: "world_dispatcher", - }, - { - target: "0x691a60b709ca5c1c5ff86824831f84deb26f0f5d07d70c0f807eab48110d2f6", - method: "dojo_name", - }, - { - target: "0x691a60b709ca5c1c5ff86824831f84deb26f0f5d07d70c0f807eab48110d2f6", - method: "deposit_initial", - }, - { - target: "0x691a60b709ca5c1c5ff86824831f84deb26f0f5d07d70c0f807eab48110d2f6", - method: "deposit", - }, - { - target: "0x691a60b709ca5c1c5ff86824831f84deb26f0f5d07d70c0f807eab48110d2f6", - method: "start_withdraw", - }, - { - target: "0x691a60b709ca5c1c5ff86824831f84deb26f0f5d07d70c0f807eab48110d2f6", - method: "finish_withdraw", - }, - { - target: "0x691a60b709ca5c1c5ff86824831f84deb26f0f5d07d70c0f807eab48110d2f6", - method: "world_dispatcher", - }, - { - target: "0x42c0303a2119a9e20daa60e83c48221cdf1bb2a4c009bab031d1cd3555a127e", - method: "dojo_name", - }, - { - target: "0x42c0303a2119a9e20daa60e83c48221cdf1bb2a4c009bab031d1cd3555a127e", - method: "approve", - }, - { - target: "0x42c0303a2119a9e20daa60e83c48221cdf1bb2a4c009bab031d1cd3555a127e", - method: "send", - }, - { - target: "0x42c0303a2119a9e20daa60e83c48221cdf1bb2a4c009bab031d1cd3555a127e", - method: "pickup", - }, - { - target: "0x42c0303a2119a9e20daa60e83c48221cdf1bb2a4c009bab031d1cd3555a127e", - method: "world_dispatcher", - }, - { - target: "0x4b5e65a9617c7ba3c7ea64324ff4338a400adb1a3cfe903b3f8b647cbb59fb7", - method: "dojo_name", - }, - { - target: "0x4b5e65a9617c7ba3c7ea64324ff4338a400adb1a3cfe903b3f8b647cbb59fb7", - method: "register_to_leaderboard", - }, - { - target: "0x4b5e65a9617c7ba3c7ea64324ff4338a400adb1a3cfe903b3f8b647cbb59fb7", - method: "claim_leaderboard_rewards", - }, - { - target: "0x4b5e65a9617c7ba3c7ea64324ff4338a400adb1a3cfe903b3f8b647cbb59fb7", - method: "world_dispatcher", - }, - { - target: "0x4f92a1d00d3aec8cece60fc2d0fc236fe1d95c54ff0ceb2f393fbc7e0863d8e", - method: "dojo_name", - }, - { - target: "0x4f92a1d00d3aec8cece60fc2d0fc236fe1d95c54ff0ceb2f393fbc7e0863d8e", - method: "buy", - }, - { - target: "0x4f92a1d00d3aec8cece60fc2d0fc236fe1d95c54ff0ceb2f393fbc7e0863d8e", - method: "sell", - }, - { - target: "0x4f92a1d00d3aec8cece60fc2d0fc236fe1d95c54ff0ceb2f393fbc7e0863d8e", - method: "world_dispatcher", - }, - { - target: "0x7e2b1334398fafbe640f34bacae99b649d633417960ee397b6a8fb117fec819", - method: "dojo_name", - }, - { - target: "0x7e2b1334398fafbe640f34bacae99b649d633417960ee397b6a8fb117fec819", - method: "create_order", - }, - { - target: "0x7e2b1334398fafbe640f34bacae99b649d633417960ee397b6a8fb117fec819", - method: "accept_order", - }, - { - target: "0x7e2b1334398fafbe640f34bacae99b649d633417960ee397b6a8fb117fec819", - method: "accept_partial_order", - }, - { - target: "0x7e2b1334398fafbe640f34bacae99b649d633417960ee397b6a8fb117fec819", - method: "cancel_order", - }, - { - target: "0x7e2b1334398fafbe640f34bacae99b649d633417960ee397b6a8fb117fec819", - method: "world_dispatcher", - }, - { - target: "0x4069c2be57f08fef9f31afc85a5b4c03c208ebdb278b9d853606caa7a9cbee6", - method: "dojo_name", - }, - { - target: "0x4069c2be57f08fef9f31afc85a5b4c03c208ebdb278b9d853606caa7a9cbee6", - method: "travel_hex", - }, - { - target: "0x4069c2be57f08fef9f31afc85a5b4c03c208ebdb278b9d853606caa7a9cbee6", - method: "world_dispatcher", - }, - { - target: "0x26be0ed574aa9ee6f73b53b12f0a199ddbf4ac697470316cdb3d9d1f5680cab", - method: "dojo_name", - }, - { - target: "0x26be0ed574aa9ee6f73b53b12f0a199ddbf4ac697470316cdb3d9d1f5680cab", - method: "army_create", - }, - { - target: "0x26be0ed574aa9ee6f73b53b12f0a199ddbf4ac697470316cdb3d9d1f5680cab", - method: "army_delete", - }, - { - target: "0x26be0ed574aa9ee6f73b53b12f0a199ddbf4ac697470316cdb3d9d1f5680cab", - method: "army_buy_troops", - }, - { - target: "0x26be0ed574aa9ee6f73b53b12f0a199ddbf4ac697470316cdb3d9d1f5680cab", - method: "army_merge_troops", - }, - { - target: "0x26be0ed574aa9ee6f73b53b12f0a199ddbf4ac697470316cdb3d9d1f5680cab", - method: "world_dispatcher", - }, -]; diff --git a/client/apps/game/src/hooks/context/policies.ts b/client/apps/game/src/hooks/context/policies.ts new file mode 100644 index 0000000000..ab170592cf --- /dev/null +++ b/client/apps/game/src/hooks/context/policies.ts @@ -0,0 +1,681 @@ +import { ContractPolicies } from "@cartridge/controller"; + +export const policies: ContractPolicies = { + "0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f": { + methods: [ + { + name: "VRF", + description: "Verifiable Random Function", + entrypoint: "request_random", + }, + ], + }, + "0x52af4d4b243462e91f68309722dc42f9f970cdce2c80a4f0240b60c3f8dab44": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "change_owner_amm_fee", + entrypoint: "change_owner_amm_fee", + }, + { + name: "change_owner_bridge_fee", + entrypoint: "change_owner_bridge_fee", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x267b8cc82862b1451652a1606629bcf3ad200973f0ca096493b4693f697c80e": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "battle_pillage", + entrypoint: "battle_pillage", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x1fd0b5233b521873898e99517a70f96a5023840692d189476c2550055fb8086": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "battle_start", + entrypoint: "battle_start", + }, + { + name: "battle_force_start", + entrypoint: "battle_force_start", + }, + { + name: "battle_join", + entrypoint: "battle_join", + }, + { + name: "battle_leave", + entrypoint: "battle_leave", + }, + { + name: "battle_claim", + entrypoint: "battle_claim", + }, + { + name: "battle_resolve", + entrypoint: "battle_resolve", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x477996a3e273e590b2a8bdbca65cc9f84be437872933e11dac1ef5090f7d32d": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "leave_battle", + entrypoint: "leave_battle", + }, + { + name: "leave_battle_if_ended", + entrypoint: "leave_battle_if_ended", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x5ad0e42e034430f752a0c4e210c903df016ad10e349dbf63cc82988c99a571e": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "create", + entrypoint: "create", + }, + { + name: "pause_production", + entrypoint: "pause_production", + }, + { + name: "resume_production", + entrypoint: "resume_production", + }, + { + name: "destroy", + entrypoint: "destroy", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "set_world_config", + entrypoint: "set_world_config", + }, + { + name: "set_season_config", + entrypoint: "set_season_config", + }, + { + name: "set_season_bridge_config", + entrypoint: "set_season_bridge_config", + }, + { + name: "set_vrf_config", + entrypoint: "set_vrf_config", + }, + { + name: "set_quest_config", + entrypoint: "set_quest_config", + }, + { + name: "set_quest_reward_config", + entrypoint: "set_quest_reward_config", + }, + { + name: "set_map_config", + entrypoint: "set_map_config", + }, + { + name: "set_capacity_config", + entrypoint: "set_capacity_config", + }, + { + name: "set_travel_stamina_cost_config", + entrypoint: "set_travel_stamina_cost_config", + }, + { + name: "set_weight_config", + entrypoint: "set_weight_config", + }, + { + name: "set_battle_config", + entrypoint: "set_battle_config", + }, + { + name: "set_tick_config", + entrypoint: "set_tick_config", + }, + { + name: "set_stamina_config", + entrypoint: "set_stamina_config", + }, + { + name: "set_travel_food_cost_config", + entrypoint: "set_travel_food_cost_config", + }, + { + name: "set_stamina_refill_config", + entrypoint: "set_stamina_refill_config", + }, + { + name: "set_leveling_config", + entrypoint: "set_leveling_config", + }, + { + name: "set_production_config", + entrypoint: "set_production_config", + }, + { + name: "set_speed_config", + entrypoint: "set_speed_config", + }, + { + name: "set_hyperstructure_config", + entrypoint: "set_hyperstructure_config", + }, + { + name: "set_bank_config", + entrypoint: "set_bank_config", + }, + { + name: "set_troop_config", + entrypoint: "set_troop_config", + }, + { + name: "set_building_category_pop_config", + entrypoint: "set_building_category_pop_config", + }, + { + name: "set_population_config", + entrypoint: "set_population_config", + }, + { + name: "set_building_general_config", + entrypoint: "set_building_general_config", + }, + { + name: "set_building_config", + entrypoint: "set_building_config", + }, + { + name: "set_mercenaries_config", + entrypoint: "set_mercenaries_config", + }, + { + name: "set_resource_bridge_config", + entrypoint: "set_resource_bridge_config", + }, + { + name: "set_resource_bridge_fee_split_config", + entrypoint: "set_resource_bridge_fee_split_config", + }, + { + name: "set_resource_bridge_whitelist_config", + entrypoint: "set_resource_bridge_whitelist_config", + }, + { + name: "set_realm_max_level_config", + entrypoint: "set_realm_max_level_config", + }, + { + name: "set_realm_level_config", + entrypoint: "set_realm_level_config", + }, + { + name: "set_settlement_config", + entrypoint: "set_settlement_config", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x730dc36e3ac2726d2373ae50965dd4ba793ab3bbfc4d51d73d5a8108cb80175": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "create_admin_bank", + entrypoint: "create_admin_bank", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x56c668f4e561ec08a5e6b32064a42855f6ea8693806713f4f04ad2ca38353d2": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "create", + entrypoint: "create", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x789a850d97d714ca0d2ebef8d61c25cd2342fc310fa10bb3b6c2edad1172351": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "mint", + entrypoint: "mint", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x40236e6868cfc14d4a73b3ad4be0df18a7c88877a684be223c1a8593109d7d9": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x3920dbf33145cca955528fee24474def2f7e48b0071c04cd31572216e5abdce": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "create_guild", + entrypoint: "create_guild", + }, + { + name: "join_guild", + entrypoint: "join_guild", + }, + { + name: "whitelist_player", + entrypoint: "whitelist_player", + }, + { + name: "transfer_guild_ownership", + entrypoint: "transfer_guild_ownership", + }, + { + name: "remove_guild_member", + entrypoint: "remove_guild_member", + }, + { + name: "remove_player_from_whitelist", + entrypoint: "remove_player_from_whitelist", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x67dfe2d094f457fc478568d433efcbbad8ed98f35351199f1aae72424727713": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "get_points", + entrypoint: "get_points", + }, + { + name: "create", + entrypoint: "create", + }, + { + name: "contribute_to_construction", + entrypoint: "contribute_to_construction", + }, + { + name: "set_co_owners", + entrypoint: "set_co_owners", + }, + { + name: "end_game", + entrypoint: "end_game", + }, + { + name: "set_access", + entrypoint: "set_access", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x2cf9b074003aeae091861585eade1d1007641c95978cbc67170a6a7002c6117": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "add", + entrypoint: "add", + }, + { + name: "remove", + entrypoint: "remove", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x1fd92361d6679473f165797c5285e1c346dc84246798f7e9459bb337531e56f": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "discover_shards_mine", + entrypoint: "discover_shards_mine", + }, + { + name: "add_mercenaries_to_structure", + entrypoint: "add_mercenaries_to_structure", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0xe63ce3d808072f67ac366cff1e44ff148eaf4ddd1e836b98a1ba44af66faa3": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "explore", + entrypoint: "explore", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x3e6ad1a5ca5dd74c4abfced52e6649cd7e99763f8aaa695175043cfa5aad8f7": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "set_address_name", + entrypoint: "set_address_name", + }, + { + name: "set_entity_name", + entrypoint: "set_entity_name", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x368661fcdc42f68583bc09db6642918704fcea2a3c432bfdb508f7194537910": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "transfer_ownership", + entrypoint: "transfer_ownership", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x395bd73f4abb836bb7eb6dc7f0f761be93596a6d892a118d2b82f77c54618b4": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "create", + entrypoint: "create", + }, + { + name: "upgrade_level", + entrypoint: "upgrade_level", + }, + { + name: "quest_claim", + entrypoint: "quest_claim", + }, + ], + }, + "0x1e21e76506aff91e258bbe8cb8c80393faa1dcb72569b4a9ba72eb10c2c01b7": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "deposit_initial", + entrypoint: "deposit_initial", + }, + { + name: "deposit", + entrypoint: "deposit", + }, + { + name: "start_withdraw", + entrypoint: "start_withdraw", + }, + { + name: "finish_withdraw", + entrypoint: "finish_withdraw", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x3d266b405275aeb27660eeaa4e8d5c3e24f8c3075da67276e0300da1df66c33": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "approve", + entrypoint: "approve", + }, + { + name: "send", + entrypoint: "send", + }, + { + name: "pickup", + entrypoint: "pickup", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x14f385db5b18cd094d9b4961f4d2a4a170e305385e2a3d9c5a1bd7cd499928b": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "register_to_leaderboard", + entrypoint: "register_to_leaderboard", + }, + { + name: "claim_leaderboard_rewards", + entrypoint: "claim_leaderboard_rewards", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x5422c3c15cff91dedd781d6a24228dc7bdd65a0a9130e77375085c4fe6f06d4": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "buy", + entrypoint: "buy", + }, + { + name: "sell", + entrypoint: "sell", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0x675662c85d93e590ab147f5af80eb359b3a6cc388f44578b7aebdc2e735b43": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "create_order", + entrypoint: "create_order", + }, + { + name: "accept_order", + entrypoint: "accept_order", + }, + { + name: "accept_partial_order", + entrypoint: "accept_partial_order", + }, + { + name: "cancel_order", + entrypoint: "cancel_order", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0xef2b5150890396d22c3183a69b22b747ccac4429b5415ec35d9dab635a65b8": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "travel_hex", + entrypoint: "travel_hex", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, + "0xc592377a9b924df5d609994a7561dd989254b736d22085c9c78e6979a2969e": { + methods: [ + { + name: "dojo_name", + entrypoint: "dojo_name", + }, + { + name: "army_create", + entrypoint: "army_create", + }, + { + name: "army_delete", + entrypoint: "army_delete", + }, + { + name: "army_buy_troops", + entrypoint: "army_buy_troops", + }, + { + name: "army_merge_troops", + entrypoint: "army_merge_troops", + }, + { + name: "world_dispatcher", + entrypoint: "world_dispatcher", + }, + ], + }, +}; diff --git a/client/apps/game/src/hooks/context/policies.tsx b/client/apps/game/src/hooks/context/policies.tsx deleted file mode 100644 index 8717e02e2c..0000000000 --- a/client/apps/game/src/hooks/context/policies.tsx +++ /dev/null @@ -1,574 +0,0 @@ -export const policies = [ - { - target: "0x52af4d4b243462e91f68309722dc42f9f970cdce2c80a4f0240b60c3f8dab44", - method: "dojo_name", - }, - { - target: "0x52af4d4b243462e91f68309722dc42f9f970cdce2c80a4f0240b60c3f8dab44", - method: "change_owner_amm_fee", - }, - { - target: "0x52af4d4b243462e91f68309722dc42f9f970cdce2c80a4f0240b60c3f8dab44", - method: "change_owner_bridge_fee", - }, - { - target: "0x52af4d4b243462e91f68309722dc42f9f970cdce2c80a4f0240b60c3f8dab44", - method: "world_dispatcher", - }, - { - target: "0x267b8cc82862b1451652a1606629bcf3ad200973f0ca096493b4693f697c80e", - method: "dojo_name", - }, - { - target: "0x267b8cc82862b1451652a1606629bcf3ad200973f0ca096493b4693f697c80e", - method: "battle_pillage", - }, - { - target: "0x267b8cc82862b1451652a1606629bcf3ad200973f0ca096493b4693f697c80e", - method: "world_dispatcher", - }, - { - target: "0x1fd0b5233b521873898e99517a70f96a5023840692d189476c2550055fb8086", - method: "dojo_name", - }, - { - target: "0x1fd0b5233b521873898e99517a70f96a5023840692d189476c2550055fb8086", - method: "battle_start", - }, - { - target: "0x1fd0b5233b521873898e99517a70f96a5023840692d189476c2550055fb8086", - method: "battle_force_start", - }, - { - target: "0x1fd0b5233b521873898e99517a70f96a5023840692d189476c2550055fb8086", - method: "battle_join", - }, - { - target: "0x1fd0b5233b521873898e99517a70f96a5023840692d189476c2550055fb8086", - method: "battle_leave", - }, - { - target: "0x1fd0b5233b521873898e99517a70f96a5023840692d189476c2550055fb8086", - method: "battle_claim", - }, - { - target: "0x1fd0b5233b521873898e99517a70f96a5023840692d189476c2550055fb8086", - method: "battle_resolve", - }, - { - target: "0x1fd0b5233b521873898e99517a70f96a5023840692d189476c2550055fb8086", - method: "world_dispatcher", - }, - { - target: "0x477996a3e273e590b2a8bdbca65cc9f84be437872933e11dac1ef5090f7d32d", - method: "dojo_name", - }, - { - target: "0x477996a3e273e590b2a8bdbca65cc9f84be437872933e11dac1ef5090f7d32d", - method: "leave_battle", - }, - { - target: "0x477996a3e273e590b2a8bdbca65cc9f84be437872933e11dac1ef5090f7d32d", - method: "leave_battle_if_ended", - }, - { - target: "0x477996a3e273e590b2a8bdbca65cc9f84be437872933e11dac1ef5090f7d32d", - method: "world_dispatcher", - }, - { - target: "0x5ad0e42e034430f752a0c4e210c903df016ad10e349dbf63cc82988c99a571e", - method: "dojo_name", - }, - { - target: "0x5ad0e42e034430f752a0c4e210c903df016ad10e349dbf63cc82988c99a571e", - method: "create", - }, - { - target: "0x5ad0e42e034430f752a0c4e210c903df016ad10e349dbf63cc82988c99a571e", - method: "pause_production", - }, - { - target: "0x5ad0e42e034430f752a0c4e210c903df016ad10e349dbf63cc82988c99a571e", - method: "resume_production", - }, - { - target: "0x5ad0e42e034430f752a0c4e210c903df016ad10e349dbf63cc82988c99a571e", - method: "destroy", - }, - { - target: "0x5ad0e42e034430f752a0c4e210c903df016ad10e349dbf63cc82988c99a571e", - method: "world_dispatcher", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "dojo_name", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_world_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_season_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_season_bridge_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_vrf_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_quest_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_quest_reward_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_map_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_capacity_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_travel_stamina_cost_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_weight_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_battle_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_tick_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_stamina_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_travel_food_cost_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_stamina_refill_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_leveling_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_production_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_speed_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_hyperstructure_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_bank_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_troop_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_building_category_pop_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_population_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_building_general_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_building_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_mercenaries_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_resource_bridge_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_resource_bridge_fee_split_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_resource_bridge_whitelist_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_realm_max_level_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_realm_level_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "set_settlement_config", - }, - { - target: "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - method: "world_dispatcher", - }, - { - target: "0x730dc36e3ac2726d2373ae50965dd4ba793ab3bbfc4d51d73d5a8108cb80175", - method: "dojo_name", - }, - { - target: "0x730dc36e3ac2726d2373ae50965dd4ba793ab3bbfc4d51d73d5a8108cb80175", - method: "create_admin_bank", - }, - { - target: "0x730dc36e3ac2726d2373ae50965dd4ba793ab3bbfc4d51d73d5a8108cb80175", - method: "world_dispatcher", - }, - { - target: "0x56c668f4e561ec08a5e6b32064a42855f6ea8693806713f4f04ad2ca38353d2", - method: "dojo_name", - }, - { - target: "0x56c668f4e561ec08a5e6b32064a42855f6ea8693806713f4f04ad2ca38353d2", - method: "create", - }, - { - target: "0x56c668f4e561ec08a5e6b32064a42855f6ea8693806713f4f04ad2ca38353d2", - method: "world_dispatcher", - }, - { - target: "0x789a850d97d714ca0d2ebef8d61c25cd2342fc310fa10bb3b6c2edad1172351", - method: "dojo_name", - }, - { - target: "0x789a850d97d714ca0d2ebef8d61c25cd2342fc310fa10bb3b6c2edad1172351", - method: "mint", - }, - { - target: "0x789a850d97d714ca0d2ebef8d61c25cd2342fc310fa10bb3b6c2edad1172351", - method: "world_dispatcher", - }, - { - target: "0x40236e6868cfc14d4a73b3ad4be0df18a7c88877a684be223c1a8593109d7d9", - method: "dojo_name", - }, - { - target: "0x40236e6868cfc14d4a73b3ad4be0df18a7c88877a684be223c1a8593109d7d9", - method: "world_dispatcher", - }, - { - target: "0x3920dbf33145cca955528fee24474def2f7e48b0071c04cd31572216e5abdce", - method: "dojo_name", - }, - { - target: "0x3920dbf33145cca955528fee24474def2f7e48b0071c04cd31572216e5abdce", - method: "create_guild", - }, - { - target: "0x3920dbf33145cca955528fee24474def2f7e48b0071c04cd31572216e5abdce", - method: "join_guild", - }, - { - target: "0x3920dbf33145cca955528fee24474def2f7e48b0071c04cd31572216e5abdce", - method: "whitelist_player", - }, - { - target: "0x3920dbf33145cca955528fee24474def2f7e48b0071c04cd31572216e5abdce", - method: "transfer_guild_ownership", - }, - { - target: "0x3920dbf33145cca955528fee24474def2f7e48b0071c04cd31572216e5abdce", - method: "remove_guild_member", - }, - { - target: "0x3920dbf33145cca955528fee24474def2f7e48b0071c04cd31572216e5abdce", - method: "remove_player_from_whitelist", - }, - { - target: "0x3920dbf33145cca955528fee24474def2f7e48b0071c04cd31572216e5abdce", - method: "world_dispatcher", - }, - { - target: "0x67dfe2d094f457fc478568d433efcbbad8ed98f35351199f1aae72424727713", - method: "dojo_name", - }, - { - target: "0x67dfe2d094f457fc478568d433efcbbad8ed98f35351199f1aae72424727713", - method: "get_points", - }, - { - target: "0x67dfe2d094f457fc478568d433efcbbad8ed98f35351199f1aae72424727713", - method: "create", - }, - { - target: "0x67dfe2d094f457fc478568d433efcbbad8ed98f35351199f1aae72424727713", - method: "contribute_to_construction", - }, - { - target: "0x67dfe2d094f457fc478568d433efcbbad8ed98f35351199f1aae72424727713", - method: "set_co_owners", - }, - { - target: "0x67dfe2d094f457fc478568d433efcbbad8ed98f35351199f1aae72424727713", - method: "end_game", - }, - { - target: "0x67dfe2d094f457fc478568d433efcbbad8ed98f35351199f1aae72424727713", - method: "set_access", - }, - { - target: "0x67dfe2d094f457fc478568d433efcbbad8ed98f35351199f1aae72424727713", - method: "world_dispatcher", - }, - { - target: "0x2cf9b074003aeae091861585eade1d1007641c95978cbc67170a6a7002c6117", - method: "dojo_name", - }, - { - target: "0x2cf9b074003aeae091861585eade1d1007641c95978cbc67170a6a7002c6117", - method: "add", - }, - { - target: "0x2cf9b074003aeae091861585eade1d1007641c95978cbc67170a6a7002c6117", - method: "remove", - }, - { - target: "0x2cf9b074003aeae091861585eade1d1007641c95978cbc67170a6a7002c6117", - method: "world_dispatcher", - }, - { - target: "0x1fd92361d6679473f165797c5285e1c346dc84246798f7e9459bb337531e56f", - method: "dojo_name", - }, - { - target: "0x1fd92361d6679473f165797c5285e1c346dc84246798f7e9459bb337531e56f", - method: "discover_shards_mine", - }, - { - target: "0x1fd92361d6679473f165797c5285e1c346dc84246798f7e9459bb337531e56f", - method: "add_mercenaries_to_structure", - }, - { - target: "0x1fd92361d6679473f165797c5285e1c346dc84246798f7e9459bb337531e56f", - method: "world_dispatcher", - }, - { - target: "0xe63ce3d808072f67ac366cff1e44ff148eaf4ddd1e836b98a1ba44af66faa3", - method: "dojo_name", - }, - { - target: "0xe63ce3d808072f67ac366cff1e44ff148eaf4ddd1e836b98a1ba44af66faa3", - method: "explore", - }, - { - target: "0xe63ce3d808072f67ac366cff1e44ff148eaf4ddd1e836b98a1ba44af66faa3", - method: "world_dispatcher", - }, - { - target: "0x3e6ad1a5ca5dd74c4abfced52e6649cd7e99763f8aaa695175043cfa5aad8f7", - method: "dojo_name", - }, - { - target: "0x3e6ad1a5ca5dd74c4abfced52e6649cd7e99763f8aaa695175043cfa5aad8f7", - method: "set_address_name", - }, - { - target: "0x3e6ad1a5ca5dd74c4abfced52e6649cd7e99763f8aaa695175043cfa5aad8f7", - method: "set_entity_name", - }, - { - target: "0x3e6ad1a5ca5dd74c4abfced52e6649cd7e99763f8aaa695175043cfa5aad8f7", - method: "world_dispatcher", - }, - { - target: "0x368661fcdc42f68583bc09db6642918704fcea2a3c432bfdb508f7194537910", - method: "dojo_name", - }, - { - target: "0x368661fcdc42f68583bc09db6642918704fcea2a3c432bfdb508f7194537910", - method: "transfer_ownership", - }, - { - target: "0x368661fcdc42f68583bc09db6642918704fcea2a3c432bfdb508f7194537910", - method: "world_dispatcher", - }, - { - target: "0x395bd73f4abb836bb7eb6dc7f0f761be93596a6d892a118d2b82f77c54618b4", - method: "dojo_name", - }, - { - target: "0x395bd73f4abb836bb7eb6dc7f0f761be93596a6d892a118d2b82f77c54618b4", - method: "create", - }, - { - target: "0x395bd73f4abb836bb7eb6dc7f0f761be93596a6d892a118d2b82f77c54618b4", - method: "upgrade_level", - }, - { - target: "0x395bd73f4abb836bb7eb6dc7f0f761be93596a6d892a118d2b82f77c54618b4", - method: "quest_claim", - }, - { - target: "0x395bd73f4abb836bb7eb6dc7f0f761be93596a6d892a118d2b82f77c54618b4", - method: "world_dispatcher", - }, - { - target: "0x1e21e76506aff91e258bbe8cb8c80393faa1dcb72569b4a9ba72eb10c2c01b7", - method: "dojo_name", - }, - { - target: "0x1e21e76506aff91e258bbe8cb8c80393faa1dcb72569b4a9ba72eb10c2c01b7", - method: "deposit_initial", - }, - { - target: "0x1e21e76506aff91e258bbe8cb8c80393faa1dcb72569b4a9ba72eb10c2c01b7", - method: "deposit", - }, - { - target: "0x1e21e76506aff91e258bbe8cb8c80393faa1dcb72569b4a9ba72eb10c2c01b7", - method: "start_withdraw", - }, - { - target: "0x1e21e76506aff91e258bbe8cb8c80393faa1dcb72569b4a9ba72eb10c2c01b7", - method: "finish_withdraw", - }, - { - target: "0x1e21e76506aff91e258bbe8cb8c80393faa1dcb72569b4a9ba72eb10c2c01b7", - method: "world_dispatcher", - }, - { - target: "0x3d266b405275aeb27660eeaa4e8d5c3e24f8c3075da67276e0300da1df66c33", - method: "dojo_name", - }, - { - target: "0x3d266b405275aeb27660eeaa4e8d5c3e24f8c3075da67276e0300da1df66c33", - method: "approve", - }, - { - target: "0x3d266b405275aeb27660eeaa4e8d5c3e24f8c3075da67276e0300da1df66c33", - method: "send", - }, - { - target: "0x3d266b405275aeb27660eeaa4e8d5c3e24f8c3075da67276e0300da1df66c33", - method: "pickup", - }, - { - target: "0x3d266b405275aeb27660eeaa4e8d5c3e24f8c3075da67276e0300da1df66c33", - method: "world_dispatcher", - }, - { - target: "0x14f385db5b18cd094d9b4961f4d2a4a170e305385e2a3d9c5a1bd7cd499928b", - method: "dojo_name", - }, - { - target: "0x14f385db5b18cd094d9b4961f4d2a4a170e305385e2a3d9c5a1bd7cd499928b", - method: "register_to_leaderboard", - }, - { - target: "0x14f385db5b18cd094d9b4961f4d2a4a170e305385e2a3d9c5a1bd7cd499928b", - method: "claim_leaderboard_rewards", - }, - { - target: "0x14f385db5b18cd094d9b4961f4d2a4a170e305385e2a3d9c5a1bd7cd499928b", - method: "world_dispatcher", - }, - { - target: "0x5422c3c15cff91dedd781d6a24228dc7bdd65a0a9130e77375085c4fe6f06d4", - method: "dojo_name", - }, - { - target: "0x5422c3c15cff91dedd781d6a24228dc7bdd65a0a9130e77375085c4fe6f06d4", - method: "buy", - }, - { - target: "0x5422c3c15cff91dedd781d6a24228dc7bdd65a0a9130e77375085c4fe6f06d4", - method: "sell", - }, - { - target: "0x5422c3c15cff91dedd781d6a24228dc7bdd65a0a9130e77375085c4fe6f06d4", - method: "world_dispatcher", - }, - { - target: "0x675662c85d93e590ab147f5af80eb359b3a6cc388f44578b7aebdc2e735b43", - method: "dojo_name", - }, - { - target: "0x675662c85d93e590ab147f5af80eb359b3a6cc388f44578b7aebdc2e735b43", - method: "create_order", - }, - { - target: "0x675662c85d93e590ab147f5af80eb359b3a6cc388f44578b7aebdc2e735b43", - method: "accept_order", - }, - { - target: "0x675662c85d93e590ab147f5af80eb359b3a6cc388f44578b7aebdc2e735b43", - method: "accept_partial_order", - }, - { - target: "0x675662c85d93e590ab147f5af80eb359b3a6cc388f44578b7aebdc2e735b43", - method: "cancel_order", - }, - { - target: "0x675662c85d93e590ab147f5af80eb359b3a6cc388f44578b7aebdc2e735b43", - method: "world_dispatcher", - }, - { - target: "0xef2b5150890396d22c3183a69b22b747ccac4429b5415ec35d9dab635a65b8", - method: "dojo_name", - }, - { - target: "0xef2b5150890396d22c3183a69b22b747ccac4429b5415ec35d9dab635a65b8", - method: "travel_hex", - }, - { - target: "0xef2b5150890396d22c3183a69b22b747ccac4429b5415ec35d9dab635a65b8", - method: "world_dispatcher", - }, - { - target: "0xc592377a9b924df5d609994a7561dd989254b736d22085c9c78e6979a2969e", - method: "dojo_name", - }, - { - target: "0xc592377a9b924df5d609994a7561dd989254b736d22085c9c78e6979a2969e", - method: "army_create", - }, - { - target: "0xc592377a9b924df5d609994a7561dd989254b736d22085c9c78e6979a2969e", - method: "army_delete", - }, - { - target: "0xc592377a9b924df5d609994a7561dd989254b736d22085c9c78e6979a2969e", - method: "army_buy_troops", - }, - { - target: "0xc592377a9b924df5d609994a7561dd989254b736d22085c9c78e6979a2969e", - method: "army_merge_troops", - }, - { - target: "0xc592377a9b924df5d609994a7561dd989254b736d22085c9c78e6979a2969e", - method: "world_dispatcher", - }, -]; diff --git a/client/apps/game/src/hooks/context/signing-policy.tsx b/client/apps/game/src/hooks/context/signing-policy.ts similarity index 79% rename from client/apps/game/src/hooks/context/signing-policy.tsx rename to client/apps/game/src/hooks/context/signing-policy.ts index 055c1d9d1d..6c010dc979 100644 --- a/client/apps/game/src/hooks/context/signing-policy.tsx +++ b/client/apps/game/src/hooks/context/signing-policy.ts @@ -1,6 +1,7 @@ +import { SignMessagePolicy } from "@cartridge/controller"; import { env } from "../../../env"; -export const signingPolicy = [ +export const signingPolicy: SignMessagePolicy[] = [ { types: { StarknetDomain: [ @@ -9,7 +10,7 @@ export const signingPolicy = [ { name: "chainId", type: "shortstring" }, { name: "revision", type: "shortstring" }, ], - "s0_eternum-Message": [ + "s1_eternum-Message": [ { name: "identity", type: "ContractAddress" }, { name: "channel", type: "shortstring" }, { name: "content", type: "string" }, @@ -17,7 +18,7 @@ export const signingPolicy = [ { name: "salt", type: "felt" }, ], }, - primaryType: "s0_eternum-Message", + primaryType: "s1_eternum-Message", domain: { name: "Eternum", version: "1", diff --git a/client/apps/game/src/hooks/context/starknet-provider.tsx b/client/apps/game/src/hooks/context/starknet-provider.tsx index 19a1a0717e..ccde97e8b2 100644 --- a/client/apps/game/src/hooks/context/starknet-provider.tsx +++ b/client/apps/game/src/hooks/context/starknet-provider.tsx @@ -1,4 +1,4 @@ -import { getSeasonAddresses } from "@/ui/utils/utils"; +import { getResourceAddresses } from "@/utils/addresses"; import ControllerConnector from "@cartridge/connector/controller"; import { ColorMode } from "@cartridge/controller"; import { mainnet, sepolia } from "@starknet-react/chains"; @@ -8,7 +8,12 @@ import { env } from "../../../env"; import { policies } from "./policies"; import { signingPolicy } from "./signing-policy"; -const resourceAddresses = await getSeasonAddresses(); +enum StarknetChainId { + SN_MAIN = "0x534e5f4d41494e", // encodeShortString('SN_MAIN'), + SN_SEPOLIA = "0x534e5f5345504f4c4941", +} + +const resourceAddresses = await getResourceAddresses(); const LORDS = resourceAddresses["LORDS"][1]; const otherResources = Object.entries(resourceAddresses) @@ -18,19 +23,14 @@ const otherResources = Object.entries(resourceAddresses) const preset: string = "eternum"; const theme: string = "eternum"; const slot: string = env.VITE_PUBLIC_SLOT; -const namespace: string = "s0_eternum"; +const namespace: string = "s1_eternum"; const colorMode: ColorMode = "dark"; -const vrfPolicy = { - target: "0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f", - method: "request_random", - description: "Allows requesting random numbers from the VRF provider", -}; - const controller = - env.VITE_PUBLIC_CHAIN === "mainnet" + env.VITE_PUBLIC_CHAIN === "mainnet" || env.VITE_PUBLIC_CHAIN === "sepolia" ? new ControllerConnector({ - rpc: env.VITE_PUBLIC_NODE_URL, + chains: [{ rpcUrl: env.VITE_PUBLIC_NODE_URL }], + defaultChainId: StarknetChainId.SN_MAIN, namespace, slot, preset, @@ -40,11 +40,12 @@ const controller = colorMode, }) : new ControllerConnector({ - rpc: env.VITE_PUBLIC_NODE_URL, + chains: [{ rpcUrl: "https://api.cartridge.gg/x/starknet/sepolia" }], + defaultChainId: StarknetChainId.SN_SEPOLIA, namespace, slot, preset, - policies: [...signingPolicy, ...policies, vrfPolicy], + policies: { contracts: policies, messages: signingPolicy }, theme, tokens: { erc20: [LORDS, ...otherResources], diff --git a/client/apps/game/src/hooks/helpers/battles/__test__/__mock__.tsx b/client/apps/game/src/hooks/helpers/battles/__test__/__mock__.tsx deleted file mode 100644 index 9abc4c9dd6..0000000000 --- a/client/apps/game/src/hooks/helpers/battles/__test__/__mock__.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import { BattleSide, EternumGlobalConfig } from "@bibliothecadao/eternum"; -import { Components, ComponentValue } from "@dojoengine/recs"; -import { BattleInfo } from "../useBattles"; - -const CONSIDERED_AS_DEAD_HEALTH = 0n; - -export const generateMockBattle = ( - isAttackerAlive: boolean, - isDefenderAlive: boolean, - isStructureBattle: boolean, -): BattleInfo => { - return { - entity_id: 1n, - attack_army: { - troops: { knight_count: 1n, paladin_count: 1n, crossbowman_count: 1n }, - battle_id: 1n, - battle_side: BattleSide.Attack, - }, - attack_army_lifetime: { - troops: { knight_count: 1n, paladin_count: 1n, crossbowman_count: 1n }, - battle_id: 1n, - battle_side: BattleSide.Attack, - }, - defence_army: { - troops: { knight_count: 1n, paladin_count: 1n, crossbowman_count: 1n }, - battle_id: 1n, - battle_side: BattleSide.Defence, - }, - defence_army_lifetime: { - troops: { knight_count: 1n, paladin_count: 1n, crossbowman_count: 1n }, - battle_id: 1n, - battle_side: BattleSide.Defence, - }, - attackers_resources_escrow_id: 1n, - defenders_resources_escrow_id: 1n, - attack_army_health: { - current: isAttackerAlive ? EternumGlobalConfig.resources.resourcePrecision : CONSIDERED_AS_DEAD_HEALTH, - lifetime: EternumGlobalConfig.resources.resourcePrecision - }, - defence_army_health: { - current: isDefenderAlive ? EternumGlobalConfig.resources.resourcePrecision : CONSIDERED_AS_DEAD_HEALTH, - lifetime: EternumGlobalConfig.resources.resourcePrecision - }, - attack_delta: 1n, - defence_delta: 1n, - last_updated: 1n, - duration_left: 1n, - x: 1, - y: 1, - isStructureBattle: isStructureBattle, - } as unknown as BattleInfo; -}; - -export const generateMockArmy = (battleSide: BattleSide): ComponentValue => { - return { - troops: { knight_count: 1n, paladin_count: 1n, crossbowman_count: 1n }, - battle_id: 1n, - battle_side: battleSide, - }; -}; diff --git a/client/apps/game/src/hooks/helpers/battles/__test__/useBattles._test_default.tsx b/client/apps/game/src/hooks/helpers/battles/__test__/useBattles._test_default.tsx deleted file mode 100644 index 5134b9a34c..0000000000 --- a/client/apps/game/src/hooks/helpers/battles/__test__/useBattles._test_default.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import { Component, getComponentValue } from "@dojoengine/recs"; -import { describe, it, vi } from "vitest"; -// import { getBattle } from "../useBattles"; - -vi.mock("@dojoengine/recs", async () => { - const actual = await vi.importActual("@dojoengine/recs"); - return { - ...actual, - getComponentValue: vi.fn(), - }; -}); - -const mockComponent = {} as Component; - -describe("getBattle", () => { - it("should return undefined when there are no battles", () => { - vi.mocked(getComponentValue).mockReturnValueOnce(undefined); - - // const battle = getBattle("0x0" as Entity, mockComponent); - // expect(battle).toBeUndefined(); - - // expect(true).toBe(true); - }); - - // it("should return a battle for a valid battleEntityId", () => { - // const mockBattle = generateMockBattle(true, true, false); - // vi.mocked(getComponentValue).mockReturnValueOnce(mockBattle); - - // const expectedBattle = structuredClone(mockBattle); - // const precisionFactor = BigInt(EternumGlobalConfig.resources.resourcePrecision); - - // const adjustHealth = (health: { current: bigint; lifetime: bigint }) => { - // health.current = health.current / precisionFactor; - // health.lifetime = health.lifetime / precisionFactor; - // }; - - // const battle = getBattle("0x123" as Entity, mockComponent); - - // expect(battle?.attack_army_health.current).toBeLessThan(expectedBattle?.attack_army_health.current); - // expect(battle?.defence_army_health.current).toBeLessThan(expectedBattle?.defence_army_health.current); - - // adjustHealth(expectedBattle.attack_army_health); - // adjustHealth(expectedBattle.defence_army_health); - - // expect(getComponentValue).toHaveBeenCalledWith(mockComponent, "0x123"); - - // expect(battle).toBeDefined(); - // expect(battle).toStrictEqual(expectedBattle); - // }); - // }); - - // describe("getExtraBattleInformation", () => { - // it("should return empty array for empty entity array", () => { - // const battles = testedModule.getExtraBattleInformation([], mockComponent, mockComponent, mockComponent); - // expect(battles).toHaveLength(0); - // }); - - // it("should return an empty array if getBattle doesn't return a battle for the entity id", () => { - // vi.spyOn(testedModule, "getBattle").mockReturnValueOnce(undefined); - // const battles = testedModule.getExtraBattleInformation( - // ["0x123" as Entity], - // mockComponent, - // mockComponent, - // mockComponent, - // ); - // expect(battles).toBeDefined(); - // expect(battles).toHaveLength(0); - // }); - - // it("should return an empty array if entity id doesn't return a position", () => { - // const mockBattle = generateMockBattle(true, true, false); - // vi.spyOn(testedModule, "getBattle").mockReturnValueOnce(mockBattle); - - // vi.mocked(getComponentValue).mockReturnValueOnce(undefined); - // const battles = testedModule.getExtraBattleInformation( - // ["0x123" as Entity], - // mockComponent, - // mockComponent, - // mockComponent, - // ); - // expect(battles).toBeDefined(); - // expect(battles).toHaveLength(0); - // }); -}); diff --git a/client/apps/game/src/hooks/helpers/battles/useBattles.tsx b/client/apps/game/src/hooks/helpers/battles/useBattles.tsx deleted file mode 100644 index d3bfc98dee..0000000000 --- a/client/apps/game/src/hooks/helpers/battles/useBattles.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import { ClientComponents } from "@/dojo/createClientComponents"; -import { BattleManager, EternumGlobalConfig, ID, Position } from "@bibliothecadao/eternum"; -import { useComponentValue, useEntityQuery } from "@dojoengine/react"; -import { - Component, - ComponentValue, - Components, - Entity, - Has, - HasValue, - NotValue, - getComponentValue, - runQuery, -} from "@dojoengine/recs"; -import { getEntityIdFromKeys } from "@dojoengine/utils"; -import { useMemo } from "react"; -import { useDojo } from "../../context/DojoContext"; -import { useEntities } from "../useEntities"; - -export type BattleInfo = ComponentValue & { - isStructureBattle: boolean; - position: ComponentValue; -}; - -const getBattle = ( - battleEntityId: Entity, - Battle: Component, -): ComponentValue | undefined => { - let battle = getComponentValue(Battle, battleEntityId); - let battleClone = structuredClone(battle); - if (!battleClone) return; - const multiplier = BigInt(EternumGlobalConfig.resources.resourcePrecision); - battleClone.attack_army_health.current = battleClone.attack_army_health.current / multiplier; - battleClone.attack_army_health.lifetime = battleClone.attack_army_health.lifetime / multiplier; - battleClone.defence_army_health.current = battleClone.defence_army_health.current / multiplier; - battleClone.defence_army_health.lifetime = battleClone.defence_army_health.lifetime / multiplier; - return battleClone; -}; - -const getExtraBattleInformation = ( - battles: Entity[], - Battle: Component, - Position: Component, - Structure: Component, -): BattleInfo[] => { - return battles - .map((battleEntityId) => { - const battle = getBattle(battleEntityId, Battle); - if (!battle) return; - const position = getComponentValue(Position, battleEntityId); - if (!position) return; - const structure = runQuery([Has(Structure), HasValue(Position, { x: position.x, y: position.y })]); - return { ...battle, position, isStructureBattle: structure.size > 0 }; - }) - .filter((item): item is BattleInfo => Boolean(item)); -}; - -export const useBattleManager = (battleEntityId: ID) => { - const dojo = useDojo(); - - const battle = useComponentValue(dojo.setup.components.Battle, getEntityIdFromKeys([BigInt(battleEntityId)])); - - const battleManager = useMemo(() => { - return new BattleManager(dojo.setup.components, dojo.network.provider, battleEntityId); - }, [battleEntityId, battle]); - - return battleManager; -}; - -export const useBattlesByPosition = ({ x, y }: Position) => { - const { - setup: { - components: { Battle, Position, Structure }, - }, - } = useDojo(); - const battleEntityIds = useEntityQuery([Has(Battle), HasValue(Position, { x, y })]); - return getExtraBattleInformation(battleEntityIds, Battle, Position, Structure); -}; - -export const useUserBattles = () => { - const { - setup: { - components: { Army, Battle, EntityOwner, Position, Structure }, - }, - } = useDojo(); - - const { playerRealms } = useEntities(); - const realms = playerRealms(); - - const battles = useMemo(() => { - const battleEntityIds = realms - .map((realm) => { - const userArmiesInBattleEntityIds = runQuery([ - Has(Army), - NotValue(Army, { battle_id: 0 }), - HasValue(EntityOwner, { entity_owner_id: realm.entity_id }), - ]); - const battleEntityIds = Array.from(userArmiesInBattleEntityIds) - .map((armyEntityId) => { - const army = getComponentValue(Army, armyEntityId); - if (!army) return; - return getEntityIdFromKeys([BigInt(army.battle_id)]); - }) - .filter((battleEntityId): battleEntityId is Entity => Boolean(battleEntityId)); - return battleEntityIds; - }) - .flatMap((battleEntityIds) => Array.from(battleEntityIds)); - - return getExtraBattleInformation(battleEntityIds, Battle, Position, Structure); - }, [realms]); - - return battles; -}; diff --git a/client/apps/game/src/hooks/helpers/use-armies.tsx b/client/apps/game/src/hooks/helpers/use-armies.tsx new file mode 100644 index 0000000000..ae467db81e --- /dev/null +++ b/client/apps/game/src/hooks/helpers/use-armies.tsx @@ -0,0 +1,94 @@ +import { useDojo } from "@/hooks/context/dojo-context"; +import { formatArmies } from "@/utils/army"; +import { ArmyInfo, type ID, type Position } from "@bibliothecadao/eternum"; +import { useEntityQuery } from "@dojoengine/react"; +import { Has, HasValue, Not, NotValue, runQuery } from "@dojoengine/recs"; +import { getEntityIdFromKeys } from "@dojoengine/utils"; +import { useMemo } from "react"; + +export const useArmiesByStructure = ({ structureEntityId }: { structureEntityId: ID }) => { + const { + setup: { components }, + account: { account }, + } = useDojo(); + + const armies = useEntityQuery([ + Has(components.Army), + Has(components.Position), + NotValue(components.Health, { current: 0n }), + Has(components.Quantity), + HasValue(components.EntityOwner, { entity_owner_id: structureEntityId }), + ]); + + const entityArmies = useMemo(() => { + return formatArmies(armies, account.address, components); + }, [armies]); + + return { + entityArmies, + }; +}; + +export const useArmyByArmyEntityId = (entityId: ID): ArmyInfo | undefined => { + const { + setup: { components }, + account: { account }, + } = useDojo(); + + return formatArmies([getEntityIdFromKeys([BigInt(entityId)])], account.address, components)[0]; +}; + +export const useArmiesInBattle = (battle_id: ID) => { + const { + account: { account }, + setup: { components }, + } = useDojo(); + + const armiesEntityIds = runQuery([ + Has(components.Army), + NotValue(components.Health, { current: 0n }), + NotValue(components.Army, { battle_id: 0 }), + HasValue(components.Army, { battle_id }), + ]); + + const armies = useMemo(() => { + return formatArmies(Array.from(armiesEntityIds), account.address, components); + }, [battle_id]); + + return armies; +}; + +export const useArmiesAtPosition = ({ position }: { position: Position }) => { + { + const { + account: { account }, + setup: { components }, + } = useDojo(); + + const armiesAtPosition = useEntityQuery([ + Has(components.Army), + NotValue(components.Health, { current: 0n }), + HasValue(components.Position, { x: position.x, y: position.y }), + Not(components.Protectee), + ]); + + const ownArmies = useMemo(() => { + return formatArmies(armiesAtPosition, account.address, components); + }, [armiesAtPosition, position.x, position.y]); + + return ownArmies; + } +}; + +export const useGetArmyByEntityId = () => { + const { + setup: { components }, + account: { account }, + } = useDojo(); + + const getArmy = (entity_id: ID): ArmyInfo | undefined => { + return formatArmies([getEntityIdFromKeys([BigInt(entity_id)])], account.address, components)[0]; + }; + + return { getArmy }; +}; diff --git a/client/apps/game/src/hooks/helpers/use-bank.tsx b/client/apps/game/src/hooks/helpers/use-bank.tsx new file mode 100644 index 0000000000..a27e783907 --- /dev/null +++ b/client/apps/game/src/hooks/helpers/use-bank.tsx @@ -0,0 +1,32 @@ +import { useDojo } from "@/hooks/context/dojo-context"; +import { ADMIN_BANK_ENTITY_ID } from "@bibliothecadao/eternum"; +import { getComponentValue } from "@dojoengine/recs"; +import { getEntityIdFromKeys } from "@dojoengine/utils"; +import { shortString } from "starknet"; + +export const useBank = () => { + const { + setup: { + components: { Bank, Position, Owner, AddressName }, + }, + } = useDojo(); + + const entity = getEntityIdFromKeys([BigInt(ADMIN_BANK_ENTITY_ID)]); + + const position = getComponentValue(Position, entity); + if (!position) return; + + const owner = getComponentValue(Owner, entity); + const addressName = getComponentValue(AddressName, getEntityIdFromKeys([BigInt(owner?.address || "0x0")])); + + const bank = getComponentValue(Bank, entity); + + return { + entityId: position.entity_id, + position: { x: position.x, y: position.y }, + owner: addressName?.name ? shortString.decodeShortString(addressName.name.toString()) : "Bandits", + ownerFee: bank ? Number(bank.owner_fee_num) / Number(bank.owner_fee_denom) : 0, + depositFee: bank ? Number(bank.owner_bridge_fee_dpt_percent) : 0, + withdrawFee: bank ? Number(bank.owner_bridge_fee_wtdr_percent) : 0, + }; +}; diff --git a/client/apps/game/src/hooks/helpers/use-battle-events.tsx b/client/apps/game/src/hooks/helpers/use-battle-events.tsx new file mode 100644 index 0000000000..7fe098eeff --- /dev/null +++ b/client/apps/game/src/hooks/helpers/use-battle-events.tsx @@ -0,0 +1,71 @@ +import { useDojo } from "@/hooks/context/dojo-context"; +import { BattleSide, ID } from "@bibliothecadao/eternum"; +import { useEntityQuery } from "@dojoengine/react"; +import { Component, getComponentValue, HasValue } from "@dojoengine/recs"; +import { useMemo } from "react"; + +const useBattleEventData = ( + eventComponent: Component, + battleEntityId: ID, + sideFilter?: { key: string; side: BattleSide }, +) => { + const eventEntityIds = useEntityQuery( + [ + HasValue(eventComponent, { + battle_entity_id: battleEntityId, + ...(sideFilter ? { [sideFilter.key]: BattleSide[sideFilter.side] } : {}), + }), + ], + { + updateOnValueChange: false, + }, + ); + + return useMemo(() => { + return eventEntityIds.map((entityId) => getComponentValue(eventComponent, entityId)); + }, [eventEntityIds]); +}; + +export const useBattleStart = (battleEntityId: ID) => { + const { + setup: { + components: { + events: { BattleStartData }, + }, + }, + } = useDojo(); + + return useBattleEventData(BattleStartData, battleEntityId); +}; + +export const useBattleJoin = (battleEntityId: ID, joinerSide?: BattleSide) => { + const { + setup: { + components: { + events: { BattleJoinData }, + }, + }, + } = useDojo(); + + return useBattleEventData( + BattleJoinData, + battleEntityId, + joinerSide ? { key: "joiner_side", side: joinerSide } : undefined, + ); +}; + +export const useBattleLeave = (battleEntityId: ID, leaverSide?: BattleSide) => { + const { + setup: { + components: { + events: { BattleLeaveData }, + }, + }, + } = useDojo(); + + return useBattleEventData( + BattleLeaveData, + battleEntityId, + leaverSide ? { key: "leaver_side", side: leaverSide } : undefined, + ); +}; diff --git a/client/apps/game/src/hooks/helpers/use-battles.tsx b/client/apps/game/src/hooks/helpers/use-battles.tsx new file mode 100644 index 0000000000..ecad77e519 --- /dev/null +++ b/client/apps/game/src/hooks/helpers/use-battles.tsx @@ -0,0 +1,75 @@ +import { useDojo } from "@/hooks/context/dojo-context"; +import { BattleManager, ContractAddress, ID, Position } from "@bibliothecadao/eternum"; +import { useComponentValue, useEntityQuery } from "@dojoengine/react"; +import { Has, HasValue, NotValue, getComponentValue, runQuery } from "@dojoengine/recs"; +import { getEntityIdFromKeys } from "@dojoengine/utils"; +import { useMemo } from "react"; +import { usePlayerRealms } from "./use-entities"; + +export const useBattleManager = (battleEntityId: ID) => { + const dojo = useDojo(); + + const battle = useComponentValue(dojo.setup.components.Battle, getEntityIdFromKeys([BigInt(battleEntityId)])); + + const battleManager = useMemo(() => { + return new BattleManager(dojo.setup.components, dojo.network.provider, battleEntityId); + }, [battleEntityId, battle]); + + return battleManager; +}; + +export const useBattlesAtPosition = ({ x, y }: Position) => { + const { + setup: { + components: { Battle, Position }, + }, + } = useDojo(); + const battles = useEntityQuery([Has(Battle), NotValue(Battle, { duration_left: 0n }), HasValue(Position, { x, y })]); + + const battleEntityIds = useMemo(() => { + return Array.from(battles) + .map((battleId) => { + const battle = getComponentValue(Battle, battleId); + return battle ? battle.entity_id : undefined; + }) + .filter((id): id is ID => Boolean(id)) as ID[]; + }, [battles]); + + return battleEntityIds; +}; + +export const usePlayerBattles = () => { + const { + account: { account }, + setup: { + components: { Army, EntityOwner }, + }, + } = useDojo(); + + const realms = usePlayerRealms(ContractAddress(account.address)); + + const battleEntityIds = useMemo(() => { + // Get all armies in battle owned by player's realms + const armiesInBattle = realms.flatMap((realm) => + Array.from( + runQuery([ + Has(Army), + NotValue(Army, { battle_id: 0 }), + HasValue(EntityOwner, { entity_owner_id: realm.entity_id }), + ]), + ), + ); + + // Map armies to their battle IDs + const battleIds = armiesInBattle + .map((armyId) => { + const army = getComponentValue(Army, armyId); + return army ? army.battle_id : undefined; + }) + .filter((id) => Boolean(id)) as ID[]; + + return battleIds; + }, [realms]); + + return battleEntityIds; +}; diff --git a/client/apps/game/src/hooks/helpers/use-buildings.tsx b/client/apps/game/src/hooks/helpers/use-buildings.tsx index a7ff6cb321..1eb8b2ff12 100644 --- a/client/apps/game/src/hooks/helpers/use-buildings.tsx +++ b/client/apps/game/src/hooks/helpers/use-buildings.tsx @@ -1,33 +1,24 @@ import { configManager } from "@/dojo/setup"; -import { ResourceIdToMiningType } from "@/ui/utils/utils"; -import { BuildingType, ResourceCost, ResourcesIds } from "@bibliothecadao/eternum"; -import { getComponentValue, Has, HasValue, runQuery } from "@dojoengine/recs"; -import { useDojo } from "../context/DojoContext"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { getEntityIdFromKeys, ResourceIdToMiningType } from "@/ui/utils/utils"; +import { Building, BuildingType, ID, ResourcesIds } from "@bibliothecadao/eternum"; +import { useEntityQuery } from "@dojoengine/react"; +import { getComponentValue, Has, HasValue } from "@dojoengine/recs"; +import { useMemo } from "react"; -export interface Building { - name: string; - category: string; - paused: boolean; - produced: ResourceCost; - consumed: ResourceCost[]; - bonusPercent: number; - innerCol: number; - innerRow: number; -} - -export const useBuildings = () => { +export const useBuildings = (outerCol: number, outerRow: number) => { const { setup: { components: { Building }, }, } = useDojo(); - const getBuildings = (outerCol: number, outerRow: number): Building[] => { - const buildingEntities = runQuery([ - Has(Building), - HasValue(Building, { outer_col: outerCol, outer_row: outerRow }), - ]); + const buildingEntities = useEntityQuery([ + Has(Building), + HasValue(Building, { outer_col: outerCol, outer_row: outerRow }), + ]); + const buildings = useMemo(() => { return Array.from(buildingEntities) .map((entity) => { const building = getComponentValue(Building, entity); @@ -60,7 +51,30 @@ export const useBuildings = () => { }; }) .filter((building) => building != null); - }; + }, [buildingEntities]); + + return buildings as Building[]; +}; + +export const useBuildingQuantities = (structureEntityId: ID | undefined) => { + const { + setup: { + components: { BuildingQuantityv2 }, + }, + } = useDojo(); + const entityUpdate = useEntityQuery([HasValue(BuildingQuantityv2, { entity_id: structureEntityId || 0 })]); + + const getBuildingQuantity = (buildingType: BuildingType) => + getComponentValue(BuildingQuantityv2, getEntityIdFromKeys([BigInt(structureEntityId || 0), BigInt(buildingType)])) + ?.value || 0; - return { getBuildings }; + return useMemo( + () => ({ + food: getBuildingQuantity(BuildingType.Farm) + getBuildingQuantity(BuildingType.FishingVillage), + resource: getBuildingQuantity(BuildingType.Resource), + workersHut: getBuildingQuantity(BuildingType.WorkersHut), + markets: getBuildingQuantity(BuildingType.Market), + }), + [structureEntityId, entityUpdate], + ); }; diff --git a/client/apps/game/src/hooks/helpers/use-contributions.tsx b/client/apps/game/src/hooks/helpers/use-contributions.tsx new file mode 100644 index 0000000000..88474c44bb --- /dev/null +++ b/client/apps/game/src/hooks/helpers/use-contributions.tsx @@ -0,0 +1,20 @@ +import { useDojo } from "@/hooks/context/dojo-context"; +import { ClientComponents, ContractAddress, ID } from "@bibliothecadao/eternum"; +import { useEntityQuery } from "@dojoengine/react"; +import { ComponentValue, HasValue, getComponentValue } from "@dojoengine/recs"; + +export const usePlayerContributions = (playerAddress: ContractAddress, hyperstructureEntityId: ID) => { + const { + setup: { + components: { Contribution }, + }, + } = useDojo(); + + const contributionsToHyperstructure = useEntityQuery([ + HasValue(Contribution, { hyperstructure_entity_id: hyperstructureEntityId, player_address: playerAddress }), + ]) + .map((id) => getComponentValue(Contribution, id)) + .filter((x): x is ComponentValue => x !== undefined); + + return contributionsToHyperstructure; +}; diff --git a/client/apps/game/src/hooks/helpers/use-entities.tsx b/client/apps/game/src/hooks/helpers/use-entities.tsx new file mode 100644 index 0000000000..20952283b6 --- /dev/null +++ b/client/apps/game/src/hooks/helpers/use-entities.tsx @@ -0,0 +1,50 @@ +import { useDojo } from "@/hooks/context/dojo-context"; +import { getRealm, getStructure } from "@/utils/entities"; +import { ContractAddress, PlayerStructure, RealmWithPosition } from "@bibliothecadao/eternum"; +import { useEntityQuery } from "@dojoengine/react"; +import { Has, HasValue } from "@dojoengine/recs"; +import { useMemo } from "react"; + +export const usePlayerRealms = (playerAddress?: ContractAddress) => { + const { + account: { account }, + setup: { components }, + } = useDojo(); + + const entities = useEntityQuery([ + Has(components.Realm), + HasValue(components.Owner, { address: playerAddress || ContractAddress(account.address) }), + ]); + + const playerRealms = useMemo(() => { + return entities + .map((id) => getRealm(id, components)) + .filter((realm): realm is RealmWithPosition => realm !== undefined) + .sort((a, b) => a.name.localeCompare(b.name)); + }, [entities]); + + return playerRealms; +}; + +export const usePlayerStructures = (playerAddress?: ContractAddress) => { + const { + account: { account }, + setup: { components }, + } = useDojo(); + + const entities = useEntityQuery([ + Has(components.Structure), + Has(components.Position), + Has(components.Owner), + HasValue(components.Owner, { address: playerAddress || ContractAddress(account.address) }), + ]); + + const playerStructures = useMemo(() => { + return entities + .map((id) => getStructure(id, components)) + .filter((structure): structure is PlayerStructure => structure !== undefined) + .sort((a, b) => a.category.localeCompare(b.category)); + }, [entities]); + + return playerStructures; +}; diff --git a/client/apps/game/src/hooks/helpers/useFragmentMines.tsx b/client/apps/game/src/hooks/helpers/use-fragment-mines.tsx similarity index 95% rename from client/apps/game/src/hooks/helpers/useFragmentMines.tsx rename to client/apps/game/src/hooks/helpers/use-fragment-mines.tsx index 1d41856e94..e606bd84e5 100644 --- a/client/apps/game/src/hooks/helpers/useFragmentMines.tsx +++ b/client/apps/game/src/hooks/helpers/use-fragment-mines.tsx @@ -1,9 +1,9 @@ +import { useDojo } from "@/hooks/context/dojo-context"; import { toHexString } from "@/ui/utils/utils"; import { useEntityQuery } from "@dojoengine/react"; import { Entity, Has, HasValue, getComponentValue, runQuery } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { shortString } from "starknet"; -import { useDojo } from "../context/DojoContext"; export const useFragmentMines = () => { const { @@ -48,5 +48,6 @@ export const useFragmentMines = () => { }; }, ); - return { fragmentMines }; + + return fragmentMines; }; diff --git a/client/apps/game/src/hooks/helpers/use-get-all-players.tsx b/client/apps/game/src/hooks/helpers/use-get-all-players.tsx deleted file mode 100644 index b600208338..0000000000 --- a/client/apps/game/src/hooks/helpers/use-get-all-players.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import { Player } from "@bibliothecadao/eternum"; -import { getComponentValue, Has, HasValue, runQuery } from "@dojoengine/recs"; -import { shortString } from "starknet"; -import { useDojo } from "../context/DojoContext"; -import { useEntitiesUtils } from "./useEntities"; - -import { calculateLordsShare, calculatePlayerSharePercentage } from "@/ui/utils/leaderboard"; -import { StructureType } from "@bibliothecadao/eternum"; -import { formatEther } from "viem"; -import { useLeaderBoardStore } from "../store/useLeaderBoardStore"; -import { usePrizePool } from "./use-rewards"; - -export const useGetAllPlayers = () => { - const dojo = useDojo(); - - const { - setup: { - components: { Realm, Owner, GuildMember, AddressName, Hyperstructure, Structure }, - }, - } = dojo; - const { getEntityName } = useEntitiesUtils(); - const playersByRank = useLeaderBoardStore((state) => state.playersByRank); - - const prizePool = usePrizePool(); - - const playerEntities = runQuery([Has(AddressName)]); - - const totalPoints = playersByRank.reduce((sum, [, points]) => sum + points, 0); - - const getPlayers = (): Player[] => { - const players = Array.from(Array.from(playerEntities)) - .map((id) => { - const addressName = getComponentValue(AddressName, id); - if (!addressName) return; - - const isAlive = !!runQuery([HasValue(Owner, { address: addressName.address })]).size; - - const guildMember = getComponentValue(GuildMember, id); - const guildName = guildMember ? getEntityName(guildMember.guild_entity_id) : ""; - - return { - address: addressName.address, - addressName: shortString.decodeShortString(addressName.name.toString()), - isAlive, - guildName, - }; - }) - .filter((player) => player !== undefined); - - let unrankedCount = 0; - - return players.map((player) => { - const rankIndex = playersByRank.findIndex(([address]) => address === player.address); - if (rankIndex === -1) unrankedCount++; - - const points = rankIndex === -1 ? 0 : playersByRank[rankIndex][1]; - - return { - name: player.addressName, - address: player.address, - points, - rank: rankIndex === -1 ? Number.MAX_SAFE_INTEGER : rankIndex + 1, - percentage: calculatePlayerSharePercentage(points, totalPoints), - lords: calculateLordsShare(points, totalPoints, Number(formatEther(prizePool))), - realms: runQuery([Has(Realm), HasValue(Owner, { address: player.address })]).size, - mines: runQuery([ - HasValue(Structure, { category: StructureType[StructureType.FragmentMine] }), - HasValue(Owner, { address: player.address }), - ]).size, - hyperstructures: runQuery([Has(Hyperstructure), HasValue(Owner, { address: player.address })]).size, - isAlive: player.isAlive, - guildName: player.guildName || "", - }; - }); - }; - - return getPlayers; -}; diff --git a/client/apps/game/src/hooks/helpers/useGuilds.tsx b/client/apps/game/src/hooks/helpers/use-guilds.tsx similarity index 81% rename from client/apps/game/src/hooks/helpers/useGuilds.tsx rename to client/apps/game/src/hooks/helpers/use-guilds.tsx index 5b55996980..5d363f03e7 100644 --- a/client/apps/game/src/hooks/helpers/useGuilds.tsx +++ b/client/apps/game/src/hooks/helpers/use-guilds.tsx @@ -1,16 +1,22 @@ -import { ClientComponents } from "@/dojo/createClientComponents"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useLeaderBoardStore } from "@/hooks/store/use-leaderboard-store"; +import useUIStore from "@/hooks/store/use-ui-store"; import { formatTime, toHexString } from "@/ui/utils/utils"; -import { ContractAddress, GuildInfo, GuildMemberInfo, GuildWhitelistInfo, ID, Player } from "@bibliothecadao/eternum"; +import { getAddressName, getEntityName } from "@/utils/entities"; +import { + ClientComponents, + ContractAddress, + GuildInfo, + GuildMemberInfo, + GuildWhitelistInfo, + ID, + PlayerInfo, +} from "@bibliothecadao/eternum"; import { useEntityQuery } from "@dojoengine/react"; import { Component, Entity, Has, HasValue, NotValue, getComponentValue, runQuery } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { useCallback } from "react"; import { shortString } from "starknet"; -import { useDojo } from "../context/DojoContext"; -import { useLeaderBoardStore } from "../store/useLeaderBoardStore"; -import useUIStore from "../store/useUIStore"; -import { useEntitiesUtils } from "./useEntities"; -import { useRealm } from "./useRealm"; const formatGuilds = ( guildsRanked: [ID, number][], @@ -66,7 +72,7 @@ const formatGuilds = ( const formatGuildMembers = ( guildMembers: Entity[], - players: Player[], + players: PlayerInfo[], nextBlockTimestamp: number | undefined, userAddress: string, getAddressName: (address: ContractAddress) => string | undefined, @@ -111,7 +117,7 @@ const formatGuildMembers = ( const formatGuildWhitelist = ( whitelist: Entity[], - players: Player[], + players: PlayerInfo[], GuildWhitelist: Component, getAddressName: (address: ContractAddress) => string | undefined, getEntityName: (entityId: ID) => string, @@ -163,19 +169,18 @@ export const useGuilds = () => { const { setup: { - components: { - Guild, - GuildMember, - GuildWhitelist, - Owner, - AddressName, - events: { CreateGuild, JoinGuild }, - }, + components, account: { account }, }, } = dojo; - const { getEntityName } = useEntitiesUtils(); - const { getAddressName } = useRealm(); + const { + Guild, + GuildMember, + GuildWhitelist, + Owner, + AddressName, + events: { CreateGuild, JoinGuild }, + } = components; const nextBlockTimestamp = useUIStore.getState().nextBlockTimestamp; @@ -189,7 +194,7 @@ export const useGuilds = () => { guilds, nextBlockTimestamp, account.address, - (entityId: number) => getEntityName(entityId) || "Unknown", + (entityId: number) => getEntityName(entityId, components) || "Unknown", Guild, Owner, GuildMember, @@ -198,25 +203,28 @@ export const useGuilds = () => { }; }; - const getGuildFromEntityId = useCallback((entityId: ID, accountAddress: ContractAddress) => { - const guildsRanked = useLeaderBoardStore.getState().guildsByRank; - const guild = formatGuilds( - guildsRanked, - [getEntityIdFromKeys([BigInt(entityId)])], - nextBlockTimestamp, - account.address, - (entityId: number) => getEntityName(entityId) || "Unknown", - Guild, - Owner, - GuildMember, - CreateGuild, - )[0]; - if (!guild) return; - - const owner = getComponentValue(Owner, getEntityIdFromKeys([BigInt(guild.entityId)])); - - return { guild, isOwner: owner?.address === ContractAddress(accountAddress), name: guild.name }; - }, []); + const getGuildFromEntityId = useCallback( + (entityId: ID, accountAddress: ContractAddress, components: ClientComponents) => { + const guildsRanked = useLeaderBoardStore.getState().guildsByRank; + const guild = formatGuilds( + guildsRanked, + [getEntityIdFromKeys([BigInt(entityId)])], + nextBlockTimestamp, + account.address, + (entityId: number) => getEntityName(entityId, components) || "Unknown", + Guild, + Owner, + GuildMember, + CreateGuild, + )[0]; + if (!guild) return; + + const owner = getComponentValue(Owner, getEntityIdFromKeys([BigInt(guild.entityId)])); + + return { guild, isOwner: owner?.address === ContractAddress(accountAddress), name: guild.name }; + }, + [], + ); const getGuildFromPlayerAddress = useCallback((accountAddress: ContractAddress): GuildInfo | undefined => { const guildMember = getComponentValue(GuildMember, getEntityIdFromKeys([accountAddress])); @@ -225,7 +233,9 @@ export const useGuilds = () => { const guild = getComponentValue(Guild, getEntityIdFromKeys([BigInt(guildMember.guild_entity_id)])); const owner = getComponentValue(Owner, getEntityIdFromKeys([BigInt(guildMember.guild_entity_id)])); - const name = guildMember.guild_entity_id ? getEntityName(guildMember.guild_entity_id) || "Unknown" : "Unknown"; + const name = guildMember.guild_entity_id + ? getEntityName(guildMember.guild_entity_id, components) || "Unknown" + : "Unknown"; return { entityId: guildMember?.guild_entity_id, @@ -235,7 +245,7 @@ export const useGuilds = () => { }; }, []); - const useGuildMembers = (guildEntityId: ID, players: Player[]) => { + const useGuildMembers = (guildEntityId: ID, players: PlayerInfo[]) => { const guildMembers = useEntityQuery([HasValue(GuildMember, { guild_entity_id: guildEntityId })]); return { @@ -244,7 +254,7 @@ export const useGuilds = () => { players, nextBlockTimestamp, account.address, - getAddressName, + (address: ContractAddress) => getAddressName(address, components), GuildMember, Owner, JoinGuild, @@ -252,7 +262,7 @@ export const useGuilds = () => { }; }; - const useGuildWhitelist = (guildEntityId: ID, players: Player[]) => { + const useGuildWhitelist = (guildEntityId: ID, players: PlayerInfo[]) => { const whitelist = useEntityQuery([ HasValue(GuildWhitelist, { guild_entity_id: guildEntityId, is_whitelisted: true }), ]); @@ -261,15 +271,19 @@ export const useGuilds = () => { whitelist, players, GuildWhitelist, - getAddressName, - (entityId: number) => getEntityName(entityId) || "Unknown", + (address: ContractAddress) => getAddressName(address, components) || "Unknown", + (entityId: number) => getEntityName(entityId, components) || "Unknown", ); }; const usePlayerWhitelist = (address: ContractAddress) => { const whitelist = useEntityQuery([HasValue(GuildWhitelist, { address, is_whitelisted: true })]); - return formatPlayerWhitelist(whitelist, GuildWhitelist, (entityId: number) => getEntityName(entityId) || "Unknown"); + return formatPlayerWhitelist( + whitelist, + GuildWhitelist, + (entityId: number) => getEntityName(entityId, components) || "Unknown", + ); }; const getPlayersInPlayersGuild = useCallback((accountAddress: ContractAddress) => { diff --git a/client/apps/game/src/hooks/helpers/useHyperstructures.tsx b/client/apps/game/src/hooks/helpers/use-hyperstructures.tsx similarity index 94% rename from client/apps/game/src/hooks/helpers/useHyperstructures.tsx rename to client/apps/game/src/hooks/helpers/use-hyperstructures.tsx index e235b39590..a27113bf77 100644 --- a/client/apps/game/src/hooks/helpers/useHyperstructures.tsx +++ b/client/apps/game/src/hooks/helpers/use-hyperstructures.tsx @@ -1,13 +1,18 @@ -import { ClientComponents } from "@/dojo/createClientComponents"; import { configManager } from "@/dojo/setup"; +import { useDojo } from "@/hooks/context/dojo-context"; import { divideByPrecision, toHexString, toInteger } from "@/ui/utils/utils"; -import { ContractAddress, DUMMY_HYPERSTRUCTURE_ENTITY_ID, ID, ResourcesIds } from "@bibliothecadao/eternum"; +import { getAddressNameFromEntity } from "@/utils/entities"; +import { + ClientComponents, + ContractAddress, + DUMMY_HYPERSTRUCTURE_ENTITY_ID, + ID, + ResourcesIds, +} from "@bibliothecadao/eternum"; import { useEntityQuery } from "@dojoengine/react"; import { Component, ComponentValue, Entity, Has, HasValue, getComponentValue, runQuery } from "@dojoengine/recs"; import { useCallback, useMemo } from "react"; import { shortString } from "starknet"; -import { useDojo } from "../context/DojoContext"; -import { useEntitiesUtils } from "./useEntities"; export type ProgressWithPercentage = { percentage: number; @@ -20,12 +25,10 @@ export type ProgressWithPercentage = { export const useHyperstructures = () => { const { account: { account }, - setup: { - components: { Structure, Contribution, Position, Owner, EntityName, Hyperstructure }, - }, + setup: { components }, } = useDojo(); - const { getAddressNameFromEntity } = useEntitiesUtils(); + const { Structure, Contribution, Position, Owner, EntityName, Hyperstructure } = components; const hyperstructures = useEntityQuery([Has(Structure), HasValue(Structure, { category: "Hyperstructure" })]).map( (hyperstructureEntityId) => { @@ -43,7 +46,7 @@ export const useHyperstructures = () => { const owner = toHexString(ownerComponent?.address || 0n); const isOwner = ContractAddress(ownerComponent?.address ?? 0n) === ContractAddress(account.address); const entityName = getComponentValue(EntityName, hyperstructureEntityId); - const ownerName = hyperstructure ? getAddressNameFromEntity(hyperstructure.entity_id!) : ""; + const ownerName = hyperstructure ? getAddressNameFromEntity(hyperstructure.entity_id!, components) : ""; return { ...hyperstructure, diff --git a/client/apps/game/src/hooks/helpers/use-players.tsx b/client/apps/game/src/hooks/helpers/use-players.tsx new file mode 100644 index 0000000000..5defa57717 --- /dev/null +++ b/client/apps/game/src/hooks/helpers/use-players.tsx @@ -0,0 +1,25 @@ +import { useDojo } from "@/hooks/context/dojo-context"; +import { Player } from "@bibliothecadao/eternum"; +import { useEntityQuery } from "@dojoengine/react"; +import { getComponentValue, Has } from "@dojoengine/recs"; +import { useMemo } from "react"; + +export const usePlayers = (): Player[] => { + const { + setup: { components }, + } = useDojo(); + + const entities = useEntityQuery([Has(components.AddressName)]); + + const players = useMemo(() => { + return entities + .map((id) => { + const addressName = getComponentValue(components.AddressName, id); + if (!addressName) return; + return { entity: id, address: addressName.address, name: addressName.name.toString() }; + }) + .filter(Boolean) as Player[]; + }, [entities]); + + return players; +}; diff --git a/client/apps/game/src/hooks/helpers/useQuery.tsx b/client/apps/game/src/hooks/helpers/use-query.tsx similarity index 100% rename from client/apps/game/src/hooks/helpers/useQuery.tsx rename to client/apps/game/src/hooks/helpers/use-query.tsx diff --git a/client/apps/game/src/hooks/helpers/useQuests.tsx b/client/apps/game/src/hooks/helpers/use-quests.tsx similarity index 58% rename from client/apps/game/src/hooks/helpers/useQuests.tsx rename to client/apps/game/src/hooks/helpers/use-quests.tsx index 675278aa4b..7802d31c9b 100644 --- a/client/apps/game/src/hooks/helpers/useQuests.tsx +++ b/client/apps/game/src/hooks/helpers/use-quests.tsx @@ -1,64 +1,40 @@ -import { questDetails } from "@/ui/components/quest/questDetails"; -import { ArmyInfo, BuildingType, ContractAddress, ID, QuestType, TileManager } from "@bibliothecadao/eternum"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useArmiesByStructure } from "@/hooks/helpers/use-armies"; +import { useGetMyOffers } from "@/hooks/helpers/use-trade"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { questDetails } from "@/ui/components/quest/quest-details"; +import { armyHasTraveled } from "@/utils/army"; +import { getEntityInfo } from "@/utils/entities"; +import { ContractAddress, Prize, QuestStatus, QuestType, TileManager } from "@bibliothecadao/eternum"; import { useComponentValue, useEntityQuery } from "@dojoengine/react"; -import { HasValue, getComponentValue } from "@dojoengine/recs"; +import { getComponentValue, HasValue } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { useMemo } from "react"; -import { useDojo } from "../context/DojoContext"; -import useUIStore from "../store/useUIStore"; -import { useArmiesByEntityOwnerWithPositionAndQuantity } from "./useArmies"; -import { useEntitiesUtils } from "./useEntities"; -import { useGetMyOffers } from "./useTrade"; - -export interface Quest { - id: QuestType; - view: string; - name: string; - description: string | React.ReactNode; - steps: (string | React.ReactNode)[]; - prizes: Prize[]; - depth: number; - status: QuestStatus; -} - -export interface Prize { - id: QuestType; - title: string; -} - -export enum QuestStatus { - InProgress, - Completed, - Claimed, -} +import { useBuildingQuantities } from "./use-buildings"; export const useQuests = () => { const questDependencies = useQuestDependencies(); - const createQuest = (QuestType: QuestType) => { - const dependency = questDependencies[QuestType]; - return useMemo( - () => ({ - id: QuestType, - ...questDetails.get(QuestType)!, - status: dependency.status, - }), - [questDependencies[QuestType]], - ); - }; - - const quests = [ - createQuest(QuestType.Settle), - createQuest(QuestType.BuildFood), - createQuest(QuestType.BuildResource), - createQuest(QuestType.PauseProduction), - createQuest(QuestType.CreateDefenseArmy), - createQuest(QuestType.CreateAttackArmy), - createQuest(QuestType.Travel), - createQuest(QuestType.CreateTrade), + const questTypes = [ + QuestType.Settle, + QuestType.BuildFood, + QuestType.BuildResource, + QuestType.PauseProduction, + QuestType.CreateDefenseArmy, + QuestType.CreateAttackArmy, + QuestType.Travel, + QuestType.CreateTrade, ]; - return { quests }; + const quests = useMemo(() => { + return questTypes.map((type) => ({ + id: type, + ...questDetails.get(type)!, + status: questDependencies[type].status, + })); + }, [questDependencies]); + + return quests; }; const useQuestDependencies = () => { @@ -70,14 +46,17 @@ const useQuestDependencies = () => { HasValue(setup.components.EntityOwner, { entity_owner_id: structureEntityId || 0 }), ]); const buildingQuantities = useBuildingQuantities(structureEntityId); - const { entityArmies } = useArmiesByEntityOwnerWithPositionAndQuantity({ - entity_owner_entity_id: structureEntityId || 0, + const { entityArmies } = useArmiesByStructure({ + structureEntityId: structureEntityId || 0, }); const orders = useGetMyOffers(); - const { getEntityInfo } = useEntitiesUtils(); const structurePosition = useMemo( - () => getEntityInfo(structureEntityId)?.position || { x: 0, y: 0 }, + () => + getEntityInfo(structureEntityId, ContractAddress(setup.account.account.address), setup.components)?.position || { + x: 0, + y: 0, + }, [structureEntityId, getEntityInfo], ); @@ -107,7 +86,7 @@ const useQuestDependencies = () => { ); const { questClaimStatus } = useQuestClaimStatus(); - const { unclaimedQuestsCount } = useUnclaimedQuestsCount(); + const unclaimedQuestsCount = useUnclaimedQuestsCount(); return useMemo( () => ({ @@ -184,17 +163,17 @@ const useQuestDependencies = () => { ); }; -export const useQuestClaimStatus = () => { +const useQuestClaimStatus = () => { const { setup: { - components: { Quest, Realm }, + components: { Quest, Owner }, }, account: { account }, } = useDojo(); const structureEntityId = useUIStore((state) => state.structureEntityId); - const realmSettler = useComponentValue(Realm, getEntityIdFromKeys([BigInt(structureEntityId)]))?.settler_address; - const isNotSettler = realmSettler !== ContractAddress(account.address); + const realmOwner = useComponentValue(Owner, getEntityIdFromKeys([BigInt(structureEntityId)]))?.address; + const isNotOwner = realmOwner !== ContractAddress(account.address); const prizeUpdate = useEntityQuery([HasValue(Quest, { entity_id: structureEntityId || 0 })]); @@ -209,11 +188,11 @@ export const useQuestClaimStatus = () => { return Array.from(questDetails.keys()).reduce( (acc, questName) => ({ ...acc, - [questName]: isNotSettler || checkPrizesClaimed(questDetails.get(questName)?.prizes || []), + [questName]: isNotOwner || checkPrizesClaimed(questDetails.get(questName)?.prizes || []), }), {} as Record, ); - }, [structureEntityId, isNotSettler, prizeUpdate, Quest]); + }, [structureEntityId, isNotOwner, prizeUpdate, Quest]); return { questClaimStatus }; }; @@ -226,43 +205,5 @@ export const useUnclaimedQuestsCount = () => { [questClaimStatus], ); - return { unclaimedQuestsCount }; -}; - -const useBuildingQuantities = (structureEntityId: ID | undefined) => { - const { - setup: { - components: { BuildingQuantityv2 }, - }, - } = useDojo(); - const entityUpdate = useEntityQuery([HasValue(BuildingQuantityv2, { entity_id: structureEntityId || 0 })]); - const getBuildingQuantity = (buildingType: BuildingType) => - getComponentValue(BuildingQuantityv2, getEntityIdFromKeys([BigInt(structureEntityId || 0), BigInt(buildingType)])) - ?.value || 0; - - return useMemo( - () => ({ - food: getBuildingQuantity(BuildingType.Farm) + getBuildingQuantity(BuildingType.FishingVillage), - resource: getBuildingQuantity(BuildingType.Resource), - workersHut: getBuildingQuantity(BuildingType.WorkersHut), - markets: getBuildingQuantity(BuildingType.Market), - }), - [structureEntityId, entityUpdate], - ); -}; - -export const armyHasTroops = (entityArmies: (ArmyInfo | undefined)[]) => { - return entityArmies.some( - (army) => - army && - (Number(army.troops.knight_count) !== 0 || - Number(army.troops.crossbowman_count) !== 0 || - Number(army.troops.paladin_count) !== 0), - ); -}; - -const armyHasTraveled = (entityArmies: ArmyInfo[], realmPosition: { x: number; y: number }) => { - return entityArmies.some( - (army) => army && realmPosition && (army.position.x !== realmPosition.x || army.position.y !== realmPosition.y), - ); + return unclaimedQuestsCount; }; diff --git a/client/apps/game/src/hooks/helpers/use-realm.tsx b/client/apps/game/src/hooks/helpers/use-realm.tsx new file mode 100644 index 0000000000..64ea0dab78 --- /dev/null +++ b/client/apps/game/src/hooks/helpers/use-realm.tsx @@ -0,0 +1,51 @@ +import { useDojo } from "@/hooks/context/dojo-context"; +import { getRealmInfo } from "@/utils/realm"; +import { + ContractAddress, + type ClientComponents, + type RealmInfo +} from "@bibliothecadao/eternum"; +import { useEntityQuery } from "@dojoengine/react"; +import { ComponentValue, getComponentValue, Has, HasValue } from "@dojoengine/recs"; +import { useMemo } from "react"; + +export function usePlayerRealms(): RealmInfo[] { + const { + account: { account }, + setup: { components }, + } = useDojo(); + + const { Realm, Owner } = components; + + const realmEntities = useEntityQuery([Has(Realm), HasValue(Owner, { address: ContractAddress(account.address) })]); + + const realms = useMemo(() => { + return realmEntities + .map((entity) => { + return getRealmInfo(entity, components); + }) + .filter(Boolean) as RealmInfo[]; + }, [realmEntities]); + + return realms; +} + +export const useRealms = () => { + const { + setup: { + components: { Realm }, + }, + } = useDojo(); + + const realmEntities = useEntityQuery([Has(Realm)]); + + const realms = useMemo(() => { + return realmEntities + .map((entity) => { + return getComponentValue(Realm, entity); + }) + .filter(Boolean) as ComponentValue[]; + }, [realmEntities]); + + return realms; +}; diff --git a/client/apps/game/src/hooks/helpers/use-resource-arrivals.tsx b/client/apps/game/src/hooks/helpers/use-resource-arrivals.tsx index f967ccde8c..4e3c96c196 100644 --- a/client/apps/game/src/hooks/helpers/use-resource-arrivals.tsx +++ b/client/apps/game/src/hooks/helpers/use-resource-arrivals.tsx @@ -1,24 +1,16 @@ -import { ContractAddress, ID, Position } from "@bibliothecadao/eternum"; +import { useDojo } from "@/hooks/context/dojo-context"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; +import { + ArrivalInfo, + ContractAddress, + DONKEY_RESOURCE_TRACKER, + LORDS_AND_DONKEY_RESOURCE_TRACKER, + LORDS_RESOURCE_TRACKER, +} from "@bibliothecadao/eternum"; import { useEntityQuery } from "@dojoengine/react"; import { Entity, Has, HasValue, NotValue, defineQuery, getComponentValue, isComponentUpdate } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { useCallback, useEffect, useMemo, useState } from "react"; -import { useDojo } from "../context/DojoContext"; -import useNextBlockTimestamp from "../useNextBlockTimestamp"; - -const DONKEY_RESOURCE_TRACKER = 452312848583266388373324160190187140051835877600158453279131187530910662656n; -const LORDS_RESOURCE_TRACKER = 7237005577332262213973186563042994240829374041602535252466099000494570602496n; -const LORDS_AND_DONKEY_RESOURCE_TRACKER = 7689318425915528602346510723233181380881209919202693705745230188025481265152n; - -export type ArrivalInfo = { - entityId: ID; - recipientEntityId: ID; - position: Position; - arrivesAt: bigint; - isOwner: boolean; - hasResources: boolean; - isHome: boolean; -}; const getCurrentDonkeyWeightMinimum = () => { return Number(localStorage.getItem("WEIGHT_MINIMUM") || 0) * 1000; @@ -73,7 +65,6 @@ const usePlayerArrivals = () => { ownedResourceTracker?.resource_types === LORDS_RESOURCE_TRACKER || ownedResourceTracker?.resource_types === LORDS_AND_DONKEY_RESOURCE_TRACKER; - // Determine if entity meets weight requirements const meetsWeightRequirement = hasSpecialResources || hasMinWeight(id); diff --git a/client/apps/game/src/hooks/helpers/use-resources.tsx b/client/apps/game/src/hooks/helpers/use-resources.tsx new file mode 100644 index 0000000000..edcb388875 --- /dev/null +++ b/client/apps/game/src/hooks/helpers/use-resources.tsx @@ -0,0 +1,19 @@ +import { useDojo } from "@/hooks/context/dojo-context"; +import { ID, ResourceManager, ResourcesIds } from "@bibliothecadao/eternum"; +import { useComponentValue } from "@dojoengine/react"; +import { useMemo } from "react"; +import { getEntityIdFromKeys } from "../../ui/utils/utils"; + +export const useResourceManager = (entityId: ID, resourceId: ResourcesIds) => { + const dojo = useDojo(); + const resource = useComponentValue( + dojo.setup.components.Resource, + getEntityIdFromKeys([BigInt(entityId), BigInt(resourceId)]), + ); + + const resourceManager = useMemo(() => { + return new ResourceManager(dojo.setup.components, entityId, resourceId); + }, [dojo.setup, entityId, resourceId, resource]); + + return resourceManager; +}; diff --git a/client/apps/game/src/hooks/helpers/use-rewards.tsx b/client/apps/game/src/hooks/helpers/use-rewards.tsx index cbf1f6547b..916fec5e6a 100644 --- a/client/apps/game/src/hooks/helpers/use-rewards.tsx +++ b/client/apps/game/src/hooks/helpers/use-rewards.tsx @@ -1,7 +1,7 @@ import { configManager } from "@/dojo/setup"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { getLordsAddress } from "@/utils/addresses"; import { useEffect, useState } from "react"; -import { env } from "../../../env"; -import { useDojo } from "../context/DojoContext"; export const usePrizePool = () => { const [prizePool, setPrizePool] = useState(0n); @@ -10,8 +10,9 @@ export const usePrizePool = () => { } = useDojo(); const getBalance = async (address: string) => { + const lordsAddress = await getLordsAddress(); const balance = await account?.callContract({ - contractAddress: env.VITE_LORDS_ADDRESS!, + contractAddress: lordsAddress, entrypoint: "balance_of", calldata: [address], }); diff --git a/client/apps/game/src/hooks/helpers/useStamina.tsx b/client/apps/game/src/hooks/helpers/use-stamina.tsx similarity index 91% rename from client/apps/game/src/hooks/helpers/useStamina.tsx rename to client/apps/game/src/hooks/helpers/use-stamina.tsx index c4fdbb2a86..5d2ee20f92 100644 --- a/client/apps/game/src/hooks/helpers/useStamina.tsx +++ b/client/apps/game/src/hooks/helpers/use-stamina.tsx @@ -1,8 +1,8 @@ +import { useDojo } from "@/hooks/context/dojo-context"; import { ID, StaminaManager } from "@bibliothecadao/eternum"; import { useComponentValue } from "@dojoengine/react"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { useMemo } from "react"; -import { useDojo } from "../context/DojoContext"; export const useStaminaManager = (entityId: ID) => { const { setup } = useDojo(); diff --git a/client/apps/game/src/hooks/helpers/useStructureEntityId.tsx b/client/apps/game/src/hooks/helpers/use-structure-entity-id.tsx similarity index 82% rename from client/apps/game/src/hooks/helpers/useStructureEntityId.tsx rename to client/apps/game/src/hooks/helpers/use-structure-entity-id.tsx index efec962f70..9917636442 100644 --- a/client/apps/game/src/hooks/helpers/useStructureEntityId.tsx +++ b/client/apps/game/src/hooks/helpers/use-structure-entity-id.tsx @@ -1,12 +1,12 @@ -import { Position as PositionInterface } from "@/types/Position"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { usePlayerStructures } from "@/hooks/helpers/use-entities"; +import { useQuery } from "@/hooks/helpers/use-query"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { Position as PositionInterface } from "@/types/position"; import { UNDEFINED_STRUCTURE_ENTITY_ID } from "@/ui/constants"; import { ContractAddress } from "@bibliothecadao/eternum"; import { Entity, Has, HasValue, getComponentValue, runQuery } from "@dojoengine/recs"; import { useEffect, useMemo } from "react"; -import { useDojo } from "../context/DojoContext"; -import useUIStore from "../store/useUIStore"; -import { useEntities } from "./useEntities"; -import { useQuery } from "./useQuery"; export const useStructureEntityId = () => { const { @@ -23,9 +23,7 @@ export const useStructureEntityId = () => { const address = isSpectatorMode ? ContractAddress("0x0") : ContractAddress(account.address); - const { playerStructures } = useEntities(); - - const structures = playerStructures(); + const structures = usePlayerStructures(ContractAddress(account.address)); const defaultPlayerStructure = useMemo(() => { return structures[0]; diff --git a/client/apps/game/src/hooks/helpers/useStructures.tsx b/client/apps/game/src/hooks/helpers/use-structures.tsx similarity index 82% rename from client/apps/game/src/hooks/helpers/useStructures.tsx rename to client/apps/game/src/hooks/helpers/use-structures.tsx index cd00edcc1a..65789047c3 100644 --- a/client/apps/game/src/hooks/helpers/useStructures.tsx +++ b/client/apps/game/src/hooks/helpers/use-structures.tsx @@ -1,5 +1,9 @@ import { configManager } from "@/dojo/setup"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useGetArmyByEntityId } from "@/hooks/helpers/use-armies"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; import { currentTickCount } from "@/ui/utils/utils"; +import { getEntityName } from "@/utils/entities"; import { BattleManager, ContractAddress, @@ -13,22 +17,16 @@ import { Has, HasValue, getComponentValue, runQuery } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { useMemo } from "react"; import { shortString } from "starknet"; -import { useDojo } from "../context/DojoContext"; -import useNextBlockTimestamp from "../useNextBlockTimestamp"; -import { getArmyByEntityId } from "./useArmies"; -import { useEntitiesUtils } from "./useEntities"; export const useStructureAtPosition = ({ x, y }: Position): Structure | undefined => { const { account: { account }, - setup: { - components: { Position, Structure, EntityOwner, Owner, Protector, AddressName }, - }, + setup: { components }, } = useDojo(); - const { getAliveArmy } = getArmyByEntityId(); + const { Position, Structure, EntityOwner, Owner, Protector, AddressName } = components; - const { getEntityName } = useEntitiesUtils(); + const { getArmy } = useGetArmyByEntityId(); const structure = useMemo(() => { const structureAtPosition = runQuery([HasValue(Position, { x, y }), Has(Structure)]); @@ -43,9 +41,9 @@ export const useStructureAtPosition = ({ x, y }: Position): Structure | undefine const owner = ownerOnChain ? ownerOnChain : { entity_id: structure.entity_id, address: ContractAddress(0n) }; const protectorArmy = getComponentValue(Protector, structureEntityId); - const protector = protectorArmy ? getAliveArmy(protectorArmy.army_id) : undefined; + const protector = protectorArmy ? getArmy(protectorArmy.army_id) : undefined; - const name = getEntityName(structure.entity_id) || ""; + const name = getEntityName(structure.entity_id, components) || ""; const addressName = getComponentValue(AddressName, getEntityIdFromKeys([owner?.address])); const ownerName = addressName ? shortString.decodeShortString(addressName!.name.toString()) : "Bandits"; @@ -68,14 +66,11 @@ export const useStructureAtPosition = ({ x, y }: Position): Structure | undefine export const useStructureByPosition = () => { const { account: { account }, - setup: { - components: { Position, Structure, EntityOwner, Owner, Protector }, - }, + setup: { components }, } = useDojo(); + const { Position, Structure, EntityOwner, Owner, Protector } = components; - const { getAliveArmy } = getArmyByEntityId(); - - const { getEntityName } = useEntitiesUtils(); + const { getArmy } = useGetArmyByEntityId(); const structureAtPosition = ({ x, y }: Position) => { const structureAtPosition = runQuery([HasValue(Position, { x, y }), Has(Structure)]); @@ -90,9 +85,9 @@ export const useStructureByPosition = () => { const owner = ownerOnChain ? ownerOnChain : { entity_id: structure.entity_id, address: ContractAddress(0n) }; const protectorArmy = getComponentValue(Protector, structureEntityId); - const protector = protectorArmy ? getAliveArmy(protectorArmy.army_id) : undefined; + const protector = protectorArmy ? getArmy(protectorArmy.army_id) : undefined; - const name = getEntityName(structure.entity_id); + const name = getEntityName(structure.entity_id, components); return { ...structure, @@ -111,14 +106,12 @@ export const useStructureByPosition = () => { export const useStructureByEntityId = (entityId: ID) => { const { account: { account }, - setup: { - components: { Structure, EntityOwner, Owner, Protector, Position, AddressName }, - }, + setup: { components }, } = useDojo(); - const { getEntityName } = useEntitiesUtils(); + const { Structure, EntityOwner, Owner, Protector, Position, AddressName } = components; - const { getAliveArmy } = getArmyByEntityId(); + const { getArmy } = useGetArmyByEntityId(); const structure = useMemo(() => { const structureEntityId = getEntityIdFromKeys([BigInt(entityId)]); @@ -132,12 +125,12 @@ export const useStructureByEntityId = (entityId: ID) => { const owner = ownerOnChain ? ownerOnChain : { entity_id: structure.entity_id, address: ContractAddress(0n) }; const protectorArmy = getComponentValue(Protector, structureEntityId); - const protector = protectorArmy ? getAliveArmy(protectorArmy.army_id) : undefined; + const protector = protectorArmy ? getArmy(protectorArmy.army_id) : undefined; const addressName = getComponentValue(AddressName, getEntityIdFromKeys([owner?.address])); const ownerName = addressName ? shortString.decodeShortString(addressName!.name.toString()) : "Bandits"; - const name = getEntityName(entityId); + const name = getEntityName(entityId, components); const position = getComponentValue(Position, structureEntityId); @@ -160,13 +153,12 @@ export const useStructureByEntityId = (entityId: ID) => { export const useStructures = () => { const { account: { account }, - setup: { - components: { Structure, EntityOwner, Owner, Protector, Position, AddressName }, - }, + setup: { components }, } = useDojo(); - const { getAliveArmy } = getArmyByEntityId(); - const { getEntityName } = useEntitiesUtils(); + const { Structure, EntityOwner, Owner, Protector, Position, AddressName } = components; + + const { getArmy } = useGetArmyByEntityId(); const getStructureByEntityId = (entityId: ID) => { const structureEntityId = getEntityIdFromKeys([BigInt(entityId)]); @@ -180,12 +172,12 @@ export const useStructures = () => { const owner = ownerOnChain ? ownerOnChain : { entity_id: structure.entity_id, address: ContractAddress(0n) }; const protectorArmy = getComponentValue(Protector, structureEntityId); - const protector = protectorArmy ? getAliveArmy(protectorArmy.army_id) : undefined; + const protector = protectorArmy ? getArmy(protectorArmy.army_id) : undefined; const addressName = getComponentValue(AddressName, getEntityIdFromKeys([owner?.address])); const ownerName = addressName ? shortString.decodeShortString(addressName!.name.toString()) : "Bandits"; - const name = getEntityName(entityId); + const name = getEntityName(entityId, components); const position = getComponentValue(Position, structureEntityId); diff --git a/client/apps/game/src/hooks/helpers/useTrade.tsx b/client/apps/game/src/hooks/helpers/use-trade.tsx similarity index 91% rename from client/apps/game/src/hooks/helpers/useTrade.tsx rename to client/apps/game/src/hooks/helpers/use-trade.tsx index 35a1ec1d38..8f9ce03b0c 100644 --- a/client/apps/game/src/hooks/helpers/useTrade.tsx +++ b/client/apps/game/src/hooks/helpers/use-trade.tsx @@ -1,14 +1,14 @@ +import { useDojo } from "@/hooks/context/dojo-context"; +import { usePlayerRealms } from "@/hooks/helpers/use-entities"; +import useUIStore from "@/hooks/store/use-ui-store"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; import { getRealmNameById } from "@/ui/utils/realms"; -import { ID, MarketInterface, Resource, ResourcesIds } from "@bibliothecadao/eternum"; +import { ContractAddress, ID, MarketInterface, Resource, ResourcesIds } from "@bibliothecadao/eternum"; import { useEntityQuery } from "@dojoengine/react"; import { Entity, HasValue, getComponentValue } from "@dojoengine/recs"; +import { getEntityIdFromKeys } from "@dojoengine/utils"; import { useMemo, useState } from "react"; import { shortString } from "starknet"; -import { getEntityIdFromKeys } from "../../ui/utils/utils"; -import { useDojo } from "../context/DojoContext"; -import useUIStore from "../store/useUIStore"; -import useNextBlockTimestamp from "../useNextBlockTimestamp"; -import { useEntities } from "./useEntities"; type TradeResourcesFromViewpoint = { resourcesGet: Resource[]; @@ -160,13 +160,14 @@ export function useGetMyOffers(): MarketInterface[] { export function useSetMarket() { const { + account: { account }, setup: { components: { Status, Trade }, }, } = useDojo(); - const { playerRealms } = useEntities(); - const realmEntityIds = playerRealms().map((realm: any) => realm.entity_id); + const playerRealms = usePlayerRealms(ContractAddress(account.address)); + const { nextBlockTimestamp } = useNextBlockTimestamp(); const { computeTrades } = useTrade(); @@ -177,7 +178,7 @@ export function useSetMarket() { }, [allMarket]); const userTrades = useMemo(() => { - return allTrades.filter((trade) => realmEntityIds.includes(trade.makerId)); + return allTrades.filter((trade) => playerRealms.map((realm) => realm.entity_id).includes(trade.makerId)); }, [allTrades]); const bidOffers = useMemo(() => { diff --git a/client/apps/game/src/hooks/helpers/useTravel.tsx b/client/apps/game/src/hooks/helpers/use-travel.tsx similarity index 94% rename from client/apps/game/src/hooks/helpers/useTravel.tsx rename to client/apps/game/src/hooks/helpers/use-travel.tsx index cb5dd427a3..685efceb7a 100644 --- a/client/apps/game/src/hooks/helpers/useTravel.tsx +++ b/client/apps/game/src/hooks/helpers/use-travel.tsx @@ -1,8 +1,8 @@ +import { useDojo } from "@/hooks/context/dojo-context"; import { calculateDistance } from "@/ui/utils/utils"; import { ID } from "@bibliothecadao/eternum"; import { getComponentValue } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; -import { useDojo } from "../context/DojoContext"; export function useTravel() { const { diff --git a/client/apps/game/src/hooks/helpers/useArmies.tsx b/client/apps/game/src/hooks/helpers/useArmies.tsx deleted file mode 100644 index 04806f7c78..0000000000 --- a/client/apps/game/src/hooks/helpers/useArmies.tsx +++ /dev/null @@ -1,657 +0,0 @@ -import { type ClientComponents } from "@/dojo/createClientComponents"; -import { - ArmyInfo, - CapacityConfigCategory, - ContractAddress, - EternumGlobalConfig, - getArmyTotalCapacity, - type ID, - type Position, -} from "@bibliothecadao/eternum"; -import { useEntityQuery } from "@dojoengine/react"; -import { - Has, - HasValue, - Not, - NotValue, - getComponentValue, - runQuery, - type Component, - type Entity, -} from "@dojoengine/recs"; -import { getEntityIdFromKeys } from "@dojoengine/utils"; -import { useMemo } from "react"; -import { shortString } from "starknet"; -import { useDojo } from "../context/DojoContext"; -import { type PlayerStructure } from "./useEntities"; - -const formatArmies = ( - armies: Entity[], - playerAddress: string, - Army: Component, - Protectee: Component, - Name: Component, - Health: Component, - Quantity: Component, - Movable: Component, - CapacityConfig: Component, - Weight: Component, - ArrivalTime: Component, - Position: Component, - EntityOwner: Component, - Owner: Component, - Realm: Component, - Stamina: Component, - Structure: Component, -): ArmyInfo[] => { - return armies - .map((armyEntityId) => { - const army = getComponentValue(Army, armyEntityId); - if (!army) return undefined; - - const position = getComponentValue(Position, armyEntityId); - if (!position) return undefined; - - const entityOwner = getComponentValue(EntityOwner, armyEntityId); - if (!entityOwner) return undefined; - - const owner = getComponentValue(Owner, getEntityIdFromKeys([BigInt(entityOwner.entity_owner_id)])); - - let health = structuredClone(getComponentValue(Health, armyEntityId)); - if (health) { - health.current = health.current / BigInt(EternumGlobalConfig.resources.resourcePrecision); - health.lifetime = health.lifetime / BigInt(EternumGlobalConfig.resources.resourcePrecision); - } else { - health = { - entity_id: army.entity_id, - current: 0n, - lifetime: 0n, - }; - } - const protectee = getComponentValue(Protectee, armyEntityId); - - let quantity = structuredClone(getComponentValue(Quantity, armyEntityId)); - if (quantity) { - quantity.value = BigInt(quantity.value) / BigInt(EternumGlobalConfig.resources.resourcePrecision); - } else { - quantity = { - entity_id: army.entity_id, - value: 0n, - }; - } - - const movable = getComponentValue(Movable, armyEntityId); - - const armyCapacityConfigEntityId = getEntityIdFromKeys([BigInt(CapacityConfigCategory.Army)]); - const capacity = getComponentValue(CapacityConfig, armyCapacityConfigEntityId); - const totalCapacity = capacity ? getArmyTotalCapacity(army, capacity) : 0n; - - const weightComponentValue = getComponentValue(Weight, armyEntityId); - const weight = weightComponentValue - ? weightComponentValue.value / BigInt(EternumGlobalConfig.resources.resourcePrecision) - : 0n; - - const arrivalTime = getComponentValue(ArrivalTime, armyEntityId); - const stamina = getComponentValue(Stamina, armyEntityId); - const name = getComponentValue(Name, armyEntityId); - const realm = entityOwner && getComponentValue(Realm, getEntityIdFromKeys([BigInt(entityOwner.entity_owner_id)])); - const homePosition = realm && getComponentValue(Position, getEntityIdFromKeys([BigInt(realm.entity_id)])); - - const structure = getComponentValue(Structure, getEntityIdFromKeys([BigInt(entityOwner.entity_owner_id)])); - - const structurePosition = - structure && getComponentValue(Position, getEntityIdFromKeys([BigInt(structure.entity_id)])); - - const isMine = (owner?.address || 0n) === ContractAddress(playerAddress); - const isMercenary = owner === undefined; - - const isHome = structurePosition && position.x === structurePosition.x && position.y === structurePosition.y; - - return { - ...army, - protectee, - health, - movable, - quantity, - totalCapacity, - weight, - arrivalTime, - position, - entityOwner, - stamina, - owner, - realm, - homePosition, - isMine, - isMercenary, - isHome, - name: name - ? shortString.decodeShortString(name.name.toString()) - : `${protectee ? "🛡️" : "🗡️"}` + `Army ${army.entity_id}`, - }; - }) - .filter((army): army is ArmyInfo => army !== undefined); -}; - -export const useArmiesByEntityOwner = ({ entity_owner_entity_id }: { entity_owner_entity_id: ID }) => { - const { - setup: { - components: { - Position, - EntityOwner, - Owner, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Realm, - Army, - Protectee, - EntityName, - Stamina, - Structure, - }, - }, - account: { account }, - } = useDojo(); - - const armies = useEntityQuery([Has(Army), HasValue(EntityOwner, { entity_owner_id: entity_owner_entity_id })]); - - const entityArmies = useMemo(() => { - return formatArmies( - armies, - account.address, - Army, - Protectee, - EntityName, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Position, - EntityOwner, - Owner, - Realm, - Stamina, - Structure, - ); - }, [armies]); - - return { - entityArmies, - }; -}; - -export const useArmiesByEntityOwnerWithPositionAndQuantity = ({ - entity_owner_entity_id, -}: { - entity_owner_entity_id: ID; -}) => { - const { - setup: { - components: { - Position, - EntityOwner, - Owner, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Realm, - Army, - Protectee, - EntityName, - Stamina, - Structure, - }, - }, - account: { account }, - } = useDojo(); - - const armies = useEntityQuery([ - Has(Army), - Has(Position), - Has(Quantity), - HasValue(EntityOwner, { entity_owner_id: entity_owner_entity_id }), - ]); - - const entityArmies = useMemo(() => { - return formatArmies( - armies, - account.address, - Army, - Protectee, - EntityName, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Position, - EntityOwner, - Owner, - Realm, - Stamina, - Structure, - ); - }, [armies]); - - return { - entityArmies, - }; -}; - -export const getArmiesByBattleId = () => { - const { - setup: { - components: { - Position, - EntityOwner, - Owner, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Realm, - Army, - Protectee, - EntityName, - Stamina, - Structure, - }, - }, - account: { account }, - } = useDojo(); - - const armiesByBattleId = (battle_id: ID) => { - const armiesEntityIds = runQuery([HasValue(Army, { battle_id })]); - return formatArmies( - Array.from(armiesEntityIds), - account.address, - Army, - Protectee, - EntityName, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Position, - EntityOwner, - Owner, - Realm, - Stamina, - Structure, - ); - }; - return armiesByBattleId; -}; - -export const useArmyByArmyEntityId = (entityId: ID): ArmyInfo | undefined => { - const { - setup: { - components: { - Position, - EntityOwner, - Owner, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Realm, - Army, - Protectee, - EntityName, - Stamina, - Structure, - }, - }, - account: { account }, - } = useDojo(); - - const armiesEntityIds = useEntityQuery([HasValue(Army, { entity_id: entityId })]); - return formatArmies( - Array.from(armiesEntityIds), - account.address, - Army, - Protectee, - EntityName, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Position, - EntityOwner, - Owner, - Realm, - Stamina, - Structure, - )[0]; -}; - -export const getUserArmyInBattle = (battle_id: ID) => { - const { - account: { account }, - setup: { - components: { - Position, - EntityOwner, - Owner, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Realm, - Army, - Protectee, - EntityName, - Stamina, - Structure, - }, - }, - } = useDojo(); - - const armiesEntityIds = runQuery([ - Has(Army), - NotValue(Army, { battle_id: 0 }), - HasValue(Army, { battle_id }), - HasValue(Owner, { address: ContractAddress(account.address) }), - ]); - - const armies = useMemo(() => { - return formatArmies( - Array.from(armiesEntityIds), - account.address, - Army, - Protectee, - EntityName, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Position, - EntityOwner, - Owner, - Realm, - Stamina, - Structure, - )[0]; - }, [battle_id]); - - return armies; -}; - -export const useOwnArmiesByPosition = ({ - position, - inBattle, - playerStructures, -}: { - position: Position; - inBattle: boolean; - playerStructures: PlayerStructure[]; -}) => { - { - const { - account: { account }, - setup: { - components: { - Position, - EntityOwner, - Owner, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Realm, - Army, - Protectee, - EntityName, - Stamina, - Structure, - }, - }, - } = useDojo(); - - const ownArmiesAtPosition = useEntityQuery([ - Has(Army), - HasValue(Position, { x: position.x, y: position.y }), - Not(Protectee), - inBattle ? NotValue(Army, { battle_id: 0 }) : HasValue(Army, { battle_id: 0 }), - ]); - - const ownArmies = useMemo(() => { - return formatArmies( - ownArmiesAtPosition, - account.address, - Army, - Protectee, - EntityName, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Position, - EntityOwner, - Owner, - Realm, - Stamina, - Structure, - ).filter((army) => - playerStructures.some((structure) => structure.entity_id === army.entityOwner.entity_owner_id), - ); - }, [ownArmiesAtPosition, position.x, position.y]); - - return ownArmies; - } -}; - -export const useEnemyArmiesByPosition = ({ - position, - playerStructures, -}: { - position: Position; - playerStructures: PlayerStructure[]; -}) => { - { - const { - account: { account }, - setup: { - components: { - Position, - EntityOwner, - Owner, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Realm, - Army, - Protectee, - EntityName, - Stamina, - Structure, - }, - }, - } = useDojo(); - - const enemyArmiesAtPosition = useEntityQuery([ - Has(Army), - HasValue(Position, { x: position.x, y: position.y }), - Not(Protectee), - ]); - - const enemyArmies = useMemo(() => { - return formatArmies( - enemyArmiesAtPosition, - account.address, - Army, - Protectee, - EntityName, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Position, - EntityOwner, - Owner, - Realm, - Stamina, - Structure, - ).filter((army) => - playerStructures.every((structure) => structure.entity_id !== army.entityOwner.entity_owner_id), - ); - }, [enemyArmiesAtPosition]); - - return enemyArmies; - } -}; - -export const getArmyByEntityId = () => { - const { - setup: { - components: { - Position, - EntityOwner, - Owner, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Realm, - Army, - Protectee, - EntityName, - Stamina, - Structure, - }, - }, - account: { account }, - } = useDojo(); - - const getAliveArmy = (entity_id: ID): ArmyInfo | undefined => { - const armiesEntityIds = runQuery([Has(Army), HasValue(Army, { entity_id })]); - return formatArmies( - Array.from(armiesEntityIds), - account.address, - Army, - Protectee, - EntityName, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Position, - EntityOwner, - Owner, - Realm, - Stamina, - Structure, - )[0]; - }; - - const getArmy = (entity_id: ID): ArmyInfo | undefined => { - const armiesEntityIds = runQuery([Has(Army), HasValue(Army, { entity_id })]); - - return formatArmies( - Array.from(armiesEntityIds), - account.address, - Army, - Protectee, - EntityName, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Position, - EntityOwner, - Owner, - Realm, - Stamina, - Structure, - )[0]; - }; - - return { getAliveArmy, getArmy }; -}; - -export const getArmiesByPosition = () => { - const { - account: { account }, - setup: { - components: { - Position, - EntityOwner, - Owner, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Realm, - Army, - Protectee, - EntityName, - Stamina, - Structure, - }, - }, - } = useDojo(); - - const getArmies = (position: Position) => { - const armiesEntityIds = runQuery([Has(Army), HasValue(Position, { x: position.x, y: position.y })]); - return formatArmies( - Array.from(armiesEntityIds), - account.address, - Army, - Protectee, - EntityName, - Health, - Quantity, - Movable, - CapacityConfig, - Weight, - ArrivalTime, - Position, - EntityOwner, - Owner, - Realm, - Stamina, - Structure, - ); - }; - - return getArmies; -}; diff --git a/client/apps/game/src/hooks/helpers/useBanks.tsx b/client/apps/game/src/hooks/helpers/useBanks.tsx deleted file mode 100644 index 0769a48d80..0000000000 --- a/client/apps/game/src/hooks/helpers/useBanks.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { ContractAddress, ID, Position } from "@bibliothecadao/eternum"; -import { useEntityQuery } from "@dojoengine/react"; -import { Has, HasValue, getComponentValue } from "@dojoengine/recs"; -import { getEntityIdFromKeys } from "@dojoengine/utils"; -import { useDojo } from "../context/DojoContext"; - -export const useGetBanks = (onlyMine?: boolean) => { - const { - account: { account }, - setup: { - components: { Bank, Position, Owner, AddressName }, - }, - } = useDojo(); - - const query = onlyMine ? [Has(Bank), HasValue(Owner, { address: ContractAddress(account.address) })] : [Has(Bank)]; - const entityIds = useEntityQuery(query); - - return entityIds - .map((entityId) => { - const position = getComponentValue(Position, entityId); - if (!position) return; - - const owner = getComponentValue(Owner, entityId); - const addressName = getComponentValue(AddressName, getEntityIdFromKeys([BigInt(owner?.address || "0x0")])); - - const bank = getComponentValue(Bank, entityId); - - return { - entityId: position.entity_id, - position: { x: position.x, y: position.y }, - owner: addressName?.name || "Bandits", - ownerFee: bank ? Number(bank.owner_fee_num) / Number(bank.owner_fee_denom) : 0, - depositFee: bank ? Number(bank.owner_bridge_fee_dpt_percent) : 0, - withdrawFee: bank ? Number(bank.owner_bridge_fee_wtdr_percent) : 0, - }; - }) - .filter(Boolean) as { - entityId: ID; - position: Position; - owner: string; - ownerFee: number; - depositFee: number; - withdrawFee: number; - }[]; -}; diff --git a/client/apps/game/src/hooks/helpers/useBattleEvents.tsx b/client/apps/game/src/hooks/helpers/useBattleEvents.tsx deleted file mode 100644 index 989a85b77a..0000000000 --- a/client/apps/game/src/hooks/helpers/useBattleEvents.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import { BattleSide, ID } from "@bibliothecadao/eternum"; -import { useEntityQuery } from "@dojoengine/react"; -import { getComponentValue, HasValue } from "@dojoengine/recs"; -import { useMemo } from "react"; -import { useDojo } from "../context/DojoContext"; - -export const useBattleStart = (battleEntityId: ID) => { - const { - setup: { - components: { - events: { BattleStartData }, - }, - }, - } = useDojo(); - - const battleStartDataEntityIds = useEntityQuery( - [ - HasValue(BattleStartData, { - battle_entity_id: battleEntityId, - }), - ], - { - updateOnValueChange: false, - }, - ); - - const battleStartData = useMemo(() => { - return battleStartDataEntityIds.map((entityId) => { - const battleStartData = getComponentValue(BattleStartData, entityId); - return battleStartData; - }); - }, [battleStartDataEntityIds]); - - return battleStartData; -}; - -export const useBattleJoin = (battleEntityId: ID, joinerSide?: BattleSide) => { - const { - setup: { - components: { - events: { BattleJoinData }, - }, - }, - } = useDojo(); - - const battleStartDataEntityIds = useEntityQuery( - [ - HasValue(BattleJoinData, { - battle_entity_id: battleEntityId, - ...(joinerSide ? { joiner_side: BattleSide[joinerSide] } : {}), - }), - ], - { - updateOnValueChange: false, - }, - ); - - const battleStartData = useMemo(() => { - return battleStartDataEntityIds.map((entityId) => { - const battleJoinData = getComponentValue(BattleJoinData, entityId); - return battleJoinData; - }); - }, [battleStartDataEntityIds]); - - return battleStartData; -}; -export const useBattleLeave = (battleEntityId: ID, leaverSide?: BattleSide) => { - const { - setup: { - components: { - events: { BattleLeaveData }, - }, - }, - } = useDojo(); - - const battleLeaveDataEntityIds = useEntityQuery( - [ - HasValue(BattleLeaveData, { - battle_entity_id: battleEntityId, - ...(leaverSide ? { leaver_side: BattleSide[leaverSide] } : {}), - }), - ], - { - updateOnValueChange: false, - }, - ); - - const battleLeaveData = useMemo(() => { - return battleLeaveDataEntityIds.map((entityId) => { - const battleLeaveData = getComponentValue(BattleLeaveData, entityId); - return battleLeaveData; - }); - }, [battleLeaveDataEntityIds]); - - return battleLeaveData; -}; diff --git a/client/apps/game/src/hooks/helpers/useContributions.tsx b/client/apps/game/src/hooks/helpers/useContributions.tsx deleted file mode 100644 index 9024c0ab9f..0000000000 --- a/client/apps/game/src/hooks/helpers/useContributions.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import { ClientComponents } from "@/dojo/createClientComponents"; -import { configManager } from "@/dojo/setup"; -import { divideByPrecision } from "@/ui/utils/utils"; -import { ContractAddress, ID, Resource } from "@bibliothecadao/eternum"; -import { useEntityQuery } from "@dojoengine/react"; -import { ComponentValue, HasValue, getComponentValue, runQuery } from "@dojoengine/recs"; -import { useCallback } from "react"; -import { useDojo } from "../context/DojoContext"; - -export const useContributions = () => { - const { - setup: { - components: { Contribution }, - }, - } = useDojo(); - - const getContributions = (hyperstructureEntityId: ID) => { - const contributionsToHyperstructure = Array.from( - runQuery([HasValue(Contribution, { hyperstructure_entity_id: hyperstructureEntityId })]), - ).map((id) => getComponentValue(Contribution, id)); - - return contributionsToHyperstructure as ComponentValue[]; - }; - - const useContributionsByPlayerAddress = (playerAddress: ContractAddress, hyperstructureEntityId: ID) => { - const contributionsToHyperstructure = useEntityQuery([ - HasValue(Contribution, { hyperstructure_entity_id: hyperstructureEntityId, player_address: playerAddress }), - ]) - .map((id) => getComponentValue(Contribution, id)) - .filter((x): x is ComponentValue => x !== undefined); - - return contributionsToHyperstructure; - }; - - const getContributionsTotalPercentage = (hyperstructureId: number, contributions: Resource[]) => { - const totalPlayerContribution = divideByPrecision( - contributions.reduce((acc, { amount, resourceId }) => { - return acc + amount * configManager.getResourceRarity(resourceId); - }, 0), - ); - - const totalHyperstructureContribution = configManager.getHyperstructureTotalContributableAmount(hyperstructureId); - - return totalPlayerContribution / totalHyperstructureContribution; - }; - - return { - getContributions, - useContributionsByPlayerAddress, - getContributionsTotalPercentage, - }; -}; - -export const useGetHyperstructuresWithContributionsFromPlayer = () => { - const { - account: { account }, - setup: { - components: { Contribution }, - }, - } = useDojo(); - - const getContributions = useCallback(() => { - const entityIds = runQuery([HasValue(Contribution, { player_address: ContractAddress(account.address) })]); - const hyperstructureEntityIds = Array.from(entityIds).map( - (entityId) => getComponentValue(Contribution, entityId)?.hyperstructure_entity_id ?? 0, - ); - return new Set(hyperstructureEntityIds); - }, [account.address]); - - return getContributions; -}; - -export const useGetUnregisteredContributions = () => { - const { - account: { account }, - setup: { - components: { LeaderboardRegisterContribution }, - }, - } = useDojo(); - const getContributions = useGetHyperstructuresWithContributionsFromPlayer(); - - const getUnregisteredContributions = useCallback(() => { - const registeredContributionsEntities = runQuery([ - HasValue(LeaderboardRegisterContribution, { address: ContractAddress(account.address) }), - ]); - const registeredContributions = Array.from(registeredContributionsEntities) - .map((entityId) => getComponentValue(LeaderboardRegisterContribution, entityId)?.hyperstructure_entity_id) - .filter((x): x is number => x !== undefined); - console.log("registeredContributions", registeredContributions); - const hyperstructuresContributedTo = Array.from(getContributions()); - console.log("hyperstructuresContributedTo", hyperstructuresContributedTo); - return hyperstructuresContributedTo.filter( - (hyperstructureEntityId) => - !registeredContributions.some((contribution) => contribution === hyperstructureEntityId), - ); - }, [getContributions]); - - return getUnregisteredContributions; -}; diff --git a/client/apps/game/src/hooks/helpers/useEntities.tsx b/client/apps/game/src/hooks/helpers/useEntities.tsx deleted file mode 100644 index c145b0c362..0000000000 --- a/client/apps/game/src/hooks/helpers/useEntities.tsx +++ /dev/null @@ -1,235 +0,0 @@ -import { type ClientComponents } from "@/dojo/createClientComponents"; -import { getRealmName, getRealmNameById } from "@/ui/utils/realms"; -import { divideByPrecision, getEntityIdFromKeys } from "@/ui/utils/utils"; -import { - CAPACITY_CONFIG_CATEGORY_STRING_MAP, - ContractAddress, - EntityType, - StructureType, - type ID, -} from "@bibliothecadao/eternum"; -import { useEntityQuery } from "@dojoengine/react"; -import { Has, HasValue, getComponentValue, type ComponentValue } from "@dojoengine/recs"; -import { useMemo } from "react"; -import { shortString } from "starknet"; -import { useDojo } from "../context/DojoContext"; -import useUIStore from "../store/useUIStore"; -import { useResourcesUtils } from "./useResources"; - -export type PlayerStructure = ComponentValue & { - position: ComponentValue; - name: string; - category?: string | undefined; - owner: ComponentValue; -}; - -export type RealmWithPosition = ComponentValue & { - position: ComponentValue; - name: string; - owner: ComponentValue; -}; - -export const useEntities = () => { - const { - account: { account }, - setup: { - components: { Realm, Owner, Position, Structure }, - }, - } = useDojo(); - - const isSpectatorMode = useUIStore((state) => state.isSpectatorMode); - const address = isSpectatorMode ? ContractAddress("0x0") : ContractAddress(account.address); - - const { getEntityName } = useEntitiesUtils(); - - // Get all realms - const playerRealmsQuery = useEntityQuery([Has(Realm), HasValue(Owner, { address: address })]); - - // Get all structures - const playerStructuresQuery = useEntityQuery([ - Has(Structure), - Has(Position), - Has(Owner), - HasValue(Owner, { address: address }), - ]); - - const playerRealms = useMemo(() => { - return playerRealmsQuery.map((id) => { - const realm = getComponentValue(Realm, id); - return { - ...realm, - position: getComponentValue(Position, id), - name: getRealmNameById(realm!.realm_id), - owner: getComponentValue(Owner, id), - } as RealmWithPosition; - }); - }, [playerRealmsQuery]); - - const playerStructures = useMemo(() => { - return playerStructuresQuery - .map((id) => { - const structure = getComponentValue(Structure, id); - if (!structure) return; - - const realm = getComponentValue(Realm, id); - const position = getComponentValue(Position, id); - - const structureName = getEntityName(structure.entity_id); - - const name = realm ? getRealmName(realm) : structureName || structure.category || ""; - - return { ...structure, position: position!, name, owner: getComponentValue(Owner, id) }; - }) - .filter((structure): structure is PlayerStructure => structure !== undefined) - .sort((a, b) => { - if (a.category === StructureType[StructureType.Realm]) return -1; - if (b.category === StructureType[StructureType.Realm]) return 1; - return a.category.localeCompare(b.category); - }); - }, [playerStructuresQuery]); - - const getPlayerRealms = (filterFn?: (realm: RealmWithPosition) => boolean) => { - return useMemo(() => { - const realms = filterFn ? playerRealms.filter(filterFn) : playerRealms; - return realms.sort((a, b) => a.name.localeCompare(b.name)); - }, [playerRealms, filterFn]); - }; - - const getPlayerStructures = (filterFn?: (structure: PlayerStructure) => boolean) => { - return useMemo(() => { - const structures = filterFn ? playerStructures.filter(filterFn) : playerStructures; - return structures.sort((a, b) => a.name.localeCompare(b.name)); - }, [playerStructures, filterFn]); - }; - - return { - playerRealms: getPlayerRealms, - playerStructures: getPlayerStructures, - }; -}; - -export const useEntitiesUtils = () => { - const { - account: { account }, - setup: { - components: { - Army, - EntityName, - ArrivalTime, - EntityOwner, - Movable, - CapacityCategory, - CapacityConfig, - Position, - AddressName, - Owner, - Realm, - Structure, - }, - }, - } = useDojo(); - - const { getResourcesFromBalance } = useResourcesUtils(); - - const getEntityInfo = (entityId: ID) => { - const entityIdBigInt = BigInt(entityId); - const arrivalTime = getComponentValue(ArrivalTime, getEntityIdFromKeys([entityIdBigInt])); - const movable = getComponentValue(Movable, getEntityIdFromKeys([entityIdBigInt])); - - const entityCapacityCategory = getComponentValue(CapacityCategory, getEntityIdFromKeys([entityIdBigInt])) - ?.category as unknown as string; - const capacityCategoryId = CAPACITY_CONFIG_CATEGORY_STRING_MAP[entityCapacityCategory] || 0n; - const capacity = getComponentValue(CapacityConfig, getEntityIdFromKeys([BigInt(capacityCategoryId)])); - - const entityOwner = getComponentValue(EntityOwner, getEntityIdFromKeys([entityIdBigInt])); - const owner = getComponentValue(Owner, getEntityIdFromKeys([BigInt(entityOwner?.entity_owner_id || 0)])); - - const name = getEntityName(entityId); - - const structure = getComponentValue(Structure, getEntityIdFromKeys([entityIdBigInt])); - - const resources = getResourcesFromBalance(entityId); - const army = getComponentValue(Army, getEntityIdFromKeys([entityIdBigInt])); - const rawIntermediateDestination = movable - ? { x: movable.intermediate_coord_x, y: movable.intermediate_coord_y } - : undefined; - const intermediateDestination = rawIntermediateDestination - ? { x: rawIntermediateDestination.x, y: rawIntermediateDestination.y } - : undefined; - - const position = getComponentValue(Position, getEntityIdFromKeys([entityIdBigInt])); - - const homePosition = entityOwner - ? getComponentValue(Position, getEntityIdFromKeys([BigInt(entityOwner?.entity_owner_id || 0)])) - : undefined; - - return { - entityId, - arrivalTime: arrivalTime?.arrives_at, - blocked: Boolean(movable?.blocked), - capacity: divideByPrecision(Number(capacity?.weight_gram) || 0), - intermediateDestination, - position: position ? { x: position.x, y: position.y } : undefined, - homePosition: homePosition ? { x: homePosition.x, y: homePosition.y } : undefined, - owner: owner?.address, - isMine: ContractAddress(owner?.address || 0n) === ContractAddress(account.address), - isRoundTrip: movable?.round_trip || false, - resources, - entityType: army ? EntityType.TROOP : EntityType.DONKEY, - structureCategory: structure?.category, - structure, - name, - }; - }; - - const getEntityName = (entityId: ID, abbreviate: boolean = false) => { - const entityName = getComponentValue(EntityName, getEntityIdFromKeys([BigInt(entityId)])); - const realm = getComponentValue(Realm, getEntityIdFromKeys([BigInt(entityId)])); - const structure = getComponentValue(Structure, getEntityIdFromKeys([BigInt(entityId)])); - if (structure?.category === StructureType[StructureType.Realm] && realm) { - return getRealmName(realm); - } - - if (entityName) { - return shortString.decodeShortString(entityName.name.toString()); - } - - if (abbreviate && structure) { - const abbreviations: Record = { - [StructureType[StructureType.FragmentMine]]: "FM", - [StructureType[StructureType.Hyperstructure]]: "HS", - [StructureType[StructureType.Bank]]: "BK", - }; - - const abbr = abbreviations[structure.category]; - if (abbr) { - return `${abbr} ${structure.entity_id}`; - } - } - return `${structure?.category} ${structure?.entity_id}`; - }; - - const getAddressName = (address: ContractAddress) => { - const addressName = getComponentValue(AddressName, getEntityIdFromKeys([BigInt(address)])); - - return addressName ? shortString.decodeShortString(addressName.name.toString()) : undefined; - }; - - const getAddressNameFromEntity = (entityId: ID) => { - const address = getPlayerAddressFromEntity(entityId); - if (!address) return; - - const addressName = getComponentValue(AddressName, getEntityIdFromKeys([BigInt(address)])); - - return addressName ? shortString.decodeShortString(addressName.name.toString()) : undefined; - }; - - const getPlayerAddressFromEntity = (entityId: ID): ContractAddress | undefined => { - const entityOwner = getComponentValue(EntityOwner, getEntityIdFromKeys([BigInt(entityId)])); - return entityOwner?.entity_owner_id - ? getComponentValue(Owner, getEntityIdFromKeys([BigInt(entityOwner.entity_owner_id)]))?.address - : undefined; - }; - - return { getEntityName, getEntityInfo, getAddressName, getAddressNameFromEntity, getPlayerAddressFromEntity }; -}; diff --git a/client/apps/game/src/hooks/helpers/useRealm.tsx b/client/apps/game/src/hooks/helpers/useRealm.tsx deleted file mode 100644 index a3dad3e5f9..0000000000 --- a/client/apps/game/src/hooks/helpers/useRealm.tsx +++ /dev/null @@ -1,344 +0,0 @@ -import { type ClientComponents } from "@/dojo/createClientComponents"; -import { configManager } from "@/dojo/setup"; -import { - ContractAddress, - getOrderName, - getQuestResources as getStartingResources, - type ID, -} from "@bibliothecadao/eternum"; -import { useEntityQuery } from "@dojoengine/react"; -import { Has, HasValue, getComponentValue, runQuery, type ComponentValue, type Entity } from "@dojoengine/recs"; -import { useMemo } from "react"; -import { shortString } from "starknet"; -import realmIdsByOrder from "../../../../../common/data/realmids_by_order.json"; -import { unpackResources } from "../../ui/utils/packedData"; -import { getRealmNameById } from "../../ui/utils/realms"; -import { getEntityIdFromKeys } from "../../ui/utils/utils"; -import { useDojo } from "../context/DojoContext"; -import useUIStore from "../store/useUIStore"; - -export interface RealmInfo { - realmId: ID; - entityId: ID; - name: string; - resourceTypesPacked: bigint; - order: number; - position: ComponentValue; - population?: number | undefined; - capacity?: number; - hasCapacity: boolean; - owner: ContractAddress; - ownerName: string; - hasWonder: boolean; -} - -export function useRealm() { - const { - setup: { - components: { Realm, AddressName, Owner, EntityOwner, Position, Structure }, - }, - } = useDojo(); - const structureEntityId = useUIStore((state) => state.structureEntityId); - - const getQuestResources = () => { - const realm = getComponentValue(Realm, getEntityIdFromKeys([BigInt(structureEntityId)])); - const resourcesProduced = realm ? unpackResources(realm.produced_resources) : []; - return getStartingResources(resourcesProduced); - }; - - const getEntityOwner = (entityId: ID) => { - const entityOwner = getComponentValue(EntityOwner, getEntityIdFromKeys([BigInt(entityId)])); - return entityOwner?.entity_owner_id; - }; - - const isRealmIdSettled = (realmId: ID) => { - const entityIds = runQuery([HasValue(Realm, { realm_id: realmId })]); - return entityIds.size > 0; - }; - - const getRandomUnsettledRealmId = () => { - // Query all settled realms and collect their realm_ids - const entityIds = Array.from(runQuery([Has(Realm)])); - const settledRealmIds = new Set(); - - entityIds.forEach((entityId) => { - const realm = getComponentValue(Realm, getEntityIdFromKeys([BigInt(entityId)])); - if (realm) { - settledRealmIds.add(Number(realm.realm_id)); - } - }); - - // Define all possible realm_ids from 1 to 8000 - const TOTAL_REALMS = 8000; - const allRealmIds = Array.from({ length: TOTAL_REALMS }, (_, i) => i + 1); - - // Determine unsettled realm_ids by excluding settled ones - const unsettledRealmIds = allRealmIds.filter((id) => !settledRealmIds.has(id)); - - if (unsettledRealmIds.length === 0) { - throw new Error("No unsettled realms available."); - } - - // Select a random unsettled realm ID - const randomIndex = Math.floor(Math.random() * unsettledRealmIds.length); - return unsettledRealmIds[randomIndex]; - }; - - const getNextRealmIdForOrder = (order: number) => { - const orderName = getOrderName(order); - - const entityIds = Array.from(runQuery([HasValue(Realm, { order })])); - const realmEntityIds = entityIds.map((id) => { - return getComponentValue(Realm, id)!.entity_id; - }); - - let latestRealmIdFromOrder = 0; - if (realmEntityIds.length > 0) { - const realmEntityId = realmEntityIds.sort((a, b) => Number(b) - Number(a))[0]; - const latestRealmFromOrder = getComponentValue(Realm, getEntityIdFromKeys([BigInt(realmEntityId)])); - if (latestRealmFromOrder) { - latestRealmIdFromOrder = Number(latestRealmFromOrder.realm_id); - } - } - - const orderRealmIds = (realmIdsByOrder as Record)[orderName]; - let nextRealmIdFromOrder = 0; - - const maxIterations = orderRealmIds.length; - for (let i = 0; i < maxIterations; i++) { - // sort from biggest to lowest - const latestIndex = orderRealmIds.indexOf(latestRealmIdFromOrder); - - if (latestIndex === -1 || latestIndex === orderRealmIds.length - 1) { - nextRealmIdFromOrder = orderRealmIds[0]; - } else { - nextRealmIdFromOrder = orderRealmIds[latestIndex + 1]; - } - - return nextRealmIdFromOrder; - } - - throw new Error(`Could not find an unoccupied realm ID for order ${orderName} after ${maxIterations} attempts`); - }; - - const getRealmEntityIdFromRealmId = (realmId: ID): ID | undefined => { - const realmEntityIds = runQuery([HasValue(Realm, { realm_id: realmId })]); - if (realmEntityIds.size > 0) { - const realm = getComponentValue(Realm, realmEntityIds.values().next().value || ("" as Entity)); - return realm!.entity_id; - } - }; - - const getRealmIdFromRealmEntityId = (realmEntityId: ID) => { - const realm = getComponentValue(Realm, getEntityIdFromKeys([BigInt(realmEntityId)])); - return realm?.realm_id; - }; - - const getRealmIdForOrderAfter = (order: number, realmId: ID): ID => { - const orderName = getOrderName(order); - - const orderRealmIds = (realmIdsByOrder as Record)[orderName]; - const latestIndex = orderRealmIds.indexOf(realmId); - - if (latestIndex === -1 || latestIndex === orderRealmIds.length - 1) { - return orderRealmIds[0]; - } else { - return orderRealmIds[latestIndex + 1]; - } - }; - - const getAddressName = (address: ContractAddress): string | undefined => { - const addressName = getComponentValue(AddressName, getEntityIdFromKeys([address])); - - return addressName ? shortString.decodeShortString(addressName.name.toString()) : undefined; - }; - - const getAddressOrder = (address: ContractAddress) => { - const ownedRealms = runQuery([Has(Realm), HasValue(Owner, { address })]); - if (ownedRealms.size > 0) { - const realm = getComponentValue(Realm, ownedRealms.values().next().value || ("" as Entity)); - return realm?.order; - } - }; - - const getRealmAddressName = (realmEntityId: ID) => { - const owner = getComponentValue(Owner, getEntityIdFromKeys([BigInt(realmEntityId)])); - const addressName = owner ? getComponentValue(AddressName, getEntityIdFromKeys([owner.address])) : undefined; - - if (addressName) { - return shortString.decodeShortString(String(addressName.name)); - } else { - return ""; - } - }; - - const getRealmEntityIdsOnPosition = (x: number, y: number) => { - const entityIds = runQuery([Has(Realm), HasValue(Position, { x, y })]); - const realmEntityIds = Array.from(entityIds).map((entityId) => { - return getComponentValue(Realm, entityId)!.entity_id; - }); - return realmEntityIds.length === 1 ? realmEntityIds[0] : undefined; - }; - - const isEntityIdRealm = (entityId: ID) => { - const realm = getComponentValue(Realm, getEntityIdFromKeys([BigInt(entityId)])); - return !!realm; - }; - - return { - getQuestResources, - getEntityOwner, - isRealmIdSettled, - getNextRealmIdForOrder, - getAddressName, - getAddressOrder, - getRealmAddressName, - getRealmIdForOrderAfter, - getRealmIdFromRealmEntityId, - getRealmEntityIdFromRealmId, - isEntityIdRealm, - getRealmEntityIdsOnPosition, - getRandomUnsettledRealmId, - }; -} - -export function useGetRealm(realmEntityId: ID | undefined) { - const { - setup: { - components: { Realm, Position, Owner, Population }, - }, - } = useDojo(); - - const query = useEntityQuery([HasValue(Realm, { entity_id: realmEntityId })]); - - const realm = (): any => { - if (realmEntityId !== undefined) { - const entityId = getEntityIdFromKeys([BigInt(realmEntityId)]); - const realm = getComponentValue(Realm, entityId); - const owner = getComponentValue(Owner, entityId); - const position = getComponentValue(Position, entityId); - const population = getComponentValue(Population, entityId); - - if (realm && owner && position) { - const { realm_id, entity_id, produced_resources, order, level } = realm; - - const name = getRealmNameById(realm_id); - - const { address } = owner; - - return { - realmId: realm_id, - entityId: entity_id, - name, - level, - resourceTypesPacked: produced_resources, - order, - position, - ...population, - hasCapacity: - !population || population.capacity + configManager.getBasePopulationCapacity() > population.population, - owner: address, - hasWonder: realm.has_wonder, - }; - } - } - }; - - return { - realm: realm(), - }; -} - -export function getRealms(): RealmInfo[] { - const { - setup: { - components: { Realm, Position, Owner, Population, AddressName, Structure }, - }, - } = useDojo(); - - const realmEntities = runQuery([Has(Realm)]); - - return Array.from(realmEntities) - .map((entity) => { - const realm = getComponentValue(Realm, entity); - const owner = getComponentValue(Owner, entity); - const position = getComponentValue(Position, entity); - const population = getComponentValue(Population, entity); - - if (!realm || !owner || !position) return null; - - const { realm_id, entity_id, produced_resources, order } = realm; - - const name = getRealmNameById(realm_id); - - const { address } = owner; - - const addressName = getComponentValue(AddressName, getEntityIdFromKeys([address])); - const ownerName = shortString.decodeShortString(addressName?.name.toString() ?? "0x0"); - - return { - realmId: realm_id, - entityId: entity_id, - name, - resourceTypesPacked: produced_resources, - order, - position, - ...population, - hasCapacity: - !population || population.capacity + configManager.getBasePopulationCapacity() > population.population, - owner: address, - ownerName, - hasWonder: realm.has_wonder, - }; - }) - .filter((realm): realm is RealmInfo => realm !== null); -} - -export function usePlayerRealms(): RealmInfo[] { - const { - account: { account }, - setup: { - components: { Realm, Position, Owner, Population, AddressName, Structure }, - }, - } = useDojo(); - - const realmEntities = useEntityQuery([Has(Realm), HasValue(Owner, { address: ContractAddress(account.address) })]); - - const realms = useMemo((): RealmInfo[] => { - return Array.from(realmEntities) - .map((entity) => { - const realm = getComponentValue(Realm, entity); - const owner = getComponentValue(Owner, entity); - const position = getComponentValue(Position, entity); - const population = getComponentValue(Population, entity); - - if (!realm || !owner || !position) return null; - - const { realm_id, entity_id, produced_resources, order } = realm; - - const name = getRealmNameById(realm_id); - - const { address } = owner; - - const addressName = getComponentValue(AddressName, getEntityIdFromKeys([address])); - const ownerName = shortString.decodeShortString(addressName?.name.toString() ?? "0x0"); - - return { - realmId: realm_id, - entityId: entity_id, - name, - resourceTypesPacked: produced_resources, - order, - position, - ...population, - hasCapacity: - !population || population.capacity + configManager.getBasePopulationCapacity() > population.population, - owner: address, - ownerName, - hasWonder: realm.has_wonder, - }; - }) - .filter((realm): realm is RealmInfo => realm !== null); - }, [realmEntities]); - return realms; -} diff --git a/client/apps/game/src/hooks/helpers/useResources.tsx b/client/apps/game/src/hooks/helpers/useResources.tsx deleted file mode 100644 index 422446bb58..0000000000 --- a/client/apps/game/src/hooks/helpers/useResources.tsx +++ /dev/null @@ -1,186 +0,0 @@ -import { configManager } from "@/dojo/setup"; -import { - CapacityConfigCategory, - ID, - ResourceManager, - ResourcesIds, - resources, - type Resource, -} from "@bibliothecadao/eternum"; -import { useComponentValue } from "@dojoengine/react"; -import { Has, HasValue, getComponentValue, runQuery, type Entity } from "@dojoengine/recs"; -import { useEffect, useMemo, useState } from "react"; -import { getEntityIdFromKeys } from "../../ui/utils/utils"; -import { useDojo } from "../context/DojoContext"; -import useUIStore from "../store/useUIStore"; -import useNextBlockTimestamp from "../useNextBlockTimestamp"; - -export function useResourcesUtils() { - const { setup } = useDojo(); - const { - components: { Weight, Resource, ResourceCost, Realm, CapacityCategory }, - } = setup; - - const weightLessResources = useMemo(() => { - return configManager.getWeightLessResources(); - }, []); - - const useResourcesFromBalance = (entityId: ID) => { - const { currentDefaultTick } = useNextBlockTimestamp(); - const weight = useComponentValue(Weight, getEntityIdFromKeys([BigInt(entityId)])); - const capacityCategory = useComponentValue(CapacityCategory, getEntityIdFromKeys([BigInt(entityId)])); - - return useMemo(() => { - if (!weight?.value && capacityCategory?.category !== CapacityConfigCategory[CapacityConfigCategory.Structure]) - return []; - - return resources - .map(({ id }) => { - const resourceManager = new ResourceManager(setup.components, entityId, id); - const balance = resourceManager.balance(currentDefaultTick); - return { resourceId: id, amount: balance }; - }) - .filter(({ amount }) => amount > 0); - }, [weight, entityId, currentDefaultTick]); - }; - - const getResourcesFromBalance = (entityId: ID): Resource[] => { - const currentDefaultTick = useUIStore.getState().currentDefaultTick; - - const weight = getComponentValue(Weight, getEntityIdFromKeys([BigInt(entityId)])); - const hasWeightlessResources = weightLessResources.some( - (resourceId) => - (getComponentValue(Resource, getEntityIdFromKeys([BigInt(entityId), BigInt(resourceId)]))?.balance ?? 0n) > 0n, - ); - if (!weight?.value && !hasWeightlessResources) return []; - const resourceIds = resources.map((r) => r.id); - return resourceIds - .map((id) => { - const resourceManager = new ResourceManager(setup.components, entityId, id); - const balance = resourceManager.balance(currentDefaultTick); - return { resourceId: id, amount: balance }; - }) - .filter((r) => r.amount > 0); - }; - - const getResourceCosts = (costUuid: bigint, count: number) => { - const resourceCosts = []; - for (let i = 0; i < count; i++) { - const resourceCost = getComponentValue(ResourceCost, getEntityIdFromKeys([costUuid, BigInt(i)])); - if (resourceCost) { - resourceCosts.push({ resourceId: resourceCost.resource_type, amount: Number(resourceCost.amount) }); - } - } - return resourceCosts; - }; - - const getRealmsWithSpecificResource = ( - resourceId: ResourcesIds, - minAmount: number, - ): Array<{ realmEntityId: ID; realmId: ID; amount: number }> => { - const allRealms = Array.from(runQuery([Has(Realm)])); - const currentDefaultTick = useUIStore.getState().currentDefaultTick; - const realmsWithResource = allRealms - .map((id: Entity) => { - const realm = getComponentValue(Realm, id); - const resourceManager = realm ? new ResourceManager(setup.components, realm.entity_id, resourceId) : undefined; - const resource = resourceManager - ? { - balance: resourceManager.balance(currentDefaultTick), - } - : undefined; - - if (resource && resource.balance > minAmount) { - return { - realmEntityId: realm?.entity_id, - realmId: realm?.realm_id, - amount: Number(resource.balance), - }; - } - }) - .filter(Boolean) as Array<{ realmEntityId: ID; realmId: ID; amount: number }>; - - return realmsWithResource; - }; - - return { - getRealmsWithSpecificResource, - getResourcesFromBalance, - getResourceCosts, - useResourcesFromBalance, - }; -} - -export function useResourceBalance() { - const dojo = useDojo(); - - const getFoodResources = (entityId: ID): Resource[] => { - const currentDefaultTick = useUIStore.getState().currentDefaultTick; - const wheatBalance = new ResourceManager(dojo.setup.components, entityId, ResourcesIds.Wheat).balance( - currentDefaultTick, - ); - const fishBalance = new ResourceManager(dojo.setup.components, entityId, ResourcesIds.Fish).balance( - currentDefaultTick, - ); - - return [ - { resourceId: ResourcesIds.Wheat, amount: wheatBalance }, - { resourceId: ResourcesIds.Fish, amount: fishBalance }, - ]; - }; - - const getResourceProductionInfo = (entityId: ID, resourceId: ResourcesIds) => { - const resourceManager = new ResourceManager(dojo.setup.components, entityId, resourceId); - return resourceManager.getProduction(); - }; - - const getBalance = (entityId: ID, resourceId: ResourcesIds) => { - const currentDefaultTick = useUIStore.getState().currentDefaultTick; - const resourceManager = new ResourceManager(dojo.setup.components, entityId, resourceId); - return { balance: resourceManager.balance(currentDefaultTick), resourceId }; - }; - - const getResourcesBalance = (entityId: ID) => { - const detachedResourceEntityIds = runQuery([ - HasValue(dojo.setup.components.DetachedResource, { entity_id: entityId }), - ]); - return Array.from(detachedResourceEntityIds).map((entityId) => - getComponentValue(dojo.setup.components.DetachedResource, entityId), - ); - }; - - // We should deprecate this hook and use getBalance instead - too many useEffects - const useBalance = (entityId: ID, resourceId: ResourcesIds) => { - const currentDefaultTick = useUIStore.getState().currentDefaultTick; - const [resourceBalance, setResourceBalance] = useState({ amount: 0, resourceId }); - - useEffect(() => { - const resourceManager = new ResourceManager(dojo.setup.components, entityId, resourceId); - setResourceBalance({ amount: resourceManager.balance(currentDefaultTick), resourceId }); - }, []); - - return resourceBalance; - }; - - return { - getFoodResources, - getBalance, - useBalance, - getResourcesBalance, - getResourceProductionInfo, - }; -} - -export const useResourceManager = (entityId: ID, resourceId: ResourcesIds) => { - const dojo = useDojo(); - const production = useComponentValue( - dojo.setup.components.Production, - getEntityIdFromKeys([BigInt(entityId), BigInt(resourceId)]), - ); - - const resourceManager = useMemo(() => { - return new ResourceManager(dojo.setup.components, entityId, resourceId); - }, [dojo.setup, entityId, resourceId, production]); - - return resourceManager; -}; diff --git a/client/apps/game/src/hooks/store/_buildModeStore.tsx b/client/apps/game/src/hooks/store/_build-mode-store.tsx similarity index 100% rename from client/apps/game/src/hooks/store/_buildModeStore.tsx rename to client/apps/game/src/hooks/store/_build-mode-store.tsx diff --git a/client/apps/game/src/hooks/store/_popupsStore.tsx b/client/apps/game/src/hooks/store/_popups-store.tsx similarity index 100% rename from client/apps/game/src/hooks/store/_popupsStore.tsx rename to client/apps/game/src/hooks/store/_popups-store.tsx diff --git a/client/apps/game/src/hooks/store/_threeStore.tsx b/client/apps/game/src/hooks/store/_three-store.tsx similarity index 100% rename from client/apps/game/src/hooks/store/_threeStore.tsx rename to client/apps/game/src/hooks/store/_three-store.tsx diff --git a/client/apps/game/src/hooks/store/useAddressStore.tsx b/client/apps/game/src/hooks/store/use-address-store.tsx similarity index 100% rename from client/apps/game/src/hooks/store/useAddressStore.tsx rename to client/apps/game/src/hooks/store/use-address-store.tsx diff --git a/client/apps/game/src/hooks/store/useBlockchainStore.tsx b/client/apps/game/src/hooks/store/use-blockchain-store.tsx similarity index 97% rename from client/apps/game/src/hooks/store/useBlockchainStore.tsx rename to client/apps/game/src/hooks/store/use-blockchain-store.tsx index 994a47b8dc..1cd101dc87 100644 --- a/client/apps/game/src/hooks/store/useBlockchainStore.tsx +++ b/client/apps/game/src/hooks/store/use-blockchain-store.tsx @@ -1,7 +1,7 @@ import { configManager } from "@/dojo/setup"; +import useUIStore from "@/hooks/store/use-ui-store"; import { TickIds } from "@bibliothecadao/eternum"; import { useEffect, useTransition } from "react"; -import useUIStore from "./useUIStore"; export interface BlockchainStore { nextBlockTimestamp: number | undefined; diff --git a/client/apps/game/src/hooks/store/useLeaderBoardStore.tsx b/client/apps/game/src/hooks/store/use-leaderboard-store.tsx similarity index 89% rename from client/apps/game/src/hooks/store/useLeaderBoardStore.tsx rename to client/apps/game/src/hooks/store/use-leaderboard-store.tsx index f191d55394..84038312a7 100644 --- a/client/apps/game/src/hooks/store/useLeaderBoardStore.tsx +++ b/client/apps/game/src/hooks/store/use-leaderboard-store.tsx @@ -1,9 +1,9 @@ +import { useDojo } from "@/hooks/context/dojo-context"; +import { useGuilds } from "@/hooks/helpers/use-guilds"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; import { ContractAddress, ID, LeaderboardManager } from "@bibliothecadao/eternum"; import { useCallback } from "react"; import { create } from "zustand"; -import { useDojo } from "../context/DojoContext"; -import { useGuilds } from "../helpers/useGuilds"; -import useNextBlockTimestamp from "../useNextBlockTimestamp"; interface LeaderboardStore { playersByRank: [ContractAddress, number][]; diff --git a/client/apps/game/src/hooks/store/useMarketStore.tsx b/client/apps/game/src/hooks/store/use-market-store.tsx similarity index 100% rename from client/apps/game/src/hooks/store/useMarketStore.tsx rename to client/apps/game/src/hooks/store/use-market-store.tsx diff --git a/client/apps/game/src/hooks/store/useModalStore.tsx b/client/apps/game/src/hooks/store/use-modal-store.tsx similarity index 84% rename from client/apps/game/src/hooks/store/useModalStore.tsx rename to client/apps/game/src/hooks/store/use-modal-store.tsx index f719a89a1c..b6d109a2a9 100644 --- a/client/apps/game/src/hooks/store/useModalStore.tsx +++ b/client/apps/game/src/hooks/store/use-modal-store.tsx @@ -1,4 +1,4 @@ -import useUIStore from "./useUIStore"; +import useUIStore from "@/hooks/store/use-ui-store"; export const useModalStore = () => { const showModal = useUIStore((state) => state.showModal); diff --git a/client/apps/game/src/hooks/store/useRealmStore.tsx b/client/apps/game/src/hooks/store/use-realm-store.tsx similarity index 100% rename from client/apps/game/src/hooks/store/useRealmStore.tsx rename to client/apps/game/src/hooks/store/use-realm-store.tsx diff --git a/client/apps/game/src/hooks/store/useUIStore.tsx b/client/apps/game/src/hooks/store/use-ui-store.tsx similarity index 88% rename from client/apps/game/src/hooks/store/useUIStore.tsx rename to client/apps/game/src/hooks/store/use-ui-store.tsx index e95502349b..045a6d6646 100644 --- a/client/apps/game/src/hooks/store/useUIStore.tsx +++ b/client/apps/game/src/hooks/store/use-ui-store.tsx @@ -1,17 +1,17 @@ -import { LeftView } from "@/ui/modules/navigation/LeftNavigationModule"; -import { RightView } from "@/ui/modules/navigation/RightNavigationModule"; +import { BuildModeStore, createBuildModeStoreSlice } from "@/hooks/store/_build-mode-store"; +import { PopupsStore, createPopupsSlice } from "@/hooks/store/_popups-store"; +import { ThreeStore, createThreeStoreSlice } from "@/hooks/store/_three-store"; +import { BlockchainStore, createBlockchainStore } from "@/hooks/store/use-blockchain-store"; +import { RealmStore, createRealmStoreSlice } from "@/hooks/store/use-realm-store"; +import { WorldStore, createWorldStoreSlice } from "@/hooks/store/use-world-loading"; +import { LeftView } from "@/ui/modules/navigation/left-navigation-module"; +import { RightView } from "@/ui/modules/navigation/right-navigation-module"; import { ContractAddress } from "@bibliothecadao/eternum"; import React from "react"; import { create } from "zustand"; import { subscribeWithSelector } from "zustand/middleware"; -import { tracks } from "../useMusic"; -import { BuildModeStore, createBuildModeStoreSlice } from "./_buildModeStore"; -import { PopupsStore, createPopupsSlice } from "./_popupsStore"; -import { ThreeStore, createThreeStoreSlice } from "./_threeStore"; +import { tracks } from "../use-music"; import { BattleViewInfo } from "./types"; -import { BlockchainStore, createBlockchainStore } from "./useBlockchainStore"; -import { RealmStore, createRealmStoreSlice } from "./useRealmStore"; -import { WorldStore, createWorldStoreSlice } from "./useWorldLoading"; type TooltipType = { content: React.ReactNode; diff --git a/client/apps/game/src/hooks/store/useWorldLoading.tsx b/client/apps/game/src/hooks/store/use-world-loading.tsx similarity index 98% rename from client/apps/game/src/hooks/store/useWorldLoading.tsx rename to client/apps/game/src/hooks/store/use-world-loading.tsx index 55e76cf111..3830ee97fc 100644 --- a/client/apps/game/src/hooks/store/useWorldLoading.tsx +++ b/client/apps/game/src/hooks/store/use-world-loading.tsx @@ -17,7 +17,7 @@ export enum LoadingStateKey { Events = "events", } -export type LoadingState = { +type LoadingState = { [key in LoadingStateKey]: boolean; }; diff --git a/client/apps/game/src/hooks/store/useQuestStore.tsx b/client/apps/game/src/hooks/store/useQuestStore.tsx deleted file mode 100644 index b025194f9b..0000000000 --- a/client/apps/game/src/hooks/store/useQuestStore.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { create } from "zustand"; -import { Quest } from "../helpers/useQuests"; - -interface QuestStore { - selectedQuest: Quest | null; - setSelectedQuest: (selectedQuest: Quest | null) => void; - showCompletedQuests: boolean; - setShowCompletedQuests: (showCompletedQuests: boolean) => void; -} - -export const useQuestStore = create((set) => ({ - selectedQuest: null, - setSelectedQuest: (selectedQuest: Quest | null) => set({ selectedQuest }), - showCompletedQuests: false, - setShowCompletedQuests: (showCompletedQuests: boolean) => set({ showCompletedQuests }), -})); diff --git a/client/apps/game/src/hooks/useMusic.tsx b/client/apps/game/src/hooks/use-music.tsx similarity index 97% rename from client/apps/game/src/hooks/useMusic.tsx rename to client/apps/game/src/hooks/use-music.tsx index c083c0292d..fe30f2f7ce 100644 --- a/client/apps/game/src/hooks/useMusic.tsx +++ b/client/apps/game/src/hooks/use-music.tsx @@ -1,6 +1,6 @@ import { useEffect } from "react"; import useSound from "use-sound"; -import useUIStore from "./store/useUIStore"; +import useUIStore from "@/hooks/store/use-ui-store"; // Define a type for your tracks type Track = { diff --git a/client/apps/game/src/hooks/useNextBlockTimestamp.tsx b/client/apps/game/src/hooks/use-next-block-timestamp.tsx similarity index 100% rename from client/apps/game/src/hooks/useNextBlockTimestamp.tsx rename to client/apps/game/src/hooks/use-next-block-timestamp.tsx diff --git a/client/apps/game/src/hooks/useScreenOrientation.tsx b/client/apps/game/src/hooks/use-screen-orientation.tsx similarity index 100% rename from client/apps/game/src/hooks/useScreenOrientation.tsx rename to client/apps/game/src/hooks/use-screen-orientation.tsx diff --git a/client/apps/game/src/hooks/useSeasonStart.tsx b/client/apps/game/src/hooks/use-season-start.tsx similarity index 100% rename from client/apps/game/src/hooks/useSeasonStart.tsx rename to client/apps/game/src/hooks/use-season-start.tsx diff --git a/client/apps/game/src/hooks/use-starting-tutorial.tsx b/client/apps/game/src/hooks/use-starting-tutorial.tsx index 5964f1fe2a..c133b55a78 100644 --- a/client/apps/game/src/hooks/use-starting-tutorial.tsx +++ b/client/apps/game/src/hooks/use-starting-tutorial.tsx @@ -1,14 +1,14 @@ -import { QuestType } from "@bibliothecadao/eternum"; +import { useQuests } from "@/hooks/helpers/use-quests"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { questSteps, useTutorial } from "@/hooks/use-tutorial"; +import { QuestStatus, QuestType } from "@bibliothecadao/eternum"; import { useEffect } from "react"; -import { QuestStatus, useQuests } from "./helpers/useQuests"; -import useUIStore from "./store/useUIStore"; -import { questSteps, useTutorial } from "./use-tutorial"; export const useStartingTutorial = () => { const { handleStart } = useTutorial(questSteps.get(QuestType.Settle)); const showBlankOverlay = useUIStore((state) => state.showBlankOverlay); - const { quests } = useQuests(); + const quests = useQuests(); const settleQuest = quests.find((quest) => quest.id === QuestType.Settle); const tutorialCompleted = localStorage.getItem("tutorial") === "completed"; diff --git a/client/apps/game/src/hooks/use-tutorial.tsx b/client/apps/game/src/hooks/use-tutorial.tsx index 97c15e6254..f33ec8628a 100644 --- a/client/apps/game/src/hooks/use-tutorial.tsx +++ b/client/apps/game/src/hooks/use-tutorial.tsx @@ -1,11 +1,11 @@ -import { buildFoodSteps } from "@/ui/components/quest/steps/buildFoodSteps"; -import { buildResourceSteps } from "@/ui/components/quest/steps/buildResourceSteps"; -import { createAttackArmySteps } from "@/ui/components/quest/steps/createAttackArmy"; -import { createDefenseArmySteps } from "@/ui/components/quest/steps/createDefenseArmySteps"; -import { createTradeSteps } from "@/ui/components/quest/steps/createTradeSteps"; -import { pauseProductionSteps } from "@/ui/components/quest/steps/pauseProductionSteps"; -import { settleSteps } from "@/ui/components/quest/steps/settleSteps"; -import { travelSteps } from "@/ui/components/quest/steps/travelSteps"; +import { buildFoodSteps } from "@/ui/components/quest/steps/build-food-steps"; +import { buildResourceSteps } from "@/ui/components/quest/steps/build-resource-steps"; +import { createAttackArmySteps } from "@/ui/components/quest/steps/create-attack-army"; +import { createDefenseArmySteps } from "@/ui/components/quest/steps/create-defense-army-steps"; +import { createTradeSteps } from "@/ui/components/quest/steps/create-trade-steps"; +import { pauseProductionSteps } from "@/ui/components/quest/steps/pause-production-steps"; +import { settleSteps } from "@/ui/components/quest/steps/settle-steps"; +import { travelSteps } from "@/ui/components/quest/steps/travel-steps"; import { QuestType } from "@bibliothecadao/eternum"; import { useCallback, useMemo } from "react"; import { useShepherd } from "react-shepherd"; diff --git a/client/apps/game/src/hooks/useUISound.tsx b/client/apps/game/src/hooks/use-ui-sound.tsx similarity index 62% rename from client/apps/game/src/hooks/useUISound.tsx rename to client/apps/game/src/hooks/use-ui-sound.tsx index f522264982..189784dd55 100644 --- a/client/apps/game/src/hooks/useUISound.tsx +++ b/client/apps/game/src/hooks/use-ui-sound.tsx @@ -1,8 +1,7 @@ -import { ResourceMiningTypes } from "@/types"; -import { BuildingType, ResourcesIds } from "@bibliothecadao/eternum"; -import { useCallback, useState } from "react"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { ResourcesIds } from "@bibliothecadao/eternum"; +import { useCallback } from "react"; import useSound from "use-sound"; -import useUIStore from "./store/useUIStore"; export const dir = "/sound/"; @@ -10,7 +9,6 @@ export const soundSelector = { hoverClick: "ui/ui-click-1.wav", click: "ui/click-2.wav", sign: "ui/sign.mp3", - harvest: "ui/harvest.mp3", fly: "ui/whoosh.mp3", levelUp: "ui/level-up.mp3", explore: "ui/explore.mp3", @@ -213,154 +211,3 @@ export const usePlayResourceSound = () => { playResourceSound, }; }; - -const useRunningSound = () => { - const { play: playFirst, fade: fadeFirst } = useUiSounds(soundSelector.unitRunning); - const { play: playSecond, fade: fadeSecond } = useUiSounds(soundSelector.unitRunningAlternative); - const [isFirst, setIsFirst] = useState(true); - - const play = useCallback(() => { - if (isFirst) { - playFirst(); - } else { - playSecond(); - } - setIsFirst((prev) => !prev); - }, [isFirst, playFirst, playSecond]); - - const stop = useCallback(() => { - fadeFirst(); - fadeSecond(); - }, [fadeFirst, fadeSecond, isFirst]); - - return { - play, - stop, - }; -}; - -const useMarchingSound = () => { - const { repeat: playFirst, stop: stopFirst } = useUiSounds(soundSelector.unitMarching1); - const { repeat: playSecond, stop: stopSecond } = useUiSounds(soundSelector.unitMarching2); - const [isFirst, setIsFirst] = useState(true); - - const play = useCallback(() => { - if (isFirst) { - playFirst(); - } else { - playSecond(); - } - setIsFirst((prev) => !prev); - }, [isFirst, playFirst, playSecond]); - - const stop = useCallback(() => { - stopFirst(); - stopSecond(); - }, [stopFirst, stopSecond, isFirst]); - - return { - play, - stop, - }; -}; - -export const useSelectedArmySound = () => { - const soundSelectors = [soundSelector.unitSelected1, soundSelector.unitSelected2, soundSelector.unitSelected3]; - - const soundHooks = soundSelectors.map((selector) => useUiSounds(selector)); - - const [index, setIndex] = useState(0); - - const play = useCallback(() => { - soundHooks[index].play(); - setIndex((prev) => (prev + 1) % soundHooks.length); - }, [index, soundHooks]); - - const stop = useCallback(() => { - soundHooks.forEach(({ stop }) => stop()); - }, [soundHooks]); - - return { - play, - stop, - }; -}; - -export const useShovelSound = () => { - const { play: playShovelMain } = useUiSounds(soundSelector.shovelMain); - const { play: playShovelAlternative } = useUiSounds(soundSelector.shovelAlternative); - const [isFirst, setIsFirst] = useState(true); - - const play = useCallback(() => { - if (isFirst) { - playShovelMain(); - } else { - playShovelAlternative(); - } - setIsFirst((prev) => !prev); - }, [isFirst, playShovelAlternative, playShovelMain]); - - return { - play, - }; -}; - -// todo: add battle sounds -const useBattleSound = () => { - const { play: playPillageSucess } = useUiSounds(soundSelector.buildFarm); - - return { - playPillageSucess, - }; -}; - -export const useBuildingSound = () => { - const { play: playBuildCastle } = useUiSounds(soundSelector.buildCastle); - const { play: playBuildFarm } = useUiSounds(soundSelector.buildFarm); - const { play: playBuildFishingVillage } = useUiSounds(soundSelector.buildFishingVillage); - const { play: playBuildMine } = useUiSounds(soundSelector.buildMine); - const { play: playBuildStables } = useUiSounds(soundSelector.buildStables); - const { play: playBuildArcherRange } = useUiSounds(soundSelector.buildArcherRange); - const { play: playBuildBarracks } = useUiSounds(soundSelector.buildBarracks); - const { play: playBuildMarket } = useUiSounds(soundSelector.buildMarket); - const { play: playLumberMill } = useUiSounds(soundSelector.buildLumberMill); - - const playBuildingSound = (buildingType: BuildingType | ResourceMiningTypes) => { - switch (buildingType) { - case BuildingType.Castle: - playBuildCastle(); - break; - case BuildingType.Farm: - playBuildFarm(); - break; - case BuildingType.FishingVillage: - playBuildFishingVillage(); - break; - case BuildingType.Resource: - playBuildMine(); - break; - case BuildingType.Stable: - playBuildStables(); - break; - case BuildingType.ArcheryRange: - playBuildArcherRange(); - break; - case BuildingType.Barracks: - playBuildBarracks(); - break; - case BuildingType.Market: - playBuildMarket(); - break; - case ResourceMiningTypes.LumberMill: - playLumberMill(); - break; - default: - playBuildMine(); - break; - } - }; - - return { - playBuildingSound, - }; -}; diff --git a/client/apps/game/src/main.tsx b/client/apps/game/src/main.tsx index 89f685c96f..c7ed6091d2 100644 --- a/client/apps/game/src/main.tsx +++ b/client/apps/game/src/main.tsx @@ -9,15 +9,15 @@ import "shepherd.js/dist/css/shepherd.css"; import { registerSW } from "virtual:pwa-register"; import { dojoConfig } from "../dojoConfig"; import { env } from "../env"; -import App from "./App"; +import App from "./app"; import { setup } from "./dojo/setup"; -import { DojoProvider } from "./hooks/context/DojoContext"; +import { DojoProvider } from "./hooks/context/dojo-context"; import { StarknetProvider } from "./hooks/context/starknet-provider"; -import useUIStore from "./hooks/store/useUIStore"; +import useUIStore from "./hooks/store/use-ui-store"; import "./index.css"; -import GameRenderer from "./three/GameRenderer"; +import GameRenderer from "./three/game-renderer"; import { PWAUpdatePopup } from "./ui/components/pwa-update-popup"; -import { LoadingScreen } from "./ui/modules/LoadingScreen"; +import { LoadingScreen } from "./ui/modules/loading-screen"; import { getRandomBackgroundImage } from "./ui/utils/utils"; declare global { diff --git a/client/apps/game/src/setupTests.ts b/client/apps/game/src/setup-tests.ts similarity index 100% rename from client/apps/game/src/setupTests.ts rename to client/apps/game/src/setup-tests.ts diff --git a/client/apps/game/src/three/components/FogManager.ts b/client/apps/game/src/three/components/FogManager.ts deleted file mode 100644 index 04e1947a72..0000000000 --- a/client/apps/game/src/three/components/FogManager.ts +++ /dev/null @@ -1,32 +0,0 @@ -import * as THREE from "three"; -import { Scene, Raycaster } from "three"; - -export class FogManager { - private fog: THREE.Fog; - private fogRadius: number = 30; // Adjust this value to change the size of the clear area - - constructor( - private scene: Scene, - private camera: THREE.PerspectiveCamera, - ) { - const fogColor = new THREE.Color(0xcccccc); // Light gray fog - this.fog = new THREE.Fog(fogColor, 0.1, this.fogRadius); - //this.scene.fog = this.fog; - } - - updateFog() { - const cameraPosition = new THREE.Vector3(); - this.camera.getWorldPosition(cameraPosition); - - // Set fog start and end distances relative to camera position - this.fog.near = this.fogRadius * 0.8; // Start fog slightly before the edge of visible area - this.fog.far = this.fogRadius; - - // Update fog color based on distance from center (optional) - const distanceFromCenter = Math.sqrt(cameraPosition.x * cameraPosition.x + cameraPosition.z * cameraPosition.z); - const fogIntensity = Math.min(distanceFromCenter / (this.fogRadius * 2), 1); - const fogColor = new THREE.Color(0xcccccc).lerp(new THREE.Color(0x666666), fogIntensity); - this.fog.color.copy(fogColor); - //this.scene.background = fogColor; - } -} diff --git a/client/apps/game/src/three/GameRenderer.ts b/client/apps/game/src/three/game-renderer.ts similarity index 96% rename from client/apps/game/src/three/GameRenderer.ts rename to client/apps/game/src/three/game-renderer.ts index 8c5dd1fc80..d33d7dbc2e 100644 --- a/client/apps/game/src/three/GameRenderer.ts +++ b/client/apps/game/src/three/game-renderer.ts @@ -1,5 +1,13 @@ import { SetupResult } from "@/dojo/setup"; -import useUIStore, { AppStore } from "@/hooks/store/useUIStore"; +import useUIStore, { AppStore } from "@/hooks/store/use-ui-store"; +import { GUIManager } from "@/three/helpers/gui-manager"; +import { LocationManager } from "@/three/helpers/location-manager"; +import { TransitionManager } from "@/three/managers/transition-manager"; +import { SceneManager } from "@/three/scene-manager"; +import HexceptionScene from "@/three/scenes/hexception"; +import HUDScene from "@/three/scenes/hud-scene"; +import WorldmapScene from "@/three/scenes/worldmap"; +import { SystemManager } from "@/three/systems/system-manager"; import { SceneName } from "@/types"; import { GRAPHICS_SETTING, GraphicsSettings, IS_FLAT_MODE } from "@/ui/config"; import throttle from "lodash/throttle"; @@ -17,14 +25,6 @@ import { MapControls } from "three/examples/jsm/controls/MapControls"; import { RoomEnvironment } from "three/examples/jsm/environments/RoomEnvironment"; import Stats from "three/examples/jsm/libs/stats.module"; import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader.js"; -import { SceneManager } from "./SceneManager"; -import { TransitionManager } from "./components/TransitionManager"; -import { GUIManager } from "./helpers/GUIManager"; -import { LocationManager } from "./helpers/LocationManager"; -import HUDScene from "./scenes/HUDScene"; -import HexceptionScene from "./scenes/Hexception"; -import WorldmapScene from "./scenes/Worldmap"; -import { SystemManager } from "./systems/SystemManager"; export default class GameRenderer { private labelRenderer!: CSS2DRenderer; diff --git a/client/apps/game/src/three/geometry/HexagonGeometry.ts b/client/apps/game/src/three/geometry/hexagon-geometry.ts similarity index 93% rename from client/apps/game/src/three/geometry/HexagonGeometry.ts rename to client/apps/game/src/three/geometry/hexagon-geometry.ts index 10e11292a8..609b1091c4 100644 --- a/client/apps/game/src/three/geometry/HexagonGeometry.ts +++ b/client/apps/game/src/three/geometry/hexagon-geometry.ts @@ -1,5 +1,5 @@ import * as THREE from "three"; -import { HEX_SIZE } from "../scenes/constants"; +import { HEX_SIZE } from "@/three/scenes/constants"; export const createHexagonShape = (radius: number) => { const shape = new THREE.Shape(); diff --git a/client/apps/game/src/three/helpers/GUIManager.ts b/client/apps/game/src/three/helpers/gui-manager.ts similarity index 100% rename from client/apps/game/src/three/helpers/GUIManager.ts rename to client/apps/game/src/three/helpers/gui-manager.ts diff --git a/client/apps/game/src/three/helpers/LocationManager.ts b/client/apps/game/src/three/helpers/location-manager.ts similarity index 100% rename from client/apps/game/src/three/helpers/LocationManager.ts rename to client/apps/game/src/three/helpers/location-manager.ts diff --git a/client/apps/game/src/three/helpers/pathfinding.ts b/client/apps/game/src/three/helpers/pathfinding.ts index ec82b7f8f7..1bbf5f8ca3 100644 --- a/client/apps/game/src/three/helpers/pathfinding.ts +++ b/client/apps/game/src/three/helpers/pathfinding.ts @@ -1,4 +1,4 @@ -import { Position } from "@/types/Position"; +import { Position } from "@/types/position"; import { getNeighborOffsets, HexPosition } from "@bibliothecadao/eternum"; interface Node { diff --git a/client/apps/game/src/three/helpers/utils.ts b/client/apps/game/src/three/helpers/utils.ts index d60c43d8d3..0c2e0f66a1 100644 --- a/client/apps/game/src/three/helpers/utils.ts +++ b/client/apps/game/src/three/helpers/utils.ts @@ -1,6 +1,7 @@ -import { useAccountStore } from "@/hooks/context/accountStore"; +import { useAccountStore } from "@/hooks/context/account-store"; import { ContractAddress } from "@bibliothecadao/eternum"; import { DRACOLoader, GLTFLoader, MeshoptDecoder } from "three-stdlib"; + export function createPausedLabel() { const div = document.createElement("div"); div.classList.add("rounded-md", "bg-brown/50", "text-gold", "p-1", "-translate-x-1/2", "text-xs"); diff --git a/client/apps/game/src/three/components/ArmyManager.ts b/client/apps/game/src/three/managers/army-manager.ts similarity index 97% rename from client/apps/game/src/three/components/ArmyManager.ts rename to client/apps/game/src/three/managers/army-manager.ts index 3764a075ca..959696150d 100644 --- a/client/apps/game/src/three/components/ArmyManager.ts +++ b/client/apps/game/src/three/managers/army-manager.ts @@ -1,17 +1,17 @@ -import { useAccountStore } from "@/hooks/context/accountStore"; +import { useAccountStore } from "@/hooks/context/account-store"; +import { GUIManager } from "@/three/helpers/gui-manager"; +import { findShortestPath } from "@/three/helpers/pathfinding"; +import { isAddressEqualToAccount } from "@/three/helpers/utils"; +import { ArmyModel } from "@/three/managers/army-model"; +import { Biome } from "@/three/managers/biome"; +import { LabelManager } from "@/three/managers/label-manager"; +import { ArmySystemUpdate } from "@/three/systems/types"; import { ArmyData, MovingArmyData, MovingLabelData, RenderChunkSize } from "@/types"; -import { Position } from "@/types/Position"; +import { Position } from "@/types/position"; import { calculateOffset, getHexForWorldPosition, getWorldPositionForHex } from "@/ui/utils/utils"; import { BiomeType, ContractAddress, FELT_CENTER, ID, orders } from "@bibliothecadao/eternum"; import * as THREE from "three"; import { CSS2DObject } from "three/examples/jsm/renderers/CSS2DRenderer"; -import { GUIManager } from "../helpers/GUIManager"; -import { findShortestPath } from "../helpers/pathfinding"; -import { isAddressEqualToAccount } from "../helpers/utils"; -import { ArmySystemUpdate } from "../systems/types"; -import { ArmyModel } from "./ArmyModel"; -import { Biome } from "./Biome"; -import { LabelManager } from "./LabelManager"; const myColor = new THREE.Color(0, 1.5, 0); const neutralColor = new THREE.Color(0xffffff); diff --git a/client/apps/game/src/three/components/ArmyModel.ts b/client/apps/game/src/three/managers/army-model.ts similarity index 99% rename from client/apps/game/src/three/components/ArmyModel.ts rename to client/apps/game/src/three/managers/army-model.ts index 4d2734d543..45ad8576d7 100644 --- a/client/apps/game/src/three/components/ArmyModel.ts +++ b/client/apps/game/src/three/managers/army-model.ts @@ -1,7 +1,7 @@ +import { gltfLoader } from "@/three/helpers/utils"; import { GRAPHICS_SETTING, GraphicsSettings } from "@/ui/config"; import * as THREE from "three"; import { AnimationClip, AnimationMixer } from "three"; -import { gltfLoader } from "../helpers/utils"; const MAX_INSTANCES = 1000; const ANIMATION_STATE_IDLE = 0; diff --git a/client/apps/game/src/three/components/Aura.ts b/client/apps/game/src/three/managers/aura.ts similarity index 100% rename from client/apps/game/src/three/components/Aura.ts rename to client/apps/game/src/three/managers/aura.ts diff --git a/client/apps/game/src/three/components/BattleManager.ts b/client/apps/game/src/three/managers/battle-manager.ts similarity index 94% rename from client/apps/game/src/three/components/BattleManager.ts rename to client/apps/game/src/three/managers/battle-manager.ts index eb0f61b3b2..5c05abed95 100644 --- a/client/apps/game/src/three/components/BattleManager.ts +++ b/client/apps/game/src/three/managers/battle-manager.ts @@ -1,11 +1,11 @@ -import { Position } from "@/types/Position"; +import { GUIManager } from "@/three/helpers/gui-manager"; +import { BattleModel } from "@/three/managers/battle-model"; +import { LabelManager } from "@/three/managers/label-manager"; +import { BattleSystemUpdate } from "@/three/systems/types"; +import { Position } from "@/types/position"; import { getWorldPositionForHex } from "@/ui/utils/utils"; import { ID } from "@bibliothecadao/eternum"; import * as THREE from "three"; -import { GUIManager } from "../helpers/GUIManager"; -import { BattleSystemUpdate } from "../systems/types"; -import { BattleModel } from "./BattleModel"; -import { LabelManager } from "./LabelManager"; const LABEL_PATH = "textures/battle_label.png"; diff --git a/client/apps/game/src/three/components/BattleModel.tsx b/client/apps/game/src/three/managers/battle-model.tsx similarity index 98% rename from client/apps/game/src/three/components/BattleModel.tsx rename to client/apps/game/src/three/managers/battle-model.tsx index 1c7911f43e..c26a99efc5 100644 --- a/client/apps/game/src/three/components/BattleModel.tsx +++ b/client/apps/game/src/three/managers/battle-model.tsx @@ -1,7 +1,7 @@ +import { gltfLoader } from "@/three/helpers/utils"; import { GRAPHICS_SETTING, GraphicsSettings } from "@/ui/config"; import * as THREE from "three"; import { AnimationClip, AnimationMixer } from "three"; -import { gltfLoader } from "../helpers/utils"; const MAX_INSTANCES = 1000; diff --git a/client/apps/game/src/three/components/Biome.ts b/client/apps/game/src/three/managers/biome.ts similarity index 100% rename from client/apps/game/src/three/components/Biome.ts rename to client/apps/game/src/three/managers/biome.ts diff --git a/client/apps/game/src/three/components/BuildingPreview.ts b/client/apps/game/src/three/managers/building-preview.ts similarity index 94% rename from client/apps/game/src/three/components/BuildingPreview.ts rename to client/apps/game/src/three/managers/building-preview.ts index 66c06b7b0b..f00b9c7554 100644 --- a/client/apps/game/src/three/components/BuildingPreview.ts +++ b/client/apps/game/src/three/managers/building-preview.ts @@ -1,11 +1,11 @@ -import useUIStore from "@/hooks/store/useUIStore"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { gltfLoader } from "@/three/helpers/utils"; +import { buildingModelPaths, PREVIEW_BUILD_COLOR_VALID } from "@/three/scenes/constants"; +import { HoverSound } from "@/three/sound/hover-sound"; import { ResourceMiningTypes } from "@/types"; import { ResourceIdToMiningType } from "@/ui/utils/utils"; import { BuildingType, ResourcesIds } from "@bibliothecadao/eternum"; import * as THREE from "three"; -import { gltfLoader } from "../helpers/utils"; -import { buildingModelPaths, PREVIEW_BUILD_COLOR_VALID } from "../scenes/constants"; -import { HoverSound } from "../sound/HoverSound"; export class BuildingPreview { private previewBuilding: { type: BuildingType; resource?: ResourcesIds } | null = null; diff --git a/client/apps/game/src/three/components/HighlightHexManager.ts b/client/apps/game/src/three/managers/highlight-hex-manager.ts similarity index 87% rename from client/apps/game/src/three/components/HighlightHexManager.ts rename to client/apps/game/src/three/managers/highlight-hex-manager.ts index 617307611b..5aecb63950 100644 --- a/client/apps/game/src/three/components/HighlightHexManager.ts +++ b/client/apps/game/src/three/managers/highlight-hex-manager.ts @@ -1,9 +1,9 @@ -import { highlightHexMaterial } from "@/three/shaders/highlightHexMaterial"; +import { createHexagonShape } from "@/three/geometry/hexagon-geometry"; +import { HEX_SIZE } from "@/three/scenes/constants"; +import { highlightHexMaterial } from "@/three/shaders/highlight-hex-material"; import { getWorldPositionForHex } from "@/ui/utils/utils"; import { HexPosition } from "@bibliothecadao/eternum"; import * as THREE from "three"; -import { createHexagonShape } from "../geometry/HexagonGeometry"; -import { HEX_SIZE } from "../scenes/constants"; export class HighlightHexManager { private highlightedHexes: THREE.Mesh[] = []; diff --git a/client/apps/game/src/three/components/InputManager.ts b/client/apps/game/src/three/managers/input-manager.ts similarity index 94% rename from client/apps/game/src/three/components/InputManager.ts rename to client/apps/game/src/three/managers/input-manager.ts index e822ab9e23..3059398ef4 100644 --- a/client/apps/game/src/three/components/InputManager.ts +++ b/client/apps/game/src/three/managers/input-manager.ts @@ -1,13 +1,12 @@ +import { SceneManager } from "@/three/scene-manager"; import { SceneName } from "@/types"; import * as THREE from "three"; -import { SceneManager } from "../SceneManager"; type ListenerTypes = "click" | "mousemove" | "contextmenu" | "dblclick" | "mousedown"; export class InputManager { private listeners: Array<{ event: ListenerTypes; handler: (e: MouseEvent) => void }> = []; private isDragged = false; - private clickTimer: NodeJS.Timeout | null = null; // Add this property constructor( private sceneName: SceneName, diff --git a/client/apps/game/src/three/components/InstancedBiome.tsx b/client/apps/game/src/three/managers/instanced-biome.tsx similarity index 96% rename from client/apps/game/src/three/components/InstancedBiome.tsx rename to client/apps/game/src/three/managers/instanced-biome.tsx index e97364d414..44faad98d0 100644 --- a/client/apps/game/src/three/components/InstancedBiome.tsx +++ b/client/apps/game/src/three/managers/instanced-biome.tsx @@ -1,8 +1,8 @@ +import { LAND_NAME } from "@/three/managers/instanced-model"; +import { PREVIEW_BUILD_COLOR_INVALID } from "@/three/scenes/constants"; import { GRAPHICS_SETTING, GraphicsSettings } from "@/ui/config"; import * as THREE from "three"; import { AnimationClip, AnimationMixer } from "three"; -import { PREVIEW_BUILD_COLOR_INVALID } from "../scenes/constants"; -import { LAND_NAME } from "./InstancedModel"; const zeroScaledMatrix = new THREE.Matrix4().makeScale(0, 0, 0); export default class InstancedModel { @@ -44,7 +44,7 @@ export default class InstancedModel { tmp.userData.isInstanceModel = true; if (!enableRaycast) { - tmp.raycast = () => { }; + tmp.raycast = () => {}; } this.mixer = new AnimationMixer(gltf.scene); diff --git a/client/apps/game/src/three/components/InstancedModel.tsx b/client/apps/game/src/three/managers/instanced-model.tsx similarity index 99% rename from client/apps/game/src/three/components/InstancedModel.tsx rename to client/apps/game/src/three/managers/instanced-model.tsx index 5e425b10f5..c96ec0579d 100644 --- a/client/apps/game/src/three/components/InstancedModel.tsx +++ b/client/apps/game/src/three/managers/instanced-model.tsx @@ -1,8 +1,8 @@ +import { MinesMaterialsParams, PREVIEW_BUILD_COLOR_INVALID } from "@/three/scenes/constants"; import { GRAPHICS_SETTING, GraphicsSettings } from "@/ui/config"; import { ResourcesIds, StructureType } from "@bibliothecadao/eternum"; import * as THREE from "three"; import { AnimationClip, AnimationMixer } from "three"; -import { MinesMaterialsParams, PREVIEW_BUILD_COLOR_INVALID } from "../scenes/constants"; const BIG_DETAILS_NAME = "big_details"; const BUILDING_NAME = "building"; diff --git a/client/apps/game/src/three/components/InteractiveHexManager.ts b/client/apps/game/src/three/managers/interactive-hex-manager.ts similarity index 92% rename from client/apps/game/src/three/components/InteractiveHexManager.ts rename to client/apps/game/src/three/managers/interactive-hex-manager.ts index 6557a23d8b..a2609f0b21 100644 --- a/client/apps/game/src/three/components/InteractiveHexManager.ts +++ b/client/apps/game/src/three/managers/interactive-hex-manager.ts @@ -1,9 +1,9 @@ -import { interactiveHexMaterial } from "@/three/shaders/borderHexMaterial"; +import { createHexagonShape } from "@/three/geometry/hexagon-geometry"; +import { Aura } from "@/three/managers/aura"; +import { HEX_SIZE } from "@/three/scenes/constants"; +import { interactiveHexMaterial } from "@/three/shaders/border-hex-material"; import { getHexagonCoordinates, getWorldPositionForHex } from "@/ui/utils/utils"; import * as THREE from "three"; -import { createHexagonShape } from "../geometry/HexagonGeometry"; -import { HEX_SIZE } from "../scenes/constants"; -import { Aura } from "./Aura"; export class InteractiveHexManager { private scene: THREE.Scene; diff --git a/client/apps/game/src/three/components/LabelManager.ts b/client/apps/game/src/three/managers/label-manager.ts similarity index 100% rename from client/apps/game/src/three/components/LabelManager.ts rename to client/apps/game/src/three/managers/label-manager.ts diff --git a/client/apps/game/src/three/components/Minimap.ts b/client/apps/game/src/three/managers/minimap.ts similarity index 97% rename from client/apps/game/src/three/components/Minimap.ts rename to client/apps/game/src/three/managers/minimap.ts index b5c7eaaf6b..8a1ec71a5a 100644 --- a/client/apps/game/src/three/components/Minimap.ts +++ b/client/apps/game/src/three/managers/minimap.ts @@ -1,14 +1,14 @@ -import useUIStore from "@/hooks/store/useUIStore"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { type ArmyManager } from "@/three/managers/army-manager"; +import { type BattleManager } from "@/three/managers/battle-manager"; +import { type Biome, BIOME_COLORS } from "@/three/managers/biome"; +import { type StructureManager } from "@/three/managers/structure-manager"; +import type WorldmapScene from "@/three/scenes/worldmap"; import { FELT_CENTER } from "@/ui/config"; import { getHexForWorldPosition } from "@/ui/utils/utils"; import { StructureType } from "@bibliothecadao/eternum"; import throttle from "lodash/throttle"; import type * as THREE from "three"; -import type WorldmapScene from "../scenes/Worldmap"; -import { type ArmyManager } from "./ArmyManager"; -import { type BattleManager } from "./BattleManager"; -import { type Biome, BIOME_COLORS } from "./Biome"; -import { type StructureManager } from "./StructureManager"; const LABELS = { ARMY: "/textures/army_label.png", diff --git a/client/apps/game/src/three/components/Navigator.ts b/client/apps/game/src/three/managers/navigator.ts similarity index 98% rename from client/apps/game/src/three/components/Navigator.ts rename to client/apps/game/src/three/managers/navigator.ts index 32a61ba565..de630da86f 100644 --- a/client/apps/game/src/three/components/Navigator.ts +++ b/client/apps/game/src/three/managers/navigator.ts @@ -1,10 +1,10 @@ +import { gltfLoader } from "@/three/helpers/utils"; import { calculateDistanceInHexes, getWorldPositionForHex } from "@/ui/utils/utils"; import { type HexPosition } from "@bibliothecadao/eternum"; import throttle from "lodash/throttle"; import * as THREE from "three"; import { CSS2DObject } from "three-stdlib"; import { type MapControls } from "three/examples/jsm/controls/MapControls"; -import { gltfLoader } from "../helpers/utils"; const dummyObject = new THREE.Object3D(); const arrowOffset = new THREE.Vector3(0, 3, 0); diff --git a/client/apps/game/src/three/components/Particles.ts b/client/apps/game/src/three/managers/particles.ts similarity index 100% rename from client/apps/game/src/three/components/Particles.ts rename to client/apps/game/src/three/managers/particles.ts diff --git a/client/apps/game/src/three/components/SelectedHexManager.ts b/client/apps/game/src/three/managers/selected-hex-manager.ts similarity index 89% rename from client/apps/game/src/three/components/SelectedHexManager.ts rename to client/apps/game/src/three/managers/selected-hex-manager.ts index 5de0710b80..4350ba4196 100644 --- a/client/apps/game/src/three/components/SelectedHexManager.ts +++ b/client/apps/game/src/three/managers/selected-hex-manager.ts @@ -1,5 +1,5 @@ import * as THREE from "three"; -import { Particles } from "./Particles"; +import { Particles } from "@/three/managers/particles"; export class SelectedHexManager { private particles: Particles; diff --git a/client/apps/game/src/three/components/StructureManager.ts b/client/apps/game/src/three/managers/structure-manager.ts similarity index 95% rename from client/apps/game/src/three/components/StructureManager.ts rename to client/apps/game/src/three/managers/structure-manager.ts index 1d86430f67..e70c3aa96c 100644 --- a/client/apps/game/src/three/components/StructureManager.ts +++ b/client/apps/game/src/three/managers/structure-manager.ts @@ -1,14 +1,14 @@ -import { useAccountStore } from "@/hooks/context/accountStore"; +import { useAccountStore } from "@/hooks/context/account-store"; +import { gltfLoader, isAddressEqualToAccount } from "@/three/helpers/utils"; +import InstancedModel from "@/three/managers/instanced-model"; +import { LabelManager } from "@/three/managers/label-manager"; +import { StructureLabelPaths, StructureModelPaths } from "@/three/scenes/constants"; +import { StructureSystemUpdate } from "@/three/systems/types"; import { RenderChunkSize, StructureInfo } from "@/types"; import { FELT_CENTER } from "@/ui/config"; import { getWorldPositionForHex } from "@/ui/utils/utils"; import { ID, StructureType } from "@bibliothecadao/eternum"; import * as THREE from "three"; -import { gltfLoader, isAddressEqualToAccount } from "../helpers/utils"; -import { StructureLabelPaths, StructureModelPaths } from "../scenes/constants"; -import { StructureSystemUpdate } from "../systems/types"; -import InstancedModel from "./InstancedModel"; -import { LabelManager } from "./LabelManager"; const neutralColor = new THREE.Color(0xffffff); const myColor = new THREE.Color("lime"); diff --git a/client/apps/game/src/three/components/StructurePreview.ts b/client/apps/game/src/three/managers/structure-preview.ts similarity index 97% rename from client/apps/game/src/three/components/StructurePreview.ts rename to client/apps/game/src/three/managers/structure-preview.ts index 7594913a7b..c26ea2b668 100644 --- a/client/apps/game/src/three/components/StructurePreview.ts +++ b/client/apps/game/src/three/managers/structure-preview.ts @@ -1,8 +1,8 @@ +import { gltfLoader } from "@/three/helpers/utils"; +import { PREVIEW_BUILD_COLOR_VALID, StructureModelPaths } from "@/three/scenes/constants"; import { ResourcesIds, StructureType } from "@bibliothecadao/eternum"; import * as THREE from "three"; import { GLTFLoader } from "three-stdlib"; -import { gltfLoader } from "../helpers/utils"; -import { PREVIEW_BUILD_COLOR_VALID, StructureModelPaths } from "../scenes/constants"; export class StructurePreview { private previewStructure: { type: StructureType; resource?: ResourcesIds } | null = null; diff --git a/client/apps/game/src/three/components/TransitionManager.tsx b/client/apps/game/src/three/managers/transition-manager.tsx similarity index 90% rename from client/apps/game/src/three/components/TransitionManager.tsx rename to client/apps/game/src/three/managers/transition-manager.tsx index 3c37c0edaa..3398122c60 100644 --- a/client/apps/game/src/three/components/TransitionManager.tsx +++ b/client/apps/game/src/three/managers/transition-manager.tsx @@ -1,5 +1,5 @@ +import useUIStore from "@/hooks/store/use-ui-store"; import * as THREE from "three"; -import useUIStore from "@/hooks/store/useUIStore"; const FADE_DURATION = 300; diff --git a/client/apps/game/src/three/SceneManager.ts b/client/apps/game/src/three/scene-manager.ts similarity index 89% rename from client/apps/game/src/three/SceneManager.ts rename to client/apps/game/src/three/scene-manager.ts index 4de688f107..bea0b9ea03 100644 --- a/client/apps/game/src/three/SceneManager.ts +++ b/client/apps/game/src/three/scene-manager.ts @@ -1,6 +1,6 @@ +import { TransitionManager } from "@/three/managers/transition-manager"; +import { HexagonScene } from "@/three/scenes/hexagon-scene"; import { SceneName } from "@/types"; -import { TransitionManager } from "./components/TransitionManager"; -import { HexagonScene } from "./scenes/HexagonScene"; export class SceneManager { private currentScene: SceneName | undefined = undefined; diff --git a/client/apps/game/src/three/scenes/constants.ts b/client/apps/game/src/three/scenes/constants.ts index 8c3b251ce7..e1e41f8afc 100644 --- a/client/apps/game/src/three/scenes/constants.ts +++ b/client/apps/game/src/three/scenes/constants.ts @@ -1,8 +1,8 @@ +import { BiomeType } from "@/three/managers/biome"; import { HyperstructureTypesNames, ResourceMiningTypes } from "@/types"; import { IS_FLAT_MODE } from "@/ui/config"; import { BuildingType, RealmLevelNames, RealmLevels, ResourcesIds, StructureType } from "@bibliothecadao/eternum"; import * as THREE from "three"; -import { BiomeType } from "../components/Biome"; export const HEX_SIZE = 1; @@ -77,7 +77,7 @@ const BASE_PATH = "/models/biomes-opt/"; const FLAT_PATH = "/models/biomes-flat-opt/"; const MODELS_PATH = IS_FLAT_MODE ? FLAT_PATH : BASE_PATH; -export enum BiomeFilenames { +enum BiomeFilenames { Bare = "bare.glb", Beach = "beach.glb", TemperateDeciduousForest = "deciduousForest.glb", diff --git a/client/apps/game/src/three/scenes/HexagonScene.ts b/client/apps/game/src/three/scenes/hexagon-scene.ts similarity index 94% rename from client/apps/game/src/three/scenes/HexagonScene.ts rename to client/apps/game/src/three/scenes/hexagon-scene.ts index a48024b703..2176390b2a 100644 --- a/client/apps/game/src/three/scenes/HexagonScene.ts +++ b/client/apps/game/src/three/scenes/hexagon-scene.ts @@ -1,9 +1,20 @@ import { type SetupResult } from "@/dojo/setup"; -import useUIStore, { type AppStore } from "@/hooks/store/useUIStore"; +import useUIStore, { type AppStore } from "@/hooks/store/use-ui-store"; +import { GUIManager } from "@/three/helpers/gui-manager"; +import { LocationManager } from "@/three/helpers/location-manager"; +import { gltfLoader } from "@/three/helpers/utils"; +import { type BiomeType } from "@/three/managers/biome"; +import { HighlightHexManager } from "@/three/managers/highlight-hex-manager"; +import { InputManager } from "@/three/managers/input-manager"; +import InstancedBiome from "@/three/managers/instanced-biome"; +import { InteractiveHexManager } from "@/three/managers/interactive-hex-manager"; +import { type SceneManager } from "@/three/scene-manager"; +import { HEX_SIZE, biomeModelPaths } from "@/three/scenes/constants"; +import { SystemManager } from "@/three/systems/system-manager"; import { type SceneName } from "@/types"; import { GRAPHICS_SETTING, GraphicsSettings, IS_FLAT_MODE } from "@/ui/config"; -import { LeftView } from "@/ui/modules/navigation/LeftNavigationModule"; -import { RightView } from "@/ui/modules/navigation/RightNavigationModule"; +import { LeftView } from "@/ui/modules/navigation/left-navigation-module"; +import { RightView } from "@/ui/modules/navigation/right-navigation-module"; import { getWorldPositionForHex } from "@/ui/utils/utils"; import { type HexPosition } from "@bibliothecadao/eternum"; import gsap from "gsap"; @@ -11,17 +22,6 @@ import throttle from "lodash/throttle"; import * as THREE from "three"; import { type MapControls } from "three/examples/jsm/controls/MapControls"; import { env } from "../../../env"; -import { type SceneManager } from "../SceneManager"; -import { type BiomeType } from "../components/Biome"; -import { HighlightHexManager } from "../components/HighlightHexManager"; -import { InputManager } from "../components/InputManager"; -import InstancedBiome from "../components/InstancedBiome"; -import { InteractiveHexManager } from "../components/InteractiveHexManager"; -import { GUIManager } from "../helpers/GUIManager"; -import { LocationManager } from "../helpers/LocationManager"; -import { gltfLoader } from "../helpers/utils"; -import { SystemManager } from "../systems/SystemManager"; -import { HEX_SIZE, biomeModelPaths } from "./constants"; export abstract class HexagonScene { protected scene!: THREE.Scene; protected camera!: THREE.PerspectiveCamera; diff --git a/client/apps/game/src/three/scenes/Hexception.tsx b/client/apps/game/src/three/scenes/hexception.tsx similarity index 96% rename from client/apps/game/src/three/scenes/Hexception.tsx rename to client/apps/game/src/three/scenes/hexception.tsx index cd0b678606..d579db9149 100644 --- a/client/apps/game/src/three/scenes/Hexception.tsx +++ b/client/apps/game/src/three/scenes/hexception.tsx @@ -1,13 +1,20 @@ -import * as THREE from "three"; - import { SetupResult } from "@/dojo/setup"; -import { useAccountStore } from "@/hooks/context/accountStore"; -import useUIStore from "@/hooks/store/useUIStore"; +import { useAccountStore } from "@/hooks/context/account-store"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { createHexagonShape } from "@/three/geometry/hexagon-geometry"; +import { createPausedLabel, gltfLoader } from "@/three/helpers/utils"; +import { BIOME_COLORS, Biome, BiomeType } from "@/three/managers/biome"; +import { BuildingPreview } from "@/three/managers/building-preview"; +import { SMALL_DETAILS_NAME } from "@/three/managers/instanced-model"; +import { SceneManager } from "@/three/scene-manager"; +import { HexagonScene } from "@/three/scenes/hexagon-scene"; +import { playBuildingSound } from "@/three/sound/utils"; +import { BuildingSystemUpdate, RealmSystemUpdate } from "@/three/systems/types"; import { ResourceMiningTypes, SceneName } from "@/types"; -import { Position } from "@/types/Position"; +import { Position } from "@/types/position"; import { IS_FLAT_MODE } from "@/ui/config"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; -import { LeftView } from "@/ui/modules/navigation/LeftNavigationModule"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; +import { LeftView } from "@/ui/modules/navigation/left-navigation-module"; import { ResourceIdToMiningType, getEntityIdFromKeys, @@ -27,17 +34,9 @@ import { } from "@bibliothecadao/eternum"; import { getComponentValue } from "@dojoengine/recs"; import clsx from "clsx"; +import * as THREE from "three"; import { CSS2DObject } from "three-stdlib"; import { MapControls } from "three/examples/jsm/controls/MapControls"; -import { SceneManager } from "../SceneManager"; -import { BIOME_COLORS, Biome, BiomeType } from "../components/Biome"; -import { BuildingPreview } from "../components/BuildingPreview"; -import { SMALL_DETAILS_NAME } from "../components/InstancedModel"; -import { createHexagonShape } from "../geometry/HexagonGeometry"; -import { createPausedLabel, gltfLoader } from "../helpers/utils"; -import { playBuildingSound } from "../sound/utils"; -import { BuildingSystemUpdate, RealmSystemUpdate } from "../systems/types"; -import { HexagonScene } from "./HexagonScene"; import { HEX_SIZE, MinesMaterialsParams, diff --git a/client/apps/game/src/three/scenes/HUDScene.ts b/client/apps/game/src/three/scenes/hud-scene.ts similarity index 94% rename from client/apps/game/src/three/scenes/HUDScene.ts rename to client/apps/game/src/three/scenes/hud-scene.ts index b09d4cb3ae..08b2aa4655 100644 --- a/client/apps/game/src/three/scenes/HUDScene.ts +++ b/client/apps/game/src/three/scenes/hud-scene.ts @@ -1,9 +1,9 @@ -import useUIStore from "@/hooks/store/useUIStore"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { GUIManager } from "@/three/helpers/gui-manager"; +import { Navigator } from "@/three/managers/navigator"; +import { SceneManager } from "@/three/scene-manager"; import * as THREE from "three"; import { MapControls } from "three/examples/jsm/controls/MapControls"; -import { SceneManager } from "../SceneManager"; -import { Navigator } from "../components/Navigator"; -import { GUIManager } from "../helpers/GUIManager"; export default class HUDScene { private scene: THREE.Scene; diff --git a/client/apps/game/src/three/scenes/Worldmap.ts b/client/apps/game/src/three/scenes/worldmap.ts similarity index 94% rename from client/apps/game/src/three/scenes/Worldmap.ts rename to client/apps/game/src/three/scenes/worldmap.ts index 80876a362a..f66a24f62a 100644 --- a/client/apps/game/src/three/scenes/Worldmap.ts +++ b/client/apps/game/src/three/scenes/worldmap.ts @@ -1,23 +1,35 @@ import { SetupResult } from "@/dojo/setup"; -import { useAccountStore } from "@/hooks/context/accountStore"; -import useUIStore from "@/hooks/store/useUIStore"; -import { LoadingStateKey } from "@/hooks/store/useWorldLoading"; -import { soundSelector } from "@/hooks/useUISound"; +import { useAccountStore } from "@/hooks/context/account-store"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { LoadingStateKey } from "@/hooks/store/use-world-loading"; +import { soundSelector } from "@/hooks/use-ui-sound"; +import { ArmyManager } from "@/three/managers/army-manager"; +import { BattleManager } from "@/three/managers/battle-manager"; +import { Biome } from "@/three/managers/biome"; +import Minimap from "@/three/managers/minimap"; +import { SelectedHexManager } from "@/three/managers/selected-hex-manager"; +import { StructureManager } from "@/three/managers/structure-manager"; +import { StructurePreview } from "@/three/managers/structure-preview"; +import { SceneManager } from "@/three/scene-manager"; +import { HEX_SIZE, PREVIEW_BUILD_COLOR_INVALID } from "@/three/scenes/constants"; +import { HexagonScene } from "@/three/scenes/hexagon-scene"; +import { playSound } from "@/three/sound/utils"; +import { ArmySystemUpdate, TileSystemUpdate } from "@/three/systems/types"; import { SceneName } from "@/types"; -import { Position } from "@/types/Position"; +import { Position } from "@/types/position"; import { FELT_CENTER, IS_FLAT_MODE, IS_MOBILE } from "@/ui/config"; import { UNDEFINED_STRUCTURE_ENTITY_ID } from "@/ui/constants"; -import { LeftView } from "@/ui/modules/navigation/LeftNavigationModule"; +import { LeftView } from "@/ui/modules/navigation/left-navigation-module"; import { getWorldPositionForHex } from "@/ui/utils/utils"; import { - ArmyMovementManager, - BiomeType, - DUMMY_HYPERSTRUCTURE_ENTITY_ID, - HexPosition, - ID, - TileManager, - TravelPaths, - getNeighborOffsets, + ArmyMovementManager, + BiomeType, + DUMMY_HYPERSTRUCTURE_ENTITY_ID, + HexPosition, + ID, + TileManager, + TravelPaths, + getNeighborOffsets, } from "@bibliothecadao/eternum"; import { getEntities } from "@dojoengine/state"; import * as torii from "@dojoengine/torii-client"; @@ -25,18 +37,6 @@ import throttle from "lodash/throttle"; import * as THREE from "three"; import { Raycaster } from "three"; import { MapControls } from "three/examples/jsm/controls/MapControls"; -import { SceneManager } from "../SceneManager"; -import { ArmyManager } from "../components/ArmyManager"; -import { BattleManager } from "../components/BattleManager"; -import { Biome } from "../components/Biome"; -import Minimap from "../components/Minimap"; -import { SelectedHexManager } from "../components/SelectedHexManager"; -import { StructureManager } from "../components/StructureManager"; -import { StructurePreview } from "../components/StructurePreview"; -import { playSound } from "../sound/utils"; -import { ArmySystemUpdate, TileSystemUpdate } from "../systems/types"; -import { HexagonScene } from "./HexagonScene"; -import { HEX_SIZE, PREVIEW_BUILD_COLOR_INVALID } from "./constants"; export default class WorldmapScene extends HexagonScene { private biome!: Biome; @@ -748,7 +748,7 @@ export default class WorldmapScene extends HexagonScene { clauses: [ { Member: { - model: "s0_eternum-Tile", + model: "s1_eternum-Tile", member: "col", operator: "Gte", value: { Primitive: { U32: startCol - range } }, @@ -756,7 +756,7 @@ export default class WorldmapScene extends HexagonScene { }, { Member: { - model: "s0_eternum-Tile", + model: "s1_eternum-Tile", member: "col", operator: "Lte", value: { Primitive: { U32: startCol + range } }, @@ -764,7 +764,7 @@ export default class WorldmapScene extends HexagonScene { }, { Member: { - model: "s0_eternum-Tile", + model: "s1_eternum-Tile", member: "row", operator: "Gte", value: { Primitive: { U32: startRow - range } }, @@ -772,7 +772,7 @@ export default class WorldmapScene extends HexagonScene { }, { Member: { - model: "s0_eternum-Tile", + model: "s1_eternum-Tile", member: "row", operator: "Lte", value: { Primitive: { U32: startRow + range } }, @@ -783,7 +783,7 @@ export default class WorldmapScene extends HexagonScene { }, this.dojo.network.contractComponents as any, [], - ["s0_eternum-Tile"], + ["s1_eternum-Tile"], 1000, false, ); @@ -795,7 +795,7 @@ export default class WorldmapScene extends HexagonScene { clauses: [ { Member: { - model: "s0_eternum-Position", + model: "s1_eternum-Position", member: "x", operator: "Gte", value: { Primitive: { U32: startCol - range } }, @@ -803,7 +803,7 @@ export default class WorldmapScene extends HexagonScene { }, { Member: { - model: "s0_eternum-Position", + model: "s1_eternum-Position", member: "x", operator: "Lte", value: { Primitive: { U32: startCol + range } }, @@ -811,7 +811,7 @@ export default class WorldmapScene extends HexagonScene { }, { Member: { - model: "s0_eternum-Position", + model: "s1_eternum-Position", member: "y", operator: "Gte", value: { Primitive: { U32: startRow - range } }, @@ -819,7 +819,7 @@ export default class WorldmapScene extends HexagonScene { }, { Member: { - model: "s0_eternum-Position", + model: "s1_eternum-Position", member: "y", operator: "Lte", value: { Primitive: { U32: startRow + range } }, @@ -831,12 +831,12 @@ export default class WorldmapScene extends HexagonScene { this.dojo.network.contractComponents as any, [], [ - "s0_eternum-Army", - "s0_eternum-Position", - "s0_eternum-Health", - "s0_eternum-EntityOwner", - "s0_eternum-Protectee", - "s0_eternum-Stamina", + "s1_eternum-Army", + "s1_eternum-Position", + "s1_eternum-Health", + "s1_eternum-EntityOwner", + "s1_eternum-Protectee", + "s1_eternum-Stamina", ], 1000, false, diff --git a/client/apps/game/src/three/shaders/borderHexMaterial.ts b/client/apps/game/src/three/shaders/border-hex-material.ts similarity index 100% rename from client/apps/game/src/three/shaders/borderHexMaterial.ts rename to client/apps/game/src/three/shaders/border-hex-material.ts diff --git a/client/apps/game/src/three/shaders/highlightHexMaterial.ts b/client/apps/game/src/three/shaders/highlight-hex-material.ts similarity index 100% rename from client/apps/game/src/three/shaders/highlightHexMaterial.ts rename to client/apps/game/src/three/shaders/highlight-hex-material.ts diff --git a/client/apps/game/src/three/sound/HoverSound.ts b/client/apps/game/src/three/sound/hover-sound.ts similarity index 91% rename from client/apps/game/src/three/sound/HoverSound.ts rename to client/apps/game/src/three/sound/hover-sound.ts index be0ae8ff88..fe166855db 100644 --- a/client/apps/game/src/three/sound/HoverSound.ts +++ b/client/apps/game/src/three/sound/hover-sound.ts @@ -1,4 +1,4 @@ -import { dir, soundSelector } from "@/hooks/useUISound"; +import { dir, soundSelector } from "@/hooks/use-ui-sound"; export class HoverSound { private firstSound: HTMLAudioElement; diff --git a/client/apps/game/src/three/sound/utils.ts b/client/apps/game/src/three/sound/utils.ts index 67a7ee1c2c..430c84245f 100644 --- a/client/apps/game/src/three/sound/utils.ts +++ b/client/apps/game/src/three/sound/utils.ts @@ -1,4 +1,4 @@ -import { dir, soundSelector } from "@/hooks/useUISound"; +import { dir, soundSelector } from "@/hooks/use-ui-sound"; import { BuildingType } from "@bibliothecadao/eternum"; export const playSound = (sound: string, hasSound: boolean, volume: number) => { @@ -30,7 +30,7 @@ export const playBuildingSound = (buildingType: BuildingType | undefined, hasSou const soundFile = buildingType === undefined ? soundSelector.buildCastle - : buildingSounds[buildingType as BuildingType] ?? soundSelector.buildMine; + : (buildingSounds[buildingType as BuildingType] ?? soundSelector.buildMine); playSound(soundFile, hasSound, volume); }; diff --git a/client/apps/game/src/three/systems/SystemManager.ts b/client/apps/game/src/three/systems/system-manager.ts similarity index 98% rename from client/apps/game/src/three/systems/SystemManager.ts rename to client/apps/game/src/three/systems/system-manager.ts index def27b468a..ca12f6fae2 100644 --- a/client/apps/game/src/three/systems/SystemManager.ts +++ b/client/apps/game/src/three/systems/system-manager.ts @@ -1,8 +1,7 @@ -import { ClientComponents } from "@/dojo/createClientComponents"; import { configManager, SetupResult } from "@/dojo/setup"; -import { Position } from "@/types/Position"; +import { Position } from "@/types/position"; import { divideByPrecision } from "@/ui/utils/utils"; -import { ID, RealmLevels, StructureType, type HexPosition } from "@bibliothecadao/eternum"; +import { ClientComponents, ID, RealmLevels, StructureType, type HexPosition } from "@bibliothecadao/eternum"; import { Component, ComponentValue, diff --git a/client/apps/game/src/three/systems/types.ts b/client/apps/game/src/three/systems/types.ts index afef4f0302..100b8b49d3 100644 --- a/client/apps/game/src/three/systems/types.ts +++ b/client/apps/game/src/three/systems/types.ts @@ -1,6 +1,6 @@ -import { Position } from "@/types/Position"; +import { StructureProgress } from "@/three/scenes/constants"; +import { Position } from "@/types/position"; import { ID, StructureType, type HexPosition } from "@bibliothecadao/eternum"; -import { StructureProgress } from "../scenes/constants"; export type ArmySystemUpdate = { entityId: ID; diff --git a/client/apps/game/src/types/index.ts b/client/apps/game/src/types/index.ts index 3e3d33a455..e2f029aae8 100644 --- a/client/apps/game/src/types/index.ts +++ b/client/apps/game/src/types/index.ts @@ -1,6 +1,6 @@ +import { Position } from "@/types/position"; import { ID, StructureType } from "@bibliothecadao/eternum"; import * as THREE from "three"; -import { Position } from "./Position"; export enum SceneName { WorldMap = "map", diff --git a/client/apps/game/src/types/Position.ts b/client/apps/game/src/types/position.ts similarity index 100% rename from client/apps/game/src/types/Position.ts rename to client/apps/game/src/types/position.ts diff --git a/client/apps/game/src/ui/components/bank/AddLiquidity.tsx b/client/apps/game/src/ui/components/bank/add-liquidity.tsx similarity index 86% rename from client/apps/game/src/ui/components/bank/AddLiquidity.tsx rename to client/apps/game/src/ui/components/bank/add-liquidity.tsx index 5b191e3fd9..3606bdc066 100644 --- a/client/apps/game/src/ui/components/bank/AddLiquidity.tsx +++ b/client/apps/game/src/ui/components/bank/add-liquidity.tsx @@ -1,16 +1,16 @@ -import { useDojo } from "@/hooks/context/DojoContext"; -import { useEntities } from "@/hooks/helpers/useEntities"; -import { useResourceBalance } from "@/hooks/helpers/useResources"; -import { useIsResourcesLocked } from "@/hooks/helpers/useStructures"; -import Button from "@/ui/elements/Button"; -import { ResourceCost } from "@/ui/elements/ResourceCost"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { usePlayerStructures } from "@/hooks/helpers/use-entities"; +import { useIsResourcesLocked } from "@/hooks/helpers/use-structures"; +import { ConfirmationPopup } from "@/ui/components/bank/confirmation-popup"; +import { LiquidityResourceRow } from "@/ui/components/bank/liquidity-resource-row"; +import { LiquidityTableHeader } from "@/ui/components/bank/liquidity-table"; +import { ResourceBar } from "@/ui/components/bank/resource-bar"; +import Button from "@/ui/elements/button"; +import { ResourceCost } from "@/ui/elements/resource-cost"; import { divideByPrecision, multiplyByPrecision } from "@/ui/utils/utils"; +import { getBalance } from "@/utils/resources"; import { ContractAddress, ID, MarketManager, ResourcesIds, resources } from "@bibliothecadao/eternum"; import { useEffect, useMemo, useState } from "react"; -import { ConfirmationPopup } from "./ConfirmationPopup"; -import { LiquidityResourceRow } from "./LiquidityResourceRow"; -import { LiquidityTableHeader } from "./LiquidityTable"; -import { ResourceBar } from "./ResourceBar"; const AddLiquidity = ({ bankEntityId, @@ -26,11 +26,9 @@ const AddLiquidity = ({ setup, } = useDojo(); - const { getBalance } = useResourceBalance(); + const playerStructures = usePlayerStructures(ContractAddress(account.address)); - const { playerStructures } = useEntities(); - - const playerStructureIds = playerStructures().map((structure) => structure.entity_id); + const playerStructureIds = playerStructures.map((structure) => structure.entity_id); const [isLoading, setIsLoading] = useState(false); const [resourceId, setResourceId] = useState(ResourcesIds.Wood); @@ -63,8 +61,8 @@ const AddLiquidity = ({ } }, [resourceAmount]); - const lordsBalance = getBalance(entityId, Number(ResourcesIds.Lords)).balance; - const resourceBalance = getBalance(entityId, Number(resourceId)).balance; + const lordsBalance = getBalance(entityId, Number(ResourcesIds.Lords), setup.components).balance; + const resourceBalance = getBalance(entityId, Number(resourceId), setup.components).balance; const hasEnough = lordsBalance >= multiplyByPrecision(lordsAmount) && resourceBalance >= multiplyByPrecision(resourceAmount); diff --git a/client/apps/game/src/ui/components/bank/BankList.tsx b/client/apps/game/src/ui/components/bank/bank-list.tsx similarity index 90% rename from client/apps/game/src/ui/components/bank/BankList.tsx rename to client/apps/game/src/ui/components/bank/bank-list.tsx index 61bcbce44f..20df499c05 100644 --- a/client/apps/game/src/ui/components/bank/BankList.tsx +++ b/client/apps/game/src/ui/components/bank/bank-list.tsx @@ -1,12 +1,12 @@ -import { useDojo } from "@/hooks/context/DojoContext"; +import { useDojo } from "@/hooks/context/dojo-context"; +import AddLiquidity from "@/ui/components/bank/add-liquidity"; +import { LiquidityTable } from "@/ui/components/bank/liquidity-table"; +import { ResourceSwap } from "@/ui/components/bank/swap"; import { Tabs } from "@/ui/elements/tab"; import { ID } from "@bibliothecadao/eternum"; import { getComponentValue } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { useMemo, useState } from "react"; -import AddLiquidity from "./AddLiquidity"; -import { LiquidityTable } from "./LiquidityTable"; -import { ResourceSwap } from "./Swap"; type BankListProps = { bankEntityId: ID; diff --git a/client/apps/game/src/ui/components/bank/ConfirmationPopup.tsx b/client/apps/game/src/ui/components/bank/confirmation-popup.tsx similarity index 97% rename from client/apps/game/src/ui/components/bank/ConfirmationPopup.tsx rename to client/apps/game/src/ui/components/bank/confirmation-popup.tsx index 3b5fa3b5d9..53e894a448 100644 --- a/client/apps/game/src/ui/components/bank/ConfirmationPopup.tsx +++ b/client/apps/game/src/ui/components/bank/confirmation-popup.tsx @@ -1,4 +1,4 @@ -import Button from "@/ui/elements/Button"; +import Button from "@/ui/elements/button"; import { X } from "lucide-react"; import React from "react"; diff --git a/client/apps/game/src/ui/components/bank/LiquidityResourceRow.tsx b/client/apps/game/src/ui/components/bank/liquidity-resource-row.tsx similarity index 96% rename from client/apps/game/src/ui/components/bank/LiquidityResourceRow.tsx rename to client/apps/game/src/ui/components/bank/liquidity-resource-row.tsx index 2eaf2da90b..6009b973ba 100644 --- a/client/apps/game/src/ui/components/bank/LiquidityResourceRow.tsx +++ b/client/apps/game/src/ui/components/bank/liquidity-resource-row.tsx @@ -1,15 +1,15 @@ import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useTravel } from "@/hooks/helpers/useTravel"; -import Button from "@/ui/elements/Button"; -import { ResourceCost } from "@/ui/elements/ResourceCost"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useTravel } from "@/hooks/helpers/use-travel"; +import { ConfirmationPopup } from "@/ui/components/bank/confirmation-popup"; +import { TravelInfo } from "@/ui/components/resources/travel-info"; +import Button from "@/ui/elements/button"; +import { ResourceCost } from "@/ui/elements/resource-cost"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { divideByPrecision, formatNumber, getEntityIdFromKeys } from "@/ui/utils/utils"; import { ContractAddress, EntityType, ID, MarketManager, ResourcesIds, resources } from "@bibliothecadao/eternum"; import { useComponentValue } from "@dojoengine/react"; import React, { useCallback, useMemo, useState } from "react"; -import { TravelInfo } from "../resources/TravelInfo"; -import { ConfirmationPopup } from "./ConfirmationPopup"; type LiquidityResourceRowProps = { playerStructureIds: ID[]; diff --git a/client/apps/game/src/ui/components/bank/LiquidityTable.tsx b/client/apps/game/src/ui/components/bank/liquidity-table.tsx similarity index 78% rename from client/apps/game/src/ui/components/bank/LiquidityTable.tsx rename to client/apps/game/src/ui/components/bank/liquidity-table.tsx index 31328bcce4..9558bef61c 100644 --- a/client/apps/game/src/ui/components/bank/LiquidityTable.tsx +++ b/client/apps/game/src/ui/components/bank/liquidity-table.tsx @@ -1,7 +1,8 @@ -import { useEntities } from "@/hooks/helpers/useEntities"; -import { ID, RESOURCE_TIERS, ResourcesIds, resources } from "@bibliothecadao/eternum"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { usePlayerStructures } from "@/hooks/helpers/use-entities"; +import { LiquidityResourceRow } from "@/ui/components/bank/liquidity-resource-row"; +import { ContractAddress, ID, RESOURCE_TIERS, ResourcesIds, resources } from "@bibliothecadao/eternum"; import { useState } from "react"; -import { LiquidityResourceRow } from "./LiquidityResourceRow"; type LiquidityTableProps = { bankEntityId: ID | undefined; @@ -20,6 +21,10 @@ export const LiquidityTableHeader = () => ( ); export const LiquidityTable = ({ bankEntityId, entity_id }: LiquidityTableProps) => { + const { + account: { account }, + } = useDojo(); + const [searchTerm, setSearchTerm] = useState(""); if (!bankEntityId) { @@ -37,9 +42,9 @@ export const LiquidityTable = ({ bankEntityId, entity_id }: LiquidityTableProps) ); }); - const { playerStructures } = useEntities(); + const playerStructures = usePlayerStructures(ContractAddress(account.address)); - const playerStructureIds = playerStructures().map((structure) => structure.entity_id); + const playerStructureIds = playerStructures.map((structure) => structure.entity_id); return (
diff --git a/client/apps/game/src/ui/components/bank/ResourceBar.tsx b/client/apps/game/src/ui/components/bank/resource-bar.tsx similarity index 89% rename from client/apps/game/src/ui/components/bank/ResourceBar.tsx rename to client/apps/game/src/ui/components/bank/resource-bar.tsx index b07a1402bf..36014bab60 100644 --- a/client/apps/game/src/ui/components/bank/ResourceBar.tsx +++ b/client/apps/game/src/ui/components/bank/resource-bar.tsx @@ -1,12 +1,13 @@ -import { useResourceBalance } from "@/hooks/helpers/useResources"; -import { NumberInput } from "@/ui/elements/NumberInput"; -import { ResourceCost } from "@/ui/elements/ResourceCost"; -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/ui/elements/Select"; -import TextInput from "@/ui/elements/TextInput"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { HintSection } from "@/ui/components/hints/hint-modal"; +import { NumberInput } from "@/ui/elements/number-input"; +import { ResourceCost } from "@/ui/elements/resource-cost"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/ui/elements/select"; +import TextInput from "@/ui/elements/text-input"; import { divideByPrecision, formatNumber } from "@/ui/utils/utils"; +import { getBalance } from "@/utils/resources"; import { ID, Resources, ResourcesIds, findResourceById, findResourceIdByTrait } from "@bibliothecadao/eternum"; import { memo, useEffect, useRef, useState } from "react"; -import { HintSection } from "../hints/HintModal"; export const ResourceBar = memo( ({ @@ -34,7 +35,7 @@ export const ResourceBar = memo( onBlur?: () => void; // New prop max?: number; }) => { - const { getBalance } = useResourceBalance(); + const dojo = useDojo(); const [selectedResourceBalance, setSelectedResourceBalance] = useState(0); const [searchInput, setSearchInput] = useState(""); @@ -43,7 +44,9 @@ export const ResourceBar = memo( const inputRef = useRef(null); useEffect(() => { - setSelectedResourceBalance(divideByPrecision(getBalance(entityId, Number(resourceId)).balance)); + setSelectedResourceBalance( + divideByPrecision(getBalance(entityId, Number(resourceId), dojo.setup.components).balance), + ); }, [resourceId, getBalance, entityId]); const handleResourceChange = (trait: string) => { @@ -145,7 +148,7 @@ export const ResourceBar = memo( diff --git a/client/apps/game/src/ui/components/bank/Swap.tsx b/client/apps/game/src/ui/components/bank/swap.tsx similarity index 93% rename from client/apps/game/src/ui/components/bank/Swap.tsx rename to client/apps/game/src/ui/components/bank/swap.tsx index 5a0678a821..eb6fe63b33 100644 --- a/client/apps/game/src/ui/components/bank/Swap.tsx +++ b/client/apps/game/src/ui/components/bank/swap.tsx @@ -1,14 +1,16 @@ import { ReactComponent as Refresh } from "@/assets/icons/common/refresh.svg"; import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useResourceBalance } from "@/hooks/helpers/useResources"; -import { useIsResourcesLocked, useStructures } from "@/hooks/helpers/useStructures"; -import { useTravel } from "@/hooks/helpers/useTravel"; -import { soundSelector, useUiSounds } from "@/hooks/useUISound"; -import { ResourceBar } from "@/ui/components/bank/ResourceBar"; -import Button from "@/ui/elements/Button"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useIsResourcesLocked, useStructures } from "@/hooks/helpers/use-structures"; +import { useTravel } from "@/hooks/helpers/use-travel"; +import { soundSelector, useUiSounds } from "@/hooks/use-ui-sound"; +import { ConfirmationPopup } from "@/ui/components/bank/confirmation-popup"; +import { ResourceBar } from "@/ui/components/bank/resource-bar"; +import { TravelInfo } from "@/ui/components/resources/travel-info"; +import Button from "@/ui/elements/button"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { divideByPrecision, formatNumber, multiplyByPrecision } from "@/ui/utils/utils"; +import { getBalance } from "@/utils/resources"; import { ContractAddress, DONKEY_ENTITY_TYPE, @@ -20,8 +22,6 @@ import { resources, } from "@bibliothecadao/eternum"; import { useCallback, useEffect, useMemo, useState } from "react"; -import { TravelInfo } from "../resources/TravelInfo"; -import { ConfirmationPopup } from "./ConfirmationPopup"; export const ResourceSwap = ({ bankEntityId, @@ -37,7 +37,6 @@ export const ResourceSwap = ({ setup, } = useDojo(); - const { getBalance } = useResourceBalance(); const { computeTravelTime } = useTravel(); const { play: playLordsSound } = useUiSounds(soundSelector.addLords); @@ -76,8 +75,14 @@ export const ResourceSwap = ({ } }, [marketManager.resourceId]); - const lordsBalance = useMemo(() => getBalance(entityId, ResourcesIds.Lords).balance, [entityId, getBalance]); - const resourceBalance = useMemo(() => getBalance(entityId, resourceId).balance, [entityId, resourceId, getBalance]); + const lordsBalance = useMemo( + () => getBalance(entityId, ResourcesIds.Lords, setup.components).balance, + [entityId, getBalance], + ); + const resourceBalance = useMemo( + () => getBalance(entityId, resourceId, setup.components).balance, + [entityId, resourceId, getBalance], + ); const hasEnough = useMemo(() => { const amount = isBuyResource ? lordsAmount + ownerFee : resourceAmount; diff --git a/client/apps/game/src/ui/components/battles/BattleListItem.tsx b/client/apps/game/src/ui/components/battles/battle-list-item.tsx similarity index 74% rename from client/apps/game/src/ui/components/battles/BattleListItem.tsx rename to client/apps/game/src/ui/components/battles/battle-list-item.tsx index 2d056c4ba9..fd51c85895 100644 --- a/client/apps/game/src/ui/components/battles/BattleListItem.tsx +++ b/client/apps/game/src/ui/components/battles/battle-list-item.tsx @@ -1,29 +1,25 @@ import { ReactComponent as Inventory } from "@/assets/icons/common/bagpack.svg"; import { ReactComponent as Sword } from "@/assets/icons/common/cross-swords.svg"; import { ReactComponent as Eye } from "@/assets/icons/common/eye.svg"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { BattleInfo } from "@/hooks/helpers/battles/useBattles"; -import { useEntitiesUtils } from "@/hooks/helpers/useEntities"; -import useUIStore from "@/hooks/store/useUIStore"; -import useNextBlockTimestamp from "@/hooks/useNextBlockTimestamp"; -import { ArmyInfo, BattleManager } from "@bibliothecadao/eternum"; -import { getComponentValue, HasValue, runQuery } from "@dojoengine/recs"; +import { useDojo } from "@/hooks/context/dojo-context"; +import useUIStore from "@/hooks/store/use-ui-store"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; +import { ViewOnMapIcon } from "@/ui/components/military/army-management-card"; +import { TroopDisplay } from "@/ui/components/military/troop-chip"; +import { InventoryResources } from "@/ui/components/resources/inventory-resources"; +import { getAddressNameFromEntity } from "@/utils/entities"; +import { ArmyInfo, BattleManager, ID } from "@bibliothecadao/eternum"; import React, { useMemo, useState } from "react"; -import { ViewOnMapIcon } from "../military/ArmyManagementCard"; -import { TroopDisplay } from "../military/TroopChip"; -import { InventoryResources } from "../resources/InventoryResources"; type BattleListItemProps = { - battle: BattleInfo; - ownArmySelected: ArmyInfo | undefined; + battleEntityId: ID; + ownArmySelected?: ArmyInfo; showCompass?: boolean; }; -export const BattleListItem = ({ battle, ownArmySelected, showCompass = false }: BattleListItemProps) => { +export const BattleListItem = ({ battleEntityId, ownArmySelected, showCompass = false }: BattleListItemProps) => { const dojo = useDojo(); - const { getAddressNameFromEntity } = useEntitiesUtils(); - const { nextBlockTimestamp } = useNextBlockTimestamp(); const [showInventory, setShowInventory] = useState(false); @@ -32,22 +28,25 @@ export const BattleListItem = ({ battle, ownArmySelected, showCompass = false }: const setTooltip = useUIStore((state) => state.setTooltip); const battleManager = useMemo( - () => new BattleManager(dojo.setup.components, dojo.network.provider, battle.entity_id), - [battle], + () => new BattleManager(dojo.setup.components, dojo.network.provider, battleEntityId), + [battleEntityId], ); const updatedBattle = useMemo(() => { const updatedBattle = battleManager.getUpdatedBattle(nextBlockTimestamp!); return updatedBattle; - }, [nextBlockTimestamp]); + }, [nextBlockTimestamp, battleManager]); const armiesInBattle = useMemo(() => { - const armiesEntityIds = runQuery([ - HasValue(dojo.setup.components.Army, { battle_id: battleManager.battleEntityId }), - ]); - return Array.from(armiesEntityIds).map( - (entityId) => getComponentValue(dojo.setup.components.Army, entityId)!.entity_id, - ); + return battleManager.getArmiesInBattle(); + }, [battleManager]); + + const escrowIds = useMemo(() => { + return battleManager.getEscrowIds(); + }, [battleManager]); + + const battlePosition = useMemo(() => { + return battleManager.getPosition(); }, [battleManager]); const buttons = useMemo(() => { @@ -100,13 +99,13 @@ export const BattleListItem = ({ battle, ownArmySelected, showCompass = false }:
- {showCompass && } + {showCompass && battlePosition && }
setTooltip({ content: armiesInBattle.map((armyEntityId) => { - const name = getAddressNameFromEntity(armyEntityId); + const name = getAddressNameFromEntity(armyEntityId, dojo.setup.components); return
{name ? name : "Bandit"}
; }), position: "top", @@ -128,12 +127,12 @@ export const BattleListItem = ({ battle, ownArmySelected, showCompass = false }: {showInventory && (
diff --git a/client/apps/game/src/ui/components/cityview/realm/SettleRealmComponent.tsx b/client/apps/game/src/ui/components/cityview/realm/settle-realm-component.tsx similarity index 56% rename from client/apps/game/src/ui/components/cityview/realm/SettleRealmComponent.tsx rename to client/apps/game/src/ui/components/cityview/realm/settle-realm-component.tsx index c1aeb870c4..05117fac0f 100644 --- a/client/apps/game/src/ui/components/cityview/realm/SettleRealmComponent.tsx +++ b/client/apps/game/src/ui/components/cityview/realm/settle-realm-component.tsx @@ -1,99 +1,14 @@ import { ReactComponent as CheckboxChecked } from "@/assets/icons/checkbox-checked.svg"; import { ReactComponent as CheckboxUnchecked } from "@/assets/icons/checkbox-unchecked.svg"; - -import { useDojo } from "@/hooks/context/DojoContext"; -import { RealmInfo, usePlayerRealms } from "@/hooks/helpers/useRealm"; -import Button from "@/ui/elements/Button"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; -import { unpackResources } from "@/ui/utils/packedData"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; +import { unpackResources } from "@/ui/utils/packed-data"; import { getRealm } from "@/ui/utils/realms"; -import { RealmInterface, ResourcesIds } from "@bibliothecadao/eternum"; +import { getSeasonPassAddress } from "@/utils/addresses"; +import { RealmInfo, RealmInterface, ResourcesIds } from "@bibliothecadao/eternum"; import { gql } from "graphql-request"; -import { useEffect, useState } from "react"; import { addAddressPadding } from "starknet"; import { env } from "../../../../../env"; -const SettleRealmComponent = ({ setSettledRealmId }: { setSettledRealmId: (id: number) => void }) => { - const { - account: { account }, - setup: { - systemCalls: { create_multiple_realms }, - }, - } = useDojo(); - - const [loading, setLoading] = useState(false); - const [selectedRealms, setSelectedRealms] = useState([]); - - const [seasonPassRealms, setSeasonPassRealms] = useState([]); - - const settleRealms = async (realmIds: number[]) => { - setLoading(true); - try { - const res = await create_multiple_realms({ - realm_ids: realmIds, - owner: account.address, - frontend: env.VITE_PUBLIC_CLIENT_FEE_RECIPIENT, - signer: account, - season_pass_address: env.VITE_SEASON_PASS_ADDRESS, - }); - } catch (error) { - console.error("Error settling realms:", error); - setLoading(false); - } - }; - - const realms = usePlayerRealms(); - - useEffect(() => { - getUnusedSeasonPasses(account.address, realms).then((unsettledSeasonPassRealms) => { - if (unsettledSeasonPassRealms.length !== seasonPassRealms.length) { - setSeasonPassRealms(unsettledSeasonPassRealms); - setLoading(false); - } - }); - }, [loading, realms]); - - return ( -
-
-

Settle Realms

-
- -
-
- {seasonPassRealms.map((realm) => ( - - setSelectedRealms( - selected ? [...selectedRealms, realm.realmId] : selectedRealms.filter((id) => id !== realm.realmId), - ) - } - className={`col-start-1`} - /> - ))} -
-
- -
-
-
- ); -}; - const querySeasonPasses = async (accountAddress: string) => { const getAccountTokens = gql` query getAccountTokens($accountAddress: String!) { @@ -191,12 +106,13 @@ export const SeasonPassRealm = ({ export const getUnusedSeasonPasses = async (accountAddress: string, realms: RealmInfo[]) => { const balances = await querySeasonPasses(accountAddress); + const seasonPassAddress = await getSeasonPassAddress(); return balances?.tokenBalances?.edges ?.filter( (token: { node: { tokenMetadata: { __typename: string; contractAddress?: string } } }) => token?.node?.tokenMetadata.__typename == "ERC721__Token" && addAddressPadding(token.node.tokenMetadata.contractAddress ?? "0x0") === - addAddressPadding(env.VITE_SEASON_PASS_ADDRESS ?? "0x0"), + addAddressPadding(seasonPassAddress ?? "0x0"), ) .map((token: { node: { tokenMetadata: { tokenId: string } } }) => { const realmsResourcesPacked = getRealm(Number(token.node.tokenMetadata.tokenId)); diff --git a/client/apps/game/src/ui/components/construction/SelectPreviewBuilding.tsx b/client/apps/game/src/ui/components/construction/select-preview-building.tsx similarity index 94% rename from client/apps/game/src/ui/components/construction/SelectPreviewBuilding.tsx rename to client/apps/game/src/ui/components/construction/select-preview-building.tsx index 4ae6c12960..d8c9d70cca 100644 --- a/client/apps/game/src/ui/components/construction/SelectPreviewBuilding.tsx +++ b/client/apps/game/src/ui/components/construction/select-preview-building.tsx @@ -1,19 +1,16 @@ -import { ReactComponent as InfoIcon } from "@/assets/icons/common/info.svg"; -import { ClientComponents } from "@/dojo/createClientComponents"; import { configManager } from "@/dojo/setup"; -import { DojoResult, useDojo } from "@/hooks/context/DojoContext"; -import { useGetRealm } from "@/hooks/helpers/useRealm"; -import { useResourceBalance } from "@/hooks/helpers/useResources"; -import useUIStore from "@/hooks/store/useUIStore"; -import { usePlayResourceSound } from "@/hooks/useUISound"; +import { DojoResult, useDojo } from "@/hooks/context/dojo-context"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { usePlayResourceSound } from "@/hooks/use-ui-sound"; import { ResourceMiningTypes } from "@/types"; +import { HintSection } from "@/ui/components/hints/hint-modal"; import { BUILDING_IMAGES_PATH } from "@/ui/config"; -import { Headline } from "@/ui/elements/Headline"; -import { HintModalButton } from "@/ui/elements/HintModalButton"; -import { ResourceCost } from "@/ui/elements/ResourceCost"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { Headline } from "@/ui/elements/headline"; +import { HintModalButton } from "@/ui/elements/hint-modal-button"; +import { ResourceCost } from "@/ui/elements/resource-cost"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { Tabs } from "@/ui/elements/tab"; -import { unpackResources } from "@/ui/utils/packedData"; +import { unpackResources } from "@/ui/utils/packed-data"; import { hasEnoughPopulationForBuilding } from "@/ui/utils/realms"; import { ResourceIdToMiningType, @@ -23,10 +20,13 @@ import { gramToKg, isResourceProductionBuilding, } from "@/ui/utils/utils"; +import { getRealmInfo } from "@/utils/realm"; +import { getBalance } from "@/utils/resources"; import { BuildingEnumToString, BuildingType, CapacityConfigCategory, + ClientComponents, ID, ResourceCost as ResourceCostType, ResourcesIds, @@ -35,8 +35,8 @@ import { } from "@bibliothecadao/eternum"; import { Component, getComponentValue } from "@dojoengine/recs"; import clsx from "clsx"; +import { InfoIcon } from "lucide-react"; import React, { useMemo, useState } from "react"; -import { HintSection } from "../hints/HintModal"; export const SelectPreviewBuildingMenu = ({ className, entityId }: { className?: string; entityId: number }) => { const dojo = useDojo(); @@ -44,9 +44,8 @@ export const SelectPreviewBuildingMenu = ({ className, entityId }: { className?: const setPreviewBuilding = useUIStore((state) => state.setPreviewBuilding); const previewBuilding = useUIStore((state) => state.previewBuilding); - const { realm } = useGetRealm(entityId); + const realm = getRealmInfo(getEntityIdFromKeys([BigInt(entityId)]), dojo.setup.components); - const { getBalance } = useResourceBalance(); const { playResourceSound } = usePlayResourceSound(); const buildingTypes = Object.keys(BuildingType).filter( @@ -75,7 +74,7 @@ export const SelectPreviewBuildingMenu = ({ className, entityId }: { className?: const checkBalance = (cost: any) => Object.keys(cost).every((resourceId) => { const resourceCost = cost[Number(resourceId)]; - const balance = getBalance(entityId, resourceCost.resource); + const balance = getBalance(entityId, resourceCost.resource, dojo.setup.components); return divideByPrecision(balance.balance) >= resourceCost.amount; }); @@ -234,7 +233,7 @@ export const SelectPreviewBuildingMenu = ({ className, entityId }: { className?: const hasBalance = checkBalance(buildingCost); const hasEnoughPopulation = hasEnoughPopulationForBuilding(realm, building); - const canBuild = hasBalance && realm.hasCapacity && hasEnoughPopulation; + const canBuild = hasBalance && realm?.hasCapacity && hasEnoughPopulation; const isBarracks = building === BuildingType.Barracks; const isArcheryRange = building === BuildingType.ArcheryRange; @@ -274,7 +273,7 @@ export const SelectPreviewBuildingMenu = ({ className, entityId }: { className?: ), }, ], - [realm, entityId, realmResourceIds, selectedTab, previewBuilding, playResourceSound, realm.population], + [realm, entityId, realmResourceIds, selectedTab, previewBuilding, playResourceSound], ); return ( @@ -408,8 +407,6 @@ export const ResourceInfo = ({ const amountProducedPerTick = divideByPrecision(configManager.getResourceOutputs(resourceId)); - const { getBalance } = useResourceBalance(); - const consumedBy = useMemo(() => { return getConsumedBy(resourceId); }, [resourceId]); @@ -461,7 +458,7 @@ export const ResourceInfo = ({
consumed per/s
{Object.keys(cost).map((resourceId) => { - const balance = getBalance(entityId || 0, cost[Number(resourceId)].resource); + const balance = getBalance(entityId || 0, cost[Number(resourceId)].resource, dojo.setup.components); return ( -
One Time Cost
+
Building Creation Cost
{Object.keys(buildingCost).map((resourceId, index) => { - const balance = getBalance(entityId || 0, buildingCost[Number(resourceId)].resource); + const balance = getBalance(entityId || 0, buildingCost[Number(resourceId)].resource, dojo.setup.components); return ( { return getConsumedBy(resourceProduced); }, [resourceProduced]); @@ -601,7 +596,11 @@ export const BuildingInfo = ({
{resourceProduced !== 0 && Object.keys(ongoingCost).map((resourceId, index) => { - const balance = getBalance(entityId || 0, ongoingCost[Number(resourceId)].resource); + const balance = getBalance( + entityId || 0, + ongoingCost[Number(resourceId)].resource, + dojo.setup.components, + ); return ( -
One Time Cost
+
Building Creation Cost
{Object.keys(buildingCost).map((resourceId, index) => { - const balance = getBalance(entityId || 0, buildingCost[Number(resourceId)].resource); + const balance = getBalance( + entityId || 0, + buildingCost[Number(resourceId)].resource, + dojo.setup.components, + ); return ( = { [EntityType.DONKEY]: "🫏", @@ -29,23 +28,20 @@ type EntityProps = { arrival: ArrivalInfo; } & React.HTMLAttributes; -const CACHE_KEY = "inventory-resources-sync"; -const CACHE_DURATION = 2 * 60 * 1000; // 2 minutes in milliseconds - export const EntityArrival = ({ arrival, ...props }: EntityProps) => { const dojo = useDojo(); - const { getEntityInfo, getEntityName } = useEntitiesUtils(); - const { getResourcesFromBalance } = useResourcesUtils(); + const components = dojo.setup.components; + const { nextBlockTimestamp } = useNextBlockTimestamp(); - const { getArmy } = getArmyByEntityId(); + const { getArmy } = useGetArmyByEntityId(); const weight = useComponentValue(dojo.setup.components.Weight, getEntityIdFromKeys([BigInt(arrival.entityId)])); - const entity = getEntityInfo(arrival.entityId); + const entity = getEntityInfo(arrival.entityId, ContractAddress(dojo.account.account.address), dojo.setup.components); const entityResources = useMemo(() => { - return getResourcesFromBalance(arrival.entityId); + return getResourcesFromBalance(arrival.entityId, components); }, [weight]); const army = useMemo(() => getArmy(arrival.entityId), [arrival.entityId, entity.resources]); @@ -54,12 +50,12 @@ export const EntityArrival = ({ arrival, ...props }: EntityProps) => { return nextBlockTimestamp ? ( arrival.arrivesAt <= nextBlockTimestamp ? (
- Waiting to offload to {getEntityName(arrival.recipientEntityId)} + Waiting to offload to {getEntityName(arrival.recipientEntityId, components)}
) : (
Arriving in {formatTime(Number(entity.arrivalTime) - nextBlockTimestamp)} to{" "} - {getEntityName(arrival.recipientEntityId)} + {getEntityName(arrival.recipientEntityId, components)}
) ) : null; diff --git a/client/apps/game/src/ui/components/fragmentMines/FragmentMinePanel.tsx b/client/apps/game/src/ui/components/fragmentMines/fragment-mine-panel.tsx similarity index 85% rename from client/apps/game/src/ui/components/fragmentMines/FragmentMinePanel.tsx rename to client/apps/game/src/ui/components/fragmentMines/fragment-mine-panel.tsx index 31e7450988..a5d9735591 100644 --- a/client/apps/game/src/ui/components/fragmentMines/FragmentMinePanel.tsx +++ b/client/apps/game/src/ui/components/fragmentMines/fragment-mine-panel.tsx @@ -1,13 +1,14 @@ -import { useDojo } from "@/hooks/context/DojoContext"; -import { useEntitiesUtils } from "@/hooks/helpers/useEntities"; -import Button from "@/ui/elements/Button"; -import TextInput from "@/ui/elements/TextInput"; +import { useDojo } from "@/hooks/context/dojo-context"; +import Button from "@/ui/elements/button"; +import TextInput from "@/ui/elements/text-input"; +import { getAddressNameFromEntity } from "@/utils/entities"; import { MAX_NAME_LENGTH } from "@bibliothecadao/eternum"; import { useState } from "react"; export const FragmentMinePanel = ({ entity }: any) => { const { account: { account }, + setup: { components }, network: { provider }, } = useDojo(); @@ -15,8 +16,7 @@ export const FragmentMinePanel = ({ entity }: any) => { const [editName, setEditName] = useState(false); const [naming, setNaming] = useState(""); - const { getAddressNameFromEntity } = useEntitiesUtils(); - const ownerName = getAddressNameFromEntity(entity.entity_id); + const ownerName = getAddressNameFromEntity(entity.entity_id, components); return (
diff --git a/client/apps/game/src/ui/components/hints/Buildings.tsx b/client/apps/game/src/ui/components/hints/buildings.tsx similarity index 96% rename from client/apps/game/src/ui/components/hints/Buildings.tsx rename to client/apps/game/src/ui/components/hints/buildings.tsx index c9c5433322..e3dfe0808b 100644 --- a/client/apps/game/src/ui/components/hints/Buildings.tsx +++ b/client/apps/game/src/ui/components/hints/buildings.tsx @@ -1,7 +1,7 @@ import { configManager } from "@/dojo/setup"; import { BUILDING_IMAGES_PATH } from "@/ui/config"; -import { Headline } from "@/ui/elements/Headline"; -import { ResourceCost } from "@/ui/elements/ResourceCost"; +import { Headline } from "@/ui/elements/headline"; +import { ResourceCost } from "@/ui/elements/resource-cost"; import { BuildingEnumToString, BuildingType } from "@bibliothecadao/eternum"; import { useMemo } from "react"; diff --git a/client/apps/game/src/ui/components/hints/Combat.tsx b/client/apps/game/src/ui/components/hints/combat.tsx similarity index 98% rename from client/apps/game/src/ui/components/hints/Combat.tsx rename to client/apps/game/src/ui/components/hints/combat.tsx index 2e69249978..b2bc46c8c2 100644 --- a/client/apps/game/src/ui/components/hints/Combat.tsx +++ b/client/apps/game/src/ui/components/hints/combat.tsx @@ -1,6 +1,6 @@ import { configManager } from "@/dojo/setup"; -import { Headline } from "@/ui/elements/Headline"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { Headline } from "@/ui/elements/headline"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { ResourcesIds } from "@bibliothecadao/eternum"; import { tableOfContents } from "./utils"; diff --git a/client/apps/game/src/ui/components/hints/ExplorationTable.tsx b/client/apps/game/src/ui/components/hints/exploration-table.tsx similarity index 99% rename from client/apps/game/src/ui/components/hints/ExplorationTable.tsx rename to client/apps/game/src/ui/components/hints/exploration-table.tsx index 8a06b1c140..e9e7936d92 100644 --- a/client/apps/game/src/ui/components/hints/ExplorationTable.tsx +++ b/client/apps/game/src/ui/components/hints/exploration-table.tsx @@ -1,5 +1,5 @@ import { configManager } from "@/dojo/setup"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { ResourcesIds } from "@bibliothecadao/eternum"; export const ExplorationTable = () => { diff --git a/client/apps/game/src/ui/components/hints/GettingStarted.tsx b/client/apps/game/src/ui/components/hints/getting-started.tsx similarity index 97% rename from client/apps/game/src/ui/components/hints/GettingStarted.tsx rename to client/apps/game/src/ui/components/hints/getting-started.tsx index 482d517173..02e8e4ca42 100644 --- a/client/apps/game/src/ui/components/hints/GettingStarted.tsx +++ b/client/apps/game/src/ui/components/hints/getting-started.tsx @@ -1,5 +1,5 @@ import { configManager } from "@/dojo/setup"; -import { Headline } from "@/ui/elements/Headline"; +import { Headline } from "@/ui/elements/headline"; import { TickIds } from "@bibliothecadao/eternum"; import { tableOfContents } from "./utils"; diff --git a/client/apps/game/src/ui/components/hints/Guilds.tsx b/client/apps/game/src/ui/components/hints/guilds.tsx similarity index 100% rename from client/apps/game/src/ui/components/hints/Guilds.tsx rename to client/apps/game/src/ui/components/hints/guilds.tsx diff --git a/client/apps/game/src/ui/components/hints/HintModal.tsx b/client/apps/game/src/ui/components/hints/hint-modal.tsx similarity index 82% rename from client/apps/game/src/ui/components/hints/HintModal.tsx rename to client/apps/game/src/ui/components/hints/hint-modal.tsx index 2bbbc8e4fb..bf332b48d8 100644 --- a/client/apps/game/src/ui/components/hints/HintModal.tsx +++ b/client/apps/game/src/ui/components/hints/hint-modal.tsx @@ -1,17 +1,17 @@ import { useState } from "react"; -import { ModalContainer } from "../ModalContainer"; -import { Buildings } from "./Buildings"; -import { Combat } from "./Combat"; -import { GettingStarted } from "./GettingStarted"; -import { Guilds } from "./Guilds"; -import { Points } from "./Points"; -import { Realm } from "./Realm"; -import { Resources } from "./Resources"; -import { TheMap } from "./TheMap"; -import { TheWorld } from "./TheWorld"; -import { Trading } from "./Trading"; -import { Transfers } from "./Transfers"; -import { WorldStructures } from "./WorldStructures"; +import { ModalContainer } from "../modal-container"; +import { Buildings } from "./buildings"; +import { Combat } from "./combat"; +import { GettingStarted } from "./getting-started"; +import { Guilds } from "./guilds"; +import { Points } from "./points"; +import { Realm } from "./realm"; +import { Resources } from "./resources"; +import { TheMap } from "./the-map"; +import { TheWorld } from "./the-world"; +import { Trading } from "./trading"; +import { Transfers } from "./transfers"; +import { WorldStructures } from "./world-structures"; export enum HintSection { TheWorld = "The World", diff --git a/client/apps/game/src/ui/components/hints/Points.tsx b/client/apps/game/src/ui/components/hints/points.tsx similarity index 100% rename from client/apps/game/src/ui/components/hints/Points.tsx rename to client/apps/game/src/ui/components/hints/points.tsx diff --git a/client/apps/game/src/ui/components/hints/Realm.tsx b/client/apps/game/src/ui/components/hints/realm.tsx similarity index 95% rename from client/apps/game/src/ui/components/hints/Realm.tsx rename to client/apps/game/src/ui/components/hints/realm.tsx index fef78b367c..6d3149f2c8 100644 --- a/client/apps/game/src/ui/components/hints/Realm.tsx +++ b/client/apps/game/src/ui/components/hints/realm.tsx @@ -1,6 +1,6 @@ import { configManager } from "@/dojo/setup"; -import { Headline } from "@/ui/elements/Headline"; -import { ResourceCost } from "@/ui/elements/ResourceCost"; +import { Headline } from "@/ui/elements/headline"; +import { ResourceCost } from "@/ui/elements/resource-cost"; import { LEVEL_DESCRIPTIONS, RealmLevels } from "@bibliothecadao/eternum"; import { useMemo } from "react"; diff --git a/client/apps/game/src/ui/components/hints/Resources.tsx b/client/apps/game/src/ui/components/hints/resources.tsx similarity index 88% rename from client/apps/game/src/ui/components/hints/Resources.tsx rename to client/apps/game/src/ui/components/hints/resources.tsx index 9721dcc3fb..c381c0f418 100644 --- a/client/apps/game/src/ui/components/hints/Resources.tsx +++ b/client/apps/game/src/ui/components/hints/resources.tsx @@ -1,9 +1,9 @@ import { configManager } from "@/dojo/setup"; -import { Headline } from "@/ui/elements/Headline"; -import { ResourceCost } from "@/ui/elements/ResourceCost"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { Headline } from "@/ui/elements/headline"; +import { ResourceCost } from "@/ui/elements/resource-cost"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { currencyFormat, gramToKg, multiplyByPrecision } from "@/ui/utils/utils"; -import { CapacityConfigCategory, EternumGlobalConfig, ResourcesIds, findResourceById } from "@bibliothecadao/eternum"; +import { CapacityConfigCategory, RESOURCE_PRECISION, ResourcesIds, findResourceById } from "@bibliothecadao/eternum"; import { useMemo } from "react"; import { tableOfContents } from "./utils"; @@ -35,7 +35,7 @@ export const Resources = () => { {` ${ gramToKg(configManager.getCapacityConfig(CapacityConfigCategory.Storehouse)) / - multiplyByPrecision(EternumGlobalConfig.resources.resourceMultiplier) + multiplyByPrecision(RESOURCE_PRECISION) }M capacity per resource type`} . Build more of them to increase storage. @@ -93,7 +93,7 @@ const ResourceTable = () => { {resourceTable.map((resource) => { - const decimals = resource.amount > EternumGlobalConfig.resources.resourcePrecision ? 0 : 2; + const decimals = resource.amount > RESOURCE_PRECISION ? 0 : 2; return ( diff --git a/client/apps/game/src/ui/components/hints/TheMap.tsx b/client/apps/game/src/ui/components/hints/the-map.tsx similarity index 87% rename from client/apps/game/src/ui/components/hints/TheMap.tsx rename to client/apps/game/src/ui/components/hints/the-map.tsx index 0431bc6323..007b7f7149 100644 --- a/client/apps/game/src/ui/components/hints/TheMap.tsx +++ b/client/apps/game/src/ui/components/hints/the-map.tsx @@ -1,5 +1,5 @@ -import { Headline } from "@/ui/elements/Headline"; -import { ExplorationTable } from "./ExplorationTable"; +import { ExplorationTable } from "@/ui/components/hints/exploration-table"; +import { Headline } from "@/ui/elements/headline"; import { tableOfContents } from "./utils"; export const TheMap = () => { diff --git a/client/apps/game/src/ui/components/hints/TheWorld.tsx b/client/apps/game/src/ui/components/hints/the-world.tsx similarity index 96% rename from client/apps/game/src/ui/components/hints/TheWorld.tsx rename to client/apps/game/src/ui/components/hints/the-world.tsx index 2cf47f24fd..37b8a5773a 100644 --- a/client/apps/game/src/ui/components/hints/TheWorld.tsx +++ b/client/apps/game/src/ui/components/hints/the-world.tsx @@ -1,4 +1,4 @@ -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; export const TheWorld = () => { const chapters = [ diff --git a/client/apps/game/src/ui/components/hints/Trading.tsx b/client/apps/game/src/ui/components/hints/trading.tsx similarity index 96% rename from client/apps/game/src/ui/components/hints/Trading.tsx rename to client/apps/game/src/ui/components/hints/trading.tsx index 9dbeaeeb7f..22a8deba3f 100644 --- a/client/apps/game/src/ui/components/hints/Trading.tsx +++ b/client/apps/game/src/ui/components/hints/trading.tsx @@ -1,4 +1,4 @@ -import { Headline } from "@/ui/elements/Headline"; +import { Headline } from "@/ui/elements/headline"; import { tableOfContents } from "./utils"; export const Trading = () => { diff --git a/client/apps/game/src/ui/components/hints/Transfers.tsx b/client/apps/game/src/ui/components/hints/transfers.tsx similarity index 98% rename from client/apps/game/src/ui/components/hints/Transfers.tsx rename to client/apps/game/src/ui/components/hints/transfers.tsx index 222ed06fc2..eedaa3be2d 100644 --- a/client/apps/game/src/ui/components/hints/Transfers.tsx +++ b/client/apps/game/src/ui/components/hints/transfers.tsx @@ -1,7 +1,7 @@ import { configManager } from "@/dojo/setup"; import { BUILDING_IMAGES_PATH } from "@/ui/config"; import { GRAMS_PER_KG } from "@/ui/constants"; -import { Headline } from "@/ui/elements/Headline"; +import { Headline } from "@/ui/elements/headline"; import { BuildingType, CapacityConfigCategory, ResourcesIds } from "@bibliothecadao/eternum"; import { tableOfContents } from "./utils"; diff --git a/client/apps/game/src/ui/components/hints/WorldStructures.tsx b/client/apps/game/src/ui/components/hints/world-structures.tsx similarity index 94% rename from client/apps/game/src/ui/components/hints/WorldStructures.tsx rename to client/apps/game/src/ui/components/hints/world-structures.tsx index d04f519dd0..404aca6134 100644 --- a/client/apps/game/src/ui/components/hints/WorldStructures.tsx +++ b/client/apps/game/src/ui/components/hints/world-structures.tsx @@ -1,7 +1,8 @@ import { configManager } from "@/dojo/setup"; -import { Headline } from "@/ui/elements/Headline"; -import { ResourceCost } from "@/ui/elements/ResourceCost"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { STRUCTURE_IMAGE_PATHS } from "@/ui/components/structures/construction/structure-construction-menu"; +import { Headline } from "@/ui/elements/headline"; +import { ResourceCost } from "@/ui/elements/resource-cost"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { formatTime } from "@/ui/utils/utils"; import { findResourceById, @@ -10,7 +11,6 @@ import { StructureType, } from "@bibliothecadao/eternum"; import { useMemo } from "react"; -import { STRUCTURE_IMAGE_PATHS } from "../structures/construction/StructureConstructionMenu"; import { tableOfContents } from "./utils"; export const WorldStructures = () => { diff --git a/client/apps/game/src/ui/components/hyperstructures/CoOwners.tsx b/client/apps/game/src/ui/components/hyperstructures/co-owners.tsx similarity index 91% rename from client/apps/game/src/ui/components/hyperstructures/CoOwners.tsx rename to client/apps/game/src/ui/components/hyperstructures/co-owners.tsx index 70e7bdac31..6068fe5bb6 100644 --- a/client/apps/game/src/ui/components/hyperstructures/CoOwners.tsx +++ b/client/apps/game/src/ui/components/hyperstructures/co-owners.tsx @@ -1,16 +1,16 @@ import { ReactComponent as Trash } from "@/assets/icons/common/trashcan.svg"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useGetAllPlayers } from "@/hooks/helpers/use-get-all-players"; -import { useRealm } from "@/hooks/helpers/useRealm"; -import { useStructureByEntityId } from "@/hooks/helpers/useStructures"; -import useUIStore from "@/hooks/store/useUIStore"; -import useNextBlockTimestamp from "@/hooks/useNextBlockTimestamp"; -import Button from "@/ui/elements/Button"; -import { NumberInput } from "@/ui/elements/NumberInput"; -import { SelectAddress } from "@/ui/elements/SelectAddress"; -import { SortButton, SortInterface } from "@/ui/elements/SortButton"; -import { SortPanel } from "@/ui/elements/SortPanel"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { usePlayers } from "@/hooks/helpers/use-players"; +import { useStructureByEntityId } from "@/hooks/helpers/use-structures"; +import useUIStore from "@/hooks/store/use-ui-store"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; +import Button from "@/ui/elements/button"; +import { NumberInput } from "@/ui/elements/number-input"; +import { SelectAddress } from "@/ui/elements/select-address"; +import { SortButton, SortInterface } from "@/ui/elements/sort-button"; +import { SortPanel } from "@/ui/elements/sort-panel"; import { displayAddress, formatTime } from "@/ui/utils/utils"; +import { getAddressName } from "@/utils/entities"; import { ContractAddress, HYPERSTRUCTURE_CONFIG_ID, ID } from "@bibliothecadao/eternum"; import { useComponentValue } from "@dojoengine/react"; import { getComponentValue } from "@dojoengine/recs"; @@ -54,10 +54,10 @@ const CoOwnersRows = ({ }) => { const { account: { account }, - setup: { - components: { Hyperstructure, HyperstructureConfig }, - }, + setup: { components }, } = useDojo(); + const { Hyperstructure, HyperstructureConfig } = components; + const setTooltip = useUIStore((state) => state.setTooltip); const { nextBlockTimestamp } = useNextBlockTimestamp(); @@ -82,8 +82,6 @@ const CoOwnersRows = ({ const structure = useStructureByEntityId(hyperstructureEntityId); - const { getAddressName } = useRealm(); - const sortingParams = useMemo(() => { return [ { label: "Name", sortKey: "name", className: "" }, @@ -118,7 +116,7 @@ const CoOwnersRows = ({ {coOwnersWithTimestamp?.coOwners.map((coOwner, index) => { - const playerName = getAddressName(coOwner.address) || "Player not found"; + const playerName = getAddressName(coOwner.address, components) || "Player not found"; const isOwner = coOwner.address === ContractAddress(account.address); @@ -178,7 +176,7 @@ const ChangeCoOwners = ({ }, } = useDojo(); - const getPlayers = useGetAllPlayers(); + const players = usePlayers(); const [isLoading, setIsLoading] = useState(false); const [newCoOwners, setNewCoOwners] = useState< { @@ -237,10 +235,6 @@ const ChangeCoOwners = ({ .some((coOwner) => coOwner.address === ContractAddress(account.address)); }, [newCoOwners, account.address]); - const players = useMemo(() => { - return getPlayers(); - }, []); - return (
diff --git a/client/apps/game/src/ui/components/hyperstructures/ContributionSummary.tsx b/client/apps/game/src/ui/components/hyperstructures/contribution-summary.tsx similarity index 83% rename from client/apps/game/src/ui/components/hyperstructures/ContributionSummary.tsx rename to client/apps/game/src/ui/components/hyperstructures/contribution-summary.tsx index 3bc4ae6411..6f471912df 100644 --- a/client/apps/game/src/ui/components/hyperstructures/ContributionSummary.tsx +++ b/client/apps/game/src/ui/components/hyperstructures/contribution-summary.tsx @@ -1,9 +1,9 @@ -import { useContributions } from "@/hooks/helpers/useContributions"; -import { useRealm } from "@/hooks/helpers/useRealm"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; -import { SelectResource } from "@/ui/elements/SelectResource"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; +import { SelectResource } from "@/ui/elements/select-resource"; import { copyPlayerAddressToClipboard, currencyIntlFormat, divideByPrecision, formatNumber } from "@/ui/utils/utils"; -import { ContractAddress, ID, ResourcesIds } from "@bibliothecadao/eternum"; +import { getAddressName } from "@/utils/entities"; +import { ContractAddress, ID, LeaderboardManager, ResourcesIds } from "@bibliothecadao/eternum"; import { useMemo, useState } from "react"; export const ContributionSummary = ({ @@ -13,8 +13,13 @@ export const ContributionSummary = ({ hyperstructureEntityId: ID; className?: string; }) => { - const { getContributions, getContributionsTotalPercentage } = useContributions(); - const { getAddressName } = useRealm(); + const { + setup: { components }, + } = useDojo(); + + const leaderboardManager = useMemo(() => { + return LeaderboardManager.instance(components); + }, [components]); const [showContributions, setShowContributions] = useState(false); const [selectedResource, setSelectedResource] = useState(null); @@ -24,7 +29,10 @@ export const ContributionSummary = ({ resourceId: number; }; - const contributions = getContributions(hyperstructureEntityId); + const contributions = useMemo(() => { + return leaderboardManager.getContributions(hyperstructureEntityId); + }, [leaderboardManager, hyperstructureEntityId]); + const groupedContributions = contributions.reduce>>((acc, contribution) => { const { player_address, resource_type, amount } = contribution; const playerAddressString = player_address.toString(); @@ -59,7 +67,10 @@ export const ContributionSummary = ({ playerAddress, resources, percentage: - getContributionsTotalPercentage(hyperstructureEntityId, resourceContributions[playerAddress]) * 100, + leaderboardManager.getContributionsTotalPercentage( + hyperstructureEntityId, + resourceContributions[playerAddress], + ) * 100, })) .filter(({ resources }) => selectedResource ? resources[selectedResource] > 0n : Object.values(resources).some((amount) => amount > 0n), @@ -89,7 +100,7 @@ export const ContributionSummary = ({ setSelectedResource(resourceId)} />
{sortedContributors.map(({ playerAddress, resources, percentage }) => { - const addressName = getAddressName(ContractAddress(playerAddress)) || "Unknown"; + const addressName = getAddressName(ContractAddress(playerAddress), components) || "Unknown"; return (
diff --git a/client/apps/game/src/ui/components/hyperstructures/HyperstructureDetails.tsx b/client/apps/game/src/ui/components/hyperstructures/hyperstructure-details.tsx similarity index 93% rename from client/apps/game/src/ui/components/hyperstructures/HyperstructureDetails.tsx rename to client/apps/game/src/ui/components/hyperstructures/hyperstructure-details.tsx index 1c62a74c93..233cda7d1e 100644 --- a/client/apps/game/src/ui/components/hyperstructures/HyperstructureDetails.tsx +++ b/client/apps/game/src/ui/components/hyperstructures/hyperstructure-details.tsx @@ -1,9 +1,9 @@ -import { useDojo } from "@/hooks/context/DojoContext"; +import { useDojo } from "@/hooks/context/dojo-context"; import { Tabs } from "@/ui/elements/tab"; import { ID, LeaderboardManager } from "@bibliothecadao/eternum"; import { useMemo, useState } from "react"; -import { CoOwners } from "./CoOwners"; -import { Leaderboard } from "./Leaderboard"; +import { CoOwners } from "./co-owners"; +import { Leaderboard } from "./leaderboard"; export const HyperstructureDetails = ({ hyperstructureEntityId }: { hyperstructureEntityId: ID }) => { const dojo = useDojo(); diff --git a/client/apps/game/src/ui/components/hyperstructures/HyperstructurePanel.tsx b/client/apps/game/src/ui/components/hyperstructures/hyperstructure-panel.tsx similarity index 90% rename from client/apps/game/src/ui/components/hyperstructures/HyperstructurePanel.tsx rename to client/apps/game/src/ui/components/hyperstructures/hyperstructure-panel.tsx index 3e3a460b07..0080b563bf 100644 --- a/client/apps/game/src/ui/components/hyperstructures/HyperstructurePanel.tsx +++ b/client/apps/game/src/ui/components/hyperstructures/hyperstructure-panel.tsx @@ -1,19 +1,22 @@ import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useContributions } from "@/hooks/helpers/useContributions"; -import { useEntitiesUtils } from "@/hooks/helpers/useEntities"; -import { useGuilds } from "@/hooks/helpers/useGuilds"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { usePlayerContributions } from "@/hooks/helpers/use-contributions"; +import { useGuilds } from "@/hooks/helpers/use-guilds"; import { ProgressWithPercentage, useHyperstructureProgress, useHyperstructureUpdates, -} from "@/hooks/helpers/useHyperstructures"; -import { useHyperstructureData } from "@/hooks/store/useLeaderBoardStore"; -import useUIStore from "@/hooks/store/useUIStore"; -import Button from "@/ui/elements/Button"; -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/ui/elements/Select"; -import TextInput from "@/ui/elements/TextInput"; +} from "@/hooks/helpers/use-hyperstructures"; +import { useHyperstructureData } from "@/hooks/store/use-leaderboard-store"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { ContributionSummary } from "@/ui/components/hyperstructures/contribution-summary"; +import { HyperstructureDetails } from "@/ui/components/hyperstructures/hyperstructure-details"; +import { HyperstructureResourceChip } from "@/ui/components/hyperstructures/hyperstructure-resource-chip"; +import Button from "@/ui/elements/button"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/ui/elements/select"; +import TextInput from "@/ui/elements/text-input"; import { currencyIntlFormat, getEntityIdFromKeys, multiplyByPrecision, separateCamelCase } from "@/ui/utils/utils"; +import { getAddressNameFromEntity } from "@/utils/entities"; import { Access, calculateCompletionPoints, @@ -23,9 +26,6 @@ import { } from "@bibliothecadao/eternum"; import { useComponentValue } from "@dojoengine/react"; import { useMemo, useState } from "react"; -import { ContributionSummary } from "./ContributionSummary"; -import { HyperstructureDetails } from "./HyperstructureDetails"; -import { HyperstructureResourceChip } from "./HyperstructureResourceChip"; export enum DisplayedAccess { Public = "Public", @@ -48,7 +48,7 @@ export const HyperstructurePanel = ({ entity }: any) => { network: { provider }, setup: { systemCalls: { contribute_to_construction, set_access }, - components: { Hyperstructure }, + components, }, } = dojo; @@ -66,18 +66,15 @@ export const HyperstructurePanel = ({ entity }: any) => { const progresses = useHyperstructureProgress(entity.entity_id); - const { useContributionsByPlayerAddress } = useContributions(); - - const myContributions = useContributionsByPlayerAddress(BigInt(account.address), entity.entity_id); + const myContributions = usePlayerContributions(BigInt(account.address), entity.entity_id); const updates = useHyperstructureUpdates(entity.entity_id); const [newContributions, setNewContributions] = useState>({}); - const { getAddressNameFromEntity } = useEntitiesUtils(); - const ownerName = getAddressNameFromEntity(entity.entity_id); + const ownerName = getAddressNameFromEntity(entity.entity_id, components); - const hyperstructure = useComponentValue(Hyperstructure, getEntityIdFromKeys([BigInt(entity.entity_id)])); + const hyperstructure = useComponentValue(components.Hyperstructure, getEntityIdFromKeys([BigInt(entity.entity_id)])); const playerGuild = useMemo(() => getGuildFromPlayerAddress(ContractAddress(account.address)), []); diff --git a/client/apps/game/src/ui/components/hyperstructures/HyperstructureResourceChip.tsx b/client/apps/game/src/ui/components/hyperstructures/hyperstructure-resource-chip.tsx similarity index 86% rename from client/apps/game/src/ui/components/hyperstructures/HyperstructureResourceChip.tsx rename to client/apps/game/src/ui/components/hyperstructures/hyperstructure-resource-chip.tsx index 2831a85109..1a8efc3f6e 100644 --- a/client/apps/game/src/ui/components/hyperstructures/HyperstructureResourceChip.tsx +++ b/client/apps/game/src/ui/components/hyperstructures/hyperstructure-resource-chip.tsx @@ -1,13 +1,13 @@ -import { findResourceById, getIconResourceId, ID } from "@bibliothecadao/eternum"; - -import { ProgressWithPercentage } from "@/hooks/helpers/useHyperstructures"; -import { useResourceBalance } from "@/hooks/helpers/useResources"; -import useUIStore from "@/hooks/store/useUIStore"; -import Button from "@/ui/elements/Button"; -import { NumberInput } from "@/ui/elements/NumberInput"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { ProgressWithPercentage } from "@/hooks/helpers/use-hyperstructures"; +import useUIStore from "@/hooks/store/use-ui-store"; +import Button from "@/ui/elements/button"; +import { NumberInput } from "@/ui/elements/number-input"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { currencyIntlFormat, divideByPrecision } from "@/ui/utils/utils"; +import { getBalance, getResourceProductionInfo } from "@/utils/resources"; +import { findResourceById, getIconResourceId, ID } from "@bibliothecadao/eternum"; import { useEffect, useState } from "react"; -import { ResourceIcon } from "../../elements/ResourceIcon"; type HyperstructureResourceChipProps = { structureEntityId: ID; @@ -26,12 +26,13 @@ export const HyperstructureResourceChip = ({ progress, resetContributions, }: HyperstructureResourceChipProps) => { + const dojo = useDojo(); + const [inputValue, setInputValue] = useState(0); const setTooltip = useUIStore((state) => state.setTooltip); - const { getBalance, getResourceProductionInfo } = useResourceBalance(); - const balance = divideByPrecision(getBalance(structureEntityId, resourceId).balance); - const production = getResourceProductionInfo(structureEntityId, resourceId); + const balance = divideByPrecision(getBalance(structureEntityId, resourceId, dojo.setup.components).balance); + const production = getResourceProductionInfo(structureEntityId, resourceId, dojo.setup.components); const safetyMargin = production !== undefined && production?.consumption_rate !== 0n ? 0.95 : 1; diff --git a/client/apps/game/src/ui/components/hyperstructures/Leaderboard.tsx b/client/apps/game/src/ui/components/hyperstructures/leaderboard.tsx similarity index 81% rename from client/apps/game/src/ui/components/hyperstructures/Leaderboard.tsx rename to client/apps/game/src/ui/components/hyperstructures/leaderboard.tsx index 95dbad1deb..7da7147f88 100644 --- a/client/apps/game/src/ui/components/hyperstructures/Leaderboard.tsx +++ b/client/apps/game/src/ui/components/hyperstructures/leaderboard.tsx @@ -1,11 +1,11 @@ -import { useDojo } from "@/hooks/context/DojoContext"; -import { useHyperstructureUpdates } from "@/hooks/helpers/useHyperstructures"; -import { useRealm } from "@/hooks/helpers/useRealm"; -import useNextBlockTimestamp from "@/hooks/useNextBlockTimestamp"; -import Button from "@/ui/elements/Button"; -import { SortButton, SortInterface } from "@/ui/elements/SortButton"; -import { SortPanel } from "@/ui/elements/SortPanel"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useHyperstructureUpdates } from "@/hooks/helpers/use-hyperstructures"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; +import Button from "@/ui/elements/button"; +import { SortButton, SortInterface } from "@/ui/elements/sort-button"; +import { SortPanel } from "@/ui/elements/sort-panel"; import { currencyIntlFormat, displayAddress, getEntityIdFromKeys } from "@/ui/utils/utils"; +import { getAddressName } from "@/utils/entities"; import { ContractAddress, ID, LeaderboardManager } from "@bibliothecadao/eternum"; import { getComponentValue } from "@dojoengine/recs"; import { useMemo, useState } from "react"; @@ -20,15 +20,11 @@ export const Leaderboard = ({ const dojo = useDojo(); const { account: { account }, - setup: { - components: { Owner }, - }, + setup: { components }, } = dojo; const { nextBlockTimestamp } = useNextBlockTimestamp(); - const { getAddressName } = useRealm(); - const playerPointsLeaderboard = useMemo(() => { return LeaderboardManager.instance(dojo.setup.components).getPlayersByRank( nextBlockTimestamp || 0, @@ -52,7 +48,7 @@ export const Leaderboard = ({ }); const isOwner = useMemo(() => { - const owner = getComponentValue(Owner, getEntityIdFromKeys([BigInt(hyperstructureEntityId)])); + const owner = getComponentValue(components.Owner, getEntityIdFromKeys([BigInt(hyperstructureEntityId)])); if (!owner) return false; return ContractAddress(owner.address) === ContractAddress(account.address); }, [hyperstructureEntityId]); @@ -77,7 +73,7 @@ export const Leaderboard = ({ ))} {playerPointsLeaderboard.map(([address, points], index) => { - const playerName = getAddressName(address) || "Player not found"; + const playerName = getAddressName(address, components) || "Player not found"; const isOwner = address === ContractAddress(account.address); diff --git a/client/apps/game/src/ui/components/hyperstructures/ResourceExchange.tsx b/client/apps/game/src/ui/components/hyperstructures/resource-exchange.tsx similarity index 94% rename from client/apps/game/src/ui/components/hyperstructures/ResourceExchange.tsx rename to client/apps/game/src/ui/components/hyperstructures/resource-exchange.tsx index 56d0b38b0f..1a865ff11e 100644 --- a/client/apps/game/src/ui/components/hyperstructures/ResourceExchange.tsx +++ b/client/apps/game/src/ui/components/hyperstructures/resource-exchange.tsx @@ -1,9 +1,9 @@ -import { useDojo } from "@/hooks/context/DojoContext"; -import { useResourcesUtils } from "@/hooks/helpers/useResources"; -import Button from "@/ui/elements/Button"; -import { NumberInput } from "@/ui/elements/NumberInput"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { useDojo } from "@/hooks/context/dojo-context"; +import Button from "@/ui/elements/button"; +import { NumberInput } from "@/ui/elements/number-input"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { currencyFormat, divideByPrecision, multiplyByPrecision } from "@/ui/utils/utils"; +import { getResourcesFromBalance } from "@/utils/resources"; import { ArmyInfo, ID, ResourcesIds } from "@bibliothecadao/eternum"; import { ArrowRight } from "lucide-react"; import { useMemo, useState } from "react"; @@ -25,13 +25,12 @@ export const ResourceExchange = ({ }: ResourceExchangeProps) => { const { setup: { + components, account: { account }, systemCalls: { send_resources }, }, } = useDojo(); - const { getResourcesFromBalance } = useResourcesUtils(); - const [loading, setLoading] = useState(false); const [transferDirection, setTransferDirection] = useState<"to" | "from">("to"); const [resourcesGiven, setResourcesGiven] = useState>( @@ -46,8 +45,8 @@ export const ResourceExchange = ({ ), ); - const giverArmyResources = useMemo(() => getResourcesFromBalance(giverArmyEntityId), [loading]); - const takerArmyResources = useMemo(() => getResourcesFromBalance(takerArmy?.entity_id!), [loading]); + const giverArmyResources = useMemo(() => getResourcesFromBalance(giverArmyEntityId, components), [loading]); + const takerArmyResources = useMemo(() => getResourcesFromBalance(takerArmy?.entity_id!, components), [loading]); const handleResourceGivenChange = (resourceId: number, amount: number) => { setResourcesGiven({ ...resourcesGiven, [resourceId]: amount }); diff --git a/client/apps/game/src/ui/components/list/EntityList.tsx b/client/apps/game/src/ui/components/list/entity-list.tsx similarity index 98% rename from client/apps/game/src/ui/components/list/EntityList.tsx rename to client/apps/game/src/ui/components/list/entity-list.tsx index f03a72e482..59879dca0f 100644 --- a/client/apps/game/src/ui/components/list/EntityList.tsx +++ b/client/apps/game/src/ui/components/list/entity-list.tsx @@ -1,4 +1,4 @@ -import Button from "@/ui/elements/Button"; +import Button from "@/ui/elements/button"; import { DUMMY_HYPERSTRUCTURE_ENTITY_ID, ID } from "@bibliothecadao/eternum"; import clsx from "clsx"; import React, { useEffect, useState } from "react"; diff --git a/client/apps/game/src/ui/components/military/UserBattles.tsx b/client/apps/game/src/ui/components/military/UserBattles.tsx deleted file mode 100644 index 8994b96708..0000000000 --- a/client/apps/game/src/ui/components/military/UserBattles.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { useUserBattles } from "@/hooks/helpers/battles/useBattles"; -import { BattleListItem } from "../battles/BattleListItem"; - -export const UserBattles = () => { - const battles = useUserBattles(); - - return ( -
- {battles.length > 0 && ( - <> -
Your battles
- {battles - .sort((a, b) => Number(a.duration_left) - Number(b.duration_left)) - .map((battle) => ( - - ))} - - )} -
- ); -}; diff --git a/client/apps/game/src/ui/components/military/ArmyChip.tsx b/client/apps/game/src/ui/components/military/army-chip.tsx similarity index 90% rename from client/apps/game/src/ui/components/military/ArmyChip.tsx rename to client/apps/game/src/ui/components/military/army-chip.tsx index ef67635f21..e04a0e952a 100644 --- a/client/apps/game/src/ui/components/military/ArmyChip.tsx +++ b/client/apps/game/src/ui/components/military/army-chip.tsx @@ -1,24 +1,24 @@ import { ReactComponent as Inventory } from "@/assets/icons/common/bagpack.svg"; import { ReactComponent as Plus } from "@/assets/icons/common/plus-sign.svg"; import { ReactComponent as Swap } from "@/assets/icons/common/swap.svg"; -import { ReactComponent as Compass } from "@/assets/icons/Compass.svg"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { getArmiesByPosition } from "@/hooks/helpers/useArmies"; -import { armyHasTroops } from "@/hooks/helpers/useQuests"; -import useUIStore from "@/hooks/store/useUIStore"; -import useNextBlockTimestamp from "@/hooks/useNextBlockTimestamp"; -import { Position as PositionInterface } from "@/types/Position"; -import { ArmyCapacity } from "@/ui/elements/ArmyCapacity"; -import Button from "@/ui/elements/Button"; -import { StaminaResource } from "@/ui/elements/StaminaResource"; +import { ReactComponent as Compass } from "@/assets/icons/compass.svg"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useArmiesAtPosition } from "@/hooks/helpers/use-armies"; +import useUIStore from "@/hooks/store/use-ui-store"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; +import { Position as PositionInterface } from "@/types/position"; +import { ArmyManagementCard, ViewOnMapIcon } from "@/ui/components/military/army-management-card"; +import { TroopDisplay } from "@/ui/components/military/troop-chip"; +import { InventoryResources } from "@/ui/components/resources/inventory-resources"; +import { Exchange } from "@/ui/components/structures/worldmap/structure-card"; +import { ArmyCapacity } from "@/ui/elements/army-capacity"; +import Button from "@/ui/elements/button"; +import { StaminaResource } from "@/ui/elements/stamina-resource"; +import { armyHasTroops } from "@/utils/army"; import { ArmyInfo, BattleManager, Position } from "@bibliothecadao/eternum"; import { LucideArrowRight } from "lucide-react"; import React, { Dispatch, SetStateAction, useMemo, useState } from "react"; import { useLocation } from "wouter"; -import { InventoryResources } from "../resources/InventoryResources"; -import { Exchange } from "../structures/worldmap/StructureCard"; -import { ArmyManagementCard, ViewOnMapIcon } from "./ArmyManagementCard"; -import { TroopDisplay } from "./TroopChip"; export const NavigateToPositionIcon = ({ position, @@ -227,13 +227,11 @@ const ArmyMergeTroopsPanel = ({ }) => { const [selectedReceiverArmy, setSelectedReceiverArmy] = useState(null); - const getArmies = getArmiesByPosition(); + const armiesAtPosition = useArmiesAtPosition({ position: giverArmy.position }); const armies = useMemo(() => { - return getArmies({ x: giverArmy.position.x, y: giverArmy.position.y }).filter( - (army) => army.entity_id !== giverArmy.entity_id, - ); - }, [giverArmy]); + return armiesAtPosition.filter((army) => army.entity_id !== giverArmy.entity_id); + }, [giverArmy, armiesAtPosition]); return (
diff --git a/client/apps/game/src/ui/components/military/ArmyList.tsx b/client/apps/game/src/ui/components/military/army-list.tsx similarity index 87% rename from client/apps/game/src/ui/components/military/ArmyList.tsx rename to client/apps/game/src/ui/components/military/army-list.tsx index a5e56e1890..be9aa7cef0 100644 --- a/client/apps/game/src/ui/components/military/ArmyList.tsx +++ b/client/apps/game/src/ui/components/military/army-list.tsx @@ -1,15 +1,14 @@ import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useArmiesByEntityOwner } from "@/hooks/helpers/useArmies"; -import { type PlayerStructure } from "@/hooks/helpers/useEntities"; -import useUIStore from "@/hooks/store/useUIStore"; -import Button from "@/ui/elements/Button"; -import { Headline } from "@/ui/elements/Headline"; -import { HintModalButton } from "@/ui/elements/HintModalButton"; -import { BuildingType, StructureType, TileManager } from "@bibliothecadao/eternum"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useArmiesByStructure } from "@/hooks/helpers/use-armies"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { HintSection } from "@/ui/components/hints/hint-modal"; +import { ArmyChip } from "@/ui/components/military/army-chip"; +import Button from "@/ui/elements/button"; +import { Headline } from "@/ui/elements/headline"; +import { HintModalButton } from "@/ui/elements/hint-modal-button"; +import { BuildingType, PlayerStructure, StructureType, TileManager } from "@bibliothecadao/eternum"; import { useMemo, useState } from "react"; -import { HintSection } from "../hints/HintModal"; -import { ArmyChip } from "./ArmyChip"; const MAX_AMOUNT_OF_DEFENSIVE_ARMIES = 1; @@ -29,8 +28,8 @@ export const EntityArmyList = ({ structure }: { structure: PlayerStructure }) => }); const existingBuildings = tileManager.existingBuildings(); - const { entityArmies: structureArmies } = useArmiesByEntityOwner({ - entity_owner_entity_id: structure?.entity_id || 0, + const { entityArmies: structureArmies } = useArmiesByStructure({ + structureEntityId: structure?.entity_id || 0, }); const { diff --git a/client/apps/game/src/ui/components/military/ArmyManagementCard.tsx b/client/apps/game/src/ui/components/military/army-management-card.tsx similarity index 93% rename from client/apps/game/src/ui/components/military/ArmyManagementCard.tsx rename to client/apps/game/src/ui/components/military/army-management-card.tsx index d8e3195f35..3d446a238e 100644 --- a/client/apps/game/src/ui/components/military/ArmyManagementCard.tsx +++ b/client/apps/game/src/ui/components/military/army-management-card.tsx @@ -1,13 +1,15 @@ import { ReactComponent as Pen } from "@/assets/icons/common/pen.svg"; import { ReactComponent as Trash } from "@/assets/icons/common/trashcan.svg"; import { ReactComponent as Map } from "@/assets/icons/common/world.svg"; - -import { useDojo } from "@/hooks/context/DojoContext"; -import { useResourceBalance } from "@/hooks/helpers/useResources"; -import useUIStore from "@/hooks/store/useUIStore"; -import Button from "@/ui/elements/Button"; -import { NumberInput } from "@/ui/elements/NumberInput"; -import TextInput from "@/ui/elements/TextInput"; +import { configManager } from "@/dojo/setup"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useQuery } from "@/hooks/helpers/use-query"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { Position as PositionInterface } from "@/types/position"; +import Button from "@/ui/elements/button"; +import { NumberInput } from "@/ui/elements/number-input"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; +import TextInput from "@/ui/elements/text-input"; import { currencyFormat, divideByPrecision, @@ -16,16 +18,11 @@ import { getEntityIdFromKeys, multiplyByPrecision, } from "@/ui/utils/utils"; -import { ID, Position, ResourcesIds, U32_MAX } from "@bibliothecadao/eternum"; +import { getBalance } from "@/utils/resources"; +import { ArmyInfo, ArmyManager, ID, Position, ResourcesIds, U32_MAX } from "@bibliothecadao/eternum"; import { useComponentValue } from "@dojoengine/react"; -import { useCallback, useEffect, useMemo, useState } from "react"; - -import { configManager } from "@/dojo/setup"; -import { useQuery } from "@/hooks/helpers/useQuery"; -import { Position as PositionInterface } from "@/types/Position"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; -import { ArmyInfo, ArmyManager } from "@bibliothecadao/eternum"; import clsx from "clsx"; +import { useCallback, useEffect, useMemo, useState } from "react"; type ArmyManagementCardProps = { owner_entity: ID; @@ -52,7 +49,6 @@ export const ArmyManagementCard = ({ owner_entity, army, setSelectedEntity }: Ar const isDefendingArmy = Boolean(army?.protectee); const [confirmDelete, setConfirmDelete] = useState(false); - const { getBalance } = useResourceBalance(); const [isLoading, setIsLoading] = useState(false); const [canCreate, setCanCreate] = useState(false); @@ -138,7 +134,7 @@ export const ArmyManagementCard = ({ owner_entity, army, setSelectedEntity }: Ar let canCreate = true; Object.keys(troopCounts).forEach((troopId) => { const count = troopCounts[Number(troopId)]; - const balance = getBalance(owner_entity, Number(troopId)).balance; + const balance = getBalance(owner_entity, Number(troopId), dojo.setup.components).balance; if (count > balance) { canCreate = false; } @@ -251,7 +247,7 @@ export const ArmyManagementCard = ({ owner_entity, army, setSelectedEntity }: Ar
{troops.map((troop) => { - const balance = getBalance(owner_entity, troop.name).balance; + const balance = getBalance(owner_entity, troop.name, dojo.setup.components).balance; return (
diff --git a/client/apps/game/src/ui/components/military/EntitiesArmyTable.tsx b/client/apps/game/src/ui/components/military/entities-army-table.tsx similarity index 77% rename from client/apps/game/src/ui/components/military/EntitiesArmyTable.tsx rename to client/apps/game/src/ui/components/military/entities-army-table.tsx index 8191c173a7..289225d036 100644 --- a/client/apps/game/src/ui/components/military/EntitiesArmyTable.tsx +++ b/client/apps/game/src/ui/components/military/entities-army-table.tsx @@ -1,20 +1,20 @@ -import { useArmiesByEntityOwner } from "@/hooks/helpers/useArmies"; -import { useEntities } from "@/hooks/helpers/useEntities"; -import useUIStore from "@/hooks/store/useUIStore"; -import Button from "@/ui/elements/Button"; -import { Headline } from "@/ui/elements/Headline"; -import { HintModalButton } from "@/ui/elements/HintModalButton"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; -import { BattleSimulation } from "@/ui/modules/simulation/BattleSimulation"; +import { useArmiesByStructure } from "@/hooks/helpers/use-armies"; +import { usePlayerStructures } from "@/hooks/helpers/use-entities"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { HintSection } from "@/ui/components/hints/hint-modal"; +import { ArmyChip } from "@/ui/components/military/army-chip"; +import { battleSimulation, pillageSimulation } from "@/ui/components/navigation/config"; +import Button from "@/ui/elements/button"; +import { Headline } from "@/ui/elements/headline"; +import { HintModalButton } from "@/ui/elements/hint-modal-button"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; +import { BattleSimulation } from "@/ui/modules/simulation/battle-simulation"; import { PillageSimulation } from "@/ui/modules/simulation/pillage-simulation"; import { divideByPrecisionFormatted } from "@/ui/utils/utils"; import { ArmyInfo, ID, ResourcesIds } from "@bibliothecadao/eternum"; -import { HintSection } from "../hints/HintModal"; -import { battleSimulation, pillageSimulation } from "../navigation/Config"; -import { ArmyChip } from "./ArmyChip"; export const EntitiesArmyTable = () => { - const { playerStructures } = useEntities(); + const playerStructures = usePlayerStructures(); const togglePopup = useUIStore((state) => state.togglePopup); return ( @@ -29,7 +29,7 @@ export const EntitiesArmyTable = () => {
- {playerStructures().map((entity: any, index: number) => { + {playerStructures.map((entity: any, index: number) => { return (
@@ -52,7 +52,7 @@ const EntityArmyTable = ({ structureEntityId }: { structureEntityId: ID | undefi if (!structureEntityId) { return
Entity not found
; } - const { entityArmies } = useArmiesByEntityOwner({ entity_owner_entity_id: structureEntityId }); + const { entityArmies } = useArmiesByStructure({ structureEntityId }); const totalTroops = entityArmies.reduce( (acc, army: ArmyInfo) => { diff --git a/client/apps/game/src/ui/components/military/PillageHistory.tsx b/client/apps/game/src/ui/components/military/pillage-history.tsx similarity index 81% rename from client/apps/game/src/ui/components/military/PillageHistory.tsx rename to client/apps/game/src/ui/components/military/pillage-history.tsx index c696d77ce0..fb8ef417e5 100644 --- a/client/apps/game/src/ui/components/military/PillageHistory.tsx +++ b/client/apps/game/src/ui/components/military/pillage-history.tsx @@ -1,21 +1,21 @@ -import { ClientComponents } from "@/dojo/createClientComponents"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useEntitiesUtils } from "@/hooks/helpers/useEntities"; -import { ResourceCost } from "@/ui/elements/ResourceCost"; -import TwitterShareButton from "@/ui/elements/TwitterShareButton"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { ResourceCost } from "@/ui/elements/resource-cost"; +import TwitterShareButton from "@/ui/elements/twitter-share-button"; import { formatSocialText, twitterTemplates } from "@/ui/socials"; import { divideByPrecision, formatNumber, formatResources, formatTime } from "@/ui/utils/utils"; -import { BattleSide, ID, Resource, resources } from "@bibliothecadao/eternum"; +import { getAddressNameFromEntity, getPlayerAddressFromEntity } from "@/utils/entities"; +import { BattleSide, ClientComponents, ID, Resource, resources } from "@bibliothecadao/eternum"; import { ComponentValue, defineQuery, getComponentValue, HasValue, isComponentUpdate } from "@dojoengine/recs"; import { useEffect, useMemo, useState } from "react"; import { env } from "../../../../env"; -import { TroopDisplay } from "./TroopChip"; +import { TroopDisplay } from "./troop-chip"; type PillageEvent = ComponentValue; const PillageHistoryItem = ({ addressName, history }: { addressName: string; history: PillageEvent }) => { const { setup: { + components, account: { account }, }, } = useDojo(); @@ -23,24 +23,22 @@ const PillageHistoryItem = ({ addressName, history }: { addressName: string; his const isSuccess = history.winner === BattleSide[BattleSide.Attack]; const formattedResources = useMemo(() => formatResources(history.pillaged_resources), [history.pillaged_resources]); - const { getPlayerAddressFromEntity, getAddressNameFromEntity } = useEntitiesUtils(); - const attackerIsPlayer = useMemo( - () => getPlayerAddressFromEntity(history.pillager_army_entity_id) === BigInt(account.address), + () => getPlayerAddressFromEntity(history.pillager_army_entity_id, components) === BigInt(account.address), [getPlayerAddressFromEntity, history.pillager_army_entity_id, account.address], ); const twitterText = useMemo(() => { if (isSuccess && formattedResources.length > 0 && attackerIsPlayer) { return formatSocialText(twitterTemplates.pillage, { - enemyName: getAddressNameFromEntity(history.pillaged_structure_entity_id) || "Unknown", + enemyName: getAddressNameFromEntity(history.pillaged_structure_entity_id, components) || "Unknown", addressName, resources: formattedResources .map( (pillagedResource) => - `${formatNumber(divideByPrecision(pillagedResource.amount), 0)} ${resources.find( - (resource) => resource.id === pillagedResource.resourceId, - )?.trait}`, + `${formatNumber(divideByPrecision(pillagedResource.amount), 0)} ${ + resources.find((resource) => resource.id === pillagedResource.resourceId)?.trait + }`, ) .join(", "), url: env.VITE_SOCIAL_LINK, @@ -125,28 +123,28 @@ const PillageHistoryItem = ({ addressName, history }: { addressName: string; his export const PillageHistory = ({ structureId }: { structureId: ID }) => { const { - setup: { - components: { events }, - }, + setup: { components }, } = useDojo(); const [pillageHistory, setPillageHistory] = useState([]); - const { getAddressNameFromEntity } = useEntitiesUtils(); useEffect(() => { - const query = defineQuery([HasValue(events.BattlePillageData, { pillaged_structure_entity_id: structureId })], { - runOnInit: true, - }); + const query = defineQuery( + [HasValue(components.events.BattlePillageData, { pillaged_structure_entity_id: structureId })], + { + runOnInit: true, + }, + ); const subscription = query.update$.subscribe((update) => { - if (isComponentUpdate(update, events.BattlePillageData)) { - const event = getComponentValue(events.BattlePillageData, update.entity); + if (isComponentUpdate(update, components.events.BattlePillageData)) { + const event = getComponentValue(components.events.BattlePillageData, update.entity); setPillageHistory((prev) => [event!, ...prev]); } }); return () => subscription.unsubscribe(); - }, [events.BattlePillageData, structureId]); + }, [components.events.BattlePillageData, structureId]); return (
@@ -156,7 +154,7 @@ export const PillageHistory = ({ structureId }: { structureId: ID }) => { .sort((a, b) => b.timestamp - a.timestamp) .slice(0, 20) .map((history, index) => { - const addressName = getAddressNameFromEntity(history.pillager_army_entity_id); + const addressName = getAddressNameFromEntity(history.pillager_army_entity_id, components); return ; })}
diff --git a/client/apps/game/src/ui/components/military/TroopChip.tsx b/client/apps/game/src/ui/components/military/troop-chip.tsx similarity index 95% rename from client/apps/game/src/ui/components/military/TroopChip.tsx rename to client/apps/game/src/ui/components/military/troop-chip.tsx index ede4ff5a0b..49fdc11c7d 100644 --- a/client/apps/game/src/ui/components/military/TroopChip.tsx +++ b/client/apps/game/src/ui/components/military/troop-chip.tsx @@ -1,6 +1,6 @@ -import { ClientComponents } from "@/dojo/createClientComponents"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { currencyFormat } from "@/ui/utils/utils"; +import { ClientComponents } from "@bibliothecadao/eternum"; import { ComponentValue } from "@dojoengine/recs"; export const TroopDisplay = ({ diff --git a/client/apps/game/src/ui/components/military/user-battles.tsx b/client/apps/game/src/ui/components/military/user-battles.tsx new file mode 100644 index 0000000000..f3aa66fcaa --- /dev/null +++ b/client/apps/game/src/ui/components/military/user-battles.tsx @@ -0,0 +1,21 @@ +import { usePlayerBattles } from "@/hooks/helpers/use-battles"; +import { BattleListItem } from "@/ui/components/battles/battle-list-item"; + +export const UserBattles = () => { + const battleEntityIds = usePlayerBattles(); + + return ( +
+ {battleEntityIds.length > 0 && ( + <> +
Your battles
+ {battleEntityIds + // .sort((a, b) => Number(a.duration_left) - Number(b.duration_left)) + .map((id) => ( + + ))} + + )} +
+ ); +}; diff --git a/client/apps/game/src/ui/components/ModalContainer.tsx b/client/apps/game/src/ui/components/modal-container.tsx similarity index 92% rename from client/apps/game/src/ui/components/ModalContainer.tsx rename to client/apps/game/src/ui/components/modal-container.tsx index 78a1fccb46..7f6dd7f2f2 100644 --- a/client/apps/game/src/ui/components/ModalContainer.tsx +++ b/client/apps/game/src/ui/components/modal-container.tsx @@ -1,7 +1,7 @@ -import { useModalStore } from "@/hooks/store/useModalStore"; +import { useModalStore } from "@/hooks/store/use-modal-store"; +import Button from "@/ui/elements/button"; import { X } from "lucide-react"; import { useCallback, useEffect } from "react"; -import Button from "../elements/Button"; interface ModalContainerProps { children: React.ReactNode; diff --git a/client/apps/game/src/ui/components/navigation/Config.tsx b/client/apps/game/src/ui/components/navigation/config.tsx similarity index 95% rename from client/apps/game/src/ui/components/navigation/Config.tsx rename to client/apps/game/src/ui/components/navigation/config.tsx index bed9393f5c..e12fd5cc63 100644 --- a/client/apps/game/src/ui/components/navigation/Config.tsx +++ b/client/apps/game/src/ui/components/navigation/config.tsx @@ -1,4 +1,4 @@ -import { HintSection } from "../hints/HintModal"; +import { HintSection } from "../hints/hint-modal"; type OSWindows = | "World Structures" diff --git a/client/apps/game/src/ui/components/navigation/OSWindow.tsx b/client/apps/game/src/ui/components/navigation/os-window.tsx similarity index 94% rename from client/apps/game/src/ui/components/navigation/OSWindow.tsx rename to client/apps/game/src/ui/components/navigation/os-window.tsx index 17ea274844..8b521db5fd 100644 --- a/client/apps/game/src/ui/components/navigation/OSWindow.tsx +++ b/client/apps/game/src/ui/components/navigation/os-window.tsx @@ -1,7 +1,7 @@ import { IS_MOBILE } from "@/ui/config"; import { motion } from "framer-motion"; -import { SecondaryPopup } from "../../elements/SecondaryPopup"; -import { ExpandableOSInterface, OSInterface } from "./Config"; +import { SecondaryPopup } from "../../elements/secondary-popup"; +import { ExpandableOSInterface, OSInterface } from "./config"; export const OSWindow = ({ onClick, diff --git a/client/apps/game/src/ui/components/overlays/OrientationOverlay.tsx b/client/apps/game/src/ui/components/overlays/orientation-overlay.tsx similarity index 100% rename from client/apps/game/src/ui/components/overlays/OrientationOverlay.tsx rename to client/apps/game/src/ui/components/overlays/orientation-overlay.tsx diff --git a/client/apps/game/src/ui/components/pwa-update-popup.tsx b/client/apps/game/src/ui/components/pwa-update-popup.tsx index 301390c617..4f3d51db9c 100644 --- a/client/apps/game/src/ui/components/pwa-update-popup.tsx +++ b/client/apps/game/src/ui/components/pwa-update-popup.tsx @@ -1,4 +1,4 @@ -import Button from "@/ui/elements/Button"; +import Button from "@/ui/elements/button"; interface PWAUpdatePopupProps { onUpdate: () => void; diff --git a/client/apps/game/src/ui/components/quest/questDetails.tsx b/client/apps/game/src/ui/components/quest/quest-details.ts similarity index 93% rename from client/apps/game/src/ui/components/quest/questDetails.tsx rename to client/apps/game/src/ui/components/quest/quest-details.ts index b6b3809839..d7e7ab357c 100644 --- a/client/apps/game/src/ui/components/quest/questDetails.tsx +++ b/client/apps/game/src/ui/components/quest/quest-details.ts @@ -1,5 +1,4 @@ -import { Prize } from "@/hooks/helpers/useQuests"; -import { QuestType } from "@bibliothecadao/eternum"; +import { Prize, QuestType } from "@bibliothecadao/eternum"; interface StaticQuestInfo { name: string; diff --git a/client/apps/game/src/ui/components/quest/steps/buildFoodSteps.tsx b/client/apps/game/src/ui/components/quest/steps/build-food-steps.tsx similarity index 96% rename from client/apps/game/src/ui/components/quest/steps/buildFoodSteps.tsx rename to client/apps/game/src/ui/components/quest/steps/build-food-steps.tsx index dfdf62d0d7..550f9dc070 100644 --- a/client/apps/game/src/ui/components/quest/steps/buildFoodSteps.tsx +++ b/client/apps/game/src/ui/components/quest/steps/build-food-steps.tsx @@ -1,6 +1,6 @@ -import useUIStore from "@/hooks/store/useUIStore"; -import { LeftView } from "@/ui/modules/navigation/LeftNavigationModule"; -import { RightView } from "@/ui/modules/navigation/RightNavigationModule"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { LeftView } from "@/ui/modules/navigation/left-navigation-module"; +import { RightView } from "@/ui/modules/navigation/right-navigation-module"; import { StepOptions } from "shepherd.js"; import { StepButton, waitForElement } from "./utils"; diff --git a/client/apps/game/src/ui/components/quest/steps/buildResourceSteps.tsx b/client/apps/game/src/ui/components/quest/steps/build-resource-steps.tsx similarity index 94% rename from client/apps/game/src/ui/components/quest/steps/buildResourceSteps.tsx rename to client/apps/game/src/ui/components/quest/steps/build-resource-steps.tsx index 78ad13ef4f..a648ad8885 100644 --- a/client/apps/game/src/ui/components/quest/steps/buildResourceSteps.tsx +++ b/client/apps/game/src/ui/components/quest/steps/build-resource-steps.tsx @@ -1,6 +1,6 @@ -import useUIStore from "@/hooks/store/useUIStore"; -import { LeftView } from "@/ui/modules/navigation/LeftNavigationModule"; -import { RightView } from "@/ui/modules/navigation/RightNavigationModule"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { LeftView } from "@/ui/modules/navigation/left-navigation-module"; +import { RightView } from "@/ui/modules/navigation/right-navigation-module"; import { StepOptions } from "shepherd.js"; import { StepButton, waitForElement } from "./utils"; diff --git a/client/apps/game/src/ui/components/quest/steps/createAttackArmy.tsx b/client/apps/game/src/ui/components/quest/steps/create-attack-army.tsx similarity index 93% rename from client/apps/game/src/ui/components/quest/steps/createAttackArmy.tsx rename to client/apps/game/src/ui/components/quest/steps/create-attack-army.tsx index 7753a84767..0026ce8466 100644 --- a/client/apps/game/src/ui/components/quest/steps/createAttackArmy.tsx +++ b/client/apps/game/src/ui/components/quest/steps/create-attack-army.tsx @@ -1,6 +1,6 @@ -import useUIStore from "@/hooks/store/useUIStore"; -import { LeftView } from "@/ui/modules/navigation/LeftNavigationModule"; -import { RightView } from "@/ui/modules/navigation/RightNavigationModule"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { LeftView } from "@/ui/modules/navigation/left-navigation-module"; +import { RightView } from "@/ui/modules/navigation/right-navigation-module"; import { StepOptions } from "shepherd.js"; import { StepButton, waitForElement } from "./utils"; diff --git a/client/apps/game/src/ui/components/quest/steps/createDefenseArmySteps.tsx b/client/apps/game/src/ui/components/quest/steps/create-defense-army-steps.tsx similarity index 96% rename from client/apps/game/src/ui/components/quest/steps/createDefenseArmySteps.tsx rename to client/apps/game/src/ui/components/quest/steps/create-defense-army-steps.tsx index 967fd826e8..a4ba212bbc 100644 --- a/client/apps/game/src/ui/components/quest/steps/createDefenseArmySteps.tsx +++ b/client/apps/game/src/ui/components/quest/steps/create-defense-army-steps.tsx @@ -1,6 +1,6 @@ -import useUIStore from "@/hooks/store/useUIStore"; -import { LeftView } from "@/ui/modules/navigation/LeftNavigationModule"; -import { RightView } from "@/ui/modules/navigation/RightNavigationModule"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { LeftView } from "@/ui/modules/navigation/left-navigation-module"; +import { RightView } from "@/ui/modules/navigation/right-navigation-module"; import { StepOptions } from "shepherd.js"; import { StepButton, waitForElement } from "./utils"; diff --git a/client/apps/game/src/ui/components/quest/steps/createTradeSteps.tsx b/client/apps/game/src/ui/components/quest/steps/create-trade-steps.tsx similarity index 96% rename from client/apps/game/src/ui/components/quest/steps/createTradeSteps.tsx rename to client/apps/game/src/ui/components/quest/steps/create-trade-steps.tsx index d5b860d71a..357c28d7e6 100644 --- a/client/apps/game/src/ui/components/quest/steps/createTradeSteps.tsx +++ b/client/apps/game/src/ui/components/quest/steps/create-trade-steps.tsx @@ -1,6 +1,6 @@ -import useUIStore from "@/hooks/store/useUIStore"; -import { LeftView } from "@/ui/modules/navigation/LeftNavigationModule"; -import { RightView } from "@/ui/modules/navigation/RightNavigationModule"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { LeftView } from "@/ui/modules/navigation/left-navigation-module"; +import { RightView } from "@/ui/modules/navigation/right-navigation-module"; import { StepOptions } from "shepherd.js"; import { StepButton, waitForElement } from "./utils"; diff --git a/client/apps/game/src/ui/components/quest/steps/pauseProductionSteps.tsx b/client/apps/game/src/ui/components/quest/steps/pause-production-steps.tsx similarity index 94% rename from client/apps/game/src/ui/components/quest/steps/pauseProductionSteps.tsx rename to client/apps/game/src/ui/components/quest/steps/pause-production-steps.tsx index 19de7a152c..c368964746 100644 --- a/client/apps/game/src/ui/components/quest/steps/pauseProductionSteps.tsx +++ b/client/apps/game/src/ui/components/quest/steps/pause-production-steps.tsx @@ -1,6 +1,6 @@ -import useUIStore from "@/hooks/store/useUIStore"; -import { LeftView } from "@/ui/modules/navigation/LeftNavigationModule"; -import { RightView } from "@/ui/modules/navigation/RightNavigationModule"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { LeftView } from "@/ui/modules/navigation/left-navigation-module"; +import { RightView } from "@/ui/modules/navigation/right-navigation-module"; import { BUILDINGS_CENTER } from "@bibliothecadao/eternum"; import { StepOptions } from "shepherd.js"; import { StepButton, waitForElement } from "./utils"; diff --git a/client/apps/game/src/ui/components/quest/steps/settleSteps.tsx b/client/apps/game/src/ui/components/quest/steps/settle-steps.tsx similarity index 95% rename from client/apps/game/src/ui/components/quest/steps/settleSteps.tsx rename to client/apps/game/src/ui/components/quest/steps/settle-steps.tsx index d32bc800e0..a429378d90 100644 --- a/client/apps/game/src/ui/components/quest/steps/settleSteps.tsx +++ b/client/apps/game/src/ui/components/quest/steps/settle-steps.tsx @@ -1,6 +1,6 @@ -import useUIStore from "@/hooks/store/useUIStore"; -import { LeftView } from "@/ui/modules/navigation/LeftNavigationModule"; -import { RightView } from "@/ui/modules/navigation/RightNavigationModule"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { LeftView } from "@/ui/modules/navigation/left-navigation-module"; +import { RightView } from "@/ui/modules/navigation/right-navigation-module"; import { StepOptions } from "shepherd.js"; import { StepButton, waitForElement } from "./utils"; diff --git a/client/apps/game/src/ui/components/quest/steps/travelSteps.tsx b/client/apps/game/src/ui/components/quest/steps/travel-steps.tsx similarity index 89% rename from client/apps/game/src/ui/components/quest/steps/travelSteps.tsx rename to client/apps/game/src/ui/components/quest/steps/travel-steps.tsx index 96329909f7..7361cad7b1 100644 --- a/client/apps/game/src/ui/components/quest/steps/travelSteps.tsx +++ b/client/apps/game/src/ui/components/quest/steps/travel-steps.tsx @@ -1,6 +1,6 @@ -import useUIStore from "@/hooks/store/useUIStore"; -import { LeftView } from "@/ui/modules/navigation/LeftNavigationModule"; -import { RightView } from "@/ui/modules/navigation/RightNavigationModule"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { LeftView } from "@/ui/modules/navigation/left-navigation-module"; +import { RightView } from "@/ui/modules/navigation/right-navigation-module"; import { StepOptions } from "shepherd.js"; import { StepButton } from "./utils"; diff --git a/client/apps/game/src/ui/components/resources/DepositResources.tsx b/client/apps/game/src/ui/components/resources/deposit-resources.tsx similarity index 85% rename from client/apps/game/src/ui/components/resources/DepositResources.tsx rename to client/apps/game/src/ui/components/resources/deposit-resources.tsx index 2be3e0e4b0..aade33beb7 100644 --- a/client/apps/game/src/ui/components/resources/DepositResources.tsx +++ b/client/apps/game/src/ui/components/resources/deposit-resources.tsx @@ -1,11 +1,10 @@ -import { useDojo } from "@/hooks/context/DojoContext"; -import { ArrivalInfo } from "@/hooks/helpers/use-resource-arrivals"; -import { useStructureByEntityId } from "@/hooks/helpers/useStructures"; -import useUIStore from "@/hooks/store/useUIStore"; -import { soundSelector, useUiSounds } from "@/hooks/useUISound"; -import Button from "@/ui/elements/Button"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useStructureByEntityId } from "@/hooks/helpers/use-structures"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { soundSelector, useUiSounds } from "@/hooks/use-ui-sound"; +import Button from "@/ui/elements/button"; import { getEntityIdFromKeys } from "@/ui/utils/utils"; -import { BattleManager, ID, Resource, ResourceInventoryManager } from "@bibliothecadao/eternum"; +import { ArrivalInfo, BattleManager, ID, Resource, ResourceInventoryManager } from "@bibliothecadao/eternum"; import { useComponentValue } from "@dojoengine/react"; import { useMemo, useState } from "react"; diff --git a/client/apps/game/src/ui/components/resources/EntityResourceTable.tsx b/client/apps/game/src/ui/components/resources/entity-resource-table.tsx similarity index 90% rename from client/apps/game/src/ui/components/resources/EntityResourceTable.tsx rename to client/apps/game/src/ui/components/resources/entity-resource-table.tsx index 6657507075..7ec846bc96 100644 --- a/client/apps/game/src/ui/components/resources/EntityResourceTable.tsx +++ b/client/apps/game/src/ui/components/resources/entity-resource-table.tsx @@ -1,12 +1,12 @@ import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; -import useNextBlockTimestamp from "@/hooks/useNextBlockTimestamp"; +import { useDojo } from "@/hooks/context/dojo-context"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; +import { ResourceChip } from "@/ui/components/resources/resource-chip"; import { getEntityIdFromKeys, gramToKg, multiplyByPrecision } from "@/ui/utils/utils"; import { BuildingType, CapacityConfigCategory, ID, RESOURCE_TIERS, StructureType } from "@bibliothecadao/eternum"; import { useComponentValue } from "@dojoengine/react"; import { getComponentValue } from "@dojoengine/recs"; import { useMemo } from "react"; -import { ResourceChip } from "./ResourceChip"; export const EntityResourceTable = ({ entityId }: { entityId: ID | undefined }) => { const dojo = useDojo(); diff --git a/client/apps/game/src/ui/components/resources/InventoryResources.tsx b/client/apps/game/src/ui/components/resources/inventory-resources.tsx similarity index 84% rename from client/apps/game/src/ui/components/resources/InventoryResources.tsx rename to client/apps/game/src/ui/components/resources/inventory-resources.tsx index 235d28010f..67ae4ddd0e 100644 --- a/client/apps/game/src/ui/components/resources/InventoryResources.tsx +++ b/client/apps/game/src/ui/components/resources/inventory-resources.tsx @@ -1,8 +1,8 @@ -import { debouncedAddToSubscription } from "@/dojo/debouncedQueries"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useResourceBalance, useResourcesUtils } from "@/hooks/helpers/useResources"; -import { ResourceCost } from "@/ui/elements/ResourceCost"; +import { debouncedAddToSubscription } from "@/dojo/debounced-queries"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { ResourceCost } from "@/ui/elements/resource-cost"; import { divideByPrecision } from "@/ui/utils/utils"; +import { getBalance, getInventoryResources } from "@/utils/resources"; import { ID, Resource, ResourcesIds } from "@bibliothecadao/eternum"; import { useMemo, useState } from "react"; @@ -27,15 +27,22 @@ export const InventoryResources = ({ const dojo = useDojo(); const [showAll, setShowAll] = useState(false); - const { useResourcesFromBalance } = useResourcesUtils(); - const { getBalance } = useResourceBalance(); - const inventoriesResources = useResourcesFromBalance(entityId); + const inventoriesResources = useMemo( + () => getInventoryResources(entityId, dojo.setup.components), + [entityId, dojo.setup.components], + ); const [isSyncing, setIsSyncing] = useState(false); const dynamicResources = useMemo( - () => dynamic.map((resourceId): Resource => ({ resourceId, amount: getBalance(entityId, resourceId).balance })), + () => + dynamic.map( + (resourceId): Resource => ({ + resourceId, + amount: getBalance(entityId, resourceId, dojo.setup.components).balance, + }), + ), [dynamic, entityId, getBalance], ); diff --git a/client/apps/game/src/ui/components/resources/RealmResourcesIO.tsx b/client/apps/game/src/ui/components/resources/realm-resources-io.tsx similarity index 78% rename from client/apps/game/src/ui/components/resources/RealmResourcesIO.tsx rename to client/apps/game/src/ui/components/resources/realm-resources-io.tsx index 08ca68215b..35dcc38578 100644 --- a/client/apps/game/src/ui/components/resources/RealmResourcesIO.tsx +++ b/client/apps/game/src/ui/components/resources/realm-resources-io.tsx @@ -1,8 +1,10 @@ import { configManager } from "@/dojo/setup"; -import { useGetRealm } from "@/hooks/helpers/useRealm"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; -import { unpackResources } from "@/ui/utils/packedData"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; +import { unpackResources } from "@/ui/utils/packed-data"; +import { getRealmInfo } from "@/utils/realm"; import { ID, ResourcesIds } from "@bibliothecadao/eternum"; +import { getEntityIdFromKeys } from "@dojoengine/utils"; export const RealmResourcesIO = ({ realmEntityId, @@ -10,12 +12,13 @@ export const RealmResourcesIO = ({ titleClassName, size = "xs", }: { - realmEntityId?: ID; + realmEntityId: ID; className?: string; titleClassName?: string; size?: "xs" | "sm" | "md" | "lg" | "xl" | "xxl"; }) => { - const { realm } = useGetRealm(realmEntityId); + const dojo = useDojo(); + const realm = getRealmInfo(getEntityIdFromKeys([BigInt(realmEntityId)]), dojo.setup.components); const resourcesProduced = realm ? unpackResources(realm.resourceTypesPacked) : []; const resourcesInputs = configManager.resourceInputs; diff --git a/client/apps/game/src/ui/components/resources/realm-transfer.tsx b/client/apps/game/src/ui/components/resources/realm-transfer.tsx index 31bd232538..a0f10565a8 100644 --- a/client/apps/game/src/ui/components/resources/realm-transfer.tsx +++ b/client/apps/game/src/ui/components/resources/realm-transfer.tsx @@ -1,18 +1,17 @@ -import { useDojo } from "@/hooks/context/DojoContext"; -import { PlayerStructure, useEntities } from "@/hooks/helpers/useEntities"; -import { useResourceManager } from "@/hooks/helpers/useResources"; -import useUIStore from "@/hooks/store/useUIStore"; -import Button from "@/ui/elements/Button"; -import { NumberInput } from "@/ui/elements/NumberInput"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { usePlayerStructures } from "@/hooks/helpers/use-entities"; +import { useResourceManager } from "@/hooks/helpers/use-resources"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { OSWindow } from "@/ui/components/navigation/os-window"; +import Button from "@/ui/elements/button"; +import { NumberInput } from "@/ui/elements/number-input"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { calculateDonkeysNeeded, currencyFormat, getTotalResourceWeight, multiplyByPrecision } from "@/ui/utils/utils"; -import { EternumGlobalConfig, ResourcesIds, findResourceById } from "@bibliothecadao/eternum"; -import { Dispatch, SetStateAction, memo, useCallback, useEffect, useMemo, useState } from "react"; - -import { ID } from "@bibliothecadao/eternum"; +import { ID, PlayerStructure, RESOURCE_PRECISION, ResourcesIds, findResourceById } from "@bibliothecadao/eternum"; import { ArrowLeftIcon, ArrowRightIcon } from "lucide-react"; +import { Dispatch, SetStateAction, memo, useCallback, useEffect, useMemo, useState } from "react"; import { num } from "starknet"; -import { OSWindow } from "../navigation/OSWindow"; + type transferCall = { structureId: ID; @@ -35,7 +34,7 @@ export const RealmTransfer = memo( const isOpen = useUIStore((state) => state.isPopupOpen(resource.toString())); const selectedStructureEntityId = useUIStore((state) => state.structureEntityId); - const { playerStructures } = useEntities(); + const playerStructures = usePlayerStructures(); const [isLoading, setIsLoading] = useState(false); const [calls, setCalls] = useState([]); @@ -64,7 +63,7 @@ export const RealmTransfer = memo( const cleanedCalls = calls.map(({ sender_entity_id, recipient_entity_id, resources }) => ({ sender_entity_id, recipient_entity_id, - resources: [resources[0], BigInt(Number(resources[1]) * EternumGlobalConfig.resources.resourcePrecision)], + resources: [resources[0], BigInt(Number(resources[1]) * RESOURCE_PRECISION)], })); try { @@ -109,7 +108,7 @@ export const RealmTransfer = memo(
{currencyFormat(balance ? Number(balance) : 0, 2)}
- {playerStructures().map((structure) => ( + {playerStructures.map((structure) => ( { - let netRate = resourceManager.netRate(); - if (netRate[1] < 0) { - // net rate is negative - if (Math.abs(netRate[1]) > resourceManager.balance(useUIStore.getState().currentDefaultTick)) { - return 0; - } - } - return netRate[1]; - }, [resourceManager, production]); + const productionRate = useMemo(() => { + return Number(divideByPrecision(Number(production?.production_rate || 0))); + }, [production]); + + const productionEndsAt = useMemo(() => { + return resourceManager.getProductionEndsAt(); + }, [production]); + useEffect(() => { const tickTime = configManager.getTick(TickIds.Default) * 1000; let realTick = useUIStore.getState().currentDefaultTick; - const resource = resourceManager.getResource(); - const [sign, rate] = resourceManager.netRate(); - - const productionDuration = resourceManager.productionDuration(realTick); - const depletionDuration = resourceManager.depletionDuration(realTick); - - const newBalance = resourceManager.balanceFromComponents( - resourceId, - rate, - sign, - resource?.balance, - productionDuration, - depletionDuration, - ); - + const newBalance = resourceManager.balance(realTick); setBalance(newBalance); - if (Math.abs(netRate) > 0) { + if (Math.abs(productionRate) > 0) { const interval = setInterval(() => { realTick += 1; - const localResource = resourceManager.getResource(); - const localProductionDuration = resourceManager.productionDuration(realTick); - const localDepletionDuration = resourceManager.depletionDuration(realTick); - - const newBalance = resourceManager.balanceFromComponents( - resourceId, - rate, - netRate > 0, - localResource?.balance, - localProductionDuration, - localDepletionDuration, - ); - + const newBalance = resourceManager.balance(realTick); setBalance(newBalance); }, tickTime); return () => clearInterval(interval); } - }, [setBalance, resourceManager, netRate, resourceId, production]); + }, [setBalance, resourceManager, resourceId, production]); - const isConsumingInputsWithoutOutput = useMemo(() => { - if (!production?.production_rate) return false; - return resourceManager.isConsumingInputsWithoutOutput(useUIStore.getState().currentDefaultTick); - }, [resourceManager, production, entityId]); const icon = useMemo( () => ( @@ -124,17 +91,8 @@ export const ResourceChip = ({ ); const reachedMaxCap = useMemo(() => { - return maxAmountStorable === balance && Math.abs(netRate) > 0; - }, [maxAmountStorable, balance, netRate]); - - const timeUntilFinishTick = useMemo(() => { - return resourceManager.timeUntilFinishTick(useUIStore.getState().currentDefaultTick); - }, [resourceManager, production]); - - const isProducingOrConsuming = useMemo(() => { - if (netRate > 0 && timeUntilFinishTick <= 0) return false; - return Math.abs(netRate) > 0 && !reachedMaxCap && !isConsumingInputsWithoutOutput && balance > 0; - }, [netRate, reachedMaxCap, isConsumingInputsWithoutOutput, balance, timeUntilFinishTick]); + return maxAmountStorable === balance && Math.abs(productionRate) > 0; + }, [maxAmountStorable, balance, production]); const handleMouseEnter = useCallback(() => { setTooltip({ @@ -172,17 +130,17 @@ export const ResourceChip = ({ : ""}
- {isProducingOrConsuming ? ( + {Math.abs(productionRate) > 0 && productionEndsAt > useUIStore.getState().currentDefaultTick ? (
- {parseFloat(netRate.toString()) < 0 ? "" : "+"} + + {showPerHour - ? `${currencyIntlFormat(netRate * 3.6, 2)}/h` - : `${currencyIntlFormat(netRate / 1000, 2)}/s`} + ? `${currencyIntlFormat(productionRate * 60 * 60, 2)}/h` + : `${currencyIntlFormat(productionRate, 2)}/s`}
) : ( @@ -192,9 +150,9 @@ export const ResourceChip = ({ position: "top", content: ( <> - {isConsumingInputsWithoutOutput - ? "Production has stopped because inputs have been depleted" - : "Production has stopped because the max balance has been reached"} + {reachedMaxCap + ? "Production has stopped because the max balance has been reached" + : "Production has stopped because labor has been depleted"} ), }); @@ -204,7 +162,7 @@ export const ResourceChip = ({ }} className="self-center px-2 col-span-3 mx-auto" > - {isConsumingInputsWithoutOutput || reachedMaxCap ? "⚠️" : ""} + {reachedMaxCap ? "MaxCap" : ""}
)}
diff --git a/client/apps/game/src/ui/components/resources/TravelInfo.tsx b/client/apps/game/src/ui/components/resources/travel-info.tsx similarity index 96% rename from client/apps/game/src/ui/components/resources/TravelInfo.tsx rename to client/apps/game/src/ui/components/resources/travel-info.tsx index 26cf065000..8fe8264ea4 100644 --- a/client/apps/game/src/ui/components/resources/TravelInfo.tsx +++ b/client/apps/game/src/ui/components/resources/travel-info.tsx @@ -1,7 +1,7 @@ import { configManager } from "@/dojo/setup"; -import { useResourceBalance } from "@/hooks/helpers/useResources"; +import { useDojo } from "@/hooks/context/dojo-context"; import { GRAMS_PER_KG } from "@/ui/constants"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { calculateDonkeysNeeded, currencyFormat, @@ -9,6 +9,7 @@ import { getTotalResourceWeight, multiplyByPrecision, } from "@/ui/utils/utils"; +import { getBalance } from "@/utils/resources"; import { ResourcesIds, type ID, type Resource } from "@bibliothecadao/eternum"; import { useEffect, useMemo, useState } from "react"; @@ -25,19 +26,19 @@ export const TravelInfo = ({ setCanCarry?: (canContinue: boolean) => void; isAmm?: boolean; }) => { + const dojo = useDojo(); + const [resourceWeight, setResourceWeight] = useState(0); const [donkeyBalance, setDonkeyBalance] = useState(0); const neededDonkeys = useMemo(() => calculateDonkeysNeeded(resourceWeight), [resourceWeight]); - const { getBalance } = useResourceBalance(); - useEffect(() => { const totalWeight = getTotalResourceWeight(resources); const multipliedWeight = multiplyByPrecision(totalWeight); setResourceWeight(multipliedWeight); - const { balance } = getBalance(entityId, ResourcesIds.Donkey); + const { balance } = getBalance(entityId, ResourcesIds.Donkey, dojo.setup.components); const currentDonkeyAmount = isAmm ? 0 : resources.find((r) => r.resourceId === ResourcesIds.Donkey)?.amount || 0; diff --git a/client/apps/game/src/ui/components/structures/construction/StructureCard.tsx b/client/apps/game/src/ui/components/structures/construction/structure-card.tsx similarity index 91% rename from client/apps/game/src/ui/components/structures/construction/StructureCard.tsx rename to client/apps/game/src/ui/components/structures/construction/structure-card.tsx index 3d00e0da74..8ff368e1c0 100644 --- a/client/apps/game/src/ui/components/structures/construction/StructureCard.tsx +++ b/client/apps/game/src/ui/components/structures/construction/structure-card.tsx @@ -1,9 +1,9 @@ -import useUIStore from "@/hooks/store/useUIStore"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { ResourcesIds, StructureType } from "@bibliothecadao/eternum"; import clsx from "clsx"; import { InfoIcon } from "lucide-react"; -import { STRUCTURE_IMAGE_PATHS } from "./StructureConstructionMenu"; +import { STRUCTURE_IMAGE_PATHS } from "./structure-construction-menu"; export const StructureCard = ({ structureId, diff --git a/client/apps/game/src/ui/components/structures/construction/StructureConstructionMenu.tsx b/client/apps/game/src/ui/components/structures/construction/structure-construction-menu.tsx similarity index 82% rename from client/apps/game/src/ui/components/structures/construction/StructureConstructionMenu.tsx rename to client/apps/game/src/ui/components/structures/construction/structure-construction-menu.tsx index f888d5f859..ee6e50b97e 100644 --- a/client/apps/game/src/ui/components/structures/construction/StructureConstructionMenu.tsx +++ b/client/apps/game/src/ui/components/structures/construction/structure-construction-menu.tsx @@ -1,21 +1,24 @@ import { configManager } from "@/dojo/setup"; -import { useResourceBalance } from "@/hooks/helpers/useResources"; -import useUIStore from "@/hooks/store/useUIStore"; -import { Headline } from "@/ui/elements/Headline"; -import { ResourceCost } from "@/ui/elements/ResourceCost"; +import { useDojo } from "@/hooks/context/dojo-context"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { StructureCard } from "@/ui/components/structures/construction/structure-card"; +import { Headline } from "@/ui/elements/headline"; +import { ResourceCost } from "@/ui/elements/resource-cost"; import { multiplyByPrecision } from "@/ui/utils/utils"; +import { ETERNUM_CONFIG } from "@/utils/config"; +import { getBalance } from "@/utils/resources"; import { - EternumGlobalConfig, - HYPERSTRUCTURE_CONSTRUCTION_COSTS_SCALED, - HYPERSTRUCTURE_CREATION_COSTS, ID, + RESOURCE_PRECISION, ResourceTier, ResourcesIds, StructureType, + scaleResourceCostMinMax } from "@bibliothecadao/eternum"; import React from "react"; -import { StructureCard } from "./StructureCard"; + +const eternumConfig = await ETERNUM_CONFIG(); const STRUCTURE_IMAGE_PREFIX = "/images/buildings/thumb/"; export const STRUCTURE_IMAGE_PATHS = { [StructureType.Bank]: STRUCTURE_IMAGE_PREFIX + "mine.png", @@ -26,11 +29,11 @@ export const STRUCTURE_IMAGE_PATHS = { }; export const StructureConstructionMenu = ({ className, entityId }: { className?: string; entityId: number }) => { + const dojo = useDojo(); + const setPreviewBuilding = useUIStore((state) => state.setPreviewBuilding); const previewBuilding = useUIStore((state) => state.previewBuilding); - const { getBalance } = useResourceBalance(); - const buildingTypes = Object.keys(StructureType) .filter((key) => isNaN(Number(key))) .filter( @@ -40,7 +43,7 @@ export const StructureConstructionMenu = ({ className, entityId }: { className?: const checkBalance = (cost: any) => Object.keys(cost).every((resourceId) => { const resourceCost = cost[Number(resourceId)]; - const balance = getBalance(entityId, resourceCost.resource); + const balance = getBalance(entityId, resourceCost.resource, dojo.setup.components); return balance.balance >= multiplyByPrecision(resourceCost.amount); }); @@ -51,7 +54,7 @@ export const StructureConstructionMenu = ({ className, entityId }: { className?: // if is hyperstructure, the construction cost are only fragments const isHyperstructure = building === StructureType["Hyperstructure"]; - const cost = HYPERSTRUCTURE_CONSTRUCTION_COSTS_SCALED.filter( + const cost = scaleResourceCostMinMax(eternumConfig.hyperstructures.hyperstructureCreationCosts, RESOURCE_PRECISION).filter( (cost) => !isHyperstructure || cost.resource === ResourcesIds.AncientFragment, ); @@ -91,9 +94,11 @@ const StructureInfo = ({ entityId: ID | undefined; extraButtons?: React.ReactNode[]; }) => { + const dojo = useDojo(); + // if is hyperstructure, the construction cost are only fragments const isHyperstructure = structureId === StructureType["Hyperstructure"]; - const cost = HYPERSTRUCTURE_CREATION_COSTS.filter( + const cost = eternumConfig.hyperstructures.hyperstructureCreationCosts.filter( (cost) => !isHyperstructure || cost.resource_tier === ResourceTier.Lords, ); @@ -102,8 +107,6 @@ const StructureInfo = ({ ? `+${configManager.getHyperstructureConfig().pointsPerCycle} points` : ""; - const { getBalance } = useResourceBalance(); - return (
{StructureType[structureId]} @@ -118,13 +121,13 @@ const StructureInfo = ({
One time cost
{Object.keys(cost).map((resourceId, index) => { - const balance = getBalance(entityId || 0, ResourcesIds.AncientFragment); + const balance = getBalance(entityId || 0, ResourcesIds.AncientFragment, dojo.setup.components); return ( ); diff --git a/client/apps/game/src/ui/components/structures/worldmap/StructureCard.tsx b/client/apps/game/src/ui/components/structures/worldmap/structure-card.tsx similarity index 93% rename from client/apps/game/src/ui/components/structures/worldmap/StructureCard.tsx rename to client/apps/game/src/ui/components/structures/worldmap/structure-card.tsx index 6bdf8a5854..4160a79fce 100644 --- a/client/apps/game/src/ui/components/structures/worldmap/StructureCard.tsx +++ b/client/apps/game/src/ui/components/structures/worldmap/structure-card.tsx @@ -1,19 +1,26 @@ import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { getArmyByEntityId } from "@/hooks/helpers/useArmies"; -import { useGuilds } from "@/hooks/helpers/useGuilds"; -import { useQuery } from "@/hooks/helpers/useQuery"; -import { useIsStructureImmune, useStructureAtPosition, useStructureImmunityTimer } from "@/hooks/helpers/useStructures"; -import useUIStore from "@/hooks/store/useUIStore"; -import useNextBlockTimestamp from "@/hooks/useNextBlockTimestamp"; -import { Position } from "@/types/Position"; -import { ArmyCapacity } from "@/ui/elements/ArmyCapacity"; -import Button from "@/ui/elements/Button"; -import { Headline } from "@/ui/elements/Headline"; -import { NumberInput } from "@/ui/elements/NumberInput"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; -import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/ui/elements/Tabs"; -import { getTotalTroops } from "@/ui/modules/military/battle-view/BattleHistory"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useGetArmyByEntityId } from "@/hooks/helpers/use-armies"; +import { useGuilds } from "@/hooks/helpers/use-guilds"; +import { useQuery } from "@/hooks/helpers/use-query"; +import { + useIsStructureImmune, + useStructureAtPosition, + useStructureImmunityTimer, +} from "@/hooks/helpers/use-structures"; +import useUIStore from "@/hooks/store/use-ui-store"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; +import { Position } from "@/types/position"; +import { ResourceExchange } from "@/ui/components/hyperstructures/resource-exchange"; +import { ImmunityTimer } from "@/ui/components/worldmap/structures/structure-label"; +import { StructureListItem } from "@/ui/components/worldmap/structures/structure-list-item"; +import { ArmyCapacity } from "@/ui/elements/army-capacity"; +import Button from "@/ui/elements/button"; +import { Headline } from "@/ui/elements/headline"; +import { NumberInput } from "@/ui/elements/number-input"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/ui/elements/tabs"; +import { getTotalTroops } from "@/ui/modules/military/battle-view/battle-history"; import { currencyFormat, formatNumber, formatStringNumber } from "@/ui/utils/utils"; import { ArmyInfo, ContractAddress, ID, ResourcesIds } from "@bibliothecadao/eternum"; import { useComponentValue } from "@dojoengine/react"; @@ -21,9 +28,6 @@ import { getEntityIdFromKeys } from "@dojoengine/utils"; import clsx from "clsx"; import { ArrowRight } from "lucide-react"; import { useMemo, useState } from "react"; -import { ResourceExchange } from "../../hyperstructures/ResourceExchange"; -import { ImmunityTimer } from "../../worldmap/structures/StructureLabel"; -import { StructureListItem } from "../../worldmap/structures/StructureListItem"; export const StructureCard = ({ className, @@ -208,7 +212,7 @@ const TroopExchange = ({ }, } = useDojo(); - const { getArmy } = getArmyByEntityId(); + const { getArmy } = useGetArmyByEntityId(); const maxTroopCountPerArmy = configManager.getTroopConfig().maxTroopCount; diff --git a/client/apps/game/src/ui/components/Toaster.tsx b/client/apps/game/src/ui/components/toaster.tsx similarity index 100% rename from client/apps/game/src/ui/components/Toaster.tsx rename to client/apps/game/src/ui/components/toaster.tsx diff --git a/client/apps/game/src/ui/components/toggle/ToggleComponent.tsx b/client/apps/game/src/ui/components/toggle/toggle-component.tsx similarity index 100% rename from client/apps/game/src/ui/components/toggle/ToggleComponent.tsx rename to client/apps/game/src/ui/components/toggle/toggle-component.tsx diff --git a/client/apps/game/src/ui/components/trading/MarketModal.tsx b/client/apps/game/src/ui/components/trading/market-modal.tsx similarity index 83% rename from client/apps/game/src/ui/components/trading/MarketModal.tsx rename to client/apps/game/src/ui/components/trading/market-modal.tsx index a7f6a243f1..e209032da8 100644 --- a/client/apps/game/src/ui/components/trading/MarketModal.tsx +++ b/client/apps/game/src/ui/components/trading/market-modal.tsx @@ -1,79 +1,84 @@ -import { ReactComponent as Coins } from "@/assets/icons/Coins.svg"; -import { ReactComponent as Crown } from "@/assets/icons/Crown.svg"; -import { ReactComponent as Scroll } from "@/assets/icons/Scroll.svg"; -import { ReactComponent as Sparkles } from "@/assets/icons/Sparkles.svg"; -import { ReactComponent as Swap } from "@/assets/icons/Swap.svg"; +import { ReactComponent as Coins } from "@/assets/icons/coins.svg"; +import { ReactComponent as Crown } from "@/assets/icons/crown.svg"; +import { ReactComponent as Scroll } from "@/assets/icons/scroll.svg"; +import { ReactComponent as Sparkles } from "@/assets/icons/sparkles.svg"; +import { ReactComponent as Swap } from "@/assets/icons/swap.svg"; import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useBattlesByPosition } from "@/hooks/helpers/battles/useBattles"; -import { useArmyByArmyEntityId } from "@/hooks/helpers/useArmies"; -import { useGetBanks } from "@/hooks/helpers/useBanks"; -import { useEntities } from "@/hooks/helpers/useEntities"; -import { useStructureByPosition } from "@/hooks/helpers/useStructures"; -import { useSetMarket } from "@/hooks/helpers/useTrade"; -import useMarketStore from "@/hooks/store/useMarketStore"; -import { useModalStore } from "@/hooks/store/useModalStore"; -import useUIStore from "@/hooks/store/useUIStore"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useArmyByArmyEntityId } from "@/hooks/helpers/use-armies"; +import { useBank } from "@/hooks/helpers/use-bank"; +import { useBattlesAtPosition } from "@/hooks/helpers/use-battles"; +import { usePlayerStructures } from "@/hooks/helpers/use-entities"; +import { useStructureByPosition } from "@/hooks/helpers/use-structures"; +import { useSetMarket } from "@/hooks/helpers/use-trade"; +import useMarketStore from "@/hooks/store/use-market-store"; +import { useModalStore } from "@/hooks/store/use-modal-store"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { HintModal } from "@/ui/components/hints/hint-modal"; +import { TroopDisplay } from "@/ui/components/military/troop-chip"; +import { ModalContainer } from "@/ui/components/modal-container"; import { BuildingThumbs } from "@/ui/config"; -import CircleButton from "@/ui/elements/CircleButton"; -import { LoadingAnimation } from "@/ui/elements/LoadingAnimation"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/ui/elements/Select"; +import CircleButton from "@/ui/elements/circle-button"; +import { LoadingAnimation } from "@/ui/elements/loading-animation"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/ui/elements/select"; import { Tabs } from "@/ui/elements/tab"; -import { formatTimeDifference } from "@/ui/modules/military/battle-view/BattleProgress"; +import { formatTimeDifference } from "@/ui/modules/military/battle-view/battle-progress"; import { currencyFormat, getEntityIdFromKeys } from "@/ui/utils/utils"; import { BattleManager, ID, ResourcesIds } from "@bibliothecadao/eternum"; import { useComponentValue } from "@dojoengine/react"; import { Suspense, lazy, useMemo, useState } from "react"; -import { ModalContainer } from "../ModalContainer"; -import { HintModal } from "../hints/HintModal"; -import { TroopDisplay } from "../military/TroopChip"; const MarketResourceSidebar = lazy(() => - import("./MarketResourceSideBar").then((module) => ({ default: module.MarketResourceSidebar })), + import("@/ui/components/trading/market-resource-sidebar").then((module) => ({ + default: module.MarketResourceSidebar, + })), ); const MarketOrderPanel = lazy(() => - import("./MarketOrderPanel").then((module) => ({ default: module.MarketOrderPanel })), + import("./market-order-panel").then((module) => ({ default: module.MarketOrderPanel })), ); -const BankPanel = lazy(() => import("../bank/BankList").then((module) => ({ default: module.BankPanel }))); +const BankPanel = lazy(() => + import("@/ui/components/bank/bank-list").then((module) => ({ default: module.BankPanel })), +); const MarketTradingHistory = lazy(() => - import("./MarketTradingHistory").then((module) => ({ default: module.MarketTradingHistory })), + import("@/ui/components/trading/market-trading-history").then((module) => ({ default: module.MarketTradingHistory })), ); -const RealmProduction = lazy(() => import("./RealmProduction").then((module) => ({ default: module.RealmProduction }))); +const RealmProduction = lazy(() => + import("@/ui/components/trading/realm-production").then((module) => ({ default: module.RealmProduction })), +); -const TransferView = lazy(() => import("./TransferView").then((module) => ({ default: module.TransferView }))); +const TransferView = lazy(() => + import("@/ui/components/trading/transfer-view").then((module) => ({ default: module.TransferView })), +); export const MarketModal = () => { const dojo = useDojo(); const [selectedTab, setSelectedTab] = useState(0); - const { playerStructures } = useEntities(); + const playerStructures = usePlayerStructures(); const { toggleModal } = useModalStore(); - const banks = useGetBanks(); + const bank = useBank(); const { bidOffers, askOffers } = useSetMarket(); - const bank = banks.length === 1 ? banks[0] : null; - const battles = useBattlesByPosition(bank?.position || { x: 0, y: 0 }); + const battles = useBattlesAtPosition(bank?.position || { x: 0, y: 0 }); const currentBlockTimestamp = useUIStore.getState().nextBlockTimestamp || 0; const getStructure = useStructureByPosition(); const bankStructure = getStructure(bank?.position || { x: 0, y: 0 }); - const battle = useMemo(() => { + const battleEntityId = useMemo(() => { if (battles.length === 0) return null; - return battles - .filter((battle) => battle.isStructureBattle) - .sort((a, b) => Number(a.last_updated || 0) - Number(b.last_updated || 0))[0]; + return battles[0]; }, [battles]); const battleManager = useMemo( - () => new BattleManager(dojo.setup.components, dojo.network.provider, battle?.entity_id || 0), - [battle?.entity_id], + () => new BattleManager(dojo.setup.components, dojo.network.provider, battleEntityId || 0), + [battleEntityId], ); // initial entity id @@ -83,8 +88,6 @@ export const MarketModal = () => { const selectedResource = useMarketStore((state) => state.selectedResource); const setSelectedResource = useMarketStore((state) => state.setSelectedResource); - const structures = playerStructures(); - const [isSiegeOngoing, isBattleOngoing] = useMemo(() => { const isSiegeOngoing = battleManager.isSiege(currentBlockTimestamp); const isBattleOngoing = battleManager.isBattleOngoing(currentBlockTimestamp); @@ -212,7 +215,7 @@ export const MarketModal = () => { - {structures.map((structure, index) => ( + {playerStructures.map((structure, index) => ( {structure.name} diff --git a/client/apps/game/src/ui/components/trading/MarketOrderPanel.tsx b/client/apps/game/src/ui/components/trading/market-order-panel.tsx similarity index 96% rename from client/apps/game/src/ui/components/trading/MarketOrderPanel.tsx rename to client/apps/game/src/ui/components/trading/market-order-panel.tsx index 214e2c3610..ef51cbc040 100644 --- a/client/apps/game/src/ui/components/trading/MarketOrderPanel.tsx +++ b/client/apps/game/src/ui/components/trading/market-order-panel.tsx @@ -1,14 +1,13 @@ -import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useRealm } from "@/hooks/helpers/useRealm"; -import { useResourceManager } from "@/hooks/helpers/useResources"; -import { useIsResourcesLocked } from "@/hooks/helpers/useStructures"; -import { useTravel } from "@/hooks/helpers/useTravel"; -import useNextBlockTimestamp from "@/hooks/useNextBlockTimestamp"; -import { soundSelector, useUiSounds } from "@/hooks/useUISound"; -import Button from "@/ui/elements/Button"; -import { NumberInput } from "@/ui/elements/NumberInput"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useResourceManager } from "@/hooks/helpers/use-resources"; +import { useIsResourcesLocked } from "@/hooks/helpers/use-structures"; +import { useTravel } from "@/hooks/helpers/use-travel"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; +import { soundSelector, useUiSounds } from "@/hooks/use-ui-sound"; +import { ConfirmationPopup } from "@/ui/components/bank/confirmation-popup"; +import Button from "@/ui/elements/button"; +import { NumberInput } from "@/ui/elements/number-input"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { calculateDonkeysNeeded, currencyFormat, @@ -17,20 +16,21 @@ import { getTotalResourceWeight, multiplyByPrecision, } from "@/ui/utils/utils"; +import { getRealmAddressName } from "@/utils/realm"; import { DONKEY_ENTITY_TYPE, - EternumGlobalConfig, - ONE_MONTH, + RESOURCE_PRECISION, ResourceManager, ResourcesIds, + configManager, findResourceById, type ID, - type MarketInterface, + type MarketInterface } from "@bibliothecadao/eternum"; import clsx from "clsx"; import { memo, useCallback, useEffect, useMemo, useState } from "react"; -import { ConfirmationPopup } from "../bank/ConfirmationPopup"; +export const ONE_MONTH = 2628000; export const MarketResource = memo( ({ entityId, @@ -266,8 +266,6 @@ const OrderRow = memo( [entityId, updateBalance], ); - const { getRealmAddressName } = useRealm(); - const isMakerResourcesLocked = useIsResourcesLocked(offer.makerId); const [confirmOrderModal, setConfirmOrderModal] = useState(false); @@ -360,7 +358,7 @@ const OrderRow = memo( }, [donkeyProductionManager, donkeyProduction, currentDefaultTick]); const accountName = useMemo(() => { - return getRealmAddressName(offer.makerId); + return getRealmAddressName(offer.makerId, dojo.setup.components); }, [offer.originName]); const onAccept = async () => { @@ -498,7 +496,7 @@ const OrderRow = memo( const OrderCreation = memo( ({ entityId, resourceId, isBuy = false }: { entityId: ID; resourceId: ResourcesIds; isBuy?: boolean }) => { const [loading, setLoading] = useState(false); - const [resource, setResource] = useState(EternumGlobalConfig.resources.resourcePrecision); + const [resource, setResource] = useState(RESOURCE_PRECISION); const [lords, setLords] = useState(100); const [bid, setBid] = useState(String(lords / resource)); const { nextBlockTimestamp } = useNextBlockTimestamp(); diff --git a/client/apps/game/src/ui/components/trading/MarketResourceSideBar.tsx b/client/apps/game/src/ui/components/trading/market-resource-sidebar.tsx similarity index 95% rename from client/apps/game/src/ui/components/trading/MarketResourceSideBar.tsx rename to client/apps/game/src/ui/components/trading/market-resource-sidebar.tsx index fd2dac241d..f7321b27c1 100644 --- a/client/apps/game/src/ui/components/trading/MarketResourceSideBar.tsx +++ b/client/apps/game/src/ui/components/trading/market-resource-sidebar.tsx @@ -1,7 +1,7 @@ -import { useDojo } from "@/hooks/context/DojoContext"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { MarketResource } from "@/ui/components/trading/market-order-panel"; import { ID, MarketInterface, MarketManager, RESOURCE_TIERS, ResourcesIds } from "@bibliothecadao/eternum"; import { useMemo } from "react"; -import { MarketResource } from "./MarketOrderPanel"; export const MarketResourceSidebar = ({ entityId, diff --git a/client/apps/game/src/ui/components/trading/MarketTradingHistory.tsx b/client/apps/game/src/ui/components/trading/market-trading-history.tsx similarity index 94% rename from client/apps/game/src/ui/components/trading/MarketTradingHistory.tsx rename to client/apps/game/src/ui/components/trading/market-trading-history.tsx index 86bdd8351d..584af9cd4c 100644 --- a/client/apps/game/src/ui/components/trading/MarketTradingHistory.tsx +++ b/client/apps/game/src/ui/components/trading/market-trading-history.tsx @@ -1,13 +1,13 @@ import { world } from "@/dojo/world"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useTrade } from "@/hooks/helpers/useTrade"; -import { Checkbox } from "@/ui/elements/Checkbox"; -import { SelectResource } from "@/ui/elements/SelectResource"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useTrade } from "@/hooks/helpers/use-trade"; +import { EventType, TradeHistoryEvent, TradeHistoryRowHeader } from "@/ui/components/trading/trade-history-event"; +import { Checkbox } from "@/ui/elements/checkbox"; +import { SelectResource } from "@/ui/elements/select-resource"; import { ID, Resource, ResourcesIds } from "@bibliothecadao/eternum"; import { defineComponentSystem, getComponentValue, isComponentUpdate } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { memo, useEffect, useMemo, useState } from "react"; -import { EventType, TradeHistoryEvent, TradeHistoryRowHeader } from "./TradeHistoryEvent"; const MAX_TRADES = 100; diff --git a/client/apps/game/src/ui/components/trading/RealmProduction.tsx b/client/apps/game/src/ui/components/trading/realm-production.tsx similarity index 63% rename from client/apps/game/src/ui/components/trading/RealmProduction.tsx rename to client/apps/game/src/ui/components/trading/realm-production.tsx index 80af913df3..22f30c914f 100644 --- a/client/apps/game/src/ui/components/trading/RealmProduction.tsx +++ b/client/apps/game/src/ui/components/trading/realm-production.tsx @@ -1,34 +1,45 @@ import { configManager } from "@/dojo/setup"; -import { getRealms } from "@/hooks/helpers/useRealm"; -import useUIStore from "@/hooks/store/useUIStore"; -import { SelectResource } from "@/ui/elements/SelectResource"; -import { unpackResources } from "@/ui/utils/packedData"; +import { useRealms } from "@/hooks/helpers/use-realm"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; +import { SelectResource } from "@/ui/elements/select-resource"; +import { unpackResources } from "@/ui/utils/packed-data"; import { ResourcesIds } from "@bibliothecadao/eternum"; import { useMemo, useState } from "react"; -import { RealmResourcesIO } from "../resources/RealmResourcesIO"; export const RealmProduction = () => { const setSelectedPlayer = useUIStore((state) => state.setSelectedPlayer); const toggleModal = useUIStore((state) => state.toggleModal); - const realms = getRealms(); + // todo: pay attention to expensive query + const realms = useRealms(); const [filterProduced, setFilterProduced] = useState(null); const [filterConsumed, setFilterConsumed] = useState(null); const resourcesInputs = useMemo(() => configManager.resourceInputs, []); + const realmsProduction = useMemo(() => { + return realms.map((realm) => { + const resourcesProduced = unpackResources(realm.produced_resources); + + return { + ...realm, + resourcesProduced, + }; + }); + }, [realms]); + const filteredRealms = useMemo(() => { if (!realms) return []; - return realms.filter((realm) => { + return realmsProduction.filter((realm) => { if (!realm) return false; - const resourcesProduced = unpackResources(realm.resourceTypesPacked); - if (filterProduced && !resourcesProduced.includes(filterProduced)) return false; + if (filterProduced && !realm.resourcesProduced.includes(filterProduced)) return false; if (filterConsumed) { const resourcesConsumed = new Set( - resourcesProduced.flatMap((resourceId) => + realm.resourcesProduced.flatMap((resourceId) => resourcesInputs[resourceId] .filter((input) => input.resource !== ResourcesIds["Wheat"] && input.resource !== ResourcesIds["Fish"]) .map((input) => input.resource), @@ -40,7 +51,7 @@ export const RealmProduction = () => { return true; }); - }, [realms, filterProduced, filterConsumed, resourcesInputs]); + }, [realmsProduction, filterProduced, filterConsumed, resourcesInputs]); const handleRealmClick = (realm: any) => { toggleModal(null); @@ -67,10 +78,12 @@ export const RealmProduction = () => { className="mb-5 border border-gold/40 rounded-xl p-3 hover:opacity-70" onClick={() => handleRealmClick(realm)} > -

{realm.ownerName}

-

{realm.name}

+
+ {realm.resourcesProduced.map((resourceId) => ( + + ))} +

- {realm.realmId && }
))}
diff --git a/client/apps/game/src/ui/components/trading/ResourceArrivals.tsx b/client/apps/game/src/ui/components/trading/resource-arrivals.tsx similarity index 85% rename from client/apps/game/src/ui/components/trading/ResourceArrivals.tsx rename to client/apps/game/src/ui/components/trading/resource-arrivals.tsx index a1a86b841c..ed525bae36 100644 --- a/client/apps/game/src/ui/components/trading/ResourceArrivals.tsx +++ b/client/apps/game/src/ui/components/trading/resource-arrivals.tsx @@ -1,15 +1,15 @@ import { addToSubscription } from "@/dojo/queries"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { ArrivalInfo } from "@/hooks/helpers/use-resource-arrivals"; -import useNextBlockTimestamp from "@/hooks/useNextBlockTimestamp"; -import Button from "@/ui/elements/Button"; -import { Checkbox } from "@/ui/elements/Checkbox"; -import { Headline } from "@/ui/elements/Headline"; -import { HintModalButton } from "@/ui/elements/HintModalButton"; +import { useDojo } from "@/hooks/context/dojo-context"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; +import { EntityArrival } from "@/ui/components/entities/entity"; +import { HintSection } from "@/ui/components/hints/hint-modal"; +import Button from "@/ui/elements/button"; +import { Checkbox } from "@/ui/elements/checkbox"; +import { Headline } from "@/ui/elements/headline"; +import { HintModalButton } from "@/ui/elements/hint-modal-button"; +import { ArrivalInfo } from "@bibliothecadao/eternum"; import { memo, useEffect, useState } from "react"; import { create } from "zustand"; -import { EntityArrival } from "../entities/Entity"; -import { HintSection } from "../hints/HintModal"; const DISPLAYED_ARRIVALS = 3; interface SubscribedIdsStore { diff --git a/client/apps/game/src/ui/components/trading/SelectEntityFromList.tsx b/client/apps/game/src/ui/components/trading/select-entity-from-list.tsx similarity index 87% rename from client/apps/game/src/ui/components/trading/SelectEntityFromList.tsx rename to client/apps/game/src/ui/components/trading/select-entity-from-list.tsx index d22d998570..fbed4c45f2 100644 --- a/client/apps/game/src/ui/components/trading/SelectEntityFromList.tsx +++ b/client/apps/game/src/ui/components/trading/select-entity-from-list.tsx @@ -1,5 +1,6 @@ -import { useRealm } from "@/hooks/helpers/useRealm"; -import Button from "@/ui/elements/Button"; +import { useDojo } from "@/hooks/context/dojo-context"; +import Button from "@/ui/elements/button"; +import { getRealmAddressName } from "@/utils/realm"; import { ID } from "@bibliothecadao/eternum"; import clsx from "clsx"; import { memo } from "react"; @@ -18,14 +19,16 @@ interface SelectEntityFromListProps { export const SelectEntityFromList = memo( ({ onSelect, selectedEntityId, selectedCounterpartyId, entities }: SelectEntityFromListProps) => { - const { getRealmAddressName } = useRealm(); + const { + setup: { components }, + } = useDojo(); return (
{entities.map((entity) => { const isSelected = selectedEntityId === entity.entity_id; const isDisabled = isSelected || selectedCounterpartyId === entity.entity_id; - const realmName = getRealmAddressName(entity.entity_id); + const realmName = getRealmAddressName(entity.entity_id, components); return (
{ - const { getBalance } = useResourceBalance(); + const dojo = useDojo(); + const { playResourceSound } = usePlayResourceSound(); const orderedResources = useMemo(() => { @@ -50,12 +52,15 @@ export const SelectResources = ({ return (
{selectedResourceIds.map((id: any, index: any) => { - const resource = getBalance(entity_id, id); + const resource = getBalance(entity_id, id, dojo.setup.components); const options = [orderedResources.find((res) => res.id === id), ...unselectedResources].map((res: any) => ({ id: res.id, label: ( - + ), })); diff --git a/client/apps/game/src/ui/components/trading/TradeHistoryEvent.tsx b/client/apps/game/src/ui/components/trading/trade-history-event.tsx similarity index 88% rename from client/apps/game/src/ui/components/trading/TradeHistoryEvent.tsx rename to client/apps/game/src/ui/components/trading/trade-history-event.tsx index ad8c08ed48..26466bf9d8 100644 --- a/client/apps/game/src/ui/components/trading/TradeHistoryEvent.tsx +++ b/client/apps/game/src/ui/components/trading/trade-history-event.tsx @@ -1,8 +1,9 @@ -import { useEntitiesUtils } from "@/hooks/helpers/useEntities"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { currencyIntlFormat, divideByPrecision } from "@/ui/utils/utils"; +import { getAddressNameFromEntity } from "@/utils/entities"; import { Resource, ResourcesIds } from "@bibliothecadao/eternum"; -import { TradeEvent } from "./MarketTradingHistory"; +import { TradeEvent } from "./market-trading-history"; export enum EventType { SWAP = "AMM Swap", @@ -24,7 +25,9 @@ export const TradeHistoryRowHeader = () => { }; export const TradeHistoryEvent = ({ trade }: { trade: TradeEvent }) => { - const { getAddressNameFromEntity } = useEntitiesUtils(); + const { + setup: { components }, + } = useDojo(); const resourceTaken = trade.event.resourceTaken; const resourceGiven = trade.event.resourceGiven; @@ -33,7 +36,7 @@ export const TradeHistoryEvent = ({ trade }: { trade: TradeEvent }) => { } const price = getLordsPricePerResource(trade.event.resourceGiven, trade.event.resourceTaken); - const taker = getAddressNameFromEntity(trade.event.takerId); + const taker = getAddressNameFromEntity(trade.event.takerId, components); return (
diff --git a/client/apps/game/src/ui/components/trading/TransferBetweenEntities.tsx b/client/apps/game/src/ui/components/trading/transfer-between-entities.tsx similarity index 93% rename from client/apps/game/src/ui/components/trading/TransferBetweenEntities.tsx rename to client/apps/game/src/ui/components/trading/transfer-between-entities.tsx index 540b070d94..160fe8138a 100644 --- a/client/apps/game/src/ui/components/trading/TransferBetweenEntities.tsx +++ b/client/apps/game/src/ui/components/trading/transfer-between-entities.tsx @@ -1,20 +1,20 @@ import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useRealm } from "@/hooks/helpers/useRealm"; -import { useTravel } from "@/hooks/helpers/useTravel"; -import { soundSelector, useUiSounds } from "@/hooks/useUISound"; -import Button from "@/ui/elements/Button"; -import { Checkbox } from "@/ui/elements/Checkbox"; -import { Headline } from "@/ui/elements/Headline"; -import TextInput from "@/ui/elements/TextInput"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useTravel } from "@/hooks/helpers/use-travel"; +import { soundSelector, useUiSounds } from "@/hooks/use-ui-sound"; +import { TravelInfo } from "@/ui/components/resources/travel-info"; +import { ToggleComponent } from "@/ui/components/toggle/toggle-component"; +import { SelectEntityFromList } from "@/ui/components/trading/select-entity-from-list"; +import { SelectResources } from "@/ui/components/trading/select-resources"; +import Button from "@/ui/elements/button"; +import { Checkbox } from "@/ui/elements/checkbox"; +import { Headline } from "@/ui/elements/headline"; +import TextInput from "@/ui/elements/text-input"; import { multiplyByPrecision, normalizeDiacriticalMarks } from "@/ui/utils/utils"; +import { getRealmAddressName } from "@/utils/realm"; import { DONKEY_ENTITY_TYPE, ID } from "@bibliothecadao/eternum"; import { ArrowRight, LucideArrowRight } from "lucide-react"; import { memo, useEffect, useMemo, useState } from "react"; -import { TravelInfo } from "../resources/TravelInfo"; -import { ToggleComponent } from "../toggle/ToggleComponent"; -import { SelectEntityFromList } from "./SelectEntityFromList"; -import { SelectResources } from "./SelectResources"; enum STEP_ID { SELECT_ENTITIES = 1, @@ -172,8 +172,6 @@ export const TransferBetweenEntities = ({ filtered: boolean; filterBy: (filtered: boolean) => void; }) => { - const { getRealmAddressName } = useRealm(); - const [selectedEntityIdFrom, setSelectedEntityIdFrom] = useState(null); const [selectedEntityIdTo, setSelectedEntityIdTo] = useState(null); const [selectedResourceIds, setSelectedResourceIds] = useState([]); @@ -192,6 +190,7 @@ export const TransferBetweenEntities = ({ const { account: { account }, setup: { + components, systemCalls: { send_resources, pickup_resources }, }, } = useDojo(); @@ -251,7 +250,7 @@ export const TransferBetweenEntities = ({ return entitiesList.map(({ entities, name }) => ({ entities: entities.map((entity) => ({ ...entity, - accountName: getRealmAddressName(entity.entity_id), + accountName: getRealmAddressName(entity.entity_id, components), })), name, })); diff --git a/client/apps/game/src/ui/components/trading/TransferView.tsx b/client/apps/game/src/ui/components/trading/transfer-view.tsx similarity index 72% rename from client/apps/game/src/ui/components/trading/TransferView.tsx rename to client/apps/game/src/ui/components/trading/transfer-view.tsx index 4ff0933b4a..23870ae1e1 100644 --- a/client/apps/game/src/ui/components/trading/TransferView.tsx +++ b/client/apps/game/src/ui/components/trading/transfer-view.tsx @@ -1,22 +1,24 @@ -import { useDojo } from "@/hooks/context/DojoContext"; -import { PlayerStructure, RealmWithPosition, useEntities, useEntitiesUtils } from "@/hooks/helpers/useEntities"; -import { useGuilds } from "@/hooks/helpers/useGuilds"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { usePlayerStructures } from "@/hooks/helpers/use-entities"; +import { useGuilds } from "@/hooks/helpers/use-guilds"; +import { usePlayerRealms } from "@/hooks/helpers/use-realm"; +import { TransferBetweenEntities } from "@/ui/components/trading/transfer-between-entities"; import { getRealmNameById } from "@/ui/utils/realms"; -import { ContractAddress, StructureType } from "@bibliothecadao/eternum"; +import { getEntityName } from "@/utils/entities"; +import { ContractAddress, PlayerStructure, RealmWithPosition, StructureType } from "@bibliothecadao/eternum"; import { useEntityQuery } from "@dojoengine/react"; import { Has, NotValue, getComponentValue } from "@dojoengine/recs"; import { useMemo, useState } from "react"; -import { TransferBetweenEntities } from "./TransferBetweenEntities"; export const TransferView = () => { const { account: { account }, - setup: { - components: { Structure, Position, Owner, Realm }, - }, + setup: { components }, } = useDojo(); + const { Structure, Position, Owner, Realm } = components; - const { playerRealms, playerStructures } = useEntities(); + const playerRealms = usePlayerRealms(); + const playerStructures = usePlayerStructures(); const [guildOnly, setGuildOnly] = useState(false); @@ -26,8 +28,6 @@ export const TransferView = () => { return getPlayersInPlayersGuild(BigInt(account.address)).map((a) => BigInt(a.address)); }, [account.address]); - const { getEntityName } = useEntitiesUtils(); - const otherStructuresQuery = useEntityQuery([ Has(Structure), Has(Position), @@ -43,7 +43,7 @@ export const TransferView = () => { const position = getComponentValue(Position, id); - const structureName = getEntityName(structure.entity_id); + const structureName = getEntityName(structure.entity_id, components); const name = structureName ? `${structure?.category} ${structureName}` : structure.category || ""; return { ...structure, position: position!, name, owner: getComponentValue(Owner, id) }; @@ -71,17 +71,17 @@ export const TransferView = () => { filterBy={setGuildOnly} filtered={guildOnly} entitiesList={[ - { entities: playerRealms(), name: "Your Realms" }, + { entities: playerRealms, name: "Your Realms" }, { - entities: playerStructures().filter((structure) => structure.category === "Hyperstructure"), + entities: playerStructures.filter((structure) => structure.category === "Hyperstructure"), name: "Your Hyperstructures", }, { - entities: playerStructures().filter((structure) => structure.category === "FragmentMine"), + entities: playerStructures.filter((structure) => structure.category === "FragmentMine"), name: "Your Fragment Mines", }, { - entities: playerStructures().filter((structure) => structure.category === "Bank"), + entities: playerStructures.filter((structure) => structure.category === "Bank"), name: "Your Banks", }, { diff --git a/client/apps/game/src/ui/components/TxEmit.tsx b/client/apps/game/src/ui/components/tx-emit.tsx similarity index 98% rename from client/apps/game/src/ui/components/TxEmit.tsx rename to client/apps/game/src/ui/components/tx-emit.tsx index 442d30fa8d..8c56561f3f 100644 --- a/client/apps/game/src/ui/components/TxEmit.tsx +++ b/client/apps/game/src/ui/components/tx-emit.tsx @@ -1,4 +1,4 @@ -import { useDojo } from "@/hooks/context/DojoContext"; +import { useDojo } from "@/hooks/context/dojo-context"; import { TransactionType } from "@bibliothecadao/eternum"; import { useEffect } from "react"; import { toast } from "sonner"; diff --git a/client/apps/game/src/ui/components/WorldLoading.tsx b/client/apps/game/src/ui/components/world-loading.tsx similarity index 90% rename from client/apps/game/src/ui/components/WorldLoading.tsx rename to client/apps/game/src/ui/components/world-loading.tsx index fbb45c35ac..adb40021ec 100644 --- a/client/apps/game/src/ui/components/WorldLoading.tsx +++ b/client/apps/game/src/ui/components/world-loading.tsx @@ -1,5 +1,5 @@ -import useUIStore from "@/hooks/store/useUIStore"; -import { LoadingStateKey } from "@/hooks/store/useWorldLoading"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { LoadingStateKey } from "@/hooks/store/use-world-loading"; export const WorldLoading = () => { const loadingStates = useUIStore((state) => state.loadingStates); @@ -37,7 +37,7 @@ export const WorldLoading = () => { > {anyLoading && (
- +
Loading: {getLoadingItems()}
)} diff --git a/client/apps/game/src/ui/components/worldmap/armies/ActionInfo.tsx b/client/apps/game/src/ui/components/worldmap/armies/action-info.tsx similarity index 78% rename from client/apps/game/src/ui/components/worldmap/armies/ActionInfo.tsx rename to client/apps/game/src/ui/components/worldmap/armies/action-info.tsx index aeac82e524..78f1ce200e 100644 --- a/client/apps/game/src/ui/components/worldmap/armies/ActionInfo.tsx +++ b/client/apps/game/src/ui/components/worldmap/armies/action-info.tsx @@ -1,13 +1,13 @@ import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useResourceBalance } from "@/hooks/helpers/useResources"; -import useUIStore from "@/hooks/store/useUIStore"; +import { useDojo } from "@/hooks/context/dojo-context"; +import useUIStore from "@/hooks/store/use-ui-store"; import { BuildingThumbs, FELT_CENTER } from "@/ui/config"; -import { BaseThreeTooltip, Position } from "@/ui/elements/BaseThreeTooltip"; -import { Headline } from "@/ui/elements/Headline"; -import { ResourceCost } from "@/ui/elements/ResourceCost"; -import { StaminaResourceCost } from "@/ui/elements/StaminaResourceCost"; -import { computeExploreFoodCosts, computeTravelFoodCosts, ResourcesIds } from "@bibliothecadao/eternum"; +import { BaseThreeTooltip, Position } from "@/ui/elements/base-three-tooltip"; +import { Headline } from "@/ui/elements/headline"; +import { ResourceCost } from "@/ui/elements/resource-cost"; +import { StaminaResourceCost } from "@/ui/elements/stamina-resource-cost"; +import { getBalance } from "@/utils/resources"; +import { computeExploreFoodCosts, computeTravelFoodCosts, ID, ResourcesIds } from "@bibliothecadao/eternum"; import { getComponentValue } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { memo, useCallback, useMemo } from "react"; @@ -24,9 +24,9 @@ const TooltipContent = memo( isExplored: boolean; travelPath: any; costs: { travelFoodCosts: any; exploreFoodCosts: any }; - selectedEntityId: string; - structureEntityId: string; - getBalance: any; + selectedEntityId: number; + structureEntityId: number; + getBalance: (entityId: ID, resourceId: ResourcesIds) => { balance: number; resourceId: ResourcesIds }; }) => ( <> {isExplored ? "Travel" : "Explore"} @@ -82,11 +82,8 @@ export const ActionInfo = memo(() => { const selectedEntityId = useUIStore(useCallback((state) => state.armyActions.selectedEntityId, [])); const structureEntityId = useUIStore(useCallback((state) => state.structureEntityId, [])); - const { getBalance } = useResourceBalance(); const { - setup: { - components: { Army }, - }, + setup: { components }, } = useDojo(); const selectedEntityTroops = useMemo(() => { @@ -97,7 +94,7 @@ export const ActionInfo = memo(() => { crossbowman_count: 0n, }; } - const army = getComponentValue(Army, getEntityIdFromKeys([BigInt(selectedEntityId)])); + const army = getComponentValue(components.Army, getEntityIdFromKeys([BigInt(selectedEntityId)])); return ( army?.troops || { knight_count: 0n, @@ -105,7 +102,7 @@ export const ActionInfo = memo(() => { crossbowman_count: 0n, } ); - }, [selectedEntityId, Army]); + }, [selectedEntityId]); const travelPath = useMemo(() => { if (!hoveredHex) return undefined; @@ -128,7 +125,7 @@ export const ActionInfo = memo(() => { [selectedEntityTroops], ); - if (!showTooltip) return null; + if (!showTooltip || !selectedEntityId) return null; return ( @@ -136,9 +133,9 @@ export const ActionInfo = memo(() => { isExplored={isExplored} travelPath={travelPath} costs={costs} - selectedEntityId={selectedEntityId!.toString()} - structureEntityId={structureEntityId.toString()} - getBalance={getBalance} + selectedEntityId={selectedEntityId} + structureEntityId={structureEntityId} + getBalance={(entityId: ID, resourceId: ResourcesIds) => getBalance(entityId, resourceId, components)} /> ); diff --git a/client/apps/game/src/ui/components/worldmap/armies/ActionInstructions.tsx b/client/apps/game/src/ui/components/worldmap/armies/action-instructions.tsx similarity index 93% rename from client/apps/game/src/ui/components/worldmap/armies/ActionInstructions.tsx rename to client/apps/game/src/ui/components/worldmap/armies/action-instructions.tsx index 4952617143..820130b166 100644 --- a/client/apps/game/src/ui/components/worldmap/armies/ActionInstructions.tsx +++ b/client/apps/game/src/ui/components/worldmap/armies/action-instructions.tsx @@ -1,4 +1,4 @@ -import useUIStore from "@/hooks/store/useUIStore"; +import useUIStore from "@/hooks/store/use-ui-store"; import { IS_MOBILE } from "@/ui/config"; export const ActionInstructions = () => { diff --git a/client/apps/game/src/ui/components/worldmap/armies/ArmyInfoLabel.tsx b/client/apps/game/src/ui/components/worldmap/armies/army-info-label.tsx similarity index 76% rename from client/apps/game/src/ui/components/worldmap/armies/ArmyInfoLabel.tsx rename to client/apps/game/src/ui/components/worldmap/armies/army-info-label.tsx index 796dc50e33..9089be5b3e 100644 --- a/client/apps/game/src/ui/components/worldmap/armies/ArmyInfoLabel.tsx +++ b/client/apps/game/src/ui/components/worldmap/armies/army-info-label.tsx @@ -1,27 +1,27 @@ -import useUIStore from "../../../../hooks/store/useUIStore"; -import { currencyFormat } from "../../../utils/utils"; - -import { getArmyByEntityId } from "@/hooks/helpers/useArmies"; -import { useQuery } from "@/hooks/helpers/useQuery"; -import { useIsStructureImmune, useStructureImmunityTimer, useStructures } from "@/hooks/helpers/useStructures"; -import useNextBlockTimestamp from "@/hooks/useNextBlockTimestamp"; -import { ArmyCapacity } from "@/ui/elements/ArmyCapacity"; -import { BaseThreeTooltip, Position } from "@/ui/elements/BaseThreeTooltip"; -import { Headline } from "@/ui/elements/Headline"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; -import { StaminaResource } from "@/ui/elements/StaminaResource"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useGetArmyByEntityId } from "@/hooks/helpers/use-armies"; +import { useQuery } from "@/hooks/helpers/use-query"; +import { useIsStructureImmune, useStructureImmunityTimer, useStructures } from "@/hooks/helpers/use-structures"; +import useUIStore from "@/hooks/store/use-ui-store"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; +import { ArmyWarning } from "@/ui/components/worldmap/armies/army-warning"; +import { ImmunityTimer } from "@/ui/components/worldmap/structures/structure-label"; +import { ArmyCapacity } from "@/ui/elements/army-capacity"; +import { BaseThreeTooltip, Position } from "@/ui/elements/base-three-tooltip"; +import { Headline } from "@/ui/elements/headline"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; +import { StaminaResource } from "@/ui/elements/stamina-resource"; +import { getRealmNameById } from "@/ui/utils/realms"; +import { currencyFormat } from "@/ui/utils/utils"; +import { getRealmAddressName } from "@/utils/realm"; import { ArmyInfo, Structure } from "@bibliothecadao/eternum"; import clsx from "clsx"; import { useMemo } from "react"; -import { useRealm } from "../../../../hooks/helpers/useRealm"; -import { getRealmNameById } from "../../../utils/realms"; -import { ImmunityTimer } from "../structures/StructureLabel"; -import { ArmyWarning } from "./ArmyWarning"; export const ArmyInfoLabel = () => { const { isMapView } = useQuery(); const hoveredArmyEntityId = useUIStore((state) => state.hoveredArmyEntityId); - const { getArmy } = getArmyByEntityId(); + const { getArmy } = useGetArmyByEntityId(); const army = useMemo(() => { if (hoveredArmyEntityId) return getArmy(hoveredArmyEntityId); @@ -36,12 +36,15 @@ interface ArmyInfoLabelProps { } const RaiderInfo = ({ army }: ArmyInfoLabelProps) => { - const { getRealmAddressName } = useRealm(); + const { + setup: { components }, + } = useDojo(); + const { realm, entity_id, entityOwner, troops } = army; const realmId = realm?.realm_id || 0; - const attackerAddressName = entityOwner ? getRealmAddressName(entityOwner.entity_owner_id) : ""; + const attackerAddressName = entityOwner ? getRealmAddressName(entityOwner.entity_owner_id, components) : ""; const { getStructureByEntityId } = useStructures(); diff --git a/client/apps/game/src/ui/components/worldmap/armies/ArmyWarning.tsx b/client/apps/game/src/ui/components/worldmap/armies/army-warning.tsx similarity index 96% rename from client/apps/game/src/ui/components/worldmap/armies/ArmyWarning.tsx rename to client/apps/game/src/ui/components/worldmap/armies/army-warning.tsx index 0f1b8459ad..12c2e60d93 100644 --- a/client/apps/game/src/ui/components/worldmap/armies/ArmyWarning.tsx +++ b/client/apps/game/src/ui/components/worldmap/armies/army-warning.tsx @@ -1,6 +1,6 @@ import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; -import useUIStore from "@/hooks/store/useUIStore"; +import { useDojo } from "@/hooks/context/dojo-context"; +import useUIStore from "@/hooks/store/use-ui-store"; import { currencyFormat, multiplyByPrecision } from "@/ui/utils/utils"; import { ArmyInfo, ArmyMovementManager, computeExploreFoodCosts, StaminaManager } from "@bibliothecadao/eternum"; import { useMemo } from "react"; diff --git a/client/apps/game/src/ui/components/worldmap/armies/SelectedArmy.tsx b/client/apps/game/src/ui/components/worldmap/armies/selected-army.tsx similarity index 64% rename from client/apps/game/src/ui/components/worldmap/armies/SelectedArmy.tsx rename to client/apps/game/src/ui/components/worldmap/armies/selected-army.tsx index bfb0235835..60851e61ac 100644 --- a/client/apps/game/src/ui/components/worldmap/armies/SelectedArmy.tsx +++ b/client/apps/game/src/ui/components/worldmap/armies/selected-army.tsx @@ -1,12 +1,11 @@ -import { useOwnArmiesByPosition } from "@/hooks/helpers/useArmies"; -import { useEntities } from "@/hooks/helpers/useEntities"; -import { useQuery } from "@/hooks/helpers/useQuery"; -import useUIStore from "@/hooks/store/useUIStore"; -import { Position } from "@/types/Position"; -import { ArmyChip } from "@/ui/components/military/ArmyChip"; -import { InventoryResources } from "@/ui/components/resources/InventoryResources"; +import { useArmiesAtPosition } from "@/hooks/helpers/use-armies"; +import { useQuery } from "@/hooks/helpers/use-query"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { Position } from "@/types/position"; +import { ArmyChip } from "@/ui/components/military/army-chip"; +import { InventoryResources } from "@/ui/components/resources/inventory-resources"; import { useCallback, useEffect, useMemo, useState } from "react"; -import { ArmyWarning } from "./ArmyWarning"; +import { ArmyWarning } from "./army-warning"; export const SelectedArmy = () => { const selectedHex = useUIStore((state) => state.selectedHex); @@ -20,39 +19,36 @@ export const SelectedArmy = () => { if (!selectedHex) updateSelectedEntityId(null); }, [selectedHex, updateSelectedEntityId]); - const { playerStructures } = useEntities(); - - const rawArmies = useOwnArmiesByPosition({ + const armies = useArmiesAtPosition({ position: new Position({ x: selectedHex?.col || 0, y: selectedHex?.row || 0 }).getContract(), - inBattle: false, - playerStructures: playerStructures(), }); - const userArmies = useMemo(() => rawArmies.filter((army) => army.health.current > 0), [rawArmies]); + // player armies that are not in battle + const playerArmies = useMemo(() => armies.filter((army) => army.isMine && army.battle_id === 0), [armies]); useEffect(() => { setSelectedArmyIndex(0); - }, [userArmies]); + }, [playerArmies]); useEffect(() => { if (selectedHex) { - updateSelectedEntityId(userArmies[selectedArmyIndex]?.entity_id || 0); + updateSelectedEntityId(playerArmies[selectedArmyIndex]?.entity_id || 0); } - }, [selectedArmyIndex, userArmies, updateSelectedEntityId, selectedHex]); + }, [selectedArmyIndex, playerArmies, updateSelectedEntityId, selectedHex]); const ownArmy = useMemo( - () => userArmies.find((army) => army.entity_id === selectedEntityId), - [userArmies, selectedEntityId], + () => playerArmies.find((army) => army.entity_id === selectedEntityId), + [playerArmies, selectedEntityId], ); const handleKeyDown = useCallback( (event: KeyboardEvent) => { if (event.key === "Tab") { event.preventDefault(); - setSelectedArmyIndex((prevIndex) => (prevIndex + 1) % userArmies.length); + setSelectedArmyIndex((prevIndex) => (prevIndex + 1) % playerArmies.length); } }, - [userArmies.length], + [playerArmies.length], ); useEffect(() => { @@ -74,11 +70,11 @@ export const SelectedArmy = () => { > {showTooltip && (
- {userArmies.length > 1 && ( + {playerArmies.length > 1 && (
Press Tab to cycle through armies
- Army {selectedArmyIndex + 1}/{userArmies.length} + Army {selectedArmyIndex + 1}/{playerArmies.length}
)} diff --git a/client/apps/game/src/ui/components/worldmap/battles/BattleLabel.tsx b/client/apps/game/src/ui/components/worldmap/battles/battle-label.tsx similarity index 79% rename from client/apps/game/src/ui/components/worldmap/battles/BattleLabel.tsx rename to client/apps/game/src/ui/components/worldmap/battles/battle-label.tsx index d4b25c312a..a258b77b75 100644 --- a/client/apps/game/src/ui/components/worldmap/battles/BattleLabel.tsx +++ b/client/apps/game/src/ui/components/worldmap/battles/battle-label.tsx @@ -1,26 +1,22 @@ -import { DojoResult, useDojo } from "@/hooks/context/DojoContext"; -import { useBattlesByPosition } from "@/hooks/helpers/battles/useBattles"; -import { useQuery } from "@/hooks/helpers/useQuery"; -import { useStructureByPosition } from "@/hooks/helpers/useStructures"; -import useUIStore from "@/hooks/store/useUIStore"; -import { BaseThreeTooltip, Position } from "@/ui/elements/BaseThreeTooltip"; -import { Headline } from "@/ui/elements/Headline"; -import { DurationLeft, ProgressBar } from "@/ui/modules/military/battle-view/BattleProgress"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useBattlesAtPosition } from "@/hooks/helpers/use-battles"; +import { useQuery } from "@/hooks/helpers/use-query"; +import { useStructureByPosition } from "@/hooks/helpers/use-structures"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { BaseThreeTooltip, Position } from "@/ui/elements/base-three-tooltip"; +import { Headline } from "@/ui/elements/headline"; +import { DurationLeft, ProgressBar } from "@/ui/modules/military/battle-view/battle-progress"; import { divideByPrecision } from "@/ui/utils/utils"; import { BattleManager, Structure } from "@bibliothecadao/eternum"; import { useMemo } from "react"; export const BattleInfoLabel = () => { - const dojo = useDojo(); const { isMapView } = useQuery(); const getStructure = useStructureByPosition(); const hoveredBattlePosition = useUIStore((state) => state.hoveredBattle); const currentTimestamp = useUIStore.getState().nextBlockTimestamp || 0; - const battles = useBattlesByPosition({ x: hoveredBattlePosition?.x || 0, y: hoveredBattlePosition?.y || 0 }).filter( - (battle) => battle.duration_left > 0, - ); - + const battles = useBattlesAtPosition({ x: hoveredBattlePosition?.x || 0, y: hoveredBattlePosition?.y || 0 }); const structure = getStructure({ x: hoveredBattlePosition?.x || 0, y: hoveredBattlePosition?.y || 0 }); return ( @@ -33,9 +29,8 @@ export const BattleInfoLabel = () => { {battles.map((battle) => ( @@ -49,15 +44,15 @@ export const BattleInfoLabel = () => { const BattleInfo = ({ battleEntityId, - dojo, currentTimestamp, structure, }: { battleEntityId: number; - dojo: DojoResult; currentTimestamp: number; structure: Structure | undefined; }) => { + const dojo = useDojo(); + const battleManager = useMemo( () => new BattleManager(dojo.setup.components, dojo.network.provider, battleEntityId), [battleEntityId, dojo], diff --git a/client/apps/game/src/ui/components/worldmap/battles/BattleSimulationPanel.tsx b/client/apps/game/src/ui/components/worldmap/battles/battle-simulation-panel.tsx similarity index 97% rename from client/apps/game/src/ui/components/worldmap/battles/BattleSimulationPanel.tsx rename to client/apps/game/src/ui/components/worldmap/battles/battle-simulation-panel.tsx index 5f8861877c..66334dbe36 100644 --- a/client/apps/game/src/ui/components/worldmap/battles/BattleSimulationPanel.tsx +++ b/client/apps/game/src/ui/components/worldmap/battles/battle-simulation-panel.tsx @@ -1,5 +1,6 @@ import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { Troops } from "@/ui/components/worldmap/battles/troops"; import { formatTime } from "@/ui/utils/utils"; import { Battle, @@ -11,7 +12,6 @@ import { import { getComponentValue } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { useMemo, useState } from "react"; -import { Troops } from "./Troops"; export const BattleSimulationPanel = () => { const { diff --git a/client/apps/game/src/ui/components/worldmap/battles/PillageSimulationPanel.tsx b/client/apps/game/src/ui/components/worldmap/battles/pillage-simulation-panel.tsx similarity index 98% rename from client/apps/game/src/ui/components/worldmap/battles/PillageSimulationPanel.tsx rename to client/apps/game/src/ui/components/worldmap/battles/pillage-simulation-panel.tsx index 46cfdf7b57..8c7c79e745 100644 --- a/client/apps/game/src/ui/components/worldmap/battles/PillageSimulationPanel.tsx +++ b/client/apps/game/src/ui/components/worldmap/battles/pillage-simulation-panel.tsx @@ -1,5 +1,6 @@ import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { Troops } from "@/ui/components/worldmap/battles/troops"; import { calculateRemainingTroops, getChancesOfSuccess, @@ -16,7 +17,6 @@ import { import { getComponentValue } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { useMemo, useState } from "react"; -import { Troops } from "./Troops"; export const PillageSimulationPanel = () => { const { diff --git a/client/apps/game/src/ui/components/worldmap/battles/Troops.tsx b/client/apps/game/src/ui/components/worldmap/battles/troops.tsx similarity index 93% rename from client/apps/game/src/ui/components/worldmap/battles/Troops.tsx rename to client/apps/game/src/ui/components/worldmap/battles/troops.tsx index f3cd6a8d9c..f7a67ecde8 100644 --- a/client/apps/game/src/ui/components/worldmap/battles/Troops.tsx +++ b/client/apps/game/src/ui/components/worldmap/battles/troops.tsx @@ -1,5 +1,5 @@ -import { NumberInput } from "@/ui/elements/NumberInput"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { NumberInput } from "@/ui/elements/number-input"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { currencyFormat } from "@/ui/utils/utils"; import { ResourcesIds } from "@bibliothecadao/eternum"; diff --git a/client/apps/game/src/ui/components/worldmap/guilds/CreateGuildButton.tsx b/client/apps/game/src/ui/components/worldmap/guilds/create-guild-button.tsx similarity index 93% rename from client/apps/game/src/ui/components/worldmap/guilds/CreateGuildButton.tsx rename to client/apps/game/src/ui/components/worldmap/guilds/create-guild-button.tsx index a19c58e365..68b1b6542e 100644 --- a/client/apps/game/src/ui/components/worldmap/guilds/CreateGuildButton.tsx +++ b/client/apps/game/src/ui/components/worldmap/guilds/create-guild-button.tsx @@ -1,8 +1,8 @@ import { ReactComponent as LockClosed } from "@/assets/icons/common/lock-closed.svg"; import { ReactComponent as LockOpen } from "@/assets/icons/common/lock-open.svg"; -import useUIStore from "@/hooks/store/useUIStore"; -import Button from "@/ui/elements/Button"; -import TextInput from "@/ui/elements/TextInput"; +import useUIStore from "@/hooks/store/use-ui-store"; +import Button from "@/ui/elements/button"; +import TextInput from "@/ui/elements/text-input"; import { MAX_NAME_LENGTH } from "@bibliothecadao/eternum"; interface CreateGuildButtonProps { diff --git a/client/apps/game/src/ui/components/worldmap/guilds/GuildInvitesList.tsx b/client/apps/game/src/ui/components/worldmap/guilds/guild-invites-list.tsx similarity index 95% rename from client/apps/game/src/ui/components/worldmap/guilds/GuildInvitesList.tsx rename to client/apps/game/src/ui/components/worldmap/guilds/guild-invites-list.tsx index 0f7ddf68ac..0d6fb83328 100644 --- a/client/apps/game/src/ui/components/worldmap/guilds/GuildInvitesList.tsx +++ b/client/apps/game/src/ui/components/worldmap/guilds/guild-invites-list.tsx @@ -1,7 +1,7 @@ import { ReactComponent as Trash } from "@/assets/icons/common/trashcan.svg"; -import useUIStore from "@/hooks/store/useUIStore"; -import { SortButton, SortInterface } from "@/ui/elements/SortButton"; -import { SortPanel } from "@/ui/elements/SortPanel"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { SortButton, SortInterface } from "@/ui/elements/sort-button"; +import { SortPanel } from "@/ui/elements/sort-panel"; import { currencyIntlFormat, sortItems } from "@/ui/utils/utils"; import { ContractAddress, GuildWhitelistInfo } from "@bibliothecadao/eternum"; import clsx from "clsx"; diff --git a/client/apps/game/src/ui/components/worldmap/guilds/GuildList.tsx b/client/apps/game/src/ui/components/worldmap/guilds/guild-list.tsx similarity index 95% rename from client/apps/game/src/ui/components/worldmap/guilds/GuildList.tsx rename to client/apps/game/src/ui/components/worldmap/guilds/guild-list.tsx index 399a492095..1a7002a4b8 100644 --- a/client/apps/game/src/ui/components/worldmap/guilds/GuildList.tsx +++ b/client/apps/game/src/ui/components/worldmap/guilds/guild-list.tsx @@ -1,6 +1,6 @@ -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; -import { SortButton, SortInterface } from "@/ui/elements/SortButton"; -import { SortPanel } from "@/ui/elements/SortPanel"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; +import { SortButton, SortInterface } from "@/ui/elements/sort-button"; +import { SortPanel } from "@/ui/elements/sort-panel"; import { currencyIntlFormat } from "@/ui/utils/utils"; import { GuildInfo, ResourcesIds } from "@bibliothecadao/eternum"; import clsx from "clsx"; diff --git a/client/apps/game/src/ui/components/worldmap/guilds/GuildMemberList.tsx b/client/apps/game/src/ui/components/worldmap/guilds/guild-member-list.tsx similarity index 96% rename from client/apps/game/src/ui/components/worldmap/guilds/GuildMemberList.tsx rename to client/apps/game/src/ui/components/worldmap/guilds/guild-member-list.tsx index ea8b4370cf..d7360baa4d 100644 --- a/client/apps/game/src/ui/components/worldmap/guilds/GuildMemberList.tsx +++ b/client/apps/game/src/ui/components/worldmap/guilds/guild-member-list.tsx @@ -1,7 +1,7 @@ -import { ReactComponent as Crown } from "@/assets/icons/Crown.svg"; import { ReactComponent as Trash } from "@/assets/icons/common/trashcan.svg"; -import { SortButton, SortInterface } from "@/ui/elements/SortButton"; -import { SortPanel } from "@/ui/elements/SortPanel"; +import { ReactComponent as Crown } from "@/assets/icons/crown.svg"; +import { SortButton, SortInterface } from "@/ui/elements/sort-button"; +import { SortPanel } from "@/ui/elements/sort-panel"; import { currencyIntlFormat, sortItems } from "@/ui/utils/utils"; import { ContractAddress, GuildMemberInfo } from "@bibliothecadao/eternum"; import clsx from "clsx"; diff --git a/client/apps/game/src/ui/components/worldmap/guilds/GuildMembers.tsx b/client/apps/game/src/ui/components/worldmap/guilds/guild-members.tsx similarity index 91% rename from client/apps/game/src/ui/components/worldmap/guilds/GuildMembers.tsx rename to client/apps/game/src/ui/components/worldmap/guilds/guild-members.tsx index fe80f65f2b..d97e844241 100644 --- a/client/apps/game/src/ui/components/worldmap/guilds/GuildMembers.tsx +++ b/client/apps/game/src/ui/components/worldmap/guilds/guild-members.tsx @@ -1,18 +1,18 @@ import { ReactComponent as Pen } from "@/assets/icons/common/pen.svg"; -import { useGuilds } from "@/hooks/helpers/useGuilds"; -import Button from "@/ui/elements/Button"; -import TextInput from "@/ui/elements/TextInput"; -import TwitterShareButton from "@/ui/elements/TwitterShareButton"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useGuilds } from "@/hooks/helpers/use-guilds"; +import { GuildInviteList } from "@/ui/components/worldmap/guilds/guild-invites-list"; +import { GuildMemberList } from "@/ui/components/worldmap/guilds/guild-member-list"; +import Button from "@/ui/elements/button"; +import TextInput from "@/ui/elements/text-input"; +import TwitterShareButton from "@/ui/elements/twitter-share-button"; import { formatSocialText, twitterTemplates } from "@/ui/socials"; -import { ContractAddress, ID, Player } from "@bibliothecadao/eternum"; +import { ContractAddress, ID, PlayerInfo } from "@bibliothecadao/eternum"; import { useCallback, useState } from "react"; import { env } from "../../../../../env"; -import { useDojo } from "../../../../hooks/context/DojoContext"; -import { GuildInviteList } from "./GuildInvitesList"; -import { GuildMemberList } from "./GuildMemberList"; interface GuildMembersProps { - players: Player[]; + players: PlayerInfo[]; selectedGuildEntityId: number; viewPlayerInfo: (playerAddress: ContractAddress) => void; setIsExpanded: (isExpanded: boolean) => void; @@ -23,6 +23,7 @@ interface GuildMembersProps { export const GuildMembers = ({ players, selectedGuildEntityId, viewPlayerInfo, setIsExpanded }: GuildMembersProps) => { const { setup: { + components, systemCalls: { join_guild, remove_guild_member, disband_guild, remove_player_from_whitelist, set_entity_name }, }, account: { account }, @@ -35,7 +36,7 @@ export const GuildMembers = ({ players, selectedGuildEntityId, viewPlayerInfo, s const invitedPlayers = useGuildWhitelist(selectedGuildEntityId, players); const userWhitelist = usePlayerWhitelist(ContractAddress(account.address)); const userGuild = getGuildFromPlayerAddress(ContractAddress(account.address)); - const selectedGuild = getGuildFromEntityId(selectedGuildEntityId, ContractAddress(account.address)); + const selectedGuild = getGuildFromEntityId(selectedGuildEntityId, ContractAddress(account.address), components); const playerName = players.find((player) => player.address === ContractAddress(account?.address))?.name; diff --git a/client/apps/game/src/ui/components/worldmap/guilds/Guilds.tsx b/client/apps/game/src/ui/components/worldmap/guilds/guilds.tsx similarity index 91% rename from client/apps/game/src/ui/components/worldmap/guilds/Guilds.tsx rename to client/apps/game/src/ui/components/worldmap/guilds/guilds.tsx index c9e7eb2dd9..8c1b0e2d53 100644 --- a/client/apps/game/src/ui/components/worldmap/guilds/Guilds.tsx +++ b/client/apps/game/src/ui/components/worldmap/guilds/guilds.tsx @@ -1,22 +1,22 @@ -import { useGuilds } from "@/hooks/helpers/useGuilds"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useGuilds } from "@/hooks/helpers/use-guilds"; +import { CreateGuildButton } from "@/ui/components/worldmap/guilds/create-guild-button"; +import { GuildListHeader, GuildRow } from "@/ui/components/worldmap/guilds/guild-list"; import { PRIZE_POOL_GUILDS } from "@/ui/constants"; -import Button from "@/ui/elements/Button"; -import { SortInterface } from "@/ui/elements/SortButton"; -import TextInput from "@/ui/elements/TextInput"; +import Button from "@/ui/elements/button"; +import { SortInterface } from "@/ui/elements/sort-button"; +import TextInput from "@/ui/elements/text-input"; import { sortItems } from "@/ui/utils/utils"; -import { calculateGuildLordsPrize, ContractAddress, ID, Player } from "@bibliothecadao/eternum"; +import { calculateGuildLordsPrize, ContractAddress, ID, PlayerInfo } from "@bibliothecadao/eternum"; import { ChevronRight } from "lucide-react"; import { useMemo, useState } from "react"; -import { useDojo } from "../../../../hooks/context/DojoContext"; -import { CreateGuildButton } from "./CreateGuildButton"; -import { GuildListHeader, GuildRow } from "./GuildList"; export const Guilds = ({ viewGuildMembers, players, }: { viewGuildMembers: (guildEntityId: ID) => void; - players: Player[]; + players: PlayerInfo[]; }) => { const { setup: { diff --git a/client/apps/game/src/ui/components/worldmap/players/PlayerList.tsx b/client/apps/game/src/ui/components/worldmap/players/player-list.tsx similarity index 94% rename from client/apps/game/src/ui/components/worldmap/players/PlayerList.tsx rename to client/apps/game/src/ui/components/worldmap/players/player-list.tsx index b36ef8622c..798e455ed5 100644 --- a/client/apps/game/src/ui/components/worldmap/players/PlayerList.tsx +++ b/client/apps/game/src/ui/components/worldmap/players/player-list.tsx @@ -1,15 +1,15 @@ import { ReactComponent as Invite } from "@/assets/icons/common/envelope.svg"; import { ReactComponent as Trash } from "@/assets/icons/common/trashcan.svg"; -import useUIStore from "@/hooks/store/useUIStore"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; -import { SortButton, SortInterface } from "@/ui/elements/SortButton"; -import { SortPanel } from "@/ui/elements/SortPanel"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; +import { SortButton, SortInterface } from "@/ui/elements/sort-button"; +import { SortPanel } from "@/ui/elements/sort-panel"; import { currencyIntlFormat, sortItems } from "@/ui/utils/utils"; -import { ContractAddress, GuildInfo, Player, ResourcesIds } from "@bibliothecadao/eternum"; +import { ContractAddress, GuildInfo, PlayerInfo, ResourcesIds } from "@bibliothecadao/eternum"; import clsx from "clsx"; import { useMemo, useState } from "react"; -export interface PlayerCustom extends Player { +export interface PlayerCustom extends PlayerInfo { structures: string[]; isUser: boolean; isInvited: boolean; diff --git a/client/apps/game/src/ui/components/worldmap/players/PlayersPanel.tsx b/client/apps/game/src/ui/components/worldmap/players/players-panel.tsx similarity index 90% rename from client/apps/game/src/ui/components/worldmap/players/PlayersPanel.tsx rename to client/apps/game/src/ui/components/worldmap/players/players-panel.tsx index 8b6ec24090..687427484c 100644 --- a/client/apps/game/src/ui/components/worldmap/players/PlayersPanel.tsx +++ b/client/apps/game/src/ui/components/worldmap/players/players-panel.tsx @@ -1,31 +1,32 @@ -import { useDojo } from "@/hooks/context/DojoContext"; -import { useEntitiesUtils } from "@/hooks/helpers/useEntities"; -import { useGuilds } from "@/hooks/helpers/useGuilds"; -import Button from "@/ui/elements/Button"; -import TextInput from "@/ui/elements/TextInput"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useGuilds } from "@/hooks/helpers/use-guilds"; +import { PlayerCustom, PlayerList } from "@/ui/components/worldmap/players/player-list"; +import Button from "@/ui/elements/button"; +import TextInput from "@/ui/elements/text-input"; import { getEntityIdFromKeys, normalizeDiacriticalMarks, toHexString } from "@/ui/utils/utils"; -import { ContractAddress, Player } from "@bibliothecadao/eternum"; +import { getEntityName } from "@/utils/entities"; +import { ContractAddress, PlayerInfo } from "@bibliothecadao/eternum"; import { Has, HasValue, getComponentValue, runQuery } from "@dojoengine/recs"; import { KeyboardEvent, useMemo, useState } from "react"; -import { PlayerCustom, PlayerList } from "./PlayerList"; export const PlayersPanel = ({ players, viewPlayerInfo, }: { - players: Player[]; + players: PlayerInfo[]; viewPlayerInfo: (playerAddress: ContractAddress) => void; }) => { const { setup: { - components: { Structure, Owner, GuildWhitelist }, + components, systemCalls: { whitelist_player, remove_player_from_whitelist }, }, account: { account }, } = useDojo(); + const { Structure, Owner, GuildWhitelist } = components; + const { getGuildFromPlayerAddress } = useGuilds(); - const { getEntityName } = useEntitiesUtils(); const userGuild = getGuildFromPlayerAddress(ContractAddress(account.address)); const [isLoading, setIsLoading] = useState(false); @@ -46,7 +47,7 @@ export const PlayersPanel = ({ const structure = getComponentValue(Structure, entityId); if (!structure) return undefined; - const structureName = getEntityName(structure.entity_id); + const structureName = getEntityName(structure.entity_id, components); return structureName; }) .filter((structure): structure is string => structure !== undefined); diff --git a/client/apps/game/src/ui/components/worldmap/structures/StructureLabel.tsx b/client/apps/game/src/ui/components/worldmap/structures/structure-label.tsx similarity index 82% rename from client/apps/game/src/ui/components/worldmap/structures/StructureLabel.tsx rename to client/apps/game/src/ui/components/worldmap/structures/structure-label.tsx index b8b43cdb19..d3663437da 100644 --- a/client/apps/game/src/ui/components/worldmap/structures/StructureLabel.tsx +++ b/client/apps/game/src/ui/components/worldmap/structures/structure-label.tsx @@ -1,14 +1,14 @@ -import { useGuilds } from "@/hooks/helpers/useGuilds"; -import { useQuery } from "@/hooks/helpers/useQuery"; -import { useIsStructureImmune, useStructureImmunityTimer, useStructures } from "@/hooks/helpers/useStructures"; -import useNextBlockTimestamp from "@/hooks/useNextBlockTimestamp"; -import { BaseThreeTooltip, Position } from "@/ui/elements/BaseThreeTooltip"; -import { Headline } from "@/ui/elements/Headline"; +import { useGuilds } from "@/hooks/helpers/use-guilds"; +import { useQuery } from "@/hooks/helpers/use-query"; +import { useIsStructureImmune, useStructureImmunityTimer, useStructures } from "@/hooks/helpers/use-structures"; +import useUIStore from "@/hooks/store/use-ui-store"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; +import { StructureListItem } from "@/ui/components/worldmap/structures/structure-list-item"; +import { BaseThreeTooltip, Position } from "@/ui/elements/base-three-tooltip"; +import { Headline } from "@/ui/elements/headline"; import { formatTime } from "@/ui/utils/utils"; import { ContractAddress, Structure } from "@bibliothecadao/eternum"; import { memo, useMemo } from "react"; -import useUIStore from "../../../../hooks/store/useUIStore"; -import { StructureListItem } from "./StructureListItem"; export const ImmunityTimer = ({ isImmune, diff --git a/client/apps/game/src/ui/components/worldmap/structures/StructureListItem.tsx b/client/apps/game/src/ui/components/worldmap/structures/structure-list-item.tsx similarity index 85% rename from client/apps/game/src/ui/components/worldmap/structures/StructureListItem.tsx rename to client/apps/game/src/ui/components/worldmap/structures/structure-list-item.tsx index 5209b65e62..efe8ba7768 100644 --- a/client/apps/game/src/ui/components/worldmap/structures/StructureListItem.tsx +++ b/client/apps/game/src/ui/components/worldmap/structures/structure-list-item.tsx @@ -1,18 +1,18 @@ import { ReactComponent as Sword } from "@/assets/icons/common/cross-swords.svg"; import { ReactComponent as Eye } from "@/assets/icons/common/eye.svg"; import { ReactComponent as Shield } from "@/assets/icons/common/shield.svg"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { getUserArmyInBattle } from "@/hooks/helpers/useArmies"; -import { useGetHyperstructureProgress } from "@/hooks/helpers/useHyperstructures"; -import { useIsStructureImmune } from "@/hooks/helpers/useStructures"; -import useUIStore from "@/hooks/store/useUIStore"; -import useNextBlockTimestamp from "@/hooks/useNextBlockTimestamp"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useArmiesInBattle } from "@/hooks/helpers/use-armies"; +import { useGetHyperstructureProgress } from "@/hooks/helpers/use-hyperstructures"; +import { useIsStructureImmune } from "@/hooks/helpers/use-structures"; +import useUIStore from "@/hooks/store/use-ui-store"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; +import { TroopDisplay } from "@/ui/components/military/troop-chip"; +import { InventoryResources } from "@/ui/components/resources/inventory-resources"; +import { RealmResourcesIO } from "@/ui/components/resources/realm-resources-io"; import { ArmyInfo, BattleManager, Structure, StructureType } from "@bibliothecadao/eternum"; import clsx from "clsx"; import { useMemo } from "react"; -import { TroopDisplay } from "../../military/TroopChip"; -import { InventoryResources } from "../../resources/InventoryResources"; -import { RealmResourcesIO } from "../../resources/RealmResourcesIO"; type StructureListItemProps = { structure: Structure; @@ -62,7 +62,12 @@ export const StructureListItem = ({ return { updatedBattle }; }, [nextBlockTimestamp]); - const userArmyInBattle = getUserArmyInBattle(updatedBattle?.entity_id || 0); + const armiesInBattle = useArmiesInBattle(updatedBattle?.entity_id || 0); + + // Filter out only the player's armies + const playerArmiesInBattle = useMemo(() => { + return armiesInBattle.filter((army) => army.isMine); + }, [armiesInBattle]); const isImmune = useIsStructureImmune(structure, nextBlockTimestamp!); @@ -129,7 +134,7 @@ export const StructureListItem = ({ if (structure.isMine) { return [shieldButton]; } - if (userArmyInBattle) { + if (playerArmiesInBattle.length > 0) { return [eyeButton]; } return [ @@ -160,7 +165,14 @@ export const StructureListItem = ({ />, ]; } - }, [nextBlockTimestamp, userArmyInBattle, ownArmySelected, updatedBattle, setBattleView, setShowMergeTroopsPopup]); + }, [ + nextBlockTimestamp, + playerArmiesInBattle, + ownArmySelected, + updatedBattle, + setBattleView, + setShowMergeTroopsPopup, + ]); return (
diff --git a/client/apps/game/src/ui/containers/BaseContainer.tsx b/client/apps/game/src/ui/containers/base-container.tsx similarity index 100% rename from client/apps/game/src/ui/containers/BaseContainer.tsx rename to client/apps/game/src/ui/containers/base-container.tsx diff --git a/client/apps/game/src/ui/containers/BattleContainer.tsx b/client/apps/game/src/ui/containers/battle-container.tsx similarity index 93% rename from client/apps/game/src/ui/containers/BattleContainer.tsx rename to client/apps/game/src/ui/containers/battle-container.tsx index 4d7ecb5913..4731ac51bb 100644 --- a/client/apps/game/src/ui/containers/BattleContainer.tsx +++ b/client/apps/game/src/ui/containers/battle-container.tsx @@ -1,4 +1,4 @@ -import useUIStore from "@/hooks/store/useUIStore"; +import useUIStore from "@/hooks/store/use-ui-store"; import { memo, useEffect } from "react"; export const BattleContainer = memo(({ children }: { children: React.ReactNode }) => { diff --git a/client/apps/game/src/ui/containers/BlankOverlayContainer.tsx b/client/apps/game/src/ui/containers/blank-overlay-container.tsx similarity index 100% rename from client/apps/game/src/ui/containers/BlankOverlayContainer.tsx rename to client/apps/game/src/ui/containers/blank-overlay-container.tsx diff --git a/client/apps/game/src/ui/containers/BottomMiddleContainer.tsx b/client/apps/game/src/ui/containers/bottom-middle-container.tsx similarity index 100% rename from client/apps/game/src/ui/containers/BottomMiddleContainer.tsx rename to client/apps/game/src/ui/containers/bottom-middle-container.tsx diff --git a/client/apps/game/src/ui/containers/BottomRightContainer.tsx b/client/apps/game/src/ui/containers/bottom-right-container.tsx similarity index 100% rename from client/apps/game/src/ui/containers/BottomRightContainer.tsx rename to client/apps/game/src/ui/containers/bottom-right-container.tsx diff --git a/client/apps/game/src/ui/containers/LeftMiddleContainer.tsx b/client/apps/game/src/ui/containers/left-middle-container.tsx similarity index 100% rename from client/apps/game/src/ui/containers/LeftMiddleContainer.tsx rename to client/apps/game/src/ui/containers/left-middle-container.tsx diff --git a/client/apps/game/src/ui/containers/RightMiddleContainer.tsx b/client/apps/game/src/ui/containers/right-middle-container.tsx similarity index 100% rename from client/apps/game/src/ui/containers/RightMiddleContainer.tsx rename to client/apps/game/src/ui/containers/right-middle-container.tsx diff --git a/client/apps/game/src/ui/containers/TopCenterContainer.tsx b/client/apps/game/src/ui/containers/top-center-container.tsx similarity index 100% rename from client/apps/game/src/ui/containers/TopCenterContainer.tsx rename to client/apps/game/src/ui/containers/top-center-container.tsx diff --git a/client/apps/game/src/ui/containers/TopLeftContainer.tsx b/client/apps/game/src/ui/containers/top-left-container.tsx similarity index 100% rename from client/apps/game/src/ui/containers/TopLeftContainer.tsx rename to client/apps/game/src/ui/containers/top-left-container.tsx diff --git a/client/apps/game/src/ui/elements/Switch.tsx b/client/apps/game/src/ui/elements/Switch.tsx deleted file mode 100644 index e3ea994986..0000000000 --- a/client/apps/game/src/ui/elements/Switch.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import * as SwitchPrimitives from "@radix-ui/react-switch"; -import * as React from "react"; - -import { cn } from "./lib/utils"; - -const Switch = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - - - -)); -Switch.displayName = SwitchPrimitives.Root.displayName; - -export { Switch }; diff --git a/client/apps/game/src/ui/elements/ArmyCapacity.tsx b/client/apps/game/src/ui/elements/army-capacity.tsx similarity index 98% rename from client/apps/game/src/ui/elements/ArmyCapacity.tsx rename to client/apps/game/src/ui/elements/army-capacity.tsx index 680155ab6e..1c363ba63f 100644 --- a/client/apps/game/src/ui/elements/ArmyCapacity.tsx +++ b/client/apps/game/src/ui/elements/army-capacity.tsx @@ -1,6 +1,6 @@ import { ReactComponent as Inventory } from "@/assets/icons/common/bagpack.svg"; import { configManager } from "@/dojo/setup"; -import useUIStore from "@/hooks/store/useUIStore"; +import useUIStore from "@/hooks/store/use-ui-store"; import { ArmyInfo, getArmyNumberOfTroops } from "@bibliothecadao/eternum"; import { useMemo } from "react"; import { formatNumber, formatStringNumber } from "../utils/utils"; diff --git a/client/apps/game/src/ui/elements/Avatar.tsx b/client/apps/game/src/ui/elements/avatar.tsx similarity index 100% rename from client/apps/game/src/ui/elements/Avatar.tsx rename to client/apps/game/src/ui/elements/avatar.tsx diff --git a/client/apps/game/src/ui/elements/BaseThreeTooltip.tsx b/client/apps/game/src/ui/elements/base-three-tooltip.tsx similarity index 100% rename from client/apps/game/src/ui/elements/BaseThreeTooltip.tsx rename to client/apps/game/src/ui/elements/base-three-tooltip.tsx diff --git a/client/apps/game/src/ui/elements/Button.tsx b/client/apps/game/src/ui/elements/button.tsx similarity index 97% rename from client/apps/game/src/ui/elements/Button.tsx rename to client/apps/game/src/ui/elements/button.tsx index 745037c04e..a0e0290809 100644 --- a/client/apps/game/src/ui/elements/Button.tsx +++ b/client/apps/game/src/ui/elements/button.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { soundSelector, useUiSounds } from "../../hooks/useUISound"; +import { soundSelector, useUiSounds } from "@/hooks/use-ui-sound"; type ButtonProps = { onClick?: (e: React.MouseEvent) => void; diff --git a/client/apps/game/src/ui/elements/Checkbox.tsx b/client/apps/game/src/ui/elements/checkbox.tsx similarity index 100% rename from client/apps/game/src/ui/elements/Checkbox.tsx rename to client/apps/game/src/ui/elements/checkbox.tsx diff --git a/client/apps/game/src/ui/elements/CircleButton.tsx b/client/apps/game/src/ui/elements/circle-button.tsx similarity index 97% rename from client/apps/game/src/ui/elements/CircleButton.tsx rename to client/apps/game/src/ui/elements/circle-button.tsx index c644607cac..d06fe33384 100644 --- a/client/apps/game/src/ui/elements/CircleButton.tsx +++ b/client/apps/game/src/ui/elements/circle-button.tsx @@ -1,5 +1,5 @@ -import useUIStore from "@/hooks/store/useUIStore"; -import { soundSelector, useUiSounds } from "@/hooks/useUISound"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { soundSelector, useUiSounds } from "@/hooks/use-ui-sound"; import clsx from "clsx"; type CircleButtonProps = { diff --git a/client/apps/game/src/ui/elements/Headline.tsx b/client/apps/game/src/ui/elements/headline.tsx similarity index 100% rename from client/apps/game/src/ui/elements/Headline.tsx rename to client/apps/game/src/ui/elements/headline.tsx diff --git a/client/apps/game/src/ui/elements/HintModalButton.tsx b/client/apps/game/src/ui/elements/hint-modal-button.tsx similarity index 71% rename from client/apps/game/src/ui/elements/HintModalButton.tsx rename to client/apps/game/src/ui/elements/hint-modal-button.tsx index fdc1544857..1b0c2fef79 100644 --- a/client/apps/game/src/ui/elements/HintModalButton.tsx +++ b/client/apps/game/src/ui/elements/hint-modal-button.tsx @@ -1,7 +1,7 @@ -import { useModalStore } from "@/hooks/store/useModalStore"; -import { HintModal } from "../components/hints/HintModal"; +import { useModalStore } from "@/hooks/store/use-modal-store"; +import CircleButton from "@/ui/elements/circle-button"; +import { HintModal } from "../components/hints/hint-modal"; import { BuildingThumbs } from "../config"; -import CircleButton from "./CircleButton"; type HintModalButtonProps = { section?: string; diff --git a/client/apps/game/src/ui/elements/KeyBoardKey.tsx b/client/apps/game/src/ui/elements/keyboard-key.tsx similarity index 100% rename from client/apps/game/src/ui/elements/KeyBoardKey.tsx rename to client/apps/game/src/ui/elements/keyboard-key.tsx diff --git a/client/apps/game/src/ui/elements/ListSelect.tsx b/client/apps/game/src/ui/elements/list-select.tsx similarity index 99% rename from client/apps/game/src/ui/elements/ListSelect.tsx rename to client/apps/game/src/ui/elements/list-select.tsx index 75c85415ae..a38bab9ee3 100644 --- a/client/apps/game/src/ui/elements/ListSelect.tsx +++ b/client/apps/game/src/ui/elements/list-select.tsx @@ -1,9 +1,9 @@ import { ReactComponent as CaretDown } from "@/assets/icons/common/caret-down-fill.svg"; import { ReactComponent as Checkmark } from "@/assets/icons/common/checkmark.svg"; +import TextInput from "@/ui/elements/text-input"; import { Listbox, Transition } from "@headlessui/react"; import clsx from "clsx"; import { Fragment, ReactNode, useMemo, useRef, useState } from "react"; -import TextInput from "./TextInput"; interface ListSelectOption { id: any; diff --git a/client/apps/game/src/ui/elements/LoadingAnimation.tsx b/client/apps/game/src/ui/elements/loading-animation.tsx similarity index 56% rename from client/apps/game/src/ui/elements/LoadingAnimation.tsx rename to client/apps/game/src/ui/elements/loading-animation.tsx index 09696685c5..ee3756e911 100644 --- a/client/apps/game/src/ui/elements/LoadingAnimation.tsx +++ b/client/apps/game/src/ui/elements/loading-animation.tsx @@ -1,7 +1,7 @@ export const LoadingAnimation = () => { return (
- +
); }; diff --git a/client/apps/game/src/ui/elements/NumberInput.tsx b/client/apps/game/src/ui/elements/number-input.tsx similarity index 97% rename from client/apps/game/src/ui/elements/NumberInput.tsx rename to client/apps/game/src/ui/elements/number-input.tsx index f72a16d300..5871c5e96b 100644 --- a/client/apps/game/src/ui/elements/NumberInput.tsx +++ b/client/apps/game/src/ui/elements/number-input.tsx @@ -2,7 +2,7 @@ import { ReactComponent as ArrowLeft } from "@/assets/icons/common/arrow-left.sv import { ReactComponent as ArrowRight } from "@/assets/icons/common/arrow-right.svg"; import clsx from "clsx"; import { useEffect, useState } from "react"; -import { soundSelector, useUiSounds } from "../../hooks/useUISound"; +import { soundSelector, useUiSounds } from "@/hooks/use-ui-sound"; type NumberInputProps = { value: number; diff --git a/client/apps/game/src/ui/elements/RangeInput.tsx b/client/apps/game/src/ui/elements/range-input.tsx similarity index 100% rename from client/apps/game/src/ui/elements/RangeInput.tsx rename to client/apps/game/src/ui/elements/range-input.tsx diff --git a/client/apps/game/src/ui/elements/ResourceCost.tsx b/client/apps/game/src/ui/elements/resource-cost.tsx similarity index 97% rename from client/apps/game/src/ui/elements/ResourceCost.tsx rename to client/apps/game/src/ui/elements/resource-cost.tsx index 091facb496..70da0cccdd 100644 --- a/client/apps/game/src/ui/elements/ResourceCost.tsx +++ b/client/apps/game/src/ui/elements/resource-cost.tsx @@ -1,8 +1,8 @@ +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { findResourceById } from "@bibliothecadao/eternum"; import clsx from "clsx"; import { useMemo } from "react"; import { currencyFormat, divideByPrecision } from "../utils/utils"; -import { ResourceIcon } from "./ResourceIcon"; type ResourceCostProps = { isLabor?: boolean; diff --git a/client/apps/game/src/ui/elements/ResourceIcon.tsx b/client/apps/game/src/ui/elements/resource-icon.tsx similarity index 81% rename from client/apps/game/src/ui/elements/ResourceIcon.tsx rename to client/apps/game/src/ui/elements/resource-icon.tsx index 6f94037a88..36be2c6bbb 100644 --- a/client/apps/game/src/ui/elements/ResourceIcon.tsx +++ b/client/apps/game/src/ui/elements/resource-icon.tsx @@ -1,10 +1,4 @@ -import { ReactComponent as People } from "@/assets/icons/common/people.svg"; -import { ReactComponent as Cloth } from "@/assets/icons/resources/Cloth.svg"; -import { ReactComponent as DemonHide } from "@/assets/icons/resources/DemonHide.svg"; -import { ReactComponent as DesertGlass } from "@/assets/icons/resources/DesertGlass.svg"; -import { ReactComponent as Lords } from "@/assets/icons/resources/Lords.svg"; -import { ReactComponent as Ore } from "@/assets/icons/resources/Ore.svg"; -import { ReactComponent as Spores } from "@/assets/icons/resources/Spores.svg"; +import People from "@/assets/icons/common/people.svg?react"; import clsx from "clsx"; import type { ReactElement } from "react"; @@ -25,48 +19,43 @@ type Resource = { }; const Components: { [key: string]: Resource } = Object.freeze({ - Adamantine: { - component: , - name: "Adamantine", - }, - AlchemicalSilver: { - component: , - name: "Alchemical Silver", - }, + Wood: { component: , name: "Wood" }, + Stone: { component: , name: "Stone" }, Coal: { component: , name: "Coal" }, - ColdIron: { component: , name: "Cold Iron" }, Copper: { component: , name: "Copper" }, - DeepCrystal: { component: , name: "Deep Crystal" }, - Diamonds: { component: , name: "Diamonds" }, - Dragonhide: { component: , name: "Dragonhide" }, - EtherealSilica: { component: , name: "Ethereal Silica" }, + Obsidian: { component: , name: "Obsidian" }, + Silver: { component: , name: "Silver" }, + Ironwood: { component: , name: "Ironwood" }, + ColdIron: { component: , name: "Cold Iron" }, Gold: { component: , name: "Gold" }, Hartwood: { component: , name: "Hartwood" }, - Ignium: { component: , name: "Ignium" }, - Ironwood: { component: , name: "Ironwood" }, - Mithral: { component: , name: "Mithral" }, - Obsidian: { component: , name: "Obsidian" }, - Ruby: { component: , name: "Ruby" }, + Diamonds: { component: , name: "Diamonds" }, Sapphire: { component: , name: "Sapphire" }, - Silver: { component: , name: "Silver" }, - Stone: { component: , name: "Stone" }, + Ruby: { component: , name: "Ruby" }, + DeepCrystal: { component: , name: "Deep Crystal" }, + Ignium: { component: , name: "Ignium" }, + EtherealSilica: { component: , name: "Ethereal Silica" }, TrueIce: { component: , name: "TrueIce" }, TwilightQuartz: { component: , name: "Twilight Quartz" }, - Wood: { component: , name: "Wood" }, - EmbersGlow: { component: , name: "Demon Hide" }, - StoneTemple: { component: , name: "Cloth" }, - DesertOasis: { component: , name: "Desert Glass" }, - MountainDeep: { component: , name: "Ore" }, - UnderwaterKeep: { component: , name: "Lords" }, - ForestRuins: { component: , name: "Spores" }, - Lords: { component: , name: "Lords" }, - Fish: { component: , name: "Fish" }, - Wheat: { component: , name: "Wheat" }, - Donkey: { component: , name: "Donkey" }, + AlchemicalSilver: { + component: , + name: "Alchemical Silver", + }, + Adamantine: { + component: , + name: "Adamantine", + }, + Mithral: { component: , name: "Mithral" }, + Dragonhide: { component: , name: "Dragonhide" }, + AncientFragment: { component: , name: "Ancient Fragment" }, Knight: { component: , name: "Knight" }, Crossbowman: { component: , name: "Crossbowman" }, Paladin: { component: , name: "Paladin" }, - AncientFragment: { component: , name: "Ancient Fragment" }, + Lords: { component: , name: "Lords" }, + Wheat: { component: , name: "Wheat" }, + Fish: { component: , name: "Fish" }, + + Donkey: { component: , name: "Donkey" }, House: { component: , name: "House" }, Silo: { component: , name: "Silo" }, Timeglass: { component: , name: "Timeglass" }, diff --git a/client/apps/game/src/ui/elements/SecondaryPopup.tsx b/client/apps/game/src/ui/elements/secondary-popup.tsx similarity index 98% rename from client/apps/game/src/ui/elements/SecondaryPopup.tsx rename to client/apps/game/src/ui/elements/secondary-popup.tsx index e97c6a4532..a5e4071fa0 100644 --- a/client/apps/game/src/ui/elements/SecondaryPopup.tsx +++ b/client/apps/game/src/ui/elements/secondary-popup.tsx @@ -1,10 +1,10 @@ +import Button from "@/ui/elements/button"; +import { HintModalButton } from "@/ui/elements/hint-modal-button"; import clsx from "clsx"; import { motion } from "framer-motion"; import { X } from "lucide-react"; import { useEffect, useRef, useState } from "react"; import Draggable from "react-draggable"; -import Button from "./Button"; -import { HintModalButton } from "./HintModalButton"; type FilterPopupProps = { children: React.ReactNode; diff --git a/client/apps/game/src/ui/elements/SelectAddress.tsx b/client/apps/game/src/ui/elements/select-address.tsx similarity index 97% rename from client/apps/game/src/ui/elements/SelectAddress.tsx rename to client/apps/game/src/ui/elements/select-address.tsx index 08e22ba2d7..a94ef413e1 100644 --- a/client/apps/game/src/ui/elements/SelectAddress.tsx +++ b/client/apps/game/src/ui/elements/select-address.tsx @@ -1,8 +1,8 @@ +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/ui/elements/select"; +import TextInput from "@/ui/elements/text-input"; import { ContractAddress, Player } from "@bibliothecadao/eternum"; import React, { useMemo, useRef, useState } from "react"; import { displayAddress, toHexString } from "../utils/utils"; -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "./Select"; -import TextInput from "./TextInput"; interface SelectAddressProps { initialSelectedAddress: ContractAddress; diff --git a/client/apps/game/src/ui/elements/SelectResource.tsx b/client/apps/game/src/ui/elements/select-resource.tsx similarity index 96% rename from client/apps/game/src/ui/elements/SelectResource.tsx rename to client/apps/game/src/ui/elements/select-resource.tsx index 7d6b7c21cb..89729c5832 100644 --- a/client/apps/game/src/ui/elements/SelectResource.tsx +++ b/client/apps/game/src/ui/elements/select-resource.tsx @@ -1,10 +1,10 @@ import { ReactComponent as Cross } from "@/assets/icons/common/cross.svg"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/ui/elements/select"; +import TextInput from "@/ui/elements/text-input"; import { RESOURCE_TIERS, ResourcesIds } from "@bibliothecadao/eternum"; import clsx from "clsx"; import React, { useMemo, useRef, useState } from "react"; -import { ResourceIcon } from "./ResourceIcon"; -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "./Select"; -import TextInput from "./TextInput"; interface SelectResourceProps { onSelect: (resourceId: number | null) => void; diff --git a/client/apps/game/src/ui/elements/Select.tsx b/client/apps/game/src/ui/elements/select.tsx similarity index 100% rename from client/apps/game/src/ui/elements/Select.tsx rename to client/apps/game/src/ui/elements/select.tsx diff --git a/client/apps/game/src/ui/elements/SortButton.tsx b/client/apps/game/src/ui/elements/sort-button.tsx similarity index 100% rename from client/apps/game/src/ui/elements/SortButton.tsx rename to client/apps/game/src/ui/elements/sort-button.tsx diff --git a/client/apps/game/src/ui/elements/SortPanel.tsx b/client/apps/game/src/ui/elements/sort-panel.tsx similarity index 100% rename from client/apps/game/src/ui/elements/SortPanel.tsx rename to client/apps/game/src/ui/elements/sort-panel.tsx diff --git a/client/apps/game/src/ui/elements/StaminaResourceCost.tsx b/client/apps/game/src/ui/elements/stamina-resource-cost.tsx similarity index 91% rename from client/apps/game/src/ui/elements/StaminaResourceCost.tsx rename to client/apps/game/src/ui/elements/stamina-resource-cost.tsx index e5a16f702e..2bfed809f8 100644 --- a/client/apps/game/src/ui/elements/StaminaResourceCost.tsx +++ b/client/apps/game/src/ui/elements/stamina-resource-cost.tsx @@ -1,6 +1,6 @@ import { configManager } from "@/dojo/setup"; -import { useStaminaManager } from "@/hooks/helpers/useStamina"; -import useNextBlockTimestamp from "@/hooks/useNextBlockTimestamp"; +import { useStaminaManager } from "@/hooks/helpers/use-stamina"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; import { ID } from "@bibliothecadao/eternum"; import clsx from "clsx"; import { useMemo } from "react"; diff --git a/client/apps/game/src/ui/elements/StaminaResource.tsx b/client/apps/game/src/ui/elements/stamina-resource.tsx similarity index 90% rename from client/apps/game/src/ui/elements/StaminaResource.tsx rename to client/apps/game/src/ui/elements/stamina-resource.tsx index 1194aa7aa0..885e8795eb 100644 --- a/client/apps/game/src/ui/elements/StaminaResource.tsx +++ b/client/apps/game/src/ui/elements/stamina-resource.tsx @@ -1,9 +1,9 @@ import { ReactComponent as Lightning } from "@/assets/icons/common/lightning.svg"; import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useStaminaManager } from "@/hooks/helpers/useStamina"; -import useUIStore from "@/hooks/store/useUIStore"; -import useNextBlockTimestamp from "@/hooks/useNextBlockTimestamp"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useStaminaManager } from "@/hooks/helpers/use-stamina"; +import useUIStore from "@/hooks/store/use-ui-store"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; import { ID } from "@bibliothecadao/eternum"; import { getComponentValue } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; diff --git a/client/apps/game/src/ui/elements/tab/TabList.tsx b/client/apps/game/src/ui/elements/tab/tab-list.tsx similarity index 80% rename from client/apps/game/src/ui/elements/tab/TabList.tsx rename to client/apps/game/src/ui/elements/tab/tab-list.tsx index 0e7da568ea..95ec243111 100644 --- a/client/apps/game/src/ui/elements/tab/TabList.tsx +++ b/client/apps/game/src/ui/elements/tab/tab-list.tsx @@ -1,9 +1,9 @@ +import { TabContext } from "@/ui/elements/tab/tab-provider"; +import { VARIANTS } from "@/ui/elements/tab/tabs"; import { Tab } from "@headlessui/react"; import clsx from "clsx"; import type { ComponentProps } from "react"; import { useContext } from "react"; -import { TabContext } from "./TabProvider"; -import { VARIANTS } from "./tabs"; type TabListProps = ComponentProps<"div">; diff --git a/client/apps/game/src/ui/elements/tab/TabPanel.tsx b/client/apps/game/src/ui/elements/tab/tab-panel.tsx similarity index 100% rename from client/apps/game/src/ui/elements/tab/TabPanel.tsx rename to client/apps/game/src/ui/elements/tab/tab-panel.tsx diff --git a/client/apps/game/src/ui/elements/tab/TabPanels.tsx b/client/apps/game/src/ui/elements/tab/tab-panels.tsx similarity index 100% rename from client/apps/game/src/ui/elements/tab/TabPanels.tsx rename to client/apps/game/src/ui/elements/tab/tab-panels.tsx diff --git a/client/apps/game/src/ui/elements/tab/TabProvider.tsx b/client/apps/game/src/ui/elements/tab/tab-provider.tsx similarity index 100% rename from client/apps/game/src/ui/elements/tab/TabProvider.tsx rename to client/apps/game/src/ui/elements/tab/tab-provider.tsx diff --git a/client/apps/game/src/ui/elements/tab/tab.tsx b/client/apps/game/src/ui/elements/tab/tab.tsx index bb5ffa5e2a..15720d5690 100644 --- a/client/apps/game/src/ui/elements/tab/tab.tsx +++ b/client/apps/game/src/ui/elements/tab/tab.tsx @@ -1,9 +1,9 @@ +import { TabContext } from "@/ui/elements/tab/tab-provider"; +import { VARIANTS } from "@/ui/elements/tab/tabs"; import { Tab as HeadlessTab } from "@headlessui/react"; import clsx from "clsx"; import type { ComponentProps } from "react"; import { useContext } from "react"; -import { TabContext } from "./TabProvider"; -import { VARIANTS } from "./tabs"; type TabProps = ComponentProps<"button"> & { noText?: boolean }; diff --git a/client/apps/game/src/ui/elements/tab/tabs.tsx b/client/apps/game/src/ui/elements/tab/tabs.tsx index c137c88df7..b7491adf37 100644 --- a/client/apps/game/src/ui/elements/tab/tabs.tsx +++ b/client/apps/game/src/ui/elements/tab/tabs.tsx @@ -1,12 +1,12 @@ +import { soundSelector, useUiSounds } from "@/hooks/use-ui-sound"; +import { Tab } from "@/ui/elements/tab/tab"; +import { TabList } from "@/ui/elements/tab/tab-list"; +import { TabPanel } from "@/ui/elements/tab/tab-panel"; +import { TabPanels } from "@/ui/elements/tab/tab-panels"; +import { TabProvider } from "@/ui/elements/tab/tab-provider"; import { Tab as HeadlessTab } from "@headlessui/react"; import clsx from "clsx"; import type { ReactNode } from "react"; -import { soundSelector, useUiSounds } from "../../../hooks/useUISound"; -import { TabList } from "./TabList"; -import { TabPanel } from "./TabPanel"; -import { TabPanels } from "./TabPanels"; -import { TabProvider } from "./TabProvider"; -import { Tab } from "./tab"; export const VARIANTS: any = { default: { diff --git a/client/apps/game/src/ui/elements/Tabs.tsx b/client/apps/game/src/ui/elements/tabs.tsx similarity index 100% rename from client/apps/game/src/ui/elements/Tabs.tsx rename to client/apps/game/src/ui/elements/tabs.tsx diff --git a/client/apps/game/src/ui/elements/TextInput.tsx b/client/apps/game/src/ui/elements/text-input.tsx similarity index 100% rename from client/apps/game/src/ui/elements/TextInput.tsx rename to client/apps/game/src/ui/elements/text-input.tsx diff --git a/client/apps/game/src/ui/elements/Tooltip.tsx b/client/apps/game/src/ui/elements/tooltip.tsx similarity index 98% rename from client/apps/game/src/ui/elements/Tooltip.tsx rename to client/apps/game/src/ui/elements/tooltip.tsx index 5790f2f721..5fcd20f93b 100644 --- a/client/apps/game/src/ui/elements/Tooltip.tsx +++ b/client/apps/game/src/ui/elements/tooltip.tsx @@ -1,7 +1,7 @@ import clsx from "clsx"; import throttle from "lodash/throttle"; import { useEffect, useRef } from "react"; -import useUIStore from "../../hooks/store/useUIStore"; +import useUIStore from "@/hooks/store/use-ui-store"; type TooltipProps = { className?: string; diff --git a/client/apps/game/src/ui/elements/TwitterShareButton.tsx b/client/apps/game/src/ui/elements/twitter-share-button.tsx similarity index 96% rename from client/apps/game/src/ui/elements/TwitterShareButton.tsx rename to client/apps/game/src/ui/elements/twitter-share-button.tsx index e69e744f41..36dce053bf 100644 --- a/client/apps/game/src/ui/elements/TwitterShareButton.tsx +++ b/client/apps/game/src/ui/elements/twitter-share-button.tsx @@ -1,6 +1,6 @@ import { ReactComponent as TwitterIcon } from "@/assets/icons/twitter.svg"; +import Button from "@/ui/elements/button"; import React from "react"; -import Button from "./Button"; interface Props { text: string; diff --git a/client/apps/game/src/ui/layouts/OnboardingButton.tsx b/client/apps/game/src/ui/layouts/onboarding-button.tsx similarity index 92% rename from client/apps/game/src/ui/layouts/OnboardingButton.tsx rename to client/apps/game/src/ui/layouts/onboarding-button.tsx index 6beb761935..c807cd513f 100644 --- a/client/apps/game/src/ui/layouts/OnboardingButton.tsx +++ b/client/apps/game/src/ui/layouts/onboarding-button.tsx @@ -1,4 +1,4 @@ -import Button from "@/ui/elements/Button"; +import Button from "@/ui/elements/button"; import { ReactNode } from "react"; export const OnboardingButton = ({ diff --git a/client/apps/game/src/ui/layouts/Onboarding.tsx b/client/apps/game/src/ui/layouts/onboarding.tsx similarity index 84% rename from client/apps/game/src/ui/layouts/Onboarding.tsx rename to client/apps/game/src/ui/layouts/onboarding.tsx index 7d470d4e42..419de44b15 100644 --- a/client/apps/game/src/ui/layouts/Onboarding.tsx +++ b/client/apps/game/src/ui/layouts/onboarding.tsx @@ -1,19 +1,19 @@ import { ReactComponent as BackArrow } from "@/assets/icons/back.svg"; -import { ReactComponent as EternumWordsLogo } from "@/assets/icons/eternum_words_logo.svg"; +import { ReactComponent as EternumWordsLogo } from "@/assets/icons/eternum-words-logo.svg"; import { ReactComponent as Lock } from "@/assets/icons/lock.svg"; import { ReactComponent as LordsIcon } from "@/assets/icons/resources/LordsSimple.svg"; import { ReactComponent as TreasureChest } from "@/assets/icons/treasure-chest.svg"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { usePlayerRealms } from "@/hooks/helpers/useRealm"; -import useUIStore from "@/hooks/store/useUIStore"; -import Button from "@/ui/elements/Button"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { usePlayerRealms } from "@/hooks/helpers/use-realm"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { SeasonPassRealm, getUnusedSeasonPasses } from "@/ui/components/cityview/realm/settle-realm-component"; +import Button from "@/ui/elements/button"; +import { TermsOfService } from "@/ui/layouts/terms-of-service"; +import { Controller } from "@/ui/modules/controller/controller"; +import { SettleRealm, StepOne } from "@/ui/modules/onboarding/steps"; import { motion } from "framer-motion"; import { useEffect, useMemo, useState } from "react"; import { env } from "../../../env"; -import { SeasonPassRealm, getUnusedSeasonPasses } from "../components/cityview/realm/SettleRealmComponent"; -import { Controller } from "../modules/controller/Controller"; -import { SettleRealm, StepOne } from "../modules/onboarding/Steps"; -import { TermsOfService } from "./TermsOfService"; interface OnboardingOverlayProps { controller?: boolean; @@ -113,7 +113,10 @@ export const StepContainer = ({
{loading ? ( - + ) : ( )} @@ -188,7 +191,7 @@ const SeasonPassButton = ({ setSettleRealm }: SeasonPassButtonProps) => { const realms = usePlayerRealms(); const createRandomRealm = () => { - const newRealmId = Math.max(...realms.map((realm) => realm.realmId), 0) + 1; + const newRealmId = Math.floor(Math.random() * 8000) + 1; create_multiple_realms_dev({ signer: account, realm_ids: [newRealmId] }); }; @@ -206,25 +209,31 @@ const SeasonPassButton = ({ setSettleRealm }: SeasonPassButtonProps) => { hasAcceptedToS && (seasonPassRealms.length > 0 ? ( ) : ( - - )) - ); + +
+ ) + ) + ) + ) }; diff --git a/client/apps/game/src/ui/layouts/TermsOfService.tsx b/client/apps/game/src/ui/layouts/terms-of-service.tsx similarity index 98% rename from client/apps/game/src/ui/layouts/TermsOfService.tsx rename to client/apps/game/src/ui/layouts/terms-of-service.tsx index 1e53a50f9b..1a4b3e0337 100644 --- a/client/apps/game/src/ui/layouts/TermsOfService.tsx +++ b/client/apps/game/src/ui/layouts/terms-of-service.tsx @@ -1,6 +1,6 @@ -import useUIStore from "@/hooks/store/useUIStore"; +import useUIStore from "@/hooks/store/use-ui-store"; +import Button from "@/ui/elements/button"; import { useMemo, useRef, useState } from "react"; -import Button from "../elements/Button"; export const TermsOfService = () => { const setHasAcceptedToS = useUIStore((state) => state.setHasAcceptedToS); diff --git a/client/apps/game/src/ui/layouts/World.tsx b/client/apps/game/src/ui/layouts/world.tsx similarity index 72% rename from client/apps/game/src/ui/layouts/World.tsx rename to client/apps/game/src/ui/layouts/world.tsx index 3b5e24fef0..6bac9f3b79 100644 --- a/client/apps/game/src/ui/layouts/World.tsx +++ b/client/apps/game/src/ui/layouts/world.tsx @@ -1,95 +1,99 @@ -import { Leva } from "leva"; -import { lazy, Suspense, useEffect, useMemo, useState } from "react"; -import { Redirect } from "wouter"; -import useUIStore from "../../hooks/store/useUIStore"; - import { debounceAddDonkeysAndArmiesSubscription, - debouncedAddHyperstructureSubscription, debouncedAddMarketSubscription, debouncedAddToSubscription, debouncedAddToSubscriptionOneKey, -} from "@/dojo/debouncedQueries"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { PlayerStructure, useEntities } from "@/hooks/helpers/useEntities"; -import { useStructureEntityId } from "@/hooks/helpers/useStructureEntityId"; -import { useFetchBlockchainData } from "@/hooks/store/useBlockchainStore"; -import { LoadingStateKey } from "@/hooks/store/useWorldLoading"; -import { ADMIN_BANK_ENTITY_ID } from "@bibliothecadao/eternum"; +} from "@/dojo/debounced-queries"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { usePlayerStructures } from "@/hooks/helpers/use-entities"; +import { useStructureEntityId } from "@/hooks/helpers/use-structure-entity-id"; +import { useFetchBlockchainData } from "@/hooks/store/use-blockchain-store"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { LoadingStateKey } from "@/hooks/store/use-world-loading"; +import { rewards } from "@/ui/components/navigation/config"; +import { LoadingOroborus } from "@/ui/modules/loading-oroborus"; +import { LoadingScreen } from "@/ui/modules/loading-screen"; +import { ADMIN_BANK_ENTITY_ID, PlayerStructure } from "@bibliothecadao/eternum"; import { getComponentValue } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; +import { Leva } from "leva"; +import { lazy, Suspense, useEffect, useMemo, useState } from "react"; +import { Redirect } from "wouter"; import { env } from "../../../env"; -import { rewards } from "../components/navigation/Config"; import { IS_MOBILE } from "../config"; -import { LoadingOroborus } from "../modules/loading-oroborus"; -import { LoadingScreen } from "../modules/LoadingScreen"; // Lazy load components const SelectedArmy = lazy(() => - import("../components/worldmap/armies/SelectedArmy").then((module) => ({ default: module.SelectedArmy })), + import("@/ui/components/worldmap/armies/selected-army").then((module) => ({ default: module.SelectedArmy })), ); const ActionInfo = lazy(() => - import("../components/worldmap/armies/ActionInfo").then((module) => ({ default: module.ActionInfo })), + import("@/ui/components/worldmap/armies/action-info").then((module) => ({ default: module.ActionInfo })), ); const ActionInstructions = lazy(() => - import("../components/worldmap/armies/ActionInstructions").then((module) => ({ default: module.ActionInstructions })), + import("@/ui/components/worldmap/armies/action-instructions").then((module) => ({ + default: module.ActionInstructions, + })), ); const ArmyInfoLabel = lazy(() => - import("../components/worldmap/armies/ArmyInfoLabel").then((module) => ({ default: module.ArmyInfoLabel })), + import("@/ui/components/worldmap/armies/army-info-label").then((module) => ({ default: module.ArmyInfoLabel })), ); const BattleInfoLabel = lazy(() => - import("../components/worldmap/battles/BattleLabel").then((module) => ({ default: module.BattleInfoLabel })), + import("@/ui/components/worldmap/battles/battle-label").then((module) => ({ default: module.BattleInfoLabel })), ); const BlankOverlayContainer = lazy(() => - import("../containers/BlankOverlayContainer").then((module) => ({ default: module.BlankOverlayContainer })), + import("@/ui/containers/blank-overlay-container").then((module) => ({ default: module.BlankOverlayContainer })), ); const StructureInfoLabel = lazy(() => - import("../components/worldmap/structures/StructureLabel").then((module) => ({ default: module.StructureInfoLabel })), + import("@/ui/components/worldmap/structures/structure-label").then((module) => ({ + default: module.StructureInfoLabel, + })), ); const BattleContainer = lazy(() => - import("../containers/BattleContainer").then((module) => ({ default: module.BattleContainer })), + import("@/ui/containers/battle-container").then((module) => ({ default: module.BattleContainer })), ); -const TopCenterContainer = lazy(() => import("../containers/TopCenterContainer")); +const TopCenterContainer = lazy(() => import("@/ui/containers/top-center-container")); const BottomRightContainer = lazy(() => - import("../containers/BottomRightContainer").then((module) => ({ default: module.BottomRightContainer })), + import("@/ui/containers/bottom-right-container").then((module) => ({ default: module.BottomRightContainer })), ); -const LeftMiddleContainer = lazy(() => import("../containers/LeftMiddleContainer")); -const RightMiddleContainer = lazy(() => import("../containers/RightMiddleContainer")); -const TopLeftContainer = lazy(() => import("../containers/TopLeftContainer")); -const Tooltip = lazy(() => import("../elements/Tooltip").then((module) => ({ default: module.Tooltip }))); +const LeftMiddleContainer = lazy(() => import("@/ui/containers/left-middle-container")); +const RightMiddleContainer = lazy(() => import("@/ui/containers/right-middle-container")); +const TopLeftContainer = lazy(() => import("@/ui/containers/top-left-container")); +const Tooltip = lazy(() => import("@/ui/elements/tooltip").then((module) => ({ default: module.Tooltip }))); const BattleView = lazy(() => - import("../modules/military/battle-view/BattleView").then((module) => ({ default: module.BattleView })), + import("@/ui/modules/military/battle-view/battle-view").then((module) => ({ default: module.BattleView })), ); const TopMiddleNavigation = lazy(() => - import("../modules/navigation/TopNavigation").then((module) => ({ default: module.TopMiddleNavigation })), + import("@/ui/modules/navigation/top-navigation").then((module) => ({ default: module.TopMiddleNavigation })), ); const BottomMiddleContainer = lazy(() => - import("../containers/BottomMiddleContainer").then((module) => ({ default: module.BottomMiddleContainer })), + import("@/ui/containers/bottom-middle-container").then((module) => ({ default: module.BottomMiddleContainer })), ); const LeftNavigationModule = lazy(() => - import("../modules/navigation/LeftNavigationModule").then((module) => ({ default: module.LeftNavigationModule })), + import("@/ui/modules/navigation/left-navigation-module").then((module) => ({ default: module.LeftNavigationModule })), ); const RightNavigationModule = lazy(() => - import("../modules/navigation/RightNavigationModule").then((module) => ({ default: module.RightNavigationModule })), + import("@/ui/modules/navigation/right-navigation-module").then((module) => ({ + default: module.RightNavigationModule, + })), ); const TopLeftNavigation = lazy(() => - import("../modules/navigation/TopLeftNavigation").then((module) => ({ default: module.TopLeftNavigation })), + import("@/ui/modules/navigation/top-left-navigation").then((module) => ({ default: module.TopLeftNavigation })), ); const EventStream = lazy(() => - import("../modules/stream/EventStream").then((module) => ({ default: module.EventStream })), + import("@/ui/modules/stream/event-stream").then((module) => ({ default: module.EventStream })), ); -const Onboarding = lazy(() => import("./Onboarding").then((module) => ({ default: module.Onboarding }))); +const Onboarding = lazy(() => import("./onboarding").then((module) => ({ default: module.Onboarding }))); const OrientationOverlay = lazy(() => - import("../components/overlays/OrientationOverlay").then((module) => ({ default: module.OrientationOverlay })), + import("@/ui/components/overlays/orientation-overlay").then((module) => ({ default: module.OrientationOverlay })), ); const MiniMapNavigation = lazy(() => - import("../modules/navigation/MiniMapNavigation").then((module) => ({ default: module.MiniMapNavigation })), + import("@/ui/modules/navigation/mini-map-navigation").then((module) => ({ default: module.MiniMapNavigation })), ); export const World = ({ backgroundImage }: { backgroundImage: string }) => { @@ -110,12 +114,11 @@ export const World = ({ backgroundImage }: { backgroundImage: string }) => { const dojo = useDojo(); const structureEntityId = useUIStore((state) => state.structureEntityId); - const { playerStructures } = useEntities(); - const structures = playerStructures(); + const playerStructures = usePlayerStructures(); const filteredStructures = useMemo( - () => structures.filter((structure: PlayerStructure) => !subscriptions[structure.entity_id.toString()]), - [structures, subscriptions], + () => playerStructures.filter((structure: PlayerStructure) => !subscriptions[structure.entity_id.toString()]), + [playerStructures, subscriptions], ); useEffect(() => { @@ -190,7 +193,7 @@ export const World = ({ backgroundImage }: { backgroundImage: string }) => { await debounceAddDonkeysAndArmiesSubscription( dojo.network.toriiClient, dojo.network.contractComponents as any, - [...structures.map((structure) => structure.entity_id)], + [...playerStructures.map((structure) => structure.entity_id)], () => setLoading(LoadingStateKey.DonkeysAndArmies, false), ); } catch (error) { @@ -199,7 +202,7 @@ export const World = ({ backgroundImage }: { backgroundImage: string }) => { }; fetch(); - }, [structures.length]); + }, [playerStructures.length]); useEffect(() => { const fetch = async () => { @@ -332,7 +335,7 @@ export const World = ({ backgroundImage }: { backgroundImage: string }) => { )} - +
diff --git a/client/apps/game/src/ui/modules/chat/ChatTab.tsx b/client/apps/game/src/ui/modules/chat/chat-tab.tsx similarity index 81% rename from client/apps/game/src/ui/modules/chat/ChatTab.tsx rename to client/apps/game/src/ui/modules/chat/chat-tab.tsx index 60d553885f..e7e5ba3abe 100644 --- a/client/apps/game/src/ui/modules/chat/ChatTab.tsx +++ b/client/apps/game/src/ui/modules/chat/chat-tab.tsx @@ -1,28 +1,7 @@ import { AnimatePresence, motion } from "framer-motion"; import { X } from "lucide-react"; import { useMemo } from "react"; -import { useChatStore } from "./ChatState"; -import { GLOBAL_CHANNEL, GLOBAL_CHANNEL_KEY } from "./constants"; - -export const DEFAULT_TAB: Tab = { - name: GLOBAL_CHANNEL_KEY, - address: "0x0", - key: GLOBAL_CHANNEL, - displayed: true, - lastSeen: new Date(), - lastMessage: undefined, - mandatory: true, -}; - -export const EVENT_STREAM_TAB: Tab = { - name: "Events", - address: "0x1", - key: "events", - displayed: true, - lastSeen: new Date(), - lastMessage: undefined, - mandatory: true, -}; +import { useChatStore } from "./use-chat-store"; export interface Tab { name: string; diff --git a/client/apps/game/src/ui/modules/chat/Chat.tsx b/client/apps/game/src/ui/modules/chat/chat.tsx similarity index 94% rename from client/apps/game/src/ui/modules/chat/Chat.tsx rename to client/apps/game/src/ui/modules/chat/chat.tsx index ab684baebb..4875ac3265 100644 --- a/client/apps/game/src/ui/modules/chat/Chat.tsx +++ b/client/apps/game/src/ui/modules/chat/chat.tsx @@ -1,25 +1,24 @@ import { ReactComponent as Minimize } from "@/assets/icons/common/minimize.svg"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useGetAllPlayers } from "@/hooks/helpers/use-get-all-players"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useGuilds } from "@/hooks/helpers/use-guilds"; +import { usePlayers } from "@/hooks/helpers/use-players"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/ui/elements/select"; +import TextInput from "@/ui/elements/text-input"; +import { ChatTab } from "@/ui/modules/chat/chat-tab"; +import { CHAT_COLORS, DEFAULT_TAB, GLOBAL_CHANNEL, GLOBAL_CHANNEL_KEY } from "@/ui/modules/chat/constants"; +import { InputField } from "@/ui/modules/chat/input-field"; +import { ChatMetadata, Tab } from "@/ui/modules/chat/types"; +import { useChatStore } from "@/ui/modules/chat/use-chat-store"; +import { getMessageKey } from "@/ui/modules/chat/utils"; +import { EventStream } from "@/ui/modules/stream/event-stream"; +import { toHexString } from "@/ui/utils/utils"; +import { ContractAddress, Player } from "@bibliothecadao/eternum"; import { useEntityQuery } from "@dojoengine/react"; import { getComponentValue, Has, HasValue } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { shortString } from "starknet"; -import { useGuilds } from "@/hooks/helpers/useGuilds"; -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/ui/elements/Select"; -import TextInput from "@/ui/elements/TextInput"; -import { toHexString } from "@/ui/utils/utils"; -import { ContractAddress, Player } from "@bibliothecadao/eternum"; -import { EventStream } from "../stream/EventStream"; -import { useChatStore } from "./ChatState"; -import { ChatTab, DEFAULT_TAB } from "./ChatTab"; -import { CHAT_COLORS, GLOBAL_CHANNEL, GLOBAL_CHANNEL_KEY } from "./constants"; -import { InputField } from "./InputField"; -import { ChatMetadata, Tab } from "./types"; -import { getMessageKey } from "./utils"; - export const Chat = () => { const { account: { account }, @@ -45,11 +44,7 @@ export const Chat = () => { const addTab = useChatStore((state) => state.addTab); - const getPlayers = useGetAllPlayers(); - - const players = useMemo(() => { - return getPlayers().filter((player) => player.address !== BigInt(account.address)); - }, []); + const players = usePlayers(); useEffect(() => { scrollToElement(bottomChatRef); diff --git a/client/apps/game/src/ui/modules/chat/constants.tsx b/client/apps/game/src/ui/modules/chat/constants.tsx index 09cd66dcae..a5e43cccbf 100644 --- a/client/apps/game/src/ui/modules/chat/constants.tsx +++ b/client/apps/game/src/ui/modules/chat/constants.tsx @@ -1,4 +1,5 @@ import { shortString } from "starknet"; +import { Tab } from "./types"; const PASTEL_PINK = "#F6C297"; const PASTEL_BLUE = "#BAE1FF"; @@ -11,3 +12,23 @@ export const CHAT_COLORS = { export const GLOBAL_CHANNEL = shortString.encodeShortString("global"); export const CHAT_STORAGE_KEY = "chat_tabs"; export const GLOBAL_CHANNEL_KEY = "global"; + +export const DEFAULT_TAB: Tab = { + name: GLOBAL_CHANNEL_KEY, + address: "0x0", + key: GLOBAL_CHANNEL, + displayed: true, + lastSeen: new Date(), + lastMessage: undefined, + mandatory: true, +}; + +export const EVENT_STREAM_TAB: Tab = { + name: "Events", + address: "0x1", + key: "events", + displayed: true, + lastSeen: new Date(), + lastMessage: undefined, + mandatory: true, +}; diff --git a/client/apps/game/src/ui/modules/chat/InputField.tsx b/client/apps/game/src/ui/modules/chat/input-field.tsx similarity index 90% rename from client/apps/game/src/ui/modules/chat/InputField.tsx rename to client/apps/game/src/ui/modules/chat/input-field.tsx index e0f72a8e0b..4a1a8f5436 100644 --- a/client/apps/game/src/ui/modules/chat/InputField.tsx +++ b/client/apps/game/src/ui/modules/chat/input-field.tsx @@ -1,13 +1,13 @@ -import { useDojo } from "@/hooks/context/DojoContext"; -import TextInput from "@/ui/elements/TextInput"; +import { useDojo } from "@/hooks/context/dojo-context"; +import TextInput from "@/ui/elements/text-input"; +import { scrollToElement } from "@/ui/modules/chat/chat"; +import { GLOBAL_CHANNEL, GLOBAL_CHANNEL_KEY } from "@/ui/modules/chat/constants"; +import { Tab } from "@/ui/modules/chat/types"; import { toHexString, toValidAscii } from "@/ui/utils/utils"; import { Has, HasValue, getComponentValue, runQuery } from "@dojoengine/recs"; import { useCallback, useRef } from "react"; import { Signature } from "starknet"; import { env } from "../../../../env"; -import { scrollToElement } from "./Chat"; -import { GLOBAL_CHANNEL, GLOBAL_CHANNEL_KEY } from "./constants"; -import { Tab } from "./types"; export const InputField = ({ currentTab, @@ -106,7 +106,7 @@ function generateMessageTypedData( { name: "chainId", type: "shortstring" }, { name: "revision", type: "shortstring" }, ], - "s0_eternum-Message": [ + "s1_eternum-Message": [ { name: "identity", type: "ContractAddress" }, { name: "channel", type: "shortstring" }, { name: "content", type: "string" }, @@ -114,7 +114,7 @@ function generateMessageTypedData( { name: "salt", type: "felt" }, ], }, - primaryType: "s0_eternum-Message", + primaryType: "s1_eternum-Message", domain: { name: "Eternum", version: "1", diff --git a/client/apps/game/src/ui/modules/chat/ChatState.tsx b/client/apps/game/src/ui/modules/chat/use-chat-store.tsx similarity index 95% rename from client/apps/game/src/ui/modules/chat/ChatState.tsx rename to client/apps/game/src/ui/modules/chat/use-chat-store.tsx index 46837505e9..f8be0cc67b 100644 --- a/client/apps/game/src/ui/modules/chat/ChatState.tsx +++ b/client/apps/game/src/ui/modules/chat/use-chat-store.tsx @@ -1,8 +1,7 @@ +import { CHAT_STORAGE_KEY, DEFAULT_TAB, EVENT_STREAM_TAB, GLOBAL_CHANNEL_KEY } from "@/ui/modules/chat/constants"; +import { Tab } from "@/ui/modules/chat/types"; import { create } from "zustand"; import { createJSONStorage, persist } from "zustand/middleware"; -import { DEFAULT_TAB, EVENT_STREAM_TAB } from "./ChatTab"; -import { CHAT_STORAGE_KEY, GLOBAL_CHANNEL_KEY } from "./constants"; -import { Tab } from "./types"; interface ChatState { tabs: Tab[]; diff --git a/client/apps/game/src/ui/modules/chat/utils.tsx b/client/apps/game/src/ui/modules/chat/utils.tsx index 1b128db8ff..b0313ffa67 100644 --- a/client/apps/game/src/ui/modules/chat/utils.tsx +++ b/client/apps/game/src/ui/modules/chat/utils.tsx @@ -1,4 +1,5 @@ import { starknetKeccak } from "@dojoengine/torii-client"; +import { Buffer } from "buffer"; export const getMessageKey = (addressOne: string | bigint, addressTwo: string | bigint) => { if (typeof addressOne === "string") { diff --git a/client/apps/game/src/ui/modules/controller/Controller.tsx b/client/apps/game/src/ui/modules/controller/controller.tsx similarity index 94% rename from client/apps/game/src/ui/modules/controller/Controller.tsx rename to client/apps/game/src/ui/modules/controller/controller.tsx index c1c5e798cd..19f8fa0dfc 100644 --- a/client/apps/game/src/ui/modules/controller/Controller.tsx +++ b/client/apps/game/src/ui/modules/controller/controller.tsx @@ -1,9 +1,8 @@ import { ReactComponent as CartridgeSmall } from "@/assets/icons/cartridge-small.svg"; import { ReactComponent as Disconnect } from "@/assets/icons/disconnect.svg"; -import { useAccountStore } from "@/hooks/context/accountStore"; -import useUIStore from "@/hooks/store/useUIStore"; - -import Button from "@/ui/elements/Button"; +import { useAccountStore } from "@/hooks/context/account-store"; +import useUIStore from "@/hooks/store/use-ui-store"; +import Button from "@/ui/elements/button"; import { useConnect, useDisconnect } from "@starknet-react/core"; import { useCallback, useEffect, useState } from "react"; diff --git a/client/apps/game/src/ui/modules/entity-details/Battles.tsx b/client/apps/game/src/ui/modules/entity-details/Battles.tsx deleted file mode 100644 index c022b69d81..0000000000 --- a/client/apps/game/src/ui/modules/entity-details/Battles.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { BattleInfo } from "@/hooks/helpers/battles/useBattles"; -import { BattleListItem } from "@/ui/components/battles/BattleListItem"; -import { ArmyInfo } from "@bibliothecadao/eternum"; - -export const Battles = ({ ownArmy, battles }: { ownArmy: ArmyInfo | undefined; battles: BattleInfo[] }) => { - return ( -
- {battles.length > 0 && ( - <> -
Battles
- {battles.map((battle) => ( - - ))} - - )} -
- ); -}; diff --git a/client/apps/game/src/ui/modules/entity-details/EntityDetails.tsx b/client/apps/game/src/ui/modules/entity-details/EntityDetails.tsx deleted file mode 100644 index 0c7009f25d..0000000000 --- a/client/apps/game/src/ui/modules/entity-details/EntityDetails.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { useQuery } from "@/hooks/helpers/useQuery"; -import { BuildingEntityDetails } from "./BuildingEntityDetails"; -import { CombatEntityDetails } from "./CombatEntityDetails"; - -export const EntityDetails = ({ className }: { className?: string }) => { - const { isMapView } = useQuery(); - return
{isMapView ? : }
; -}; diff --git a/client/apps/game/src/ui/modules/entity-details/battles.tsx b/client/apps/game/src/ui/modules/entity-details/battles.tsx new file mode 100644 index 0000000000..9dd60d5cf7 --- /dev/null +++ b/client/apps/game/src/ui/modules/entity-details/battles.tsx @@ -0,0 +1,17 @@ +import { BattleListItem } from "@/ui/components/battles/battle-list-item"; +import { ArmyInfo, ID } from "@bibliothecadao/eternum"; + +export const Battles = ({ ownArmy, battles }: { ownArmy: ArmyInfo | undefined; battles: ID[] }) => { + return ( +
+ {battles.length > 0 && ( + <> +
Battles
+ {battles.map((battle) => ( + + ))} + + )} +
+ ); +}; diff --git a/client/apps/game/src/ui/modules/entity-details/BuildingEntityDetails.tsx b/client/apps/game/src/ui/modules/entity-details/building-entity-details.tsx similarity index 86% rename from client/apps/game/src/ui/modules/entity-details/BuildingEntityDetails.tsx rename to client/apps/game/src/ui/modules/entity-details/building-entity-details.tsx index 9217628b20..e7f7ca60d3 100644 --- a/client/apps/game/src/ui/modules/entity-details/BuildingEntityDetails.tsx +++ b/client/apps/game/src/ui/modules/entity-details/building-entity-details.tsx @@ -1,18 +1,27 @@ import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useEntities, useEntitiesUtils } from "@/hooks/helpers/useEntities"; -import useUIStore from "@/hooks/store/useUIStore"; -import { soundSelector, useUiSounds } from "@/hooks/useUISound"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { usePlayerStructures } from "@/hooks/helpers/use-entities"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { soundSelector, useUiSounds } from "@/hooks/use-ui-sound"; import { ResourceMiningTypes } from "@/types"; -import { BuildingInfo, ResourceInfo } from "@/ui/components/construction/SelectPreviewBuilding"; -import Button from "@/ui/elements/Button"; +import { BuildingInfo, ResourceInfo } from "@/ui/components/construction/select-preview-building"; +import Button from "@/ui/elements/button"; +import { RealmDetails } from "@/ui/modules/entity-details/realm/realm-details"; +import { LeftView } from "@/ui/modules/navigation/left-navigation-module"; import { ResourceIdToMiningType, getEntityIdFromKeys } from "@/ui/utils/utils"; -import { BUILDINGS_CENTER, BuildingType, ID, ResourcesIds, StructureType, TileManager } from "@bibliothecadao/eternum"; +import { getEntityInfo } from "@/utils/entities"; +import { + BUILDINGS_CENTER, + BuildingType, + ContractAddress, + ID, + ResourcesIds, + StructureType, + TileManager, +} from "@bibliothecadao/eternum"; import { useComponentValue } from "@dojoengine/react"; import { getComponentValue } from "@dojoengine/recs"; import { useCallback, useEffect, useMemo, useState } from "react"; -import { LeftView } from "../navigation/LeftNavigationModule"; -import { RealmDetails } from "./realm/RealmDetails"; export const BuildingEntityDetails = () => { const dojo = useDojo(); @@ -31,8 +40,6 @@ export const BuildingEntityDetails = () => { const [isOwnedByPlayer, setIsOwnedByPlayer] = useState(false); const [showDestroyConfirm, setShowDestroyConfirm] = useState(false); - const { getEntityInfo } = useEntitiesUtils(); - const structureEntityId = useUIStore((state) => state.structureEntityId); const selectedBuildingHex = useUIStore((state) => state.selectedBuildingHex); const setLeftNavigationView = useUIStore((state) => state.setLeftNavigationView); @@ -40,9 +47,13 @@ export const BuildingEntityDetails = () => { const { play: playDestroyStone } = useUiSounds(soundSelector.destroyStone); const { play: playDestroyWooden } = useUiSounds(soundSelector.destroyWooden); - const { playerStructures } = useEntities(); + const playerStructures = usePlayerStructures(); - const selectedStructureInfo = getEntityInfo(structureEntityId); + const selectedStructureInfo = getEntityInfo( + structureEntityId, + ContractAddress(dojo.account.account.address), + dojo.setup.components, + ); const isCastleSelected = useMemo( () => @@ -57,8 +68,6 @@ export const BuildingEntityDetails = () => { getEntityIdFromKeys(Object.values(selectedBuildingHex).map((v) => BigInt(v))), ); - const structures = playerStructures(); - useEffect(() => { if (building) { setBuildingState({ @@ -67,7 +76,7 @@ export const BuildingEntityDetails = () => { ownerEntityId: building.outer_entity_id, }); setIsPaused(building.paused); - setIsOwnedByPlayer(structures.some((structure) => structure.entity_id === building.outer_entity_id)); + setIsOwnedByPlayer(playerStructures.some((structure) => structure.entity_id === building.outer_entity_id)); } else { setBuildingState({ buildingType: undefined, diff --git a/client/apps/game/src/ui/modules/entity-details/CombatEntityDetails.tsx b/client/apps/game/src/ui/modules/entity-details/combat-entity-details.tsx similarity index 70% rename from client/apps/game/src/ui/modules/entity-details/CombatEntityDetails.tsx rename to client/apps/game/src/ui/modules/entity-details/combat-entity-details.tsx index 420e6b2bb9..e02d9ba531 100644 --- a/client/apps/game/src/ui/modules/entity-details/CombatEntityDetails.tsx +++ b/client/apps/game/src/ui/modules/entity-details/combat-entity-details.tsx @@ -1,20 +1,17 @@ -import { useBattlesByPosition } from "@/hooks/helpers/battles/useBattles"; -import { useOwnArmiesByPosition } from "@/hooks/helpers/useArmies"; -import { ArmyInfo } from "@bibliothecadao/eternum"; - -import { useEntities } from "@/hooks/helpers/useEntities"; -import { useStructureAtPosition } from "@/hooks/helpers/useStructures"; -import useUIStore from "@/hooks/store/useUIStore"; -import { Position } from "@/types/Position"; -import { HintSection } from "@/ui/components/hints/HintModal"; -import { ArmyChip } from "@/ui/components/military/ArmyChip"; -import { PillageHistory } from "@/ui/components/military/PillageHistory"; -import { HintModalButton } from "@/ui/elements/HintModalButton"; -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/ui/elements/Select"; +import { useArmiesAtPosition } from "@/hooks/helpers/use-armies"; +import { useBattlesAtPosition } from "@/hooks/helpers/use-battles"; +import { useStructureAtPosition } from "@/hooks/helpers/use-structures"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { Position } from "@/types/position"; +import { HintSection } from "@/ui/components/hints/hint-modal"; +import { ArmyChip } from "@/ui/components/military/army-chip"; +import { PillageHistory } from "@/ui/components/military/pillage-history"; +import { HintModalButton } from "@/ui/elements/hint-modal-button"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/ui/elements/select"; import { Tabs } from "@/ui/elements/tab"; -import { ID } from "@bibliothecadao/eternum"; +import { Entities } from "@/ui/modules/entity-details/entities"; +import { ArmyInfo, ID } from "@bibliothecadao/eternum"; import { useMemo, useState } from "react"; -import { Entities } from "./Entities"; export const CombatEntityDetails = () => { const selectedHex = useUIStore((state) => state.selectedHex); @@ -25,25 +22,23 @@ export const CombatEntityDetails = () => { () => new Position({ x: selectedHex?.col || 0, y: selectedHex?.row || 0 }), [selectedHex], ); - const { playerStructures } = useEntities(); - const ownArmiesAtPosition = useOwnArmiesByPosition({ + const armiesAtPosition = useArmiesAtPosition({ position: hexPosition.getContract(), - inBattle: false, - playerStructures: playerStructures(), }); - const userArmies = useMemo( - () => ownArmiesAtPosition.filter((army) => army.health.current > 0), - [ownArmiesAtPosition], + // player armies that are not in battle + const playerArmies = useMemo( + () => armiesAtPosition.filter((army) => army.isMine && army.battle_id === 0), + [armiesAtPosition], ); const ownArmy = useMemo(() => { - return ownArmiesAtPosition.find((army) => army.entity_id === selectedEntityId); - }, [ownArmiesAtPosition, selectedEntityId]); + return playerArmies.find((army) => army.entity_id === selectedEntityId); + }, [playerArmies, selectedEntityId]); const structure = useStructureAtPosition(hexPosition.getContract()); - const battles = useBattlesByPosition(hexPosition.getContract()); + const battles = useBattlesAtPosition(hexPosition.getContract()); const tabs = useMemo( () => [ @@ -54,7 +49,7 @@ export const CombatEntityDetails = () => {
Entities
), - component: selectedHex && , + component: selectedHex && , }, ...(structure ? [ @@ -87,11 +82,11 @@ export const CombatEntityDetails = () => { {tab.label} ))} - {selectedTab !== 2 && userArmies.length > 0 && ( + {selectedTab !== 2 && playerArmies.length > 0 && ( )} diff --git a/client/apps/game/src/ui/modules/entity-details/EnemyArmies.tsx b/client/apps/game/src/ui/modules/entity-details/enemy-armies.tsx similarity index 81% rename from client/apps/game/src/ui/modules/entity-details/EnemyArmies.tsx rename to client/apps/game/src/ui/modules/entity-details/enemy-armies.tsx index bbcaf2342a..87bf26d8cb 100644 --- a/client/apps/game/src/ui/modules/entity-details/EnemyArmies.tsx +++ b/client/apps/game/src/ui/modules/entity-details/enemy-armies.tsx @@ -1,12 +1,12 @@ import { ReactComponent as Swords } from "@/assets/icons/common/cross-swords.svg"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useEntitiesUtils } from "@/hooks/helpers/useEntities"; -import { useIsStructureImmune, useStructureAtPosition } from "@/hooks/helpers/useStructures"; -import useUIStore from "@/hooks/store/useUIStore"; -import useNextBlockTimestamp from "@/hooks/useNextBlockTimestamp"; -import { Position } from "@/types/Position"; -import { ArmyChip } from "@/ui/components/military/ArmyChip"; -import { ArmyInfo, BattleManager } from "@bibliothecadao/eternum"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useIsStructureImmune, useStructureAtPosition } from "@/hooks/helpers/use-structures"; +import useUIStore from "@/hooks/store/use-ui-store"; +import useNextBlockTimestamp from "@/hooks/use-next-block-timestamp"; +import { Position } from "@/types/position"; +import { ArmyChip } from "@/ui/components/military/army-chip"; +import { getEntityInfo } from "@/utils/entities"; +import { ArmyInfo, BattleManager, ContractAddress } from "@bibliothecadao/eternum"; import clsx from "clsx"; import React, { useCallback, useMemo } from "react"; @@ -20,7 +20,6 @@ export const EnemyArmies = ({ position: Position; }) => { const dojo = useDojo(); - const { getEntityInfo } = useEntitiesUtils(); const structureAtPosition = useStructureAtPosition(position.getContract()); const { nextBlockTimestamp } = useNextBlockTimestamp(); @@ -28,7 +27,11 @@ export const EnemyArmies = ({ const setBattleView = useUIStore((state) => state.setBattleView); const setTooltip = useUIStore((state) => state.setTooltip); - const entityInfo = getEntityInfo(ownArmySelected?.entityOwner.entity_owner_id ?? 0).structure; + const entityInfo = getEntityInfo( + ownArmySelected?.entityOwner.entity_owner_id ?? 0, + ContractAddress(dojo.account.account.address), + dojo.setup.components, + ).structure; const ownArmystructure = useMemo(() => { return ownArmySelected ? entityInfo : undefined; @@ -42,7 +45,11 @@ export const EnemyArmies = ({ const getArmyChip = useCallback( (army: ArmyInfo, index: number) => { - const structure = getEntityInfo(army.entityOwner.entity_owner_id).structure; + const structure = getEntityInfo( + army.entityOwner.entity_owner_id, + ContractAddress(dojo.account.account.address), + dojo.setup.components, + ).structure; const isImmune = useIsStructureImmune(structure, nextBlockTimestamp!) || ownArmyIsImmune; const button = ownArmySelected && ( diff --git a/client/apps/game/src/ui/modules/entity-details/Entities.tsx b/client/apps/game/src/ui/modules/entity-details/entities.tsx similarity index 57% rename from client/apps/game/src/ui/modules/entity-details/Entities.tsx rename to client/apps/game/src/ui/modules/entity-details/entities.tsx index 7df8c67721..606e075b2b 100644 --- a/client/apps/game/src/ui/modules/entity-details/Entities.tsx +++ b/client/apps/game/src/ui/modules/entity-details/entities.tsx @@ -1,31 +1,27 @@ -import { BattleInfo } from "@/hooks/helpers/battles/useBattles"; -import { useEnemyArmiesByPosition } from "@/hooks/helpers/useArmies"; -import { useEntities } from "@/hooks/helpers/useEntities"; -import { Position } from "@/types/Position"; -import { StructureCard } from "@/ui/components/structures/worldmap/StructureCard"; -import { Checkbox } from "@/ui/elements/Checkbox"; -import { ArmyInfo } from "@bibliothecadao/eternum"; +import { useArmiesAtPosition } from "@/hooks/helpers/use-armies"; +import { Position } from "@/types/position"; +import { StructureCard } from "@/ui/components/structures/worldmap/structure-card"; +import { Checkbox } from "@/ui/elements/checkbox"; +import { Battles } from "@/ui/modules/entity-details/battles"; +import { EnemyArmies } from "@/ui/modules/entity-details/enemy-armies"; +import { ArmyInfo, ID } from "@bibliothecadao/eternum"; import { useState } from "react"; -import { Battles } from "./Battles"; -import { EnemyArmies } from "./EnemyArmies"; export const Entities = ({ position, ownArmy, - battles, + battleEntityIds, }: { position: Position; ownArmy: ArmyInfo | undefined; - battles: BattleInfo[]; + battleEntityIds: ID[]; }) => { const [showStructure, setShowStructure] = useState(true); const [showBattles, setShowBattles] = useState(true); const [showArmies, setShowArmies] = useState(true); - const { playerStructures } = useEntities(); - const enemyArmies = useEnemyArmiesByPosition({ + const armiesAtPosition = useArmiesAtPosition({ position: position.getContract(), - playerStructures: playerStructures(), }); return ( @@ -36,9 +32,9 @@ export const Entities = ({ setShowArmies((prev) => !prev)} text="Show armies" />
{showStructure && } - {showBattles && } - {showArmies && enemyArmies.length > 0 && ( - + {showBattles && } + {showArmies && armiesAtPosition.length > 0 && ( + )}
); diff --git a/client/apps/game/src/ui/modules/entity-details/entity-details.tsx b/client/apps/game/src/ui/modules/entity-details/entity-details.tsx new file mode 100644 index 0000000000..8037facd65 --- /dev/null +++ b/client/apps/game/src/ui/modules/entity-details/entity-details.tsx @@ -0,0 +1,8 @@ +import { useQuery } from "@/hooks/helpers/use-query"; +import { BuildingEntityDetails } from "@/ui/modules/entity-details/building-entity-details"; +import { CombatEntityDetails } from "@/ui/modules/entity-details/combat-entity-details"; + +export const EntityDetails = ({ className }: { className?: string }) => { + const { isMapView } = useQuery(); + return
{isMapView ? : }
; +}; diff --git a/client/apps/game/src/ui/modules/entity-details/realm/Buildings.tsx b/client/apps/game/src/ui/modules/entity-details/realm/buildings.tsx similarity index 90% rename from client/apps/game/src/ui/modules/entity-details/realm/Buildings.tsx rename to client/apps/game/src/ui/modules/entity-details/realm/buildings.tsx index c421bdb88a..382a8f8278 100644 --- a/client/apps/game/src/ui/modules/entity-details/realm/Buildings.tsx +++ b/client/apps/game/src/ui/modules/entity-details/realm/buildings.tsx @@ -1,15 +1,15 @@ import { ReactComponent as ArrowRight } from "@/assets/icons/common/arrow-right.svg"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { Building, useBuildings } from "@/hooks/helpers/use-buildings"; -import { useGetRealm } from "@/hooks/helpers/useRealm"; -import useUIStore from "@/hooks/store/useUIStore"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useBuildings } from "@/hooks/helpers/use-buildings"; +import useUIStore from "@/hooks/store/use-ui-store"; import { BUILDING_IMAGES_PATH } from "@/ui/config"; -import Button from "@/ui/elements/Button"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; -import { toHexString } from "@/ui/utils/utils"; -import { BuildingType, ResourcesIds, TileManager } from "@bibliothecadao/eternum"; +import Button from "@/ui/elements/button"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; +import { getEntityIdFromKeys, toHexString } from "@/ui/utils/utils"; +import { getRealmInfo } from "@/utils/realm"; +import { Building, BuildingType, ResourcesIds, TileManager } from "@bibliothecadao/eternum"; import clsx from "clsx"; -import { useState } from "react"; +import { useMemo, useState } from "react"; export const Buildings = ({ structure }: { structure: any }) => { const dojo = useDojo(); @@ -21,10 +21,12 @@ export const Buildings = ({ structure }: { structure: any }) => { const [showMilitary, setShowMilitary] = useState(false); const [isLoading, setIsLoading] = useState({ isLoading: false, innerCol: 0, innerRow: 0 }); - const realm = useGetRealm(structureEntityId).realm; + const realm = useMemo( + () => getRealmInfo(getEntityIdFromKeys([BigInt(structureEntityId)]), dojo.setup.components), + [structureEntityId, dojo.setup.components], + ); - const { getBuildings } = useBuildings(); - const buildings = getBuildings(realm.position.x, realm.position.y); + const buildings = useBuildings(realm?.position.x || 0, realm?.position.y || 0); const economyBuildings = buildings.filter( (building) => @@ -41,8 +43,6 @@ export const Buildings = ({ structure }: { structure: any }) => { building.category === BuildingType[BuildingType.Stable], ); - const isOwner = toHexString(realm.owner) === dojo.account.account.address; - const handlePauseResumeProduction = (paused: boolean, innerCol: number, innerRow: number) => { setIsLoading({ isLoading: true, innerCol, innerRow }); const tileManager = new TileManager(dojo.setup.components, dojo.network.provider, { @@ -56,6 +56,9 @@ export const Buildings = ({ structure }: { structure: any }) => { }); }; + if (!realm) return null; + const isOwner = toHexString(realm.owner) === dojo.account.account.address; + return (
{/* Economy Section */} diff --git a/client/apps/game/src/ui/modules/entity-details/realm/Castle.tsx b/client/apps/game/src/ui/modules/entity-details/realm/castle.tsx similarity index 62% rename from client/apps/game/src/ui/modules/entity-details/realm/Castle.tsx rename to client/apps/game/src/ui/modules/entity-details/realm/castle.tsx index b143fc1af8..7038ea61d4 100644 --- a/client/apps/game/src/ui/modules/entity-details/realm/Castle.tsx +++ b/client/apps/game/src/ui/modules/entity-details/realm/castle.tsx @@ -1,35 +1,42 @@ import { configManager } from "@/dojo/setup"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useGetRealm } from "@/hooks/helpers/useRealm"; -import { useResourceBalance } from "@/hooks/helpers/useResources"; -import { useStructureByEntityId } from "@/hooks/helpers/useStructures"; -import useUIStore from "@/hooks/store/useUIStore"; -import { RealmResourcesIO } from "@/ui/components/resources/RealmResourcesIO"; -import Button from "@/ui/elements/Button"; -import { ResourceCost } from "@/ui/elements/ResourceCost"; -import { divideByPrecision, toHexString } from "@/ui/utils/utils"; -import { LEVEL_DESCRIPTIONS, REALM_MAX_LEVEL, RealmLevels, StructureType } from "@bibliothecadao/eternum"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useStructureByEntityId } from "@/hooks/helpers/use-structures"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { RealmResourcesIO } from "@/ui/components/resources/realm-resources-io"; +import Button from "@/ui/elements/button"; +import { ResourceCost } from "@/ui/elements/resource-cost"; +import { divideByPrecision, getEntityIdFromKeys } from "@/ui/utils/utils"; +import { ETERNUM_CONFIG } from "@/utils/config"; +import { getRealmInfo } from "@/utils/realm"; +import { getBalance } from "@/utils/resources"; +import { + ContractAddress, + LEVEL_DESCRIPTIONS, + RealmLevels, + StructureType +} from "@bibliothecadao/eternum"; import { useMemo, useState } from "react"; +const eternumConfig = await ETERNUM_CONFIG(); export const Castle = () => { const dojo = useDojo(); const structureEntityId = useUIStore((state) => state.structureEntityId); - const { getBalance } = useResourceBalance(); - const [isLoading, setIsLoading] = useState(false); - const realm = useGetRealm(structureEntityId).realm; - - const isOwner = toHexString(realm.owner) === dojo.account.account.address; + const realmInfo = useMemo( + () => getRealmInfo(getEntityIdFromKeys([BigInt(structureEntityId)]), dojo.setup.components), + [structureEntityId, dojo.setup.components], + ); const structure = useStructureByEntityId(structureEntityId); const getNextRealmLevel = useMemo(() => { - const nextLevel = realm.level + 1; - return nextLevel < REALM_MAX_LEVEL ? nextLevel : null; - }, [realm.level]); + if (!realmInfo) return null; + const nextLevel = realmInfo.level + 1; + return nextLevel < eternumConfig.realmMaxLevel ? nextLevel : null; + }, [realmInfo]); const checkBalance = useMemo(() => { if (!getNextRealmLevel) return false; @@ -38,21 +45,25 @@ export const Castle = () => { return Object.keys(cost).every((resourceId) => { const resourceCost = cost[Number(resourceId)]; - const balance = getBalance(structureEntityId, resourceCost.resource); + const balance = getBalance(structureEntityId, resourceCost.resource, dojo.setup.components); return divideByPrecision(balance.balance) >= resourceCost.amount; }); }, [getBalance, structureEntityId]); const levelUpRealm = async () => { setIsLoading(true); + if (!realmInfo) return; await dojo.setup.systemCalls.upgrade_realm({ signer: dojo.account.account, - realm_entity_id: realm.entityId, + realm_entity_id: realmInfo.entityId, }); setIsLoading(false); }; + if (!realmInfo) return null; + const isOwner = realmInfo.owner === ContractAddress(dojo.account.account.address); + return ( structure && (
@@ -60,7 +71,7 @@ export const Castle = () => {
-
{RealmLevels[realm.level]}
+
{RealmLevels[realmInfo.level]}
{getNextRealmLevel && isOwner && ( diff --git a/client/apps/game/src/ui/modules/social/PlayerId.tsx b/client/apps/game/src/ui/modules/social/player-id.tsx similarity index 87% rename from client/apps/game/src/ui/modules/social/PlayerId.tsx rename to client/apps/game/src/ui/modules/social/player-id.tsx index 06ec395324..088a0c588e 100644 --- a/client/apps/game/src/ui/modules/social/PlayerId.tsx +++ b/client/apps/game/src/ui/modules/social/player-id.tsx @@ -1,18 +1,18 @@ import { ReactComponent as ArrowLeft } from "@/assets/icons/common/arrow-left.svg"; import { ReactComponent as MessageSvg } from "@/assets/icons/common/message.svg"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useEntitiesUtils } from "@/hooks/helpers/useEntities"; -import useUIStore from "@/hooks/store/useUIStore"; -import { Position as PositionType } from "@/types/Position"; -import { NavigateToPositionIcon } from "@/ui/components/military/ArmyChip"; -import { ViewOnMapIcon } from "@/ui/components/military/ArmyManagementCard"; -import { RealmResourcesIO } from "@/ui/components/resources/RealmResourcesIO"; -import Button from "@/ui/elements/Button"; +import { useDojo } from "@/hooks/context/dojo-context"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { Position as PositionType } from "@/types/position"; +import { NavigateToPositionIcon } from "@/ui/components/military/army-chip"; +import { ViewOnMapIcon } from "@/ui/components/military/army-management-card"; +import { RealmResourcesIO } from "@/ui/components/resources/realm-resources-io"; +import Button from "@/ui/elements/button"; import { formatTime, toHexString } from "@/ui/utils/utils"; +import { getAddressName, getEntityName } from "@/utils/entities"; import { ContractAddress, StructureType } from "@bibliothecadao/eternum"; import { Has, HasValue, getComponentValue, runQuery } from "@dojoengine/recs"; import { useMemo } from "react"; -import { useChatStore } from "../chat/ChatState"; +import { useChatStore } from "../chat/use-chat-store"; import { getMessageKey } from "../chat/utils"; export const MessageIcon = ({ @@ -56,19 +56,15 @@ export const PlayerId = ({ back?: () => void; }) => { const { - setup: { - components: { - Owner, - Structure, - Position, - events: { SettleRealmData }, - }, - }, + setup: { components }, } = useDojo(); - const { getEntityName } = useEntitiesUtils(); - - const { getAddressName } = useEntitiesUtils(); + const { + Owner, + Structure, + Position, + events: { SettleRealmData }, + } = components; const playerEntityId = useMemo(() => { if (!selectedPlayer) return; @@ -83,7 +79,7 @@ export const PlayerId = ({ const playerName = useMemo(() => { if (!selectedPlayer) return; - const playerName = getAddressName(selectedPlayer); + const playerName = getAddressName(selectedPlayer, components); return playerName; }, [selectedPlayer, playerEntityId]); @@ -112,7 +108,7 @@ export const PlayerId = ({ const position = new PositionType({ x: positionComponentValue.x, y: positionComponentValue.y }); - const structureName = getEntityName(structure.entity_id, true); + const structureName = getEntityName(structure.entity_id, components, true); return { structureName, ...structure, diff --git a/client/apps/game/src/ui/modules/social/Social.tsx b/client/apps/game/src/ui/modules/social/social.tsx similarity index 67% rename from client/apps/game/src/ui/modules/social/Social.tsx rename to client/apps/game/src/ui/modules/social/social.tsx index a38abdb773..6c62c65883 100644 --- a/client/apps/game/src/ui/modules/social/Social.tsx +++ b/client/apps/game/src/ui/modules/social/social.tsx @@ -1,29 +1,29 @@ -import { useDojo } from "@/hooks/context/DojoContext"; -import { useHyperstructureData, useLeaderBoardStore } from "@/hooks/store/useLeaderBoardStore"; -import useUIStore from "@/hooks/store/useUIStore"; -import { HintSection } from "@/ui/components/hints/HintModal"; -import { social } from "@/ui/components/navigation/Config"; -import { ExpandableOSWindow } from "@/ui/components/navigation/OSWindow"; -import { GuildMembers } from "@/ui/components/worldmap/guilds/GuildMembers"; -import { Guilds } from "@/ui/components/worldmap/guilds/Guilds"; -import { PlayersPanel } from "@/ui/components/worldmap/players/PlayersPanel"; -import Button from "@/ui/elements/Button"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { usePlayers } from "@/hooks/helpers/use-players"; +import { useHyperstructureData, useLeaderBoardStore } from "@/hooks/store/use-leaderboard-store"; +import useUIStore from "@/hooks/store/use-ui-store"; +import { HintSection } from "@/ui/components/hints/hint-modal"; +import { social } from "@/ui/components/navigation/config"; +import { ExpandableOSWindow } from "@/ui/components/navigation/os-window"; +import { GuildMembers } from "@/ui/components/worldmap/guilds/guild-members"; +import { Guilds } from "@/ui/components/worldmap/guilds/guilds"; +import { PlayersPanel } from "@/ui/components/worldmap/players/players-panel"; +import Button from "@/ui/elements/button"; import { Tabs } from "@/ui/elements/tab"; -import { ContractAddress, ID, Player } from "@bibliothecadao/eternum"; +import { getPlayerInfo } from "@/utils/players"; +import { ContractAddress, ID, PlayerInfo } from "@bibliothecadao/eternum"; import { useEntityQuery } from "@dojoengine/react"; import { Has } from "@dojoengine/recs"; import { useEffect, useMemo, useState } from "react"; -import { EndSeasonButton } from "./EndSeasonButton"; -import { PlayerId } from "./PlayerId"; +import { EndSeasonButton } from "./end-season-button"; +import { PlayerId } from "./player-id"; -export const Social = ({ getPlayers }: { getPlayers: () => Player[] }) => { +export const Social = () => { const { - setup: { - components: { - events: { GameEnded }, - }, - }, + account: { account }, + setup: { components }, } = useDojo(); + const [selectedTab, setSelectedTab] = useState(0); const [isExpanded, setIsExpanded] = useState(false); const [isLoading, setIsLoading] = useState(false); @@ -33,11 +33,16 @@ export const Social = ({ getPlayers }: { getPlayers: () => Player[] }) => { const togglePopup = useUIStore((state) => state.togglePopup); const isOpen = useUIStore((state) => state.isPopupOpen(social)); - const gameEnded = useEntityQuery([Has(GameEnded)]); + const gameEnded = useEntityQuery([Has(components.events.GameEnded)]); + + const players = usePlayers(); - const [players, setPlayers] = useState(() => getPlayers()); const playersByRank = useLeaderBoardStore((state) => state.playersByRank); + const [playerInfo, setPlayerInfo] = useState( + getPlayerInfo(players, ContractAddress(account.address), playersByRank, components), + ); + const updateLeaderboard = useHyperstructureData(); const handleUpdatePoints = () => { @@ -46,7 +51,7 @@ export const Social = ({ getPlayers }: { getPlayers: () => Player[] }) => { }; useEffect(() => { - setPlayers(getPlayers()); + setPlayerInfo(getPlayerInfo(players, ContractAddress(account.address), playersByRank, components)); setIsLoading(false); }, [playersByRank]); @@ -74,18 +79,18 @@ export const Social = ({ getPlayers }: { getPlayers: () => Player[] }) => { { key: "Players", label:
Players
, - component: , + component: , expandedContent: , }, { key: "Guild", label:
Tribes
, - component: , + component: , expandedContent: selectedPlayer ? ( viewPlayerInfo(0n)} /> ) : ( Player[] }) => { ), }, ], - [selectedTab, isExpanded, selectedGuild, selectedPlayer, updateLeaderboard], + [selectedTab, isExpanded, selectedGuild, selectedPlayer, playerInfo], ); return ( diff --git a/client/apps/game/src/ui/modules/stream/eventDetails.tsx b/client/apps/game/src/ui/modules/stream/event-details.tsx similarity index 88% rename from client/apps/game/src/ui/modules/stream/eventDetails.tsx rename to client/apps/game/src/ui/modules/stream/event-details.tsx index 8b2504c0ec..4c7c6984e8 100644 --- a/client/apps/game/src/ui/modules/stream/eventDetails.tsx +++ b/client/apps/game/src/ui/modules/stream/event-details.tsx @@ -1,17 +1,16 @@ -import { ReactComponent as Check } from "@/assets/icons/Check.svg"; -import { ReactComponent as Chest } from "@/assets/icons/Chest.svg"; -import { ReactComponent as Coins } from "@/assets/icons/Coins.svg"; -import { ReactComponent as Combat } from "@/assets/icons/Combat.svg"; -import { ReactComponent as Compass } from "@/assets/icons/Compass.svg"; -import { ReactComponent as Crown } from "@/assets/icons/Crown.svg"; +import { ReactComponent as Check } from "@/assets/icons/check.svg"; +import { ReactComponent as Chest } from "@/assets/icons/chest.svg"; +import { ReactComponent as Coins } from "@/assets/icons/coins.svg"; +import { ReactComponent as Combat } from "@/assets/icons/combat.svg"; +import { ReactComponent as Compass } from "@/assets/icons/compass.svg"; +import { ReactComponent as Crown } from "@/assets/icons/crown.svg"; import { ReactComponent as Burn } from "@/assets/icons/fire.svg"; -import { ReactComponent as Scroll } from "@/assets/icons/Scroll.svg"; -import { ReactComponent as Sparkles } from "@/assets/icons/Sparkles.svg"; -import { ReactComponent as Swap } from "@/assets/icons/Swap.svg"; -import { ReactComponent as Wrench } from "@/assets/icons/Wrench.svg"; -import { ClientComponents } from "@/dojo/createClientComponents"; +import { ReactComponent as Scroll } from "@/assets/icons/scroll.svg"; +import { ReactComponent as Sparkles } from "@/assets/icons/sparkles.svg"; +import { ReactComponent as Swap } from "@/assets/icons/swap.svg"; +import { ReactComponent as Wrench } from "@/assets/icons/wrench.svg"; import { currencyFormat } from "@/ui/utils/utils"; -import { ContractAddress, findResourceById, ID } from "@bibliothecadao/eternum"; +import { ClientComponents, ContractAddress, findResourceById, ID } from "@bibliothecadao/eternum"; import { ComponentValue } from "@dojoengine/recs"; import { hexToAscii } from "@dojoengine/utils"; import { EventType } from "./types"; diff --git a/client/apps/game/src/ui/modules/stream/EventStream.tsx b/client/apps/game/src/ui/modules/stream/event-stream.tsx similarity index 91% rename from client/apps/game/src/ui/modules/stream/EventStream.tsx rename to client/apps/game/src/ui/modules/stream/event-stream.tsx index ffd0de39c8..a7a1fba229 100644 --- a/client/apps/game/src/ui/modules/stream/EventStream.tsx +++ b/client/apps/game/src/ui/modules/stream/event-stream.tsx @@ -1,15 +1,15 @@ import { world } from "@/dojo/world"; -import { useDojo } from "@/hooks/context/DojoContext"; -import { useEntitiesUtils } from "@/hooks/helpers/useEntities"; -import { NavigateToPositionIcon } from "@/ui/components/military/ArmyChip"; -import { ViewOnMapIcon } from "@/ui/components/military/ArmyManagementCard"; -import { ContractAddress } from "@bibliothecadao/eternum"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { NavigateToPositionIcon } from "@/ui/components/military/army-chip"; +import { ViewOnMapIcon } from "@/ui/components/military/army-management-card"; +import { getAddressNameFromEntity, getPlayerAddressFromEntity } from "@/utils/entities"; +import { ContractAddress, ID } from "@bibliothecadao/eternum"; import { Component, defineComponentSystem, Entity, getComponentValue, World } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { useCallback, useEffect, useState } from "react"; -import { MessageIcon } from "../social/PlayerId"; +import { MessageIcon } from "../social/player-id"; import { EVENT_NOTIF_STORAGE_KEY, EVENT_STREAM_SIZE } from "./constants"; -import { eventDetails } from "./eventDetails"; +import { eventDetails } from "./event-details"; import { EventData, EventType } from "./types"; export const EventStream = () => { @@ -21,7 +21,6 @@ export const EventStream = () => { const [eventList, setEventList] = useState([]); const [activeTab, setActiveTab] = useState<"all" | "personal">("all"); const [hasNewEvents, setHasNewEvents] = useState(false); - const { getAddressNameFromEntity, getPlayerAddressFromEntity } = useEntitiesUtils(); const createEvent = useCallback( (entity: Entity, component: Component, eventType: EventType): EventData | undefined => { @@ -49,14 +48,16 @@ export const EventStream = () => { : getComponentValue(components.Position, getEntityIdFromKeys([BigInt(entityId)])); const name = entityOwner - ? getAddressNameFromEntity(entityOwner?.entity_owner_id) - : getAddressNameFromEntity(entityId); + ? getAddressNameFromEntity(entityOwner?.entity_owner_id, components) + : getAddressNameFromEntity(entityId, components); const owner = entityOwner ? getComponentValue(components.Owner, getEntityIdFromKeys([BigInt(entityOwner.entity_owner_id)])) : getComponentValue(components.Owner, getEntityIdFromKeys([BigInt(entityId)])); - const to = eventDetails[eventType].to?.(componentValue! as any, getPlayerAddressFromEntity); + const to = eventDetails[eventType].to?.(componentValue! as any, (id: ID) => + getPlayerAddressFromEntity(id, components), + ); const isPersonal = to === ContractAddress(account.address); return { diff --git a/client/apps/game/src/ui/modules/world-structures/WorldStructuresMenu.tsx b/client/apps/game/src/ui/modules/world-structures/world-structures-menu.tsx similarity index 87% rename from client/apps/game/src/ui/modules/world-structures/WorldStructuresMenu.tsx rename to client/apps/game/src/ui/modules/world-structures/world-structures-menu.tsx index 4c9a1c0704..829cb1c785 100644 --- a/client/apps/game/src/ui/modules/world-structures/WorldStructuresMenu.tsx +++ b/client/apps/game/src/ui/modules/world-structures/world-structures-menu.tsx @@ -1,21 +1,20 @@ -import { useDojo } from "@/hooks/context/DojoContext"; -import { getArmiesByPosition } from "@/hooks/helpers/useArmies"; -import { useGetHyperstructuresWithContributionsFromPlayer } from "@/hooks/helpers/useContributions"; -import { useEntitiesUtils } from "@/hooks/helpers/useEntities"; -import { useFragmentMines } from "@/hooks/helpers/useFragmentMines"; -import { useGuilds } from "@/hooks/helpers/useGuilds"; -import { useHyperstructureProgress, useHyperstructures } from "@/hooks/helpers/useHyperstructures"; -import { useResourceBalance } from "@/hooks/helpers/useResources"; -import { FragmentMinePanel } from "@/ui/components/fragmentMines/FragmentMinePanel"; -import { HintSection } from "@/ui/components/hints/HintModal"; -import { DisplayedAccess, HyperstructurePanel } from "@/ui/components/hyperstructures/HyperstructurePanel"; -import { EntityList } from "@/ui/components/list/EntityList"; -import { NavigateToPositionIcon } from "@/ui/components/military/ArmyChip"; -import { ViewOnMapIcon } from "@/ui/components/military/ArmyManagementCard"; -import { Checkbox } from "@/ui/elements/Checkbox"; -import { HintModalButton } from "@/ui/elements/HintModalButton"; -import { ResourceIcon } from "@/ui/elements/ResourceIcon"; +import { useDojo } from "@/hooks/context/dojo-context"; +import { useArmiesAtPosition } from "@/hooks/helpers/use-armies"; +import { useFragmentMines } from "@/hooks/helpers/use-fragment-mines"; +import { useGuilds } from "@/hooks/helpers/use-guilds"; +import { useHyperstructureProgress, useHyperstructures } from "@/hooks/helpers/use-hyperstructures"; +import { FragmentMinePanel } from "@/ui/components/fragmentMines/fragment-mine-panel"; +import { HintSection } from "@/ui/components/hints/hint-modal"; +import { DisplayedAccess, HyperstructurePanel } from "@/ui/components/hyperstructures/hyperstructure-panel"; +import { EntityList } from "@/ui/components/list/entity-list"; +import { NavigateToPositionIcon } from "@/ui/components/military/army-chip"; +import { ViewOnMapIcon } from "@/ui/components/military/army-management-card"; +import { Checkbox } from "@/ui/elements/checkbox"; +import { HintModalButton } from "@/ui/elements/hint-modal-button"; +import { ResourceIcon } from "@/ui/elements/resource-icon"; import { currencyFormat, currencyIntlFormat, divideByPrecision } from "@/ui/utils/utils"; +import { getAddressNameFromEntity, getPlayerAddressFromEntity } from "@/utils/entities"; +import { getBalance } from "@/utils/resources"; import { BattleSide, ContractAddress, @@ -30,6 +29,7 @@ import { Tabs } from "../../elements/tab"; export const WorldStructuresMenu = ({ className }: { className?: string }) => { const { + setup: { components }, account: { account }, } = useDojo(); @@ -37,8 +37,15 @@ export const WorldStructuresMenu = ({ className }: { className?: string }) => { const [showOnlyMine, setShowOnlyMine] = useState(false); const { hyperstructures } = useHyperstructures(); - const { fragmentMines } = useFragmentMines(); - const myHyperstructures = useGetHyperstructuresWithContributionsFromPlayer(); + const fragmentMines = useFragmentMines(); + + const myHyperstructures = useMemo( + () => + LeaderboardManager.instance(components).getHyperstructuresWithContributionsFromPlayer( + ContractAddress(account.address), + ), + [components, account.address], + ); const renderExtraContent = useCallback( (entityId: ID, type: "hyperstructure" | "fragmentMine") => { @@ -86,7 +93,7 @@ export const WorldStructuresMenu = ({ className }: { className?: string }) => { position: { x: h.x, y: h.y }, ...h, }))} - filterEntityIds={showOnlyMine ? Array.from(myHyperstructures()) : undefined} + filterEntityIds={showOnlyMine ? Array.from(myHyperstructures) : undefined} /> ), @@ -172,15 +179,17 @@ const BaseStructureExtraContent = ({ entityId: ID; children: React.ReactNode; }) => { + const { + setup: { components }, + } = useDojo(); + const { getGuildFromPlayerAddress } = useGuilds(); - const { getAddressNameFromEntity, getPlayerAddressFromEntity } = useEntitiesUtils(); - const getArmies = getArmiesByPosition(); - const armies = useMemo(() => getArmies({ x, y }), [x, y]); + const armies = useArmiesAtPosition({ position: { x, y } }); const structureOwner = useMemo(() => { - const ownerName = getAddressNameFromEntity(entityId); - const address = getPlayerAddressFromEntity(entityId); + const ownerName = getAddressNameFromEntity(entityId, components); + const address = getPlayerAddressFromEntity(entityId, components); const guildName = getGuildFromPlayerAddress(address || 0n)?.name; return { name: ownerName, guildName }; }, [entityId, getAddressNameFromEntity, getPlayerAddressFromEntity, getGuildFromPlayerAddress]); @@ -193,7 +202,7 @@ const BaseStructureExtraContent = ({ const getArmyInfo = (army?: any) => { if (!army) return; - const ownerName = getAddressNameFromEntity(army.entity_id || 0); + const ownerName = getAddressNameFromEntity(army.entity_id || 0, components); const guildName = getGuildFromPlayerAddress(army.owner?.address || 0n)?.name; const totalTroops = (army.troops?.knight_count || 0n) + (army.troops?.paladin_count || 0n) + (army.troops?.crossbowman_count || 0n); @@ -266,8 +275,9 @@ const HyperStructureExtraContent = ({ }; const FragmentMineExtraContent = ({ x, y, entityId }: { x: number; y: number; entityId: ID }) => { - const { getBalance } = useResourceBalance(); - const { balance } = getBalance(entityId, ResourcesIds.AncientFragment); + const dojo = useDojo(); + + const { balance } = getBalance(entityId, ResourcesIds.AncientFragment, dojo.setup.components); const trait = useMemo(() => findResourceById(ResourcesIds.AncientFragment)?.trait, []); return ( diff --git a/client/apps/game/src/ui/utils/packedData.tsx b/client/apps/game/src/ui/utils/packed-data.tsx similarity index 100% rename from client/apps/game/src/ui/utils/packedData.tsx rename to client/apps/game/src/ui/utils/packed-data.tsx diff --git a/client/apps/game/src/ui/utils/realms.tsx b/client/apps/game/src/ui/utils/realms.tsx index 65e5cce87b..df793292d4 100644 --- a/client/apps/game/src/ui/utils/realms.tsx +++ b/client/apps/game/src/ui/utils/realms.tsx @@ -1,9 +1,7 @@ -import { ClientComponents } from "@/dojo/createClientComponents"; import { configManager } from "@/dojo/setup"; import { findResourceIdByTrait, ID, orders, RealmInterface } from "@bibliothecadao/eternum"; -import { ComponentValue } from "@dojoengine/recs"; import realmsJson from "../../../../../common/data/realms.json"; -import { packResources } from "./packedData"; +import { packResources } from "./packed-data"; interface Attribute { trait_type: string; @@ -77,8 +75,3 @@ export const hasEnoughPopulationForBuilding = (realm: any, building: number) => return (realm?.population || 0) + buildingPopulation <= basePopulationCapacity + (realm?.capacity || 0); }; - -export const getRealmName = (realm: ComponentValue) => { - const baseName = getRealmNameById(realm.realm_id); - return realm.has_wonder ? `WONDER - ${baseName}` : baseName; -}; diff --git a/client/apps/game/src/ui/utils/utils.tsx b/client/apps/game/src/ui/utils/utils.tsx index c633bb1c72..3122affc51 100644 --- a/client/apps/game/src/ui/utils/utils.tsx +++ b/client/apps/game/src/ui/utils/utils.tsx @@ -1,23 +1,22 @@ import { HEX_SIZE } from "@/three/scenes/constants"; import { ResourceMiningTypes } from "@/types"; +import { SortInterface } from "@/ui/elements/sort-button"; import { BuildingType, CapacityConfigCategory, ClientConfigManager, ContractAddress, - EternumGlobalConfig, + RESOURCE_PRECISION, ResourceCost, ResourcesIds, TickIds, type HexPosition, type ID, type Position, - type Resource, + type Resource } from "@bibliothecadao/eternum"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import * as THREE from "three"; -import { env } from "../../../env"; -import { SortInterface } from "../elements/SortButton"; export { getEntityIdFromKeys }; @@ -61,11 +60,11 @@ export function displayAddress(string: string) { } export function multiplyByPrecision(value: number): number { - return Math.floor(value * EternumGlobalConfig.resources.resourcePrecision); + return Math.floor(value * RESOURCE_PRECISION); } export function divideByPrecision(value: number): number { - return value / EternumGlobalConfig.resources.resourcePrecision; + return value / RESOURCE_PRECISION; } export function divideByPrecisionFormatted(value: number): string { @@ -441,28 +440,6 @@ export const adjustWonderLordsCost = (cost: ResourceCost[]): ResourceCost[] => { return cost.map((item) => (item.resource === ResourcesIds.Lords ? { ...item, amount: item.amount * 0.1 } : item)); }; -export const getSeasonAddressesPath = () => { - return `/resource_addresses/${env.VITE_PUBLIC_CHAIN}/resource_addresses.json`; -}; -export const getJSONFile = async (filePath: string) => { - const response = await fetch(filePath); - const data = await response.json(); - return data; -}; -interface ResourceAddresses { - [key: string]: [number, string]; -} - -export const getSeasonAddresses = async (): Promise => { - try { - const path = getSeasonAddressesPath(); - const data = await getJSONFile(path); - return data; - } catch (error) { - console.error("Error loading season addresses:", error); - return {}; - } -}; export const calculateDonkeysNeeded = (orderWeight: number): number => { const configManager = ClientConfigManager.instance(); const donkeyCapacityGrams = configManager.getCapacityConfig(CapacityConfigCategory.Donkey); diff --git a/client/apps/game/src/utils/addresses.ts b/client/apps/game/src/utils/addresses.ts new file mode 100644 index 0000000000..56157ac676 --- /dev/null +++ b/client/apps/game/src/utils/addresses.ts @@ -0,0 +1,20 @@ +import { getSeasonAddresses, type Chain } from "../../../../common/utils"; +import { env } from "../../env"; + +export const getResourceAddresses = async () => { + const addresses = (await getSeasonAddresses(env.VITE_PUBLIC_CHAIN as Chain)).resources; + return addresses; +}; + +export const getSeasonPassAddress = async () => { + return (await getSeasonAddresses(env.VITE_PUBLIC_CHAIN as Chain)).seasonPass; +}; + +export const getLordsAddress = async () => { + return (await getSeasonAddresses(env.VITE_PUBLIC_CHAIN as Chain)).lords; +}; + + +export const getRealmsAddress = async () => { + return (await getSeasonAddresses(env.VITE_PUBLIC_CHAIN as Chain)).realms; +}; diff --git a/client/apps/game/src/utils/army.ts b/client/apps/game/src/utils/army.ts new file mode 100644 index 0000000000..b95f006e8a --- /dev/null +++ b/client/apps/game/src/utils/army.ts @@ -0,0 +1,122 @@ +import { + ArmyInfo, + CapacityConfigCategory, + ClientComponents, + ContractAddress, + getArmyTotalCapacity, + RESOURCE_PRECISION +} from "@bibliothecadao/eternum"; +import { Entity, getComponentValue } from "@dojoengine/recs"; +import { getEntityIdFromKeys } from "@dojoengine/utils"; +import { shortString } from "starknet"; + +export const formatArmies = (armies: Entity[], playerAddress: string, components: ClientComponents): ArmyInfo[] => { + return armies + .map((armyEntityId) => { + const army = getComponentValue(components.Army, armyEntityId); + if (!army) return undefined; + + const position = getComponentValue(components.Position, armyEntityId); + if (!position) return undefined; + + const entityOwner = getComponentValue(components.EntityOwner, armyEntityId); + if (!entityOwner) return undefined; + + const owner = getComponentValue(components.Owner, getEntityIdFromKeys([BigInt(entityOwner.entity_owner_id)])); + + let health = structuredClone(getComponentValue(components.Health, armyEntityId)); + if (health) { + health.current = health.current / BigInt(RESOURCE_PRECISION); + health.lifetime = health.lifetime / BigInt(RESOURCE_PRECISION); + } else { + health = { + entity_id: army.entity_id, + current: 0n, + lifetime: 0n, + }; + } + const protectee = getComponentValue(components.Protectee, armyEntityId); + + let quantity = structuredClone(getComponentValue(components.Quantity, armyEntityId)); + if (quantity) { + quantity.value = BigInt(quantity.value) / BigInt(RESOURCE_PRECISION); + } else { + quantity = { + entity_id: army.entity_id, + value: 0n, + }; + } + + const movable = getComponentValue(components.Movable, armyEntityId); + + const armyCapacityConfigEntityId = getEntityIdFromKeys([BigInt(CapacityConfigCategory.Army)]); + const capacity = getComponentValue(components.CapacityConfig, armyCapacityConfigEntityId); + const totalCapacity = capacity ? getArmyTotalCapacity(army, capacity) : 0n; + + const weightComponentValue = getComponentValue(components.Weight, armyEntityId); + const weight = weightComponentValue + ? weightComponentValue.value / BigInt(RESOURCE_PRECISION) + : 0n; + + const arrivalTime = getComponentValue(components.ArrivalTime, armyEntityId); + const stamina = getComponentValue(components.Stamina, armyEntityId); + const name = getComponentValue(components.EntityName, armyEntityId); + const realm = + entityOwner && getComponentValue(components.Realm, getEntityIdFromKeys([BigInt(entityOwner.entity_owner_id)])); + const homePosition = + realm && getComponentValue(components.Position, getEntityIdFromKeys([BigInt(realm.entity_id)])); + + const structure = getComponentValue( + components.Structure, + getEntityIdFromKeys([BigInt(entityOwner.entity_owner_id)]), + ); + + const structurePosition = + structure && getComponentValue(components.Position, getEntityIdFromKeys([BigInt(structure.entity_id)])); + + const isMine = (owner?.address || 0n) === ContractAddress(playerAddress); + const isMercenary = owner === undefined; + + const isHome = structurePosition && position.x === structurePosition.x && position.y === structurePosition.y; + + return { + ...army, + protectee, + health, + movable, + quantity, + totalCapacity, + weight, + arrivalTime, + position, + entityOwner, + stamina, + owner, + realm, + homePosition, + isMine, + isMercenary, + isHome, + name: name + ? shortString.decodeShortString(name.name.toString()) + : `${protectee ? "🛡️" : "🗡️"}` + `Army ${army.entity_id}`, + }; + }) + .filter((army): army is ArmyInfo => army !== undefined); +}; + +export const armyHasTroops = (entityArmies: (ArmyInfo | undefined)[]) => { + return entityArmies.some( + (army) => + army && + (Number(army.troops.knight_count) !== 0 || + Number(army.troops.crossbowman_count) !== 0 || + Number(army.troops.paladin_count) !== 0), + ); +}; + +export const armyHasTraveled = (entityArmies: ArmyInfo[], realmPosition: { x: number; y: number }) => { + return entityArmies.some( + (army) => army && realmPosition && (army.position.x !== realmPosition.x || army.position.y !== realmPosition.y), + ); +}; diff --git a/client/apps/game/src/utils/config.ts b/client/apps/game/src/utils/config.ts new file mode 100644 index 0000000000..a45b8b94d2 --- /dev/null +++ b/client/apps/game/src/utils/config.ts @@ -0,0 +1,9 @@ +import { getConfigFromNetwork, type NetworkType } from "../../../../config/utils/environment"; +import { env } from "./../../env"; + + +export const ETERNUM_CONFIG = async () => { + const config = await getConfigFromNetwork(env.VITE_PUBLIC_CHAIN! as NetworkType); + return config; +}; + \ No newline at end of file diff --git a/client/apps/game/src/utils/entities.ts b/client/apps/game/src/utils/entities.ts new file mode 100644 index 0000000000..7752ce4bf3 --- /dev/null +++ b/client/apps/game/src/utils/entities.ts @@ -0,0 +1,157 @@ +import { getRealmNameById } from "@/ui/utils/realms"; +import { + CAPACITY_CONFIG_CATEGORY_STRING_MAP, + ClientComponents, + ContractAddress, + divideByPrecision, + EntityType, + ID, + PlayerStructure, + RealmWithPosition, +} from "@bibliothecadao/eternum"; +import { ComponentValue, getComponentValue } from "@dojoengine/recs"; +import { getEntityIdFromKeys } from "@dojoengine/utils"; +import { getResourcesFromBalance } from "./resources"; + +export const getRealm = (entityId: ID, components: ClientComponents) => { + const { Realm, Owner, Position } = components; + const entity = getEntityIdFromKeys([BigInt(entityId)]); + const realm = getComponentValue(Realm, entity); + if (!realm) return undefined; + + const position = getComponentValue(Position, entity); + const owner = getComponentValue(Owner, entity); + + return { + ...realm, + position, + name: getRealmNameById(realm.realm_id), + owner, + } as RealmWithPosition; +}; + +export const getStructure = (entityId: ID, components: ClientComponents) => { + const { Structure, Position, Owner } = components; + const entity = getEntityIdFromKeys([BigInt(entityId)]); + const structure = getComponentValue(Structure, entity); + if (!structure) return undefined; + + const position = getComponentValue(Position, entity); + const owner = getComponentValue(Owner, entity); + const structureName = getEntityName(structure.entity_id, components); + const name = structureName ? `${structure?.category} ${structureName}` : structure.category || ""; + + return { + ...structure, + position, + name, + owner, + } as PlayerStructure; +}; + +export const getEntityInfo = (entityId: ID, playerAccount: ContractAddress, components: ClientComponents) => { + const { ArrivalTime, Movable, CapacityCategory, CapacityConfig, EntityOwner, Owner, Structure, Army, Position } = + components; + const entityIdBigInt = BigInt(entityId); + const arrivalTime = getComponentValue(ArrivalTime, getEntityIdFromKeys([entityIdBigInt])); + const movable = getComponentValue(Movable, getEntityIdFromKeys([entityIdBigInt])); + + const entityCapacityCategory = getComponentValue(CapacityCategory, getEntityIdFromKeys([entityIdBigInt])) + ?.category as unknown as string; + const capacityCategoryId = CAPACITY_CONFIG_CATEGORY_STRING_MAP[entityCapacityCategory] || 0n; + const capacity = getComponentValue(CapacityConfig, getEntityIdFromKeys([BigInt(capacityCategoryId)])); + + const entityOwner = getComponentValue(EntityOwner, getEntityIdFromKeys([entityIdBigInt])); + const owner = getComponentValue(Owner, getEntityIdFromKeys([BigInt(entityOwner?.entity_owner_id || 0)])); + + const name = getEntityName(entityId, components); + + const structure = getComponentValue(Structure, getEntityIdFromKeys([entityIdBigInt])); + + const resources = getResourcesFromBalance(entityId, components); + const army = getComponentValue(Army, getEntityIdFromKeys([entityIdBigInt])); + const rawIntermediateDestination = movable + ? { x: movable.intermediate_coord_x, y: movable.intermediate_coord_y } + : undefined; + const intermediateDestination = rawIntermediateDestination + ? { x: rawIntermediateDestination.x, y: rawIntermediateDestination.y } + : undefined; + + const position = getComponentValue(Position, getEntityIdFromKeys([entityIdBigInt])); + + const homePosition = entityOwner + ? getComponentValue(Position, getEntityIdFromKeys([BigInt(entityOwner?.entity_owner_id || 0)])) + : undefined; + + return { + entityId, + arrivalTime: arrivalTime?.arrives_at, + blocked: Boolean(movable?.blocked), + capacity: divideByPrecision(Number(capacity?.weight_gram) || 0), + intermediateDestination, + position: position ? { x: position.x, y: position.y } : undefined, + homePosition: homePosition ? { x: homePosition.x, y: homePosition.y } : undefined, + owner: owner?.address, + isMine: ContractAddress(owner?.address || 0n) === playerAccount, + isRoundTrip: movable?.round_trip || false, + resources, + entityType: army ? EntityType.TROOP : EntityType.DONKEY, + structureCategory: structure?.category, + structure, + name, + }; +}; + +export const getEntityName = (entityId: ID, components: ClientComponents, abbreviate: boolean = false) => { + const entityName = getComponentValue(components.EntityName, getEntityIdFromKeys([BigInt(entityId)])); + const realm = getComponentValue(components.Realm, getEntityIdFromKeys([BigInt(entityId)])); + const structure = getComponentValue(components.Structure, getEntityIdFromKeys([BigInt(entityId)])); + if (structure?.category === "Realm" && realm) { + return getRealmName(realm); + } + + if (entityName) { + return entityName.name.toString(); + } + + if (abbreviate && structure) { + const abbreviations: Record = { + FragmentMine: "FM", + Hyperstructure: "HS", + Bank: "BK", + }; + + const abbr = abbreviations[structure.category]; + if (abbr) { + return `${abbr} ${structure.entity_id}`; + } + } + return `${structure?.category} ${structure?.entity_id}`; +}; + +const getRealmName = (realm: ComponentValue) => { + const baseName = getRealmNameById(realm.realm_id); + return realm.has_wonder ? `WONDER - ${baseName}` : baseName; +}; + +export const getAddressName = (address: ContractAddress, components: ClientComponents) => { + const addressName = getComponentValue(components.AddressName, getEntityIdFromKeys([BigInt(address)])); + + return addressName ? addressName.name.toString() : undefined; +}; + +export const getAddressNameFromEntity = (entityId: ID, components: ClientComponents) => { + const address = getPlayerAddressFromEntity(entityId, components); + if (!address) return; + + const addressName = getComponentValue(components.AddressName, getEntityIdFromKeys([BigInt(address)])); + + return addressName ? addressName.name.toString() : undefined; +}; + +export const getPlayerAddressFromEntity = (entityId: ID, components: ClientComponents): ContractAddress | undefined => { + const entityOwner = getComponentValue(components.EntityOwner, getEntityIdFromKeys([BigInt(entityId)])); + return entityOwner?.entity_owner_id + ? getComponentValue(components.Owner, getEntityIdFromKeys([BigInt(entityOwner.entity_owner_id)]))?.address + : undefined; +}; diff --git a/client/apps/game/src/utils/players.ts b/client/apps/game/src/utils/players.ts new file mode 100644 index 0000000000..f2ea8abe79 --- /dev/null +++ b/client/apps/game/src/utils/players.ts @@ -0,0 +1,60 @@ +import { calculatePlayerSharePercentage } from "@/ui/utils/leaderboard"; +import { ClientComponents, ContractAddress, Player, PlayerInfo, StructureType } from "@bibliothecadao/eternum"; +import { getComponentValue, Has, HasValue, runQuery } from "@dojoengine/recs"; +import { getEntityName } from "./entities"; + +export const getPlayerInfo = ( + players: Player[], + playerAddress: ContractAddress, + playersByRank: [bigint, number][], + components: ClientComponents, +): PlayerInfo[] => { + const { Realm, Owner, GuildMember, Hyperstructure, Structure } = components; + + const totalPoints = playersByRank.reduce((sum, [, points]) => sum + points, 0); + + const playerInfo = players + .map((player) => { + const isAlive = !!runQuery([HasValue(Owner, { address: player.address })]).size; + + const guildMember = getComponentValue(GuildMember, player.entity); + const guildName = guildMember ? getEntityName(guildMember.guild_entity_id, components) : ""; + + return { + entity: player.entity, + address: player.address, + name: player.name, + isAlive, + guildName, + }; + }) + .filter((player) => player !== undefined); + + let unrankedCount = 0; + + return playerInfo.map((player) => { + const rankIndex = playersByRank.findIndex(([address]) => address === player.address); + if (rankIndex === -1) unrankedCount++; + + const points = rankIndex === -1 ? 0 : playersByRank[rankIndex][1]; + + return { + entity: player.entity, + name: player.name, + address: player.address, + points, + rank: rankIndex === -1 ? Number.MAX_SAFE_INTEGER : rankIndex + 1, + percentage: calculatePlayerSharePercentage(points, totalPoints), + lords: 0, + realms: runQuery([Has(Realm), HasValue(Owner, { address: player.address })]).size, + mines: runQuery([ + HasValue(Structure, { category: StructureType[StructureType.FragmentMine] }), + HasValue(Owner, { address: player.address }), + ]).size, + hyperstructures: runQuery([Has(Hyperstructure), HasValue(Owner, { address: player.address })]).size, + isAlive: player.isAlive, + guildName: player.guildName || "", + isUser: player.address === playerAddress, + }; + }); +}; diff --git a/client/apps/game/src/utils/realm.ts b/client/apps/game/src/utils/realm.ts new file mode 100644 index 0000000000..393efe5dbf --- /dev/null +++ b/client/apps/game/src/utils/realm.ts @@ -0,0 +1,72 @@ +import { configManager } from "@/dojo/setup"; +import { ClientComponents, ID, RealmInfo } from "@bibliothecadao/eternum"; +import { Entity, getComponentValue } from "@dojoengine/recs"; +import { getEntityIdFromKeys } from "@dojoengine/utils"; +import { shortString } from "starknet"; +import realmsJson from "../../../../common/data/realms.json"; + +export const getRealmAddressName = (realmEntityId: ID, components: ClientComponents) => { + const owner = getComponentValue(components.Owner, getEntityIdFromKeys([BigInt(realmEntityId)])); + const addressName = owner + ? getComponentValue(components.AddressName, getEntityIdFromKeys([owner.address])) + : undefined; + + if (addressName) { + return shortString.decodeShortString(String(addressName.name)); + } else { + return ""; + } +}; + +interface Attribute { + trait_type: string; + value: any; +} + +let realms: { + [key: string]: any; +} = {}; + +const loadRealms = async () => { + const response = await fetch("/jsons/realms.json"); + realms = await response.json(); +}; + +loadRealms(); + +const getRealmNameById = (realmId: ID): string => { + const features = realmsJson["features"][realmId - 1]; + if (!features) return ""; + return features["name"]; +}; + +export function getRealmInfo(entity: Entity, components: ClientComponents): RealmInfo | undefined { + const realm = getComponentValue(components.Realm, entity); + const owner = getComponentValue(components.Owner, entity); + const position = getComponentValue(components.Position, entity); + const population = getComponentValue(components.Population, entity); + + if (realm && owner && position) { + const { realm_id, entity_id, produced_resources, order, level } = realm; + + const name = getRealmNameById(realm_id); + + const { address } = owner; + + return { + realmId: realm_id, + entityId: entity_id, + name, + level, + resourceTypesPacked: produced_resources, + order, + position, + ...population, + hasCapacity: + !population || population.capacity + configManager.getBasePopulationCapacity() > population.population, + owner: address, + ownerName: getRealmAddressName(realm.entity_id, components), + hasWonder: realm.has_wonder, + }; + } +} diff --git a/client/apps/game/src/utils/resources.ts b/client/apps/game/src/utils/resources.ts new file mode 100644 index 0000000000..1835a9b1e7 --- /dev/null +++ b/client/apps/game/src/utils/resources.ts @@ -0,0 +1,70 @@ +import useUIStore from "@/hooks/store/use-ui-store"; +import { unpackResources } from "@/ui/utils/packed-data"; +import { + ClientComponents, + configManager, + getQuestResources as getStartingResources, + ID, + Resource, + ResourceManager, + resources, + ResourcesIds, +} from "@bibliothecadao/eternum"; +import { getComponentValue } from "@dojoengine/recs"; +import { getEntityIdFromKeys } from "@dojoengine/utils"; +import { ETERNUM_CONFIG } from "./config"; + + + const eternumConfig = await ETERNUM_CONFIG(); +// used for entities that don't have any production +export const getInventoryResources = (entityId: ID, components: ClientComponents): Resource[] => { + return resources + .map(({ id }) => { + const resource = getComponentValue(components.Resource, getEntityIdFromKeys([BigInt(entityId), BigInt(id)])); + if (resource?.balance !== undefined && resource.balance > 0n) { + return { resourceId: id, amount: Number(resource.balance) }; + } + return undefined; + }) + .filter((resource): resource is Resource => resource !== undefined); +}; + +// for entities that have production like realms +export const getBalance = (entityId: ID, resourceId: ResourcesIds, components: ClientComponents) => { + const currentDefaultTick = useUIStore.getState().currentDefaultTick; + const resourceManager = new ResourceManager(components, entityId, resourceId); + return { balance: resourceManager.balance(currentDefaultTick), resourceId }; +}; + +export const getResourceProductionInfo = (entityId: ID, resourceId: ResourcesIds, components: ClientComponents) => { + const resourceManager = new ResourceManager(components, entityId, resourceId); + return resourceManager.getProduction(); +}; + +export const getResourcesFromBalance = (entityId: ID, components: ClientComponents): Resource[] => { + const currentDefaultTick = useUIStore.getState().currentDefaultTick; + + const weight = getComponentValue(components.Weight, getEntityIdFromKeys([BigInt(entityId)])); + const hasWeightlessResources = configManager + .getWeightLessResources() + .some( + (resourceId) => + (getComponentValue(components.Resource, getEntityIdFromKeys([BigInt(entityId), BigInt(resourceId)]))?.balance ?? + 0n) > 0n, + ); + if (!weight?.value && !hasWeightlessResources) return []; + const resourceIds = resources.map((r) => r.id); + return resourceIds + .map((id) => { + const resourceManager = new ResourceManager(components, entityId, id); + const balance = resourceManager.balance(currentDefaultTick); + return { resourceId: id, amount: balance }; + }) + .filter((r) => r.amount > 0); +}; + +export const getQuestResources = (realmEntityId: ID, components: ClientComponents) => { + const realm = getComponentValue(components.Realm, getEntityIdFromKeys([BigInt(realmEntityId)])); + const resourcesProduced = realm ? unpackResources(realm.produced_resources) : []; + return getStartingResources(resourcesProduced, eternumConfig.questResources, eternumConfig.resources.resourceInputs); +}; diff --git a/client/apps/game/tailwind.config.js b/client/apps/game/tailwind.config.js index a037c76f62..a8be71022d 100644 --- a/client/apps/game/tailwind.config.js +++ b/client/apps/game/tailwind.config.js @@ -107,7 +107,7 @@ export default { }, }, backgroundImage: { - map: "url(/map.svg)", + map: "url(/images/map.svg)", // "hex-bg": "url(/hex-bg.png)", "old-map": "url(/textures/paper/worldmap-bg.png)", }, @@ -115,11 +115,11 @@ export default { xxs: ".625rem", }, cursor: { - fancy: "url(/cursor.png), pointer", - pointer: "url(/cursor.png), pointer", - grab: "url(/grab.png), grab", - crosshair: "url(/cursor-cross.png), crosshair", - wait: "url(/images/eternum-logo_animated.png), wait", + fancy: "url(/images/icons/cursor.png), pointer", + pointer: "url(/images/icons/cursor.png), pointer", + grab: "url(/images/icons/grab.png), grab", + crosshair: "url(/images/icons/cursor-cross.png), crosshair", + wait: "url(/images/logos/eternum-animated.png), wait", }, strokeWidth: { 8: "8px", diff --git a/client/apps/game/tsconfig.json b/client/apps/game/tsconfig.json index 8bc02f0c7c..90a5a9aa67 100644 --- a/client/apps/game/tsconfig.json +++ b/client/apps/game/tsconfig.json @@ -7,7 +7,7 @@ "target": "ESNext", "useDefineForClassFields": true, "lib": ["DOM", "DOM.Iterable", "ESNext"], - "allowJs": false, + "allowJs": true, "skipLibCheck": true, "esModuleInterop": false, "allowSyntheticDefaultImports": true, diff --git a/client/apps/game/vite.config.ts b/client/apps/game/vite.config.ts index 17f9146d5b..eb44e97a7c 100644 --- a/client/apps/game/vite.config.ts +++ b/client/apps/game/vite.config.ts @@ -98,4 +98,5 @@ export default defineConfig({ "@bibliothecadao/eternum", // Add your dependency here ], }, + publicDir: "../../common/public", }); diff --git a/client/apps/landing/.env.production b/client/apps/landing/.env.mainnet similarity index 77% rename from client/apps/landing/.env.production rename to client/apps/landing/.env.mainnet index 03892ef138..66b5879474 100644 --- a/client/apps/landing/.env.production +++ b/client/apps/landing/.env.mainnet @@ -11,9 +11,6 @@ VITE_PUBLIC_GAME_VERSION="v1.0.0-rc0" VITE_PUBLIC_SHOW_FPS=false VITE_PUBLIC_GRAPHICS_DEV=false VITE_PUBLIC_TORII_RELAY=/dns4/api.cartridge.gg/tcp/443/x-parity-wss/%2Fx%2Frealms-world-5%2Ftorii%2Fwss -VITE_SEASON_PASS_ADDRESS=0x057675b9c0bd62b096a2e15502a37b290fa766ead21c33eda42993e48a714b80 -VITE_REALMS_ADDRESS=0x07ae27a31bb6526e3de9cf02f081f6ce0615ac12a6d7b85ee58b8ad7947a2809 -VITE_LORDS_ADDRESS=0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49 VITE_PUBLIC_CHAIN=mainnet VITE_PUBLIC_SLOT=eternum-prod @@ -26,5 +23,5 @@ VITE_PUBLIC_IMAGE_CDN_URL=https://abc.com VITE_PUBLIC_IMAGE_PROXY_URL=https://abc.com VITE_PUBLIC_IPFS_GATEWAY=https://abc.com -VITE_VRF_PROVIDER_ADDRESS="0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f" +VITE_PUBLIC_VRF_PROVIDER_ADDRESS="0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f" VITE_PUBLIC_CLIENT_FEE_RECIPIENT=0x045c587318c9ebcf2fbe21febf288ee2e3597a21cd48676005a5770a50d433c5 diff --git a/client/apps/landing/.env.sepolia b/client/apps/landing/.env.sepolia index 7c54c18b4c..78171c7eba 100644 --- a/client/apps/landing/.env.sepolia +++ b/client/apps/landing/.env.sepolia @@ -12,10 +12,6 @@ VITE_PUBLIC_SHOW_FPS=false VITE_PUBLIC_GRAPHICS_DEV=false VITE_PUBLIC_TORII_RELAY=/dns4/api.cartridge.gg/tcp/443/x-parity-wss/%2Fx%2Feternum-rc-sepolia%2Ftorii%2Fwss -VITE_SEASON_PASS_ADDRESS=0x43e1d2187157c7744a96897c4a10303a9972c65727dbbed7348cbc6d98709a4 -VITE_REALMS_ADDRESS=0xd2674cc335684896f2b1f942e6929611acab4dc07aa03d0371226812bbc349 -VITE_LORDS_ADDRESS=0x342ad5cc14002c005a5cedcfce2bd3af98d5e7fb79e9bf949b3a91cf145d72e - VITE_PUBLIC_CHAIN=sepolia VITE_PUBLIC_SLOT= @@ -27,5 +23,5 @@ VITE_PUBLIC_IMAGE_CDN_URL=https://abc.com VITE_PUBLIC_IMAGE_PROXY_URL=https://abc.com VITE_PUBLIC_IPFS_GATEWAY=https://abc.com -VITE_VRF_PROVIDER_ADDRESS="0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f" +VITE_PUBLIC_VRF_PROVIDER_ADDRESS="0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f" VITE_PUBLIC_CLIENT_FEE_RECIPIENT=0x045c587318c9ebcf2fbe21febf288ee2e3597a21cd48676005a5770a50d433c5 \ No newline at end of file diff --git a/client/apps/landing/.env.preview b/client/apps/landing/.env.slot similarity index 65% rename from client/apps/landing/.env.preview rename to client/apps/landing/.env.slot index 68d98a02a5..8067e65791 100644 --- a/client/apps/landing/.env.preview +++ b/client/apps/landing/.env.slot @@ -1,5 +1,5 @@ -VITE_PUBLIC_MASTER_ADDRESS=0x01BFC84464f990C09Cc0e5D64D18F54c3469fD5c467398BF31293051bAde1C39 -VITE_PUBLIC_MASTER_PRIVATE_KEY=0x075362a844768f31c8058ce31aec3dd7751686440b4f220f410ae0c9bf042e60 +VITE_PUBLIC_MASTER_ADDRESS="0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec" +VITE_PUBLIC_MASTER_PRIVATE_KEY="0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912" VITE_PUBLIC_WORLD_ADDRESS="0x00fd85ef42eaed3b90d02d2cdc7417d6cae189ff4ba876aa5608551afbf1fb47" VITE_PUBLIC_ACCOUNT_CLASS_HASH="0x07dc7899aa655b0aae51eadff6d801a58e97dd99cf4666ee59e704249e51adf2" VITE_PUBLIC_FEE_TOKEN_ADDRESS=0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7 @@ -10,10 +10,6 @@ VITE_PUBLIC_GAME_VERSION="v1.0.0-rc7" VITE_PUBLIC_SHOW_FPS=false VITE_PUBLIC_GRAPHICS_DEV=false VITE_PUBLIC_TORII_RELAY=/dns4/api.cartridge.gg/tcp/443/x-parity-wss/%2Fx%2Fsepolia-rc-18%2Ftorii%2Fwss -VITE_SEASON_PASS_ADDRESS=0x23cc88996a5f9c7bcb559fdcffc257c0f75abe60f2a7e5d5cd343f8a95967f7 -VITE_REALMS_ADDRESS=0x3205f47bd6f0b5e9cd5c79fcae19e12523a024709776d0a9e8b375adf63468d -VITE_LORDS_ADDRESS=0x0342ad5cc14002c005a5cedcfce2bd3af98d5e7fb79e9bf949b3a91cf145d72e - VITE_PUBLIC_CHAIN=sepolia VITE_PUBLIC_SLOT= @@ -26,6 +22,6 @@ VITE_PUBLIC_IMAGE_CDN_URL=https://abc.com VITE_PUBLIC_IMAGE_PROXY_URL=https://abc.com VITE_PUBLIC_IPFS_GATEWAY=https://abc.com -VITE_VRF_PROVIDER_ADDRESS="0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f" +VITE_PUBLIC_VRF_PROVIDER_ADDRESS="0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f" VITE_PUBLIC_CLIENT_FEE_RECIPIENT=0x01BFC84464f990C09Cc0e5D64D18F54c3469fD5c467398BF31293051bAde1C39 diff --git a/client/apps/landing/dojoConfig.ts b/client/apps/landing/dojoConfig.ts index 26c173229f..9867509227 100644 --- a/client/apps/landing/dojoConfig.ts +++ b/client/apps/landing/dojoConfig.ts @@ -1,7 +1,6 @@ import { createDojoConfig } from "@dojoengine/core"; -import devManifest from "../../common/manifests/manifest_dev.json"; -import productionManifest from "../../common/manifests/manifest_mainnet.json"; -import sepoliaManifest from "../../common/manifests/manifest_prod.json"; +import { Chain, getGameManifest } from "../../common/utils"; + import { env } from "./env"; const { @@ -15,20 +14,7 @@ const { VITE_PUBLIC_CHAIN, } = env; -// const isLocal = VITE_PUBLIC_CHAIN === "local" || VITE_PUBLIC_CHAIN === "testnet"; -// const manifest = VITE_PUBLIC_DEV === true && isLocal ? devManifest : productionManifest; - -const manifestMap = { - local: devManifest, - mainnet: productionManifest, - sepolia: sepoliaManifest, -} as const; - -const manifest = manifestMap[VITE_PUBLIC_CHAIN as keyof typeof manifestMap] ?? sepoliaManifest; - -export const getManifest = () => { - return manifest; -}; +const manifest = getGameManifest(VITE_PUBLIC_CHAIN! as Chain); export const dojoConfig = createDojoConfig({ rpcUrl: VITE_PUBLIC_NODE_URL, diff --git a/client/apps/landing/env.ts b/client/apps/landing/env.ts index f85a88f742..15b4001711 100644 --- a/client/apps/landing/env.ts +++ b/client/apps/landing/env.ts @@ -13,11 +13,6 @@ const envSchema = z.object({ // Client fee recipient VITE_PUBLIC_CLIENT_FEE_RECIPIENT: z.string().startsWith("0x"), - // External Contracts - VITE_SEASON_PASS_ADDRESS: z.string().startsWith("0x"), - VITE_REALMS_ADDRESS: z.string().startsWith("0x"), - VITE_LORDS_ADDRESS: z.string().startsWith("0x"), - // API endpoints VITE_PUBLIC_TORII: z.string().url(), VITE_PUBLIC_NODE_URL: z.string().url(), @@ -49,6 +44,3 @@ try { } export { env }; - -// Type for your validated env -export type Env = z.infer; diff --git a/client/apps/landing/index.html b/client/apps/landing/index.html index 479bb8b41f..9ec61cefe1 100644 --- a/client/apps/landing/index.html +++ b/client/apps/landing/index.html @@ -15,7 +15,7 @@ - + Eternum Empire | Stats & Analytics diff --git a/client/apps/landing/package.json b/client/apps/landing/package.json index 127978537b..f73aac7804 100644 --- a/client/apps/landing/package.json +++ b/client/apps/landing/package.json @@ -9,6 +9,8 @@ "codegen": "graphql-codegen --config codegen.ts", "dev": "vite", "dev::sepolia": "vite --mode sepolia", + "format": "npx prettier --write . --root=..", + "format:check": "npx prettier --check . --root=..", "lint": "eslint .", "preview": "vite preview", "storybook": "storybook dev -p 6006" diff --git a/client/apps/landing/public/eternum_new_logo.svg b/client/apps/landing/public/eternum_new_logo.svg deleted file mode 100644 index 38f41923ff..0000000000 --- a/client/apps/landing/public/eternum_new_logo.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client/apps/landing/public/images/Castle.png b/client/apps/landing/public/images/Castle.png deleted file mode 100644 index 49eb49b971..0000000000 Binary files a/client/apps/landing/public/images/Castle.png and /dev/null differ diff --git a/client/apps/landing/public/images/Dark Plains.png b/client/apps/landing/public/images/Dark Plains.png deleted file mode 100644 index 426620287c..0000000000 Binary files a/client/apps/landing/public/images/Dark Plains.png and /dev/null differ diff --git a/client/apps/landing/public/images/argent-x.svg b/client/apps/landing/public/images/argent-x.svg deleted file mode 100644 index f6e86973d0..0000000000 --- a/client/apps/landing/public/images/argent-x.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/client/apps/landing/public/images/avatars/Armor.png b/client/apps/landing/public/images/avatars/Armor.png deleted file mode 100644 index 1239c6d96e..0000000000 Binary files a/client/apps/landing/public/images/avatars/Armor.png and /dev/null differ diff --git a/client/apps/landing/public/images/avatars/Axe.png b/client/apps/landing/public/images/avatars/Axe.png deleted file mode 100644 index e207c40b32..0000000000 Binary files a/client/apps/landing/public/images/avatars/Axe.png and /dev/null differ diff --git a/client/apps/landing/public/images/avatars/Battle-axe.png b/client/apps/landing/public/images/avatars/Battle-axe.png deleted file mode 100644 index aebb400a0b..0000000000 Binary files a/client/apps/landing/public/images/avatars/Battle-axe.png and /dev/null differ diff --git a/client/apps/landing/public/images/avatars/Blade.png b/client/apps/landing/public/images/avatars/Blade.png deleted file mode 100644 index 84e116b432..0000000000 Binary files a/client/apps/landing/public/images/avatars/Blade.png and /dev/null differ diff --git a/client/apps/landing/public/images/avatars/Dual-Wield.png b/client/apps/landing/public/images/avatars/Dual-Wield.png deleted file mode 100644 index 03d91e01a4..0000000000 Binary files a/client/apps/landing/public/images/avatars/Dual-Wield.png and /dev/null differ diff --git a/client/apps/landing/public/images/avatars/Handaxe.png b/client/apps/landing/public/images/avatars/Handaxe.png deleted file mode 100644 index 4103022cdd..0000000000 Binary files a/client/apps/landing/public/images/avatars/Handaxe.png and /dev/null differ diff --git a/client/apps/landing/public/images/avatars/Hidden.png b/client/apps/landing/public/images/avatars/Hidden.png deleted file mode 100644 index 2eda3f0ded..0000000000 Binary files a/client/apps/landing/public/images/avatars/Hidden.png and /dev/null differ diff --git a/client/apps/landing/public/images/avatars/Hilt.png b/client/apps/landing/public/images/avatars/Hilt.png deleted file mode 100644 index f974c340a3..0000000000 Binary files a/client/apps/landing/public/images/avatars/Hilt.png and /dev/null differ diff --git a/client/apps/landing/public/images/avatars/Javelin.png b/client/apps/landing/public/images/avatars/Javelin.png deleted file mode 100644 index 6aadf2568e..0000000000 Binary files a/client/apps/landing/public/images/avatars/Javelin.png and /dev/null differ diff --git a/client/apps/landing/public/images/avatars/Spear.png b/client/apps/landing/public/images/avatars/Spear.png deleted file mode 100644 index e1350bae64..0000000000 Binary files a/client/apps/landing/public/images/avatars/Spear.png and /dev/null differ diff --git a/client/apps/landing/public/images/avatars/Sword.png b/client/apps/landing/public/images/avatars/Sword.png deleted file mode 100644 index 921851f083..0000000000 Binary files a/client/apps/landing/public/images/avatars/Sword.png and /dev/null differ diff --git a/client/apps/landing/public/images/avatars/WrappedAxe.png b/client/apps/landing/public/images/avatars/WrappedAxe.png deleted file mode 100644 index bea2d9c07e..0000000000 Binary files a/client/apps/landing/public/images/avatars/WrappedAxe.png and /dev/null differ diff --git a/client/apps/landing/public/images/avatars/mercenary.png b/client/apps/landing/public/images/avatars/mercenary.png deleted file mode 100644 index 5b36298379..0000000000 Binary files a/client/apps/landing/public/images/avatars/mercenary.png and /dev/null differ diff --git a/client/apps/landing/public/images/braavos.svg b/client/apps/landing/public/images/braavos.svg deleted file mode 100644 index bf7b47f54e..0000000000 --- a/client/apps/landing/public/images/braavos.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/client/apps/landing/public/images/buildings/construction/archery.png b/client/apps/landing/public/images/buildings/construction/archery.png deleted file mode 100644 index 6f79feacae..0000000000 Binary files a/client/apps/landing/public/images/buildings/construction/archery.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/construction/barracks.png b/client/apps/landing/public/images/buildings/construction/barracks.png deleted file mode 100644 index 65c41bdaba..0000000000 Binary files a/client/apps/landing/public/images/buildings/construction/barracks.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/construction/dragonhide.png b/client/apps/landing/public/images/buildings/construction/dragonhide.png deleted file mode 100644 index 437d2eb88a..0000000000 Binary files a/client/apps/landing/public/images/buildings/construction/dragonhide.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/construction/farm.png b/client/apps/landing/public/images/buildings/construction/farm.png deleted file mode 100644 index 4feb1e1063..0000000000 Binary files a/client/apps/landing/public/images/buildings/construction/farm.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/construction/fishing_village.png b/client/apps/landing/public/images/buildings/construction/fishing_village.png deleted file mode 100644 index cf8f3757ea..0000000000 Binary files a/client/apps/landing/public/images/buildings/construction/fishing_village.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/construction/forge.png b/client/apps/landing/public/images/buildings/construction/forge.png deleted file mode 100644 index 04138d353d..0000000000 Binary files a/client/apps/landing/public/images/buildings/construction/forge.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/construction/lumber_mill.png b/client/apps/landing/public/images/buildings/construction/lumber_mill.png deleted file mode 100644 index 911261e890..0000000000 Binary files a/client/apps/landing/public/images/buildings/construction/lumber_mill.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/construction/market.png b/client/apps/landing/public/images/buildings/construction/market.png deleted file mode 100644 index b9d66e7108..0000000000 Binary files a/client/apps/landing/public/images/buildings/construction/market.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/construction/mine.png b/client/apps/landing/public/images/buildings/construction/mine.png deleted file mode 100644 index 78dd58ba11..0000000000 Binary files a/client/apps/landing/public/images/buildings/construction/mine.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/construction/stable.png b/client/apps/landing/public/images/buildings/construction/stable.png deleted file mode 100644 index 33a3f948ae..0000000000 Binary files a/client/apps/landing/public/images/buildings/construction/stable.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/construction/storehouse.png b/client/apps/landing/public/images/buildings/construction/storehouse.png deleted file mode 100644 index f86332072f..0000000000 Binary files a/client/apps/landing/public/images/buildings/construction/storehouse.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/construction/workers_hut.png b/client/apps/landing/public/images/buildings/construction/workers_hut.png deleted file mode 100644 index 901073b97b..0000000000 Binary files a/client/apps/landing/public/images/buildings/construction/workers_hut.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/archer-tower.png b/client/apps/landing/public/images/buildings/thumb/archer-tower.png deleted file mode 100644 index 5bac1ced0f..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/archer-tower.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/army.png b/client/apps/landing/public/images/buildings/thumb/army.png deleted file mode 100644 index 0d4a7df8a7..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/army.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/banks.png b/client/apps/landing/public/images/buildings/thumb/banks.png deleted file mode 100644 index 6f8db1015a..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/banks.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/castle.png b/client/apps/landing/public/images/buildings/thumb/castle.png deleted file mode 100644 index 6289d4d31d..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/castle.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/crane.png b/client/apps/landing/public/images/buildings/thumb/crane.png deleted file mode 100644 index 67806d37da..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/crane.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/discord.png b/client/apps/landing/public/images/buildings/thumb/discord.png deleted file mode 100644 index e9dc50d7fe..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/discord.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/fragment-mine.png b/client/apps/landing/public/images/buildings/thumb/fragment-mine.png deleted file mode 100644 index c3b3d2c643..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/fragment-mine.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/guilds.png b/client/apps/landing/public/images/buildings/thumb/guilds.png deleted file mode 100644 index e4b783b929..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/guilds.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/house.png b/client/apps/landing/public/images/buildings/thumb/house.png deleted file mode 100644 index 50e8e11e62..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/house.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/hyperstructure.png b/client/apps/landing/public/images/buildings/thumb/hyperstructure.png deleted file mode 100644 index 05eb5d4909..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/hyperstructure.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/leaderboard.png b/client/apps/landing/public/images/buildings/thumb/leaderboard.png deleted file mode 100644 index e1c1789491..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/leaderboard.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/military.png b/client/apps/landing/public/images/buildings/thumb/military.png deleted file mode 100644 index 761bec6bf7..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/military.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/question-wood.png b/client/apps/landing/public/images/buildings/thumb/question-wood.png deleted file mode 100644 index ce12d20528..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/question-wood.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/question.png b/client/apps/landing/public/images/buildings/thumb/question.png deleted file mode 100644 index 560f834fcf..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/question.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/realm.png b/client/apps/landing/public/images/buildings/thumb/realm.png deleted file mode 100644 index 9a7b326964..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/realm.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/resources.png b/client/apps/landing/public/images/buildings/thumb/resources.png deleted file mode 100644 index 4dde0426da..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/resources.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/scale.png b/client/apps/landing/public/images/buildings/thumb/scale.png deleted file mode 100644 index faa04753af..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/scale.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/settings.png b/client/apps/landing/public/images/buildings/thumb/settings.png deleted file mode 100644 index a4f62ac383..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/settings.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/silo.png b/client/apps/landing/public/images/buildings/thumb/silo.png deleted file mode 100644 index 18de431dd1..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/silo.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/squire.png b/client/apps/landing/public/images/buildings/thumb/squire.png deleted file mode 100644 index b356d0bea4..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/squire.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/sword.png b/client/apps/landing/public/images/buildings/thumb/sword.png deleted file mode 100644 index ff131cd446..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/sword.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/timeglass.png b/client/apps/landing/public/images/buildings/thumb/timeglass.png deleted file mode 100644 index 3151808a20..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/timeglass.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/trade.png b/client/apps/landing/public/images/buildings/thumb/trade.png deleted file mode 100644 index 317cae0d6f..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/trade.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/trophy.png b/client/apps/landing/public/images/buildings/thumb/trophy.png deleted file mode 100644 index 90da2bfb49..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/trophy.png and /dev/null differ diff --git a/client/apps/landing/public/images/buildings/thumb/world-map.png b/client/apps/landing/public/images/buildings/thumb/world-map.png deleted file mode 100644 index 03ee66b218..0000000000 Binary files a/client/apps/landing/public/images/buildings/thumb/world-map.png and /dev/null differ diff --git a/client/apps/landing/public/images/cover.png b/client/apps/landing/public/images/cover.png deleted file mode 100644 index 20109b4842..0000000000 Binary files a/client/apps/landing/public/images/cover.png and /dev/null differ diff --git a/client/apps/landing/public/images/eternum-logo.svg b/client/apps/landing/public/images/eternum-logo.svg deleted file mode 100644 index e68306ba72..0000000000 --- a/client/apps/landing/public/images/eternum-logo.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/client/apps/landing/public/images/eternum-logo_animated.png b/client/apps/landing/public/images/eternum-logo_animated.png deleted file mode 100644 index 995e596638..0000000000 Binary files a/client/apps/landing/public/images/eternum-logo_animated.png and /dev/null differ diff --git a/client/apps/landing/public/images/eternum_logo.png b/client/apps/landing/public/images/eternum_logo.png deleted file mode 100644 index 7c7fd6ebe9..0000000000 Binary files a/client/apps/landing/public/images/eternum_logo.png and /dev/null differ diff --git a/client/apps/landing/public/images/eternum_with_snake.png b/client/apps/landing/public/images/eternum_with_snake.png deleted file mode 100644 index a946fa3aae..0000000000 Binary files a/client/apps/landing/public/images/eternum_with_snake.png and /dev/null differ diff --git a/client/apps/landing/public/images/eternumloader.png b/client/apps/landing/public/images/eternumloader.png deleted file mode 100644 index 160652191f..0000000000 Binary files a/client/apps/landing/public/images/eternumloader.png and /dev/null differ diff --git a/client/apps/landing/public/images/hidden-castle.png b/client/apps/landing/public/images/hidden-castle.png deleted file mode 100644 index f67517ede1..0000000000 Binary files a/client/apps/landing/public/images/hidden-castle.png and /dev/null differ diff --git a/client/apps/landing/public/images/icons/250.png b/client/apps/landing/public/images/icons/250.png deleted file mode 100644 index 90fb8d116a..0000000000 Binary files a/client/apps/landing/public/images/icons/250.png and /dev/null differ diff --git a/client/apps/landing/public/images/icons/251.png b/client/apps/landing/public/images/icons/251.png deleted file mode 100644 index 9399c6bdb0..0000000000 Binary files a/client/apps/landing/public/images/icons/251.png and /dev/null differ diff --git a/client/apps/landing/public/images/icons/252.png b/client/apps/landing/public/images/icons/252.png deleted file mode 100644 index c6da9a6b59..0000000000 Binary files a/client/apps/landing/public/images/icons/252.png and /dev/null differ diff --git a/client/apps/landing/public/images/icons/attack.png b/client/apps/landing/public/images/icons/attack.png deleted file mode 100644 index 2bf12bf7dd..0000000000 Binary files a/client/apps/landing/public/images/icons/attack.png and /dev/null differ diff --git a/client/apps/landing/public/images/icons/claim.png b/client/apps/landing/public/images/icons/claim.png deleted file mode 100644 index c83e67759a..0000000000 Binary files a/client/apps/landing/public/images/icons/claim.png and /dev/null differ diff --git a/client/apps/landing/public/images/icons/leave-battle.png b/client/apps/landing/public/images/icons/leave-battle.png deleted file mode 100644 index e97a9ff126..0000000000 Binary files a/client/apps/landing/public/images/icons/leave-battle.png and /dev/null differ diff --git a/client/apps/landing/public/images/icons/raid.png b/client/apps/landing/public/images/icons/raid.png deleted file mode 100644 index 1e59e6b488..0000000000 Binary files a/client/apps/landing/public/images/icons/raid.png and /dev/null differ diff --git a/client/apps/landing/public/images/icons/troop.png b/client/apps/landing/public/images/icons/troop.png deleted file mode 100644 index 636d870f80..0000000000 Binary files a/client/apps/landing/public/images/icons/troop.png and /dev/null differ diff --git a/client/apps/landing/public/images/jungle-clouds.png b/client/apps/landing/public/images/jungle-clouds.png deleted file mode 100644 index 60deb6bab5..0000000000 Binary files a/client/apps/landing/public/images/jungle-clouds.png and /dev/null differ diff --git a/client/apps/landing/public/images/oroborus.png b/client/apps/landing/public/images/oroborus.png deleted file mode 100644 index ec6c878e9e..0000000000 Binary files a/client/apps/landing/public/images/oroborus.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/1.png b/client/apps/landing/public/images/resources/1.png deleted file mode 100644 index 7c8b359013..0000000000 Binary files a/client/apps/landing/public/images/resources/1.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/10.png b/client/apps/landing/public/images/resources/10.png deleted file mode 100644 index bb6d56ae25..0000000000 Binary files a/client/apps/landing/public/images/resources/10.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/11.png b/client/apps/landing/public/images/resources/11.png deleted file mode 100644 index 1cb79097af..0000000000 Binary files a/client/apps/landing/public/images/resources/11.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/12.png b/client/apps/landing/public/images/resources/12.png deleted file mode 100644 index f1a596f689..0000000000 Binary files a/client/apps/landing/public/images/resources/12.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/13.png b/client/apps/landing/public/images/resources/13.png deleted file mode 100644 index 3df9c0d30f..0000000000 Binary files a/client/apps/landing/public/images/resources/13.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/14.png b/client/apps/landing/public/images/resources/14.png deleted file mode 100644 index 0ca47a48f6..0000000000 Binary files a/client/apps/landing/public/images/resources/14.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/15.png b/client/apps/landing/public/images/resources/15.png deleted file mode 100644 index aa46c53ebc..0000000000 Binary files a/client/apps/landing/public/images/resources/15.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/16.png b/client/apps/landing/public/images/resources/16.png deleted file mode 100644 index a268ce883c..0000000000 Binary files a/client/apps/landing/public/images/resources/16.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/17.png b/client/apps/landing/public/images/resources/17.png deleted file mode 100644 index 78b1701ffb..0000000000 Binary files a/client/apps/landing/public/images/resources/17.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/18.png b/client/apps/landing/public/images/resources/18.png deleted file mode 100644 index dc32ad4469..0000000000 Binary files a/client/apps/landing/public/images/resources/18.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/19.png b/client/apps/landing/public/images/resources/19.png deleted file mode 100644 index e8c4d77817..0000000000 Binary files a/client/apps/landing/public/images/resources/19.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/2.png b/client/apps/landing/public/images/resources/2.png deleted file mode 100644 index 2152434a7c..0000000000 Binary files a/client/apps/landing/public/images/resources/2.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/20.png b/client/apps/landing/public/images/resources/20.png deleted file mode 100644 index b2cf70b1dc..0000000000 Binary files a/client/apps/landing/public/images/resources/20.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/21.png b/client/apps/landing/public/images/resources/21.png deleted file mode 100644 index a92794e06c..0000000000 Binary files a/client/apps/landing/public/images/resources/21.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/22.png b/client/apps/landing/public/images/resources/22.png deleted file mode 100644 index 74d739871a..0000000000 Binary files a/client/apps/landing/public/images/resources/22.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/254.png b/client/apps/landing/public/images/resources/254.png deleted file mode 100644 index 10c51b23ca..0000000000 Binary files a/client/apps/landing/public/images/resources/254.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/255.png b/client/apps/landing/public/images/resources/255.png deleted file mode 100644 index c4c0684832..0000000000 Binary files a/client/apps/landing/public/images/resources/255.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/29.png b/client/apps/landing/public/images/resources/29.png deleted file mode 100644 index 06135412a8..0000000000 Binary files a/client/apps/landing/public/images/resources/29.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/3.png b/client/apps/landing/public/images/resources/3.png deleted file mode 100644 index 537940af64..0000000000 Binary files a/client/apps/landing/public/images/resources/3.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/4.png b/client/apps/landing/public/images/resources/4.png deleted file mode 100644 index bd65736029..0000000000 Binary files a/client/apps/landing/public/images/resources/4.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/5.png b/client/apps/landing/public/images/resources/5.png deleted file mode 100644 index 113f453dcb..0000000000 Binary files a/client/apps/landing/public/images/resources/5.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/6.png b/client/apps/landing/public/images/resources/6.png deleted file mode 100644 index d8f0281a78..0000000000 Binary files a/client/apps/landing/public/images/resources/6.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/7.png b/client/apps/landing/public/images/resources/7.png deleted file mode 100644 index 14bcaf2c67..0000000000 Binary files a/client/apps/landing/public/images/resources/7.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/8.png b/client/apps/landing/public/images/resources/8.png deleted file mode 100644 index 5180be724e..0000000000 Binary files a/client/apps/landing/public/images/resources/8.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/9.png b/client/apps/landing/public/images/resources/9.png deleted file mode 100644 index 51e5a0ab9a..0000000000 Binary files a/client/apps/landing/public/images/resources/9.png and /dev/null differ diff --git a/client/apps/landing/public/images/resources/coin.png b/client/apps/landing/public/images/resources/coin.png deleted file mode 100644 index 27fab33c3a..0000000000 Binary files a/client/apps/landing/public/images/resources/coin.png and /dev/null differ diff --git a/client/apps/landing/public/images/squire.png b/client/apps/landing/public/images/squire.png deleted file mode 100644 index 31abdc98f3..0000000000 Binary files a/client/apps/landing/public/images/squire.png and /dev/null differ diff --git a/client/apps/landing/public/og-image.png b/client/apps/landing/public/og-image.png deleted file mode 100644 index ef7b506d91..0000000000 Binary files a/client/apps/landing/public/og-image.png and /dev/null differ diff --git a/client/apps/landing/public/resource_addresses/local/resource_addresses.json b/client/apps/landing/public/resource_addresses/local/resource_addresses.json deleted file mode 100644 index 6ab080f438..0000000000 --- a/client/apps/landing/public/resource_addresses/local/resource_addresses.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "STONE": [1, "0x10b3d48c8f0cb6a3d009d3548ab3db455d7fa86407c8869c8525d7f977cfedd"], - "COAL": [2, "0x5dfd0869838aa5a19c54a28717322df1c29c8e0d41a5c6ef126c003f9c29c5d"], - "WOOD": [3, "0x76b8390d8ba5d26423ea5af6ad31b62639ca4a5238e74db1e41dc67b8f57bcd"], - "COPPER": [4, "0x11f4b77a1e0aa2642730a38b4cea40ad4bea984379234bdb60cc41d9ebcd17f"], - "IRONWOOD": [5, "0x453e4a8802c423877beaa3f1ca0fcc3fcfcb543ff92e8b1355381bda4775d48"], - "OBSIDIAN": [6, "0x2c155f2164b68657d0ea8206fcb8c852e91dd5168126437708138d679e31877"], - "GOLD": [7, "0x54a6240d12444353c78a7f64d91e4f8eabc947b760b9369a05b3b154b68b503"], - "SILVER": [8, "0x35e191ed0abcf8270e1b4ae5c7121669ebdc675424dc669f74f8f32a62a61b1"], - "MITHRAL": [9, "0x2925a949eee52af5820a6ba2bdd9aae082ef46082f9a4e1edeb376ce61278a8"], - "ALCHEMICALSILVER": [10, "0x22ae713a2c06f3687f8a50823a16a8e86f49ed1505c43902849fd251e0f5adf"], - "COLDIRON": [11, "0x14e6946dbe9b530bd04d1c347ed695e6f49a163985d8a3410a8a1e1628178a4"], - "DEEPCRYSTAL": [12, "0x30617a0b90f2b04fb1c3e4d5f9e8baca60bde357cdceaa1ea136b1ee7312807"], - "RUBY": [13, "0x47286cdb7554cef18df9eba041164b450fbd1b860825cfa3db2621e4dc7d303"], - "DIAMONDS": [14, "0x18159aba74ae56043f653e5971be4339b0ddc1acdded44d4d1d5373cf7f5534"], - "HARTWOOD": [15, "0x4c7d2035de503300081c41c10dbec1cb2059e6291c7c9fda86610b4b8ecd579"], - "IGNIUM": [16, "0x62d79c2f5f0a7e1485f1948145197dee7f1e35443999daf55016ae39cad7810"], - "TWILIGHTQUARTZ": [17, "0x6cb29e0530292656a0e8ecf73fc04e00c8b68c58ff44a69cca2919cd804c528"], - "TRUEICE": [18, "0x10bc643e2a16bc214c6d3e27972263828e8a137fc634099255b7302eaf38a23"], - "ADAMANTINE": [19, "0x6c4c97ecee863c57c978952ca271065704c3b5ac7010962bdc9c97944c0bd37"], - "SAPPHIRE": [20, "0x70b0dbcbfafd50a1bd7602fd02fc6fcdfc48ece068603a016ffdafb968e2587"], - "ETHEREALSILICA": [21, "0x72fb88593bd78eb19f1514f6a2537b943d23db15ad067e85678f6e9a52345c5"], - "DRAGONHIDE": [22, "0xbeaedcc84e52b9f6197ad5cb5b441fac304afdd036438c208ae3928dd30de0"], - "DEMONHIDE": [28, "0x3f7d97969da364fd2ac0da5b6a877e6c4d4bfade4b3db50561abe02aac3ea48"], - "ANCIENTFRAGMENT": [29, "0x10cb48622578710d600c1d8bf4942035f573d8f1ee95c8a4d3d242139441dbe"], - "DONKEY": [249, "0x1d1542407040c2dce32b3ea35b06c627d4c7c0c6b133972fb903a71fc96156d"], - "KNIGHT": [250, "0x25cebc9ae778dc52ba67b722406586cbabcfd752dda5c3aa541313189617806"], - "CROSSBOWMAN": [251, "0x32ffb922c07155cad08b60a98ce2f660d25b818945d111dc184c7da31cd118f"], - "PALADIN": [252, "0x6910caf9920622e1e0c1ae7b210204268b48146a717e83353a1cf307e42c635"], - "WHEAT": [254, "0x360a3d398a2164b8404a69b2c6f0527c3d6cef480d776b0cf38bb6f531473ab"], - "FISH": [255, "0x613688e2001af02f4181d76587f3e8bb90b516985087b64ec0eaa866ec3ae29"], - "LORDS": [253, "0x4b2162f4b591fbf2052f0600652655675471a850656468dc3ddf57ad4fdbf56"] -} diff --git a/client/apps/landing/public/resource_addresses/mainnet/resource_addresses.json b/client/apps/landing/public/resource_addresses/mainnet/resource_addresses.json deleted file mode 100644 index 0ffbd24534..0000000000 --- a/client/apps/landing/public/resource_addresses/mainnet/resource_addresses.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "STONE": [1, "0x439a1c010e3e1bb2d43d43411000893c0042bd88f6c701611a0ea914d426da4"], - "COAL": [2, "0xce635e3f241b0ae78c46a929d84a9101910188f9c4024eaa7559556503c31a"], - "WOOD": [3, "0x40d8907cec0f7ae9c364dfb12485a1314d84c129bf1898d2f3d4b7fcc7d44f4"], - "COPPER": [4, "0x66ed5c928ee027a9419ace1cbea8389885161db5572a7c5c4fef2310e9bf494"], - "IRONWOOD": [5, "0x1720cf6318bff45e62acc588680ae3cd4d5f8465b1d52cb710533c9299b031a"], - "OBSIDIAN": [6, "0x3b6448d09dcd023507376402686261f5d6739455fa02f804907b066e488da66"], - "GOLD": [7, "0xdff9dca192609c4e86ab3be22c7ec1e968876c992d21986f3c542be97fa2f"], - "SILVER": [8, "0x6fe21d2d4a8a05bdb70f09c9250af9870020d5dcc35f410b4a39d6605c3e353"], - "MITHRAL": [9, "0x67ba235c569c23877064b2ac6ebd4d79f32d3c00f5fab8e28a3b5700b957f6"], - "ALCHEMICALSILVER": [10, "0x3956a5301e99522038a2e7dcb9c2a89bf087ffa79310ee0a508b5538efd8ddd"], - "COLDIRON": [11, "0x555d713e59d4ff96b7960447e9bc9e79bfdeab5b0eea74e3df81bce61cfbc77"], - "DEEPCRYSTAL": [12, "0x1d655ac834d38df7921074fc1588411e202b1af83307cbd996983aff52db3a8"], - "RUBY": [13, "0x3d9b66720959d0e7687b898292c10e62e78626f2dba5e1909961a2ce3f86612"], - "DIAMONDS": [14, "0xe03ea8ae385f64754820af5c01c36abf1b8130dd6797d3fd9d430e4114e876"], - "HARTWOOD": [15, "0x5620aa7170cd66dbcbc37d03087bfe4633ffef91d3e4d97b501de906004f79b"], - "IGNIUM": [16, "0x625c1f789b03ebebc7a9322366f38ebad1f693b84b2abd8cb8f5b2748b0cdd5"], - "TWILIGHTQUARTZ": [17, "0x35e24c02409c3cfe8d5646399a62c4d102bb782938d5f5180e92c9c62d3faf7"], - "TRUEICE": [18, "0x4485f5a6e16562e1c761cd348e63256d00389e3ddf4f5d98afe7ab44c57c481"], - "ADAMANTINE": [19, "0x367f838f85a2f5e1580d6f011e4476f581083314cff8721ba3dda9706076eed"], - "SAPPHIRE": [20, "0x2f8dd022568af8f9f718aa37707a9b858529db56910633a160456838b6cbcbc"], - "ETHEREALSILICA": [21, "0x68b6e23cbbd58a644700f55e96c83580921e9f521b6e5175396b53ba7910e7d"], - "DRAGONHIDE": [22, "0x3bf856515bece3c93f5061b7941b8645f817a0acab93c758b8c7b4bc0afa3c6"], - "ANCIENTFRAGMENT": [29, "0x0695b08ecdfdd828c2e6267da62f59e6d7543e690ef56a484df25c8566b332a5"], - "DONKEY": [249, "0x264be95a4a2ace20add68cb321acdccd2f9f8440ee1c7abd85da44ddab01085"], - "KNIGHT": [250, "0xac965f9e67164723c16735a9da8dbc9eb8e43b1bd0323591e87c056badf606"], - "CROSSBOWMAN": [251, "0x67e4ac00a241be06ba6afc11fa2715ec7da0c42c05a67ef6ecfcfeda725aaa8"], - "PALADIN": [252, "0x3bc86299bee061c7c8d7546ccb62b9daf9bffc653b1508facb722c6593874bc"], - "WHEAT": [254, "0x57a3f1ee475e072ce3be41785c0e889b7295d7a0dcc22b992c5b9408dbeb280"], - "FISH": [255, "0x27719173cfe10f1aa38d2aaed0a075b6077290f1e817aa3485d2b828394f4d9"], - "LORDS": [253, "0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49"] -} diff --git a/client/apps/landing/public/resource_addresses/sepolia/resource_addresses.json b/client/apps/landing/public/resource_addresses/sepolia/resource_addresses.json deleted file mode 100644 index 141db8956f..0000000000 --- a/client/apps/landing/public/resource_addresses/sepolia/resource_addresses.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "STONE": [1, "0x6158648e6c53488e316a9f681623b9e0359240329a00e5d5f5e82da21453b4c"], - "COAL": [2, "0xeff1980a4f28877118e06aff65d8c972ccc69c7d699975194ae8e83978b116"], - "WOOD": [3, "0x1605f515516e0ea60df3ae92a8204037866c3b27199865133f9f9f35208d298"], - "COPPER": [4, "0x76c0ee15cd5e588f0fa6ffb7c9ce301f96d33cd9f6bf0760ed2e55407130e4"], - "IRONWOOD": [5, "0x9f9cb4a6cb392f2c8526ae6c1f48ddb1eb67598030afdcabe06a48c752b3c6"], - "OBSIDIAN": [6, "0x53d73cddd205f590bf93290fcce62cb1079bd440e7253bef50ce2d890583c09"], - "GOLD": [7, "0x45ee17873d009cb7f8ad88bdd01218b07ceb055a8b22d6a0795028b2aafd8d8"], - "SILVER": [8, "0x56defcf99c674db261f508b584537c760b9001df9a8cb13275afa564f600dbe"], - "MITHRAL": [9, "0x7613ec3c16e4cefc9c33bea2b7e16614a0c4b5237e26cf75f335e0f028da988"], - "ALCHEMICALSILVER": [10, "0x705f42f2a89bf32c504c19c618ca6738747871016bba0b3fc32f3cd73782160"], - "COLDIRON": [11, "0x22bc712f59ceefc7c7521c607eb5f48759ffd906ee6342ee80dad2973f58d8"], - "DEEPCRYSTAL": [12, "0x242f3bcca7f72b5ca034dfe9903bb73024353cec795dca1fd8e2f500d17a733"], - "RUBY": [13, "0x9c473b26f7df7897b517f3c9e1ce8f1f7236b67666983f5ddaf039ca4c46a9"], - "DIAMONDS": [14, "0x78d34a4af3742f6f3377e97dd69f95680bb0f08521ad935428e3b2c3c5ed01e"], - "HARTWOOD": [15, "0x3d3f23f4829b8fe343b00c44c63828f5a81e468fb30eb9504c7c44455cead7b"], - "IGNIUM": [16, "0x204f9596fa6f05c2de88f3a7fe42c0d11fb04cc96128f18fbe112e44f360696"], - "TWILIGHTQUARTZ": [17, "0x1a0f1b62ef495956532db0306d13c92c02604995178d3fc98b84c8b8fb8a18e"], - "TRUEICE": [18, "0x3e089cd9be6c251dae20c64649a770507750f4b4c9e65ebf30bdb63b541605d"], - "ADAMANTINE": [19, "0x55399ca187391f4cc03abb00a04e3b6974bc0d7757ad959ac2804e6c1c468d5"], - "SAPPHIRE": [20, "0x62feb496f301b27bbda2389463d1ca06ef9f22d4208aecef2e85da1e4c90c4f"], - "ETHEREALSILICA": [21, "0x25eb12bb5298a2b14ceb9109086d330810d55c5e9a8c17e60fc956453b30d14"], - "DRAGONHIDE": [22, "0x463ebcc1b9ac911930a471fb9b608e9e7ca07ed81aab66f8889dd45b41c28b2"], - "DEMONHIDE": [28, "0x9613c7e4c04929c616a81f150006bc1a96bb77426851d300ef3dfaf2d0c318"], - "ANCIENTFRAGMENT": [29, "0x403c764fd76f926eec43218f46f79cfb5fe86dfeb1ae76010027697f65733f1"], - "DONKEY": [249, "0x6b6c4437543e46a8a80835fa50643fbd32275d3836396d8cd9c1d7c987f4ea9"], - "KNIGHT": [250, "0x298cba6b152d04fd54195dbae0e74512ff740d14946d2d65f26d0c039feffe2"], - "CROSSBOWMAN": [251, "0x116ce3b8c4a70f61e0131cc8681bc50a5eb35276e7985c07e3a508c2eb25f8f"], - "PALADIN": [252, "0x63f2da6f023bb0f281daa4011beb62ef501207569654e01d9315673471b8839"], - "WHEAT": [254, "0x2cbcad77a7b2bdf87c128f035beef05e3a007c15b2e332b1f1fb04d19ffd1b4"], - "FISH": [255, "0x3da1d29652bf12f64366ca4e9b36ec046cc92f6dc3b4675d956db1c3d742f0f"], - "LORDS": [253, "0x342ad5cc14002c005a5cedcfce2bd3af98d5e7fb79e9bf949b3a91cf145d72e"] -} diff --git a/client/apps/landing/schema.graphql b/client/apps/landing/schema.graphql index f7dac9168a..7e55db3d6b 100644 --- a/client/apps/landing/schema.graphql +++ b/client/apps/landing/schema.graphql @@ -35,7 +35,122 @@ union ERC__Token = ERC20__Token | ERC721__Token scalar Enum -union ModelUnion = s0_eternum_AcceptOrder | s0_eternum_AcceptPartialOrder | s0_eternum_AddressName | s0_eternum_Army | s0_eternum_ArrivalTime | s0_eternum_Bank | s0_eternum_BankConfig | s0_eternum_Battle | s0_eternum_BattleClaimData | s0_eternum_BattleConfig | s0_eternum_BattleJoinData | s0_eternum_BattleLeaveData | s0_eternum_BattlePillageData | s0_eternum_BattleStartData | s0_eternum_Building | s0_eternum_BuildingCategoryPopConfig | s0_eternum_BuildingConfig | s0_eternum_BuildingGeneralConfig | s0_eternum_BuildingQuantityv2 | s0_eternum_BurnDonkey | s0_eternum_CancelOrder | s0_eternum_CapacityCategory | s0_eternum_CapacityConfig | s0_eternum_Contribution | s0_eternum_CreateGuild | s0_eternum_CreateOrder | s0_eternum_DetachedResource | s0_eternum_EntityName | s0_eternum_EntityOwner | s0_eternum_Epoch | s0_eternum_FragmentMineDiscovered | s0_eternum_GameEnded | s0_eternum_Guild | s0_eternum_GuildMember | s0_eternum_GuildWhitelist | s0_eternum_Health | s0_eternum_Hyperstructure | s0_eternum_HyperstructureCoOwnersChange | s0_eternum_HyperstructureConfig | s0_eternum_HyperstructureContribution | s0_eternum_HyperstructureFinished | s0_eternum_HyperstructureResourceConfig | s0_eternum_HyperstructureStarted | s0_eternum_JoinGuild | s0_eternum_Leaderboard | s0_eternum_LeaderboardEntry | s0_eternum_LeaderboardRegisterContribution | s0_eternum_LeaderboardRegisterShare | s0_eternum_LeaderboardRegistered | s0_eternum_LeaderboardRewardClaimed | s0_eternum_LevelingConfig | s0_eternum_Liquidity | s0_eternum_LiquidityEvent | s0_eternum_MapConfig | s0_eternum_MapExplored | s0_eternum_Market | s0_eternum_MercenariesConfig | s0_eternum_Message | s0_eternum_Movable | s0_eternum_Orders | s0_eternum_OwnedResourcesTracker | s0_eternum_Owner | s0_eternum_Population | s0_eternum_PopulationConfig | s0_eternum_Position | s0_eternum_Production | s0_eternum_ProductionConfig | s0_eternum_ProductionDeadline | s0_eternum_ProductionInput | s0_eternum_ProductionOutput | s0_eternum_Progress | s0_eternum_Protectee | s0_eternum_Protector | s0_eternum_Quantity | s0_eternum_QuantityTracker | s0_eternum_Quest | s0_eternum_QuestBonus | s0_eternum_QuestConfig | s0_eternum_QuestRewardConfig | s0_eternum_Realm | s0_eternum_RealmLevelConfig | s0_eternum_RealmMaxLevelConfig | s0_eternum_Resource | s0_eternum_ResourceAllowance | s0_eternum_ResourceBridgeConfig | s0_eternum_ResourceBridgeFeeSplitConfig | s0_eternum_ResourceBridgeWhitelistConfig | s0_eternum_ResourceCost | s0_eternum_ResourceTransferLock | s0_eternum_Season | s0_eternum_SeasonAddressesConfig | s0_eternum_SeasonBridgeConfig | s0_eternum_SettleRealmData | s0_eternum_SettlementConfig | s0_eternum_SpeedConfig | s0_eternum_Stamina | s0_eternum_StaminaConfig | s0_eternum_StaminaRefillConfig | s0_eternum_Status | s0_eternum_Structure | s0_eternum_StructureCount | s0_eternum_SwapEvent | s0_eternum_TickConfig | s0_eternum_Tile | s0_eternum_Trade | s0_eternum_Transfer | s0_eternum_Travel | s0_eternum_TravelFoodCostConfig | s0_eternum_TravelStaminaCostConfig | s0_eternum_TroopConfig | s0_eternum_TrophyCreation | s0_eternum_TrophyProgression | s0_eternum_VRFConfig | s0_eternum_Weight | s0_eternum_WeightConfig | s0_eternum_WorldConfig +union ModelUnion = + | s1_eternum_AcceptOrder + | s1_eternum_AcceptPartialOrder + | s1_eternum_AddressName + | s1_eternum_Army + | s1_eternum_ArrivalTime + | s1_eternum_Bank + | s1_eternum_BankConfig + | s1_eternum_Battle + | s1_eternum_BattleClaimData + | s1_eternum_BattleConfig + | s1_eternum_BattleJoinData + | s1_eternum_BattleLeaveData + | s1_eternum_BattlePillageData + | s1_eternum_BattleStartData + | s1_eternum_Building + | s1_eternum_BuildingCategoryPopConfig + | s1_eternum_BuildingConfig + | s1_eternum_BuildingGeneralConfig + | s1_eternum_BuildingQuantityv2 + | s1_eternum_BurnDonkey + | s1_eternum_CancelOrder + | s1_eternum_CapacityCategory + | s1_eternum_CapacityConfig + | s1_eternum_Contribution + | s1_eternum_CreateGuild + | s1_eternum_CreateOrder + | s1_eternum_DetachedResource + | s1_eternum_EntityName + | s1_eternum_EntityOwner + | s1_eternum_Epoch + | s1_eternum_FragmentMineDiscovered + | s1_eternum_GameEnded + | s1_eternum_Guild + | s1_eternum_GuildMember + | s1_eternum_GuildWhitelist + | s1_eternum_Health + | s1_eternum_Hyperstructure + | s1_eternum_HyperstructureCoOwnersChange + | s1_eternum_HyperstructureConfig + | s1_eternum_HyperstructureContribution + | s1_eternum_HyperstructureFinished + | s1_eternum_HyperstructureResourceConfig + | s1_eternum_HyperstructureStarted + | s1_eternum_JoinGuild + | s1_eternum_Leaderboard + | s1_eternum_LeaderboardEntry + | s1_eternum_LeaderboardRegisterContribution + | s1_eternum_LeaderboardRegisterShare + | s1_eternum_LeaderboardRegistered + | s1_eternum_LeaderboardRewardClaimed + | s1_eternum_LevelingConfig + | s1_eternum_Liquidity + | s1_eternum_LiquidityEvent + | s1_eternum_MapConfig + | s1_eternum_MapExplored + | s1_eternum_Market + | s1_eternum_MercenariesConfig + | s1_eternum_Message + | s1_eternum_Movable + | s1_eternum_Orders + | s1_eternum_OwnedResourcesTracker + | s1_eternum_Owner + | s1_eternum_Population + | s1_eternum_PopulationConfig + | s1_eternum_Position + | s1_eternum_Production + | s1_eternum_ProductionConfig + | s1_eternum_ProductionDeadline + | s1_eternum_ProductionInput + | s1_eternum_ProductionOutput + | s1_eternum_Progress + | s1_eternum_Protectee + | s1_eternum_Protector + | s1_eternum_Quantity + | s1_eternum_QuantityTracker + | s1_eternum_Quest + | s1_eternum_QuestConfig + | s1_eternum_QuestRewardConfig + | s1_eternum_Realm + | s1_eternum_RealmLevelConfig + | s1_eternum_RealmMaxLevelConfig + | s1_eternum_Resource + | s1_eternum_ResourceAllowance + | s1_eternum_ResourceBridgeConfig + | s1_eternum_ResourceBridgeFeeSplitConfig + | s1_eternum_ResourceBridgeWhitelistConfig + | s1_eternum_ResourceCost + | s1_eternum_ResourceTransferLock + | s1_eternum_Season + | s1_eternum_SeasonAddressesConfig + | s1_eternum_SeasonBridgeConfig + | s1_eternum_SettleRealmData + | s1_eternum_SettlementConfig + | s1_eternum_SpeedConfig + | s1_eternum_Stamina + | s1_eternum_StaminaConfig + | s1_eternum_StaminaRefillConfig + | s1_eternum_Status + | s1_eternum_Structure + | s1_eternum_StructureCount + | s1_eternum_SwapEvent + | s1_eternum_TickConfig + | s1_eternum_Tile + | s1_eternum_Trade + | s1_eternum_Transfer + | s1_eternum_Travel + | s1_eternum_TravelFoodCostConfig + | s1_eternum_TravelStaminaCostConfig + | s1_eternum_TroopConfig + | s1_eternum_TrophyCreation + | s1_eternum_TrophyProgression + | s1_eternum_VRFConfig + | s1_eternum_Weight + | s1_eternum_WeightConfig + | s1_eternum_WorldConfig enum OrderDirection { ASC @@ -210,134 +325,1224 @@ type World__PageInfo { } type World__Query { - entities(after: Cursor, before: Cursor, first: Int, keys: [String], last: Int, limit: Int, offset: Int): World__EntityConnection + entities( + after: Cursor + before: Cursor + first: Int + keys: [String] + last: Int + limit: Int + offset: Int + ): World__EntityConnection entity(id: ID!): World__Entity! eventMessage(id: ID!): World__EventMessage! - eventMessages(after: Cursor, before: Cursor, first: Int, keys: [String], last: Int, limit: Int, offset: Int): World__EventMessageConnection - events(after: Cursor, before: Cursor, first: Int, keys: [String], last: Int, limit: Int, offset: Int): World__EventConnection + eventMessages( + after: Cursor + before: Cursor + first: Int + keys: [String] + last: Int + limit: Int + offset: Int + ): World__EventMessageConnection + events( + after: Cursor + before: Cursor + first: Int + keys: [String] + last: Int + limit: Int + offset: Int + ): World__EventConnection metadatas(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int): World__MetadataConnection model(id: ID!): World__Model! - models(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: World__ModelOrder): World__ModelConnection - s0EternumAcceptOrderModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_AcceptOrderOrder, where: s0_eternum_AcceptOrderWhereInput): s0_eternum_AcceptOrderConnection - s0EternumAcceptPartialOrderModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_AcceptPartialOrderOrder, where: s0_eternum_AcceptPartialOrderWhereInput): s0_eternum_AcceptPartialOrderConnection - s0EternumAddressNameModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_AddressNameOrder, where: s0_eternum_AddressNameWhereInput): s0_eternum_AddressNameConnection - s0EternumArmyModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ArmyOrder, where: s0_eternum_ArmyWhereInput): s0_eternum_ArmyConnection - s0EternumArrivalTimeModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ArrivalTimeOrder, where: s0_eternum_ArrivalTimeWhereInput): s0_eternum_ArrivalTimeConnection - s0EternumBankConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BankConfigOrder, where: s0_eternum_BankConfigWhereInput): s0_eternum_BankConfigConnection - s0EternumBankModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BankOrder, where: s0_eternum_BankWhereInput): s0_eternum_BankConnection - s0EternumBattleClaimDataModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BattleClaimDataOrder, where: s0_eternum_BattleClaimDataWhereInput): s0_eternum_BattleClaimDataConnection - s0EternumBattleConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BattleConfigOrder, where: s0_eternum_BattleConfigWhereInput): s0_eternum_BattleConfigConnection - s0EternumBattleJoinDataModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BattleJoinDataOrder, where: s0_eternum_BattleJoinDataWhereInput): s0_eternum_BattleJoinDataConnection - s0EternumBattleLeaveDataModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BattleLeaveDataOrder, where: s0_eternum_BattleLeaveDataWhereInput): s0_eternum_BattleLeaveDataConnection - s0EternumBattleModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BattleOrder, where: s0_eternum_BattleWhereInput): s0_eternum_BattleConnection - s0EternumBattlePillageDataModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BattlePillageDataOrder, where: s0_eternum_BattlePillageDataWhereInput): s0_eternum_BattlePillageDataConnection - s0EternumBattleStartDataModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BattleStartDataOrder, where: s0_eternum_BattleStartDataWhereInput): s0_eternum_BattleStartDataConnection - s0EternumBuildingCategoryPopConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BuildingCategoryPopConfigOrder, where: s0_eternum_BuildingCategoryPopConfigWhereInput): s0_eternum_BuildingCategoryPopConfigConnection - s0EternumBuildingConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BuildingConfigOrder, where: s0_eternum_BuildingConfigWhereInput): s0_eternum_BuildingConfigConnection - s0EternumBuildingGeneralConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BuildingGeneralConfigOrder, where: s0_eternum_BuildingGeneralConfigWhereInput): s0_eternum_BuildingGeneralConfigConnection - s0EternumBuildingModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BuildingOrder, where: s0_eternum_BuildingWhereInput): s0_eternum_BuildingConnection - s0EternumBuildingQuantityv2Models(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BuildingQuantityv2Order, where: s0_eternum_BuildingQuantityv2WhereInput): s0_eternum_BuildingQuantityv2Connection - s0EternumBurnDonkeyModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_BurnDonkeyOrder, where: s0_eternum_BurnDonkeyWhereInput): s0_eternum_BurnDonkeyConnection - s0EternumCancelOrderModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_CancelOrderOrder, where: s0_eternum_CancelOrderWhereInput): s0_eternum_CancelOrderConnection - s0EternumCapacityCategoryModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_CapacityCategoryOrder, where: s0_eternum_CapacityCategoryWhereInput): s0_eternum_CapacityCategoryConnection - s0EternumCapacityConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_CapacityConfigOrder, where: s0_eternum_CapacityConfigWhereInput): s0_eternum_CapacityConfigConnection - s0EternumContributionModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ContributionOrder, where: s0_eternum_ContributionWhereInput): s0_eternum_ContributionConnection - s0EternumCreateGuildModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_CreateGuildOrder, where: s0_eternum_CreateGuildWhereInput): s0_eternum_CreateGuildConnection - s0EternumCreateOrderModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_CreateOrderOrder, where: s0_eternum_CreateOrderWhereInput): s0_eternum_CreateOrderConnection - s0EternumDetachedResourceModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_DetachedResourceOrder, where: s0_eternum_DetachedResourceWhereInput): s0_eternum_DetachedResourceConnection - s0EternumEntityNameModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_EntityNameOrder, where: s0_eternum_EntityNameWhereInput): s0_eternum_EntityNameConnection - s0EternumEntityOwnerModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_EntityOwnerOrder, where: s0_eternum_EntityOwnerWhereInput): s0_eternum_EntityOwnerConnection - s0EternumEpochModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_EpochOrder, where: s0_eternum_EpochWhereInput): s0_eternum_EpochConnection - s0EternumFragmentMineDiscoveredModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_FragmentMineDiscoveredOrder, where: s0_eternum_FragmentMineDiscoveredWhereInput): s0_eternum_FragmentMineDiscoveredConnection - s0EternumGameEndedModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_GameEndedOrder, where: s0_eternum_GameEndedWhereInput): s0_eternum_GameEndedConnection - s0EternumGuildMemberModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_GuildMemberOrder, where: s0_eternum_GuildMemberWhereInput): s0_eternum_GuildMemberConnection - s0EternumGuildModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_GuildOrder, where: s0_eternum_GuildWhereInput): s0_eternum_GuildConnection - s0EternumGuildWhitelistModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_GuildWhitelistOrder, where: s0_eternum_GuildWhitelistWhereInput): s0_eternum_GuildWhitelistConnection - s0EternumHealthModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_HealthOrder, where: s0_eternum_HealthWhereInput): s0_eternum_HealthConnection - s0EternumHyperstructureCoOwnersChangeModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_HyperstructureCoOwnersChangeOrder, where: s0_eternum_HyperstructureCoOwnersChangeWhereInput): s0_eternum_HyperstructureCoOwnersChangeConnection - s0EternumHyperstructureConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_HyperstructureConfigOrder, where: s0_eternum_HyperstructureConfigWhereInput): s0_eternum_HyperstructureConfigConnection - s0EternumHyperstructureContributionModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_HyperstructureContributionOrder, where: s0_eternum_HyperstructureContributionWhereInput): s0_eternum_HyperstructureContributionConnection - s0EternumHyperstructureFinishedModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_HyperstructureFinishedOrder, where: s0_eternum_HyperstructureFinishedWhereInput): s0_eternum_HyperstructureFinishedConnection - s0EternumHyperstructureModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_HyperstructureOrder, where: s0_eternum_HyperstructureWhereInput): s0_eternum_HyperstructureConnection - s0EternumHyperstructureResourceConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_HyperstructureResourceConfigOrder, where: s0_eternum_HyperstructureResourceConfigWhereInput): s0_eternum_HyperstructureResourceConfigConnection - s0EternumHyperstructureStartedModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_HyperstructureStartedOrder, where: s0_eternum_HyperstructureStartedWhereInput): s0_eternum_HyperstructureStartedConnection - s0EternumJoinGuildModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_JoinGuildOrder, where: s0_eternum_JoinGuildWhereInput): s0_eternum_JoinGuildConnection - s0EternumLeaderboardEntryModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_LeaderboardEntryOrder, where: s0_eternum_LeaderboardEntryWhereInput): s0_eternum_LeaderboardEntryConnection - s0EternumLeaderboardModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_LeaderboardOrder, where: s0_eternum_LeaderboardWhereInput): s0_eternum_LeaderboardConnection - s0EternumLeaderboardRegisterContributionModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_LeaderboardRegisterContributionOrder, where: s0_eternum_LeaderboardRegisterContributionWhereInput): s0_eternum_LeaderboardRegisterContributionConnection - s0EternumLeaderboardRegisterShareModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_LeaderboardRegisterShareOrder, where: s0_eternum_LeaderboardRegisterShareWhereInput): s0_eternum_LeaderboardRegisterShareConnection - s0EternumLeaderboardRegisteredModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_LeaderboardRegisteredOrder, where: s0_eternum_LeaderboardRegisteredWhereInput): s0_eternum_LeaderboardRegisteredConnection - s0EternumLeaderboardRewardClaimedModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_LeaderboardRewardClaimedOrder, where: s0_eternum_LeaderboardRewardClaimedWhereInput): s0_eternum_LeaderboardRewardClaimedConnection - s0EternumLevelingConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_LevelingConfigOrder, where: s0_eternum_LevelingConfigWhereInput): s0_eternum_LevelingConfigConnection - s0EternumLiquidityEventModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_LiquidityEventOrder, where: s0_eternum_LiquidityEventWhereInput): s0_eternum_LiquidityEventConnection - s0EternumLiquidityModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_LiquidityOrder, where: s0_eternum_LiquidityWhereInput): s0_eternum_LiquidityConnection - s0EternumMapConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_MapConfigOrder, where: s0_eternum_MapConfigWhereInput): s0_eternum_MapConfigConnection - s0EternumMapExploredModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_MapExploredOrder, where: s0_eternum_MapExploredWhereInput): s0_eternum_MapExploredConnection - s0EternumMarketModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_MarketOrder, where: s0_eternum_MarketWhereInput): s0_eternum_MarketConnection - s0EternumMercenariesConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_MercenariesConfigOrder, where: s0_eternum_MercenariesConfigWhereInput): s0_eternum_MercenariesConfigConnection - s0EternumMessageModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_MessageOrder, where: s0_eternum_MessageWhereInput): s0_eternum_MessageConnection - s0EternumMovableModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_MovableOrder, where: s0_eternum_MovableWhereInput): s0_eternum_MovableConnection - s0EternumOrdersModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_OrdersOrder, where: s0_eternum_OrdersWhereInput): s0_eternum_OrdersConnection - s0EternumOwnedResourcesTrackerModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_OwnedResourcesTrackerOrder, where: s0_eternum_OwnedResourcesTrackerWhereInput): s0_eternum_OwnedResourcesTrackerConnection - s0EternumOwnerModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_OwnerOrder, where: s0_eternum_OwnerWhereInput): s0_eternum_OwnerConnection - s0EternumPopulationConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_PopulationConfigOrder, where: s0_eternum_PopulationConfigWhereInput): s0_eternum_PopulationConfigConnection - s0EternumPopulationModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_PopulationOrder, where: s0_eternum_PopulationWhereInput): s0_eternum_PopulationConnection - s0EternumPositionModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_PositionOrder, where: s0_eternum_PositionWhereInput): s0_eternum_PositionConnection - s0EternumProductionConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ProductionConfigOrder, where: s0_eternum_ProductionConfigWhereInput): s0_eternum_ProductionConfigConnection - s0EternumProductionDeadlineModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ProductionDeadlineOrder, where: s0_eternum_ProductionDeadlineWhereInput): s0_eternum_ProductionDeadlineConnection - s0EternumProductionInputModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ProductionInputOrder, where: s0_eternum_ProductionInputWhereInput): s0_eternum_ProductionInputConnection - s0EternumProductionModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ProductionOrder, where: s0_eternum_ProductionWhereInput): s0_eternum_ProductionConnection - s0EternumProductionOutputModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ProductionOutputOrder, where: s0_eternum_ProductionOutputWhereInput): s0_eternum_ProductionOutputConnection - s0EternumProgressModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ProgressOrder, where: s0_eternum_ProgressWhereInput): s0_eternum_ProgressConnection - s0EternumProtecteeModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ProtecteeOrder, where: s0_eternum_ProtecteeWhereInput): s0_eternum_ProtecteeConnection - s0EternumProtectorModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ProtectorOrder, where: s0_eternum_ProtectorWhereInput): s0_eternum_ProtectorConnection - s0EternumQuantityModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_QuantityOrder, where: s0_eternum_QuantityWhereInput): s0_eternum_QuantityConnection - s0EternumQuantityTrackerModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_QuantityTrackerOrder, where: s0_eternum_QuantityTrackerWhereInput): s0_eternum_QuantityTrackerConnection - s0EternumQuestBonusModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_QuestBonusOrder, where: s0_eternum_QuestBonusWhereInput): s0_eternum_QuestBonusConnection - s0EternumQuestConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_QuestConfigOrder, where: s0_eternum_QuestConfigWhereInput): s0_eternum_QuestConfigConnection - s0EternumQuestModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_QuestOrder, where: s0_eternum_QuestWhereInput): s0_eternum_QuestConnection - s0EternumQuestRewardConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_QuestRewardConfigOrder, where: s0_eternum_QuestRewardConfigWhereInput): s0_eternum_QuestRewardConfigConnection - s0EternumRealmLevelConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_RealmLevelConfigOrder, where: s0_eternum_RealmLevelConfigWhereInput): s0_eternum_RealmLevelConfigConnection - s0EternumRealmMaxLevelConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_RealmMaxLevelConfigOrder, where: s0_eternum_RealmMaxLevelConfigWhereInput): s0_eternum_RealmMaxLevelConfigConnection - s0EternumRealmModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_RealmOrder, where: s0_eternum_RealmWhereInput): s0_eternum_RealmConnection - s0EternumResourceAllowanceModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ResourceAllowanceOrder, where: s0_eternum_ResourceAllowanceWhereInput): s0_eternum_ResourceAllowanceConnection - s0EternumResourceBridgeConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ResourceBridgeConfigOrder, where: s0_eternum_ResourceBridgeConfigWhereInput): s0_eternum_ResourceBridgeConfigConnection - s0EternumResourceBridgeFeeSplitConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ResourceBridgeFeeSplitConfigOrder, where: s0_eternum_ResourceBridgeFeeSplitConfigWhereInput): s0_eternum_ResourceBridgeFeeSplitConfigConnection - s0EternumResourceBridgeWhitelistConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ResourceBridgeWhitelistConfigOrder, where: s0_eternum_ResourceBridgeWhitelistConfigWhereInput): s0_eternum_ResourceBridgeWhitelistConfigConnection - s0EternumResourceCostModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ResourceCostOrder, where: s0_eternum_ResourceCostWhereInput): s0_eternum_ResourceCostConnection - s0EternumResourceModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ResourceOrder, where: s0_eternum_ResourceWhereInput): s0_eternum_ResourceConnection - s0EternumResourceTransferLockModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_ResourceTransferLockOrder, where: s0_eternum_ResourceTransferLockWhereInput): s0_eternum_ResourceTransferLockConnection - s0EternumSeasonAddressesConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_SeasonAddressesConfigOrder, where: s0_eternum_SeasonAddressesConfigWhereInput): s0_eternum_SeasonAddressesConfigConnection - s0EternumSeasonBridgeConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_SeasonBridgeConfigOrder, where: s0_eternum_SeasonBridgeConfigWhereInput): s0_eternum_SeasonBridgeConfigConnection - s0EternumSeasonModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_SeasonOrder, where: s0_eternum_SeasonWhereInput): s0_eternum_SeasonConnection - s0EternumSettleRealmDataModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_SettleRealmDataOrder, where: s0_eternum_SettleRealmDataWhereInput): s0_eternum_SettleRealmDataConnection - s0EternumSettlementConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_SettlementConfigOrder, where: s0_eternum_SettlementConfigWhereInput): s0_eternum_SettlementConfigConnection - s0EternumSpeedConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_SpeedConfigOrder, where: s0_eternum_SpeedConfigWhereInput): s0_eternum_SpeedConfigConnection - s0EternumStaminaConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_StaminaConfigOrder, where: s0_eternum_StaminaConfigWhereInput): s0_eternum_StaminaConfigConnection - s0EternumStaminaModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_StaminaOrder, where: s0_eternum_StaminaWhereInput): s0_eternum_StaminaConnection - s0EternumStaminaRefillConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_StaminaRefillConfigOrder, where: s0_eternum_StaminaRefillConfigWhereInput): s0_eternum_StaminaRefillConfigConnection - s0EternumStatusModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_StatusOrder, where: s0_eternum_StatusWhereInput): s0_eternum_StatusConnection - s0EternumStructureCountModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_StructureCountOrder, where: s0_eternum_StructureCountWhereInput): s0_eternum_StructureCountConnection - s0EternumStructureModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_StructureOrder, where: s0_eternum_StructureWhereInput): s0_eternum_StructureConnection - s0EternumSwapEventModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_SwapEventOrder, where: s0_eternum_SwapEventWhereInput): s0_eternum_SwapEventConnection - s0EternumTickConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_TickConfigOrder, where: s0_eternum_TickConfigWhereInput): s0_eternum_TickConfigConnection - s0EternumTileModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_TileOrder, where: s0_eternum_TileWhereInput): s0_eternum_TileConnection - s0EternumTradeModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_TradeOrder, where: s0_eternum_TradeWhereInput): s0_eternum_TradeConnection - s0EternumTransferModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_TransferOrder, where: s0_eternum_TransferWhereInput): s0_eternum_TransferConnection - s0EternumTravelFoodCostConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_TravelFoodCostConfigOrder, where: s0_eternum_TravelFoodCostConfigWhereInput): s0_eternum_TravelFoodCostConfigConnection - s0EternumTravelModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_TravelOrder, where: s0_eternum_TravelWhereInput): s0_eternum_TravelConnection - s0EternumTravelStaminaCostConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_TravelStaminaCostConfigOrder, where: s0_eternum_TravelStaminaCostConfigWhereInput): s0_eternum_TravelStaminaCostConfigConnection - s0EternumTroopConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_TroopConfigOrder, where: s0_eternum_TroopConfigWhereInput): s0_eternum_TroopConfigConnection - s0EternumTrophyCreationModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_TrophyCreationOrder, where: s0_eternum_TrophyCreationWhereInput): s0_eternum_TrophyCreationConnection - s0EternumTrophyProgressionModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_TrophyProgressionOrder, where: s0_eternum_TrophyProgressionWhereInput): s0_eternum_TrophyProgressionConnection - s0EternumVrfConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_VRFConfigOrder, where: s0_eternum_VRFConfigWhereInput): s0_eternum_VRFConfigConnection - s0EternumWeightConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_WeightConfigOrder, where: s0_eternum_WeightConfigWhereInput): s0_eternum_WeightConfigConnection - s0EternumWeightModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_WeightOrder, where: s0_eternum_WeightWhereInput): s0_eternum_WeightConnection - s0EternumWorldConfigModels(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int, order: s0_eternum_WorldConfigOrder, where: s0_eternum_WorldConfigWhereInput): s0_eternum_WorldConfigConnection - tokenBalances(accountAddress: String!, after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int): Token__BalanceConnection - tokenTransfers(accountAddress: String!, after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int): Token__TransferConnection + models( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: World__ModelOrder + ): World__ModelConnection + s0EternumAcceptOrderModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_AcceptOrderOrder + where: s1_eternum_AcceptOrderWhereInput + ): s1_eternum_AcceptOrderConnection + s0EternumAcceptPartialOrderModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_AcceptPartialOrderOrder + where: s1_eternum_AcceptPartialOrderWhereInput + ): s1_eternum_AcceptPartialOrderConnection + s0EternumAddressNameModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_AddressNameOrder + where: s1_eternum_AddressNameWhereInput + ): s1_eternum_AddressNameConnection + s0EternumArmyModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ArmyOrder + where: s1_eternum_ArmyWhereInput + ): s1_eternum_ArmyConnection + s0EternumArrivalTimeModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ArrivalTimeOrder + where: s1_eternum_ArrivalTimeWhereInput + ): s1_eternum_ArrivalTimeConnection + s0EternumBankConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BankConfigOrder + where: s1_eternum_BankConfigWhereInput + ): s1_eternum_BankConfigConnection + s0EternumBankModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BankOrder + where: s1_eternum_BankWhereInput + ): s1_eternum_BankConnection + s0EternumBattleClaimDataModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BattleClaimDataOrder + where: s1_eternum_BattleClaimDataWhereInput + ): s1_eternum_BattleClaimDataConnection + s0EternumBattleConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BattleConfigOrder + where: s1_eternum_BattleConfigWhereInput + ): s1_eternum_BattleConfigConnection + s0EternumBattleJoinDataModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BattleJoinDataOrder + where: s1_eternum_BattleJoinDataWhereInput + ): s1_eternum_BattleJoinDataConnection + s0EternumBattleLeaveDataModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BattleLeaveDataOrder + where: s1_eternum_BattleLeaveDataWhereInput + ): s1_eternum_BattleLeaveDataConnection + s0EternumBattleModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BattleOrder + where: s1_eternum_BattleWhereInput + ): s1_eternum_BattleConnection + s0EternumBattlePillageDataModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BattlePillageDataOrder + where: s1_eternum_BattlePillageDataWhereInput + ): s1_eternum_BattlePillageDataConnection + s0EternumBattleStartDataModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BattleStartDataOrder + where: s1_eternum_BattleStartDataWhereInput + ): s1_eternum_BattleStartDataConnection + s0EternumBuildingCategoryPopConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BuildingCategoryPopConfigOrder + where: s1_eternum_BuildingCategoryPopConfigWhereInput + ): s1_eternum_BuildingCategoryPopConfigConnection + s0EternumBuildingConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BuildingConfigOrder + where: s1_eternum_BuildingConfigWhereInput + ): s1_eternum_BuildingConfigConnection + s0EternumBuildingGeneralConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BuildingGeneralConfigOrder + where: s1_eternum_BuildingGeneralConfigWhereInput + ): s1_eternum_BuildingGeneralConfigConnection + s0EternumBuildingModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BuildingOrder + where: s1_eternum_BuildingWhereInput + ): s1_eternum_BuildingConnection + s0EternumBuildingQuantityv2Models( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BuildingQuantityv2Order + where: s1_eternum_BuildingQuantityv2WhereInput + ): s1_eternum_BuildingQuantityv2Connection + s0EternumBurnDonkeyModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_BurnDonkeyOrder + where: s1_eternum_BurnDonkeyWhereInput + ): s1_eternum_BurnDonkeyConnection + s0EternumCancelOrderModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_CancelOrderOrder + where: s1_eternum_CancelOrderWhereInput + ): s1_eternum_CancelOrderConnection + s0EternumCapacityCategoryModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_CapacityCategoryOrder + where: s1_eternum_CapacityCategoryWhereInput + ): s1_eternum_CapacityCategoryConnection + s0EternumCapacityConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_CapacityConfigOrder + where: s1_eternum_CapacityConfigWhereInput + ): s1_eternum_CapacityConfigConnection + s0EternumContributionModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ContributionOrder + where: s1_eternum_ContributionWhereInput + ): s1_eternum_ContributionConnection + s0EternumCreateGuildModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_CreateGuildOrder + where: s1_eternum_CreateGuildWhereInput + ): s1_eternum_CreateGuildConnection + s0EternumCreateOrderModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_CreateOrderOrder + where: s1_eternum_CreateOrderWhereInput + ): s1_eternum_CreateOrderConnection + s0EternumDetachedResourceModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_DetachedResourceOrder + where: s1_eternum_DetachedResourceWhereInput + ): s1_eternum_DetachedResourceConnection + s0EternumEntityNameModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_EntityNameOrder + where: s1_eternum_EntityNameWhereInput + ): s1_eternum_EntityNameConnection + s0EternumEntityOwnerModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_EntityOwnerOrder + where: s1_eternum_EntityOwnerWhereInput + ): s1_eternum_EntityOwnerConnection + s0EternumEpochModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_EpochOrder + where: s1_eternum_EpochWhereInput + ): s1_eternum_EpochConnection + s0EternumFragmentMineDiscoveredModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_FragmentMineDiscoveredOrder + where: s1_eternum_FragmentMineDiscoveredWhereInput + ): s1_eternum_FragmentMineDiscoveredConnection + s0EternumGameEndedModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_GameEndedOrder + where: s1_eternum_GameEndedWhereInput + ): s1_eternum_GameEndedConnection + s0EternumGuildMemberModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_GuildMemberOrder + where: s1_eternum_GuildMemberWhereInput + ): s1_eternum_GuildMemberConnection + s0EternumGuildModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_GuildOrder + where: s1_eternum_GuildWhereInput + ): s1_eternum_GuildConnection + s0EternumGuildWhitelistModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_GuildWhitelistOrder + where: s1_eternum_GuildWhitelistWhereInput + ): s1_eternum_GuildWhitelistConnection + s0EternumHealthModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_HealthOrder + where: s1_eternum_HealthWhereInput + ): s1_eternum_HealthConnection + s0EternumHyperstructureCoOwnersChangeModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_HyperstructureCoOwnersChangeOrder + where: s1_eternum_HyperstructureCoOwnersChangeWhereInput + ): s1_eternum_HyperstructureCoOwnersChangeConnection + s0EternumHyperstructureConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_HyperstructureConfigOrder + where: s1_eternum_HyperstructureConfigWhereInput + ): s1_eternum_HyperstructureConfigConnection + s0EternumHyperstructureContributionModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_HyperstructureContributionOrder + where: s1_eternum_HyperstructureContributionWhereInput + ): s1_eternum_HyperstructureContributionConnection + s0EternumHyperstructureFinishedModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_HyperstructureFinishedOrder + where: s1_eternum_HyperstructureFinishedWhereInput + ): s1_eternum_HyperstructureFinishedConnection + s0EternumHyperstructureModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_HyperstructureOrder + where: s1_eternum_HyperstructureWhereInput + ): s1_eternum_HyperstructureConnection + s0EternumHyperstructureResourceConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_HyperstructureResourceConfigOrder + where: s1_eternum_HyperstructureResourceConfigWhereInput + ): s1_eternum_HyperstructureResourceConfigConnection + s0EternumHyperstructureStartedModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_HyperstructureStartedOrder + where: s1_eternum_HyperstructureStartedWhereInput + ): s1_eternum_HyperstructureStartedConnection + s0EternumJoinGuildModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_JoinGuildOrder + where: s1_eternum_JoinGuildWhereInput + ): s1_eternum_JoinGuildConnection + s0EternumLeaderboardEntryModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_LeaderboardEntryOrder + where: s1_eternum_LeaderboardEntryWhereInput + ): s1_eternum_LeaderboardEntryConnection + s0EternumLeaderboardModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_LeaderboardOrder + where: s1_eternum_LeaderboardWhereInput + ): s1_eternum_LeaderboardConnection + s0EternumLeaderboardRegisterContributionModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_LeaderboardRegisterContributionOrder + where: s1_eternum_LeaderboardRegisterContributionWhereInput + ): s1_eternum_LeaderboardRegisterContributionConnection + s0EternumLeaderboardRegisterShareModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_LeaderboardRegisterShareOrder + where: s1_eternum_LeaderboardRegisterShareWhereInput + ): s1_eternum_LeaderboardRegisterShareConnection + s0EternumLeaderboardRegisteredModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_LeaderboardRegisteredOrder + where: s1_eternum_LeaderboardRegisteredWhereInput + ): s1_eternum_LeaderboardRegisteredConnection + s0EternumLeaderboardRewardClaimedModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_LeaderboardRewardClaimedOrder + where: s1_eternum_LeaderboardRewardClaimedWhereInput + ): s1_eternum_LeaderboardRewardClaimedConnection + s0EternumLevelingConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_LevelingConfigOrder + where: s1_eternum_LevelingConfigWhereInput + ): s1_eternum_LevelingConfigConnection + s0EternumLiquidityEventModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_LiquidityEventOrder + where: s1_eternum_LiquidityEventWhereInput + ): s1_eternum_LiquidityEventConnection + s0EternumLiquidityModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_LiquidityOrder + where: s1_eternum_LiquidityWhereInput + ): s1_eternum_LiquidityConnection + s0EternumMapConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_MapConfigOrder + where: s1_eternum_MapConfigWhereInput + ): s1_eternum_MapConfigConnection + s0EternumMapExploredModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_MapExploredOrder + where: s1_eternum_MapExploredWhereInput + ): s1_eternum_MapExploredConnection + s0EternumMarketModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_MarketOrder + where: s1_eternum_MarketWhereInput + ): s1_eternum_MarketConnection + s0EternumMercenariesConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_MercenariesConfigOrder + where: s1_eternum_MercenariesConfigWhereInput + ): s1_eternum_MercenariesConfigConnection + s0EternumMessageModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_MessageOrder + where: s1_eternum_MessageWhereInput + ): s1_eternum_MessageConnection + s0EternumMovableModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_MovableOrder + where: s1_eternum_MovableWhereInput + ): s1_eternum_MovableConnection + s0EternumOrdersModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_OrdersOrder + where: s1_eternum_OrdersWhereInput + ): s1_eternum_OrdersConnection + s0EternumOwnedResourcesTrackerModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_OwnedResourcesTrackerOrder + where: s1_eternum_OwnedResourcesTrackerWhereInput + ): s1_eternum_OwnedResourcesTrackerConnection + s0EternumOwnerModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_OwnerOrder + where: s1_eternum_OwnerWhereInput + ): s1_eternum_OwnerConnection + s0EternumPopulationConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_PopulationConfigOrder + where: s1_eternum_PopulationConfigWhereInput + ): s1_eternum_PopulationConfigConnection + s0EternumPopulationModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_PopulationOrder + where: s1_eternum_PopulationWhereInput + ): s1_eternum_PopulationConnection + s0EternumPositionModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_PositionOrder + where: s1_eternum_PositionWhereInput + ): s1_eternum_PositionConnection + s0EternumProductionConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ProductionConfigOrder + where: s1_eternum_ProductionConfigWhereInput + ): s1_eternum_ProductionConfigConnection + s0EternumProductionDeadlineModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ProductionDeadlineOrder + where: s1_eternum_ProductionDeadlineWhereInput + ): s1_eternum_ProductionDeadlineConnection + s0EternumProductionInputModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ProductionInputOrder + where: s1_eternum_ProductionInputWhereInput + ): s1_eternum_ProductionInputConnection + s0EternumProductionModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ProductionOrder + where: s1_eternum_ProductionWhereInput + ): s1_eternum_ProductionConnection + s0EternumProductionOutputModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ProductionOutputOrder + where: s1_eternum_ProductionOutputWhereInput + ): s1_eternum_ProductionOutputConnection + s0EternumProgressModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ProgressOrder + where: s1_eternum_ProgressWhereInput + ): s1_eternum_ProgressConnection + s0EternumProtecteeModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ProtecteeOrder + where: s1_eternum_ProtecteeWhereInput + ): s1_eternum_ProtecteeConnection + s0EternumProtectorModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ProtectorOrder + where: s1_eternum_ProtectorWhereInput + ): s1_eternum_ProtectorConnection + s0EternumQuantityModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_QuantityOrder + where: s1_eternum_QuantityWhereInput + ): s1_eternum_QuantityConnection + s0EternumQuantityTrackerModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_QuantityTrackerOrder + where: s1_eternum_QuantityTrackerWhereInput + ): s1_eternum_QuantityTrackerConnection + + s0EternumQuestConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_QuestConfigOrder + where: s1_eternum_QuestConfigWhereInput + ): s1_eternum_QuestConfigConnection + s0EternumQuestModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_QuestOrder + where: s1_eternum_QuestWhereInput + ): s1_eternum_QuestConnection + s0EternumQuestRewardConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_QuestRewardConfigOrder + where: s1_eternum_QuestRewardConfigWhereInput + ): s1_eternum_QuestRewardConfigConnection + s0EternumRealmLevelConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_RealmLevelConfigOrder + where: s1_eternum_RealmLevelConfigWhereInput + ): s1_eternum_RealmLevelConfigConnection + s0EternumRealmMaxLevelConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_RealmMaxLevelConfigOrder + where: s1_eternum_RealmMaxLevelConfigWhereInput + ): s1_eternum_RealmMaxLevelConfigConnection + s0EternumRealmModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_RealmOrder + where: s1_eternum_RealmWhereInput + ): s1_eternum_RealmConnection + s0EternumResourceAllowanceModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ResourceAllowanceOrder + where: s1_eternum_ResourceAllowanceWhereInput + ): s1_eternum_ResourceAllowanceConnection + s0EternumResourceBridgeConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ResourceBridgeConfigOrder + where: s1_eternum_ResourceBridgeConfigWhereInput + ): s1_eternum_ResourceBridgeConfigConnection + s0EternumResourceBridgeFeeSplitConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ResourceBridgeFeeSplitConfigOrder + where: s1_eternum_ResourceBridgeFeeSplitConfigWhereInput + ): s1_eternum_ResourceBridgeFeeSplitConfigConnection + s0EternumResourceBridgeWhitelistConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ResourceBridgeWhitelistConfigOrder + where: s1_eternum_ResourceBridgeWhitelistConfigWhereInput + ): s1_eternum_ResourceBridgeWhitelistConfigConnection + s0EternumResourceCostModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ResourceCostOrder + where: s1_eternum_ResourceCostWhereInput + ): s1_eternum_ResourceCostConnection + s0EternumResourceModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ResourceOrder + where: s1_eternum_ResourceWhereInput + ): s1_eternum_ResourceConnection + s0EternumResourceTransferLockModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_ResourceTransferLockOrder + where: s1_eternum_ResourceTransferLockWhereInput + ): s1_eternum_ResourceTransferLockConnection + s0EternumSeasonAddressesConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_SeasonAddressesConfigOrder + where: s1_eternum_SeasonAddressesConfigWhereInput + ): s1_eternum_SeasonAddressesConfigConnection + s0EternumSeasonBridgeConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_SeasonBridgeConfigOrder + where: s1_eternum_SeasonBridgeConfigWhereInput + ): s1_eternum_SeasonBridgeConfigConnection + s0EternumSeasonModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_SeasonOrder + where: s1_eternum_SeasonWhereInput + ): s1_eternum_SeasonConnection + s0EternumSettleRealmDataModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_SettleRealmDataOrder + where: s1_eternum_SettleRealmDataWhereInput + ): s1_eternum_SettleRealmDataConnection + s0EternumSettlementConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_SettlementConfigOrder + where: s1_eternum_SettlementConfigWhereInput + ): s1_eternum_SettlementConfigConnection + s0EternumSpeedConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_SpeedConfigOrder + where: s1_eternum_SpeedConfigWhereInput + ): s1_eternum_SpeedConfigConnection + s0EternumStaminaConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_StaminaConfigOrder + where: s1_eternum_StaminaConfigWhereInput + ): s1_eternum_StaminaConfigConnection + s0EternumStaminaModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_StaminaOrder + where: s1_eternum_StaminaWhereInput + ): s1_eternum_StaminaConnection + s0EternumStaminaRefillConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_StaminaRefillConfigOrder + where: s1_eternum_StaminaRefillConfigWhereInput + ): s1_eternum_StaminaRefillConfigConnection + s0EternumStatusModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_StatusOrder + where: s1_eternum_StatusWhereInput + ): s1_eternum_StatusConnection + s0EternumStructureCountModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_StructureCountOrder + where: s1_eternum_StructureCountWhereInput + ): s1_eternum_StructureCountConnection + s0EternumStructureModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_StructureOrder + where: s1_eternum_StructureWhereInput + ): s1_eternum_StructureConnection + s0EternumSwapEventModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_SwapEventOrder + where: s1_eternum_SwapEventWhereInput + ): s1_eternum_SwapEventConnection + s0EternumTickConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_TickConfigOrder + where: s1_eternum_TickConfigWhereInput + ): s1_eternum_TickConfigConnection + s0EternumTileModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_TileOrder + where: s1_eternum_TileWhereInput + ): s1_eternum_TileConnection + s0EternumTradeModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_TradeOrder + where: s1_eternum_TradeWhereInput + ): s1_eternum_TradeConnection + s0EternumTransferModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_TransferOrder + where: s1_eternum_TransferWhereInput + ): s1_eternum_TransferConnection + s0EternumTravelFoodCostConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_TravelFoodCostConfigOrder + where: s1_eternum_TravelFoodCostConfigWhereInput + ): s1_eternum_TravelFoodCostConfigConnection + s0EternumTravelModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_TravelOrder + where: s1_eternum_TravelWhereInput + ): s1_eternum_TravelConnection + s0EternumTravelStaminaCostConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_TravelStaminaCostConfigOrder + where: s1_eternum_TravelStaminaCostConfigWhereInput + ): s1_eternum_TravelStaminaCostConfigConnection + s0EternumTroopConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_TroopConfigOrder + where: s1_eternum_TroopConfigWhereInput + ): s1_eternum_TroopConfigConnection + s0EternumTrophyCreationModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_TrophyCreationOrder + where: s1_eternum_TrophyCreationWhereInput + ): s1_eternum_TrophyCreationConnection + s0EternumTrophyProgressionModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_TrophyProgressionOrder + where: s1_eternum_TrophyProgressionWhereInput + ): s1_eternum_TrophyProgressionConnection + s0EternumVrfConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_VRFConfigOrder + where: s1_eternum_VRFConfigWhereInput + ): s1_eternum_VRFConfigConnection + s0EternumWeightConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_WeightConfigOrder + where: s1_eternum_WeightConfigWhereInput + ): s1_eternum_WeightConfigConnection + s0EternumWeightModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_WeightOrder + where: s1_eternum_WeightWhereInput + ): s1_eternum_WeightConnection + s0EternumWorldConfigModels( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + order: s1_eternum_WorldConfigOrder + where: s1_eternum_WorldConfigWhereInput + ): s1_eternum_WorldConfigConnection + tokenBalances( + accountAddress: String! + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + ): Token__BalanceConnection + tokenTransfers( + accountAddress: String! + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + ): Token__TransferConnection transaction(transactionHash: ID!): World__Transaction! - transactions(after: Cursor, before: Cursor, first: Int, last: Int, limit: Int, offset: Int): World__TransactionConnection + transactions( + after: Cursor + before: Cursor + first: Int + last: Int + limit: Int + offset: Int + ): World__TransactionConnection } type World__Social { @@ -379,7 +1584,7 @@ scalar bool scalar felt252 -type s0_eternum_AcceptOrder { +type s1_eternum_AcceptOrder { entity: World__Entity eventMessage: World__EventMessage id: u32 @@ -389,23 +1594,23 @@ type s0_eternum_AcceptOrder { trade_id: u32 } -type s0_eternum_AcceptOrderConnection { - edges: [s0_eternum_AcceptOrderEdge] +type s1_eternum_AcceptOrderConnection { + edges: [s1_eternum_AcceptOrderEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_AcceptOrderEdge { +type s1_eternum_AcceptOrderEdge { cursor: Cursor - node: s0_eternum_AcceptOrder + node: s1_eternum_AcceptOrder } -input s0_eternum_AcceptOrderOrder { +input s1_eternum_AcceptOrderOrder { direction: OrderDirection! - field: s0_eternum_AcceptOrderOrderField! + field: s1_eternum_AcceptOrderOrderField! } -enum s0_eternum_AcceptOrderOrderField { +enum s1_eternum_AcceptOrderOrderField { ID MAKER_ID TAKER_ID @@ -413,7 +1618,7 @@ enum s0_eternum_AcceptOrderOrderField { TRADE_ID } -input s0_eternum_AcceptOrderWhereInput { +input s1_eternum_AcceptOrderWhereInput { id: u32 idEQ: u32 idGT: u32 @@ -471,7 +1676,7 @@ input s0_eternum_AcceptOrderWhereInput { trade_idNOTLIKE: u32 } -type s0_eternum_AcceptPartialOrder { +type s1_eternum_AcceptPartialOrder { entity: World__Entity eventMessage: World__EventMessage maker_id: u32 @@ -480,30 +1685,30 @@ type s0_eternum_AcceptPartialOrder { trade_id: u32 } -type s0_eternum_AcceptPartialOrderConnection { - edges: [s0_eternum_AcceptPartialOrderEdge] +type s1_eternum_AcceptPartialOrderConnection { + edges: [s1_eternum_AcceptPartialOrderEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_AcceptPartialOrderEdge { +type s1_eternum_AcceptPartialOrderEdge { cursor: Cursor - node: s0_eternum_AcceptPartialOrder + node: s1_eternum_AcceptPartialOrder } -input s0_eternum_AcceptPartialOrderOrder { +input s1_eternum_AcceptPartialOrderOrder { direction: OrderDirection! - field: s0_eternum_AcceptPartialOrderOrderField! + field: s1_eternum_AcceptPartialOrderOrderField! } -enum s0_eternum_AcceptPartialOrderOrderField { +enum s1_eternum_AcceptPartialOrderOrderField { MAKER_ID TAKER_ID TIMESTAMP TRADE_ID } -input s0_eternum_AcceptPartialOrderWhereInput { +input s1_eternum_AcceptPartialOrderWhereInput { maker_id: u32 maker_idEQ: u32 maker_idGT: u32 @@ -550,35 +1755,35 @@ input s0_eternum_AcceptPartialOrderWhereInput { trade_idNOTLIKE: u32 } -type s0_eternum_AddressName { +type s1_eternum_AddressName { address: felt252 entity: World__Entity eventMessage: World__EventMessage name: felt252 } -type s0_eternum_AddressNameConnection { - edges: [s0_eternum_AddressNameEdge] +type s1_eternum_AddressNameConnection { + edges: [s1_eternum_AddressNameEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_AddressNameEdge { +type s1_eternum_AddressNameEdge { cursor: Cursor - node: s0_eternum_AddressName + node: s1_eternum_AddressName } -input s0_eternum_AddressNameOrder { +input s1_eternum_AddressNameOrder { direction: OrderDirection! - field: s0_eternum_AddressNameOrderField! + field: s1_eternum_AddressNameOrderField! } -enum s0_eternum_AddressNameOrderField { +enum s1_eternum_AddressNameOrderField { ADDRESS NAME } -input s0_eternum_AddressNameWhereInput { +input s1_eternum_AddressNameWhereInput { address: felt252 addressEQ: felt252 addressGT: felt252 @@ -603,39 +1808,39 @@ input s0_eternum_AddressNameWhereInput { nameNOTLIKE: felt252 } -type s0_eternum_Army { +type s1_eternum_Army { battle_id: u32 battle_side: Enum entity: World__Entity entity_id: u32 eventMessage: World__EventMessage - troops: s0_eternum_Troops + troops: s1_eternum_Troops } -type s0_eternum_ArmyConnection { - edges: [s0_eternum_ArmyEdge] +type s1_eternum_ArmyConnection { + edges: [s1_eternum_ArmyEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ArmyEdge { +type s1_eternum_ArmyEdge { cursor: Cursor - node: s0_eternum_Army + node: s1_eternum_Army } -input s0_eternum_ArmyOrder { +input s1_eternum_ArmyOrder { direction: OrderDirection! - field: s0_eternum_ArmyOrderField! + field: s1_eternum_ArmyOrderField! } -enum s0_eternum_ArmyOrderField { +enum s1_eternum_ArmyOrderField { BATTLE_ID BATTLE_SIDE ENTITY_ID TROOPS } -input s0_eternum_ArmyWhereInput { +input s1_eternum_ArmyWhereInput { battle_id: u32 battle_idEQ: u32 battle_idGT: u32 @@ -661,35 +1866,35 @@ input s0_eternum_ArmyWhereInput { entity_idNOTLIKE: u32 } -type s0_eternum_ArrivalTime { +type s1_eternum_ArrivalTime { arrives_at: u64 entity: World__Entity entity_id: u32 eventMessage: World__EventMessage } -type s0_eternum_ArrivalTimeConnection { - edges: [s0_eternum_ArrivalTimeEdge] +type s1_eternum_ArrivalTimeConnection { + edges: [s1_eternum_ArrivalTimeEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ArrivalTimeEdge { +type s1_eternum_ArrivalTimeEdge { cursor: Cursor - node: s0_eternum_ArrivalTime + node: s1_eternum_ArrivalTime } -input s0_eternum_ArrivalTimeOrder { +input s1_eternum_ArrivalTimeOrder { direction: OrderDirection! - field: s0_eternum_ArrivalTimeOrderField! + field: s1_eternum_ArrivalTimeOrderField! } -enum s0_eternum_ArrivalTimeOrderField { +enum s1_eternum_ArrivalTimeOrderField { ARRIVES_AT ENTITY_ID } -input s0_eternum_ArrivalTimeWhereInput { +input s1_eternum_ArrivalTimeWhereInput { arrives_at: u64 arrives_atEQ: u64 arrives_atGT: u64 @@ -714,7 +1919,7 @@ input s0_eternum_ArrivalTimeWhereInput { entity_idNOTLIKE: u32 } -type s0_eternum_Bank { +type s1_eternum_Bank { entity: World__Entity entity_id: u32 eventMessage: World__EventMessage @@ -725,7 +1930,7 @@ type s0_eternum_Bank { owner_fee_num: u128 } -type s0_eternum_BankConfig { +type s1_eternum_BankConfig { config_id: u32 entity: World__Entity eventMessage: World__EventMessage @@ -734,30 +1939,30 @@ type s0_eternum_BankConfig { lp_fee_num: u128 } -type s0_eternum_BankConfigConnection { - edges: [s0_eternum_BankConfigEdge] +type s1_eternum_BankConfigConnection { + edges: [s1_eternum_BankConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BankConfigEdge { +type s1_eternum_BankConfigEdge { cursor: Cursor - node: s0_eternum_BankConfig + node: s1_eternum_BankConfig } -input s0_eternum_BankConfigOrder { +input s1_eternum_BankConfigOrder { direction: OrderDirection! - field: s0_eternum_BankConfigOrderField! + field: s1_eternum_BankConfigOrderField! } -enum s0_eternum_BankConfigOrderField { +enum s1_eternum_BankConfigOrderField { CONFIG_ID LORDS_COST LP_FEE_DENOM LP_FEE_NUM } -input s0_eternum_BankConfigWhereInput { +input s1_eternum_BankConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -804,23 +2009,23 @@ input s0_eternum_BankConfigWhereInput { lp_fee_numNOTLIKE: u128 } -type s0_eternum_BankConnection { - edges: [s0_eternum_BankEdge] +type s1_eternum_BankConnection { + edges: [s1_eternum_BankEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BankEdge { +type s1_eternum_BankEdge { cursor: Cursor - node: s0_eternum_Bank + node: s1_eternum_Bank } -input s0_eternum_BankOrder { +input s1_eternum_BankOrder { direction: OrderDirection! - field: s0_eternum_BankOrderField! + field: s1_eternum_BankOrderField! } -enum s0_eternum_BankOrderField { +enum s1_eternum_BankOrderField { ENTITY_ID EXISTS OWNER_BRIDGE_FEE_DPT_PERCENT @@ -829,7 +2034,7 @@ enum s0_eternum_BankOrderField { OWNER_FEE_NUM } -input s0_eternum_BankWhereInput { +input s1_eternum_BankWhereInput { entity_id: u32 entity_idEQ: u32 entity_idGT: u32 @@ -888,15 +2093,15 @@ input s0_eternum_BankWhereInput { owner_fee_numNOTLIKE: u128 } -type s0_eternum_Battle { - attack_army: s0_eternum_BattleArmy - attack_army_health: s0_eternum_BattleHealth - attack_army_lifetime: s0_eternum_BattleArmy +type s1_eternum_Battle { + attack_army: s1_eternum_BattleArmy + attack_army_health: s1_eternum_BattleHealth + attack_army_lifetime: s1_eternum_BattleArmy attack_delta: u64 attackers_resources_escrow_id: u32 - defence_army: s0_eternum_BattleArmy - defence_army_health: s0_eternum_BattleHealth - defence_army_lifetime: s0_eternum_BattleArmy + defence_army: s1_eternum_BattleArmy + defence_army_health: s1_eternum_BattleHealth + defence_army_lifetime: s1_eternum_BattleArmy defence_delta: u64 defenders_resources_escrow_id: u32 duration_left: u64 @@ -907,13 +2112,13 @@ type s0_eternum_Battle { start_at: u64 } -type s0_eternum_BattleArmy { +type s1_eternum_BattleArmy { battle_id: u32 battle_side: Enum - troops: s0_eternum_Troops + troops: s1_eternum_Troops } -type s0_eternum_BattleClaimData { +type s1_eternum_BattleClaimData { claimee_address: ContractAddress claimee_name: felt252 claimer: ContractAddress @@ -930,23 +2135,23 @@ type s0_eternum_BattleClaimData { y: u32 } -type s0_eternum_BattleClaimDataConnection { - edges: [s0_eternum_BattleClaimDataEdge] +type s1_eternum_BattleClaimDataConnection { + edges: [s1_eternum_BattleClaimDataEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BattleClaimDataEdge { +type s1_eternum_BattleClaimDataEdge { cursor: Cursor - node: s0_eternum_BattleClaimData + node: s1_eternum_BattleClaimData } -input s0_eternum_BattleClaimDataOrder { +input s1_eternum_BattleClaimDataOrder { direction: OrderDirection! - field: s0_eternum_BattleClaimDataOrderField! + field: s1_eternum_BattleClaimDataOrderField! } -enum s0_eternum_BattleClaimDataOrderField { +enum s1_eternum_BattleClaimDataOrderField { CLAIMEE_ADDRESS CLAIMEE_NAME CLAIMER @@ -961,7 +2166,7 @@ enum s0_eternum_BattleClaimDataOrderField { Y } -input s0_eternum_BattleClaimDataWhereInput { +input s1_eternum_BattleClaimDataWhereInput { claimee_address: ContractAddress claimee_addressEQ: ContractAddress claimee_addressGT: ContractAddress @@ -1076,7 +2281,7 @@ input s0_eternum_BattleClaimDataWhereInput { yNOTLIKE: u32 } -type s0_eternum_BattleConfig { +type s1_eternum_BattleConfig { battle_delay_seconds: u64 config_id: u32 entity: World__Entity @@ -1085,30 +2290,30 @@ type s0_eternum_BattleConfig { regular_immunity_ticks: u8 } -type s0_eternum_BattleConfigConnection { - edges: [s0_eternum_BattleConfigEdge] +type s1_eternum_BattleConfigConnection { + edges: [s1_eternum_BattleConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BattleConfigEdge { +type s1_eternum_BattleConfigEdge { cursor: Cursor - node: s0_eternum_BattleConfig + node: s1_eternum_BattleConfig } -input s0_eternum_BattleConfigOrder { +input s1_eternum_BattleConfigOrder { direction: OrderDirection! - field: s0_eternum_BattleConfigOrderField! + field: s1_eternum_BattleConfigOrderField! } -enum s0_eternum_BattleConfigOrderField { +enum s1_eternum_BattleConfigOrderField { BATTLE_DELAY_SECONDS CONFIG_ID HYPERSTRUCTURE_IMMUNITY_TICKS REGULAR_IMMUNITY_TICKS } -input s0_eternum_BattleConfigWhereInput { +input s1_eternum_BattleConfigWhereInput { battle_delay_seconds: u64 battle_delay_secondsEQ: u64 battle_delay_secondsGT: u64 @@ -1155,23 +2360,23 @@ input s0_eternum_BattleConfigWhereInput { regular_immunity_ticksNOTLIKE: u8 } -type s0_eternum_BattleConnection { - edges: [s0_eternum_BattleEdge] +type s1_eternum_BattleConnection { + edges: [s1_eternum_BattleEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BattleEdge { +type s1_eternum_BattleEdge { cursor: Cursor - node: s0_eternum_Battle + node: s1_eternum_Battle } -type s0_eternum_BattleHealth { +type s1_eternum_BattleHealth { current: u128 lifetime: u128 } -type s0_eternum_BattleJoinData { +type s1_eternum_BattleJoinData { battle_entity_id: u32 duration_left: u64 entity: World__Entity @@ -1187,23 +2392,23 @@ type s0_eternum_BattleJoinData { y: u32 } -type s0_eternum_BattleJoinDataConnection { - edges: [s0_eternum_BattleJoinDataEdge] +type s1_eternum_BattleJoinDataConnection { + edges: [s1_eternum_BattleJoinDataEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BattleJoinDataEdge { +type s1_eternum_BattleJoinDataEdge { cursor: Cursor - node: s0_eternum_BattleJoinData + node: s1_eternum_BattleJoinData } -input s0_eternum_BattleJoinDataOrder { +input s1_eternum_BattleJoinDataOrder { direction: OrderDirection! - field: s0_eternum_BattleJoinDataOrderField! + field: s1_eternum_BattleJoinDataOrderField! } -enum s0_eternum_BattleJoinDataOrderField { +enum s1_eternum_BattleJoinDataOrderField { BATTLE_ENTITY_ID DURATION_LEFT EVENT_ID @@ -1217,7 +2422,7 @@ enum s0_eternum_BattleJoinDataOrderField { Y } -input s0_eternum_BattleJoinDataWhereInput { +input s1_eternum_BattleJoinDataWhereInput { battle_entity_id: u32 battle_entity_idEQ: u32 battle_entity_idGT: u32 @@ -1321,7 +2526,7 @@ input s0_eternum_BattleJoinDataWhereInput { yNOTLIKE: u32 } -type s0_eternum_BattleLeaveData { +type s1_eternum_BattleLeaveData { battle_entity_id: u32 duration_left: u64 entity: World__Entity @@ -1337,23 +2542,23 @@ type s0_eternum_BattleLeaveData { y: u32 } -type s0_eternum_BattleLeaveDataConnection { - edges: [s0_eternum_BattleLeaveDataEdge] +type s1_eternum_BattleLeaveDataConnection { + edges: [s1_eternum_BattleLeaveDataEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BattleLeaveDataEdge { +type s1_eternum_BattleLeaveDataEdge { cursor: Cursor - node: s0_eternum_BattleLeaveData + node: s1_eternum_BattleLeaveData } -input s0_eternum_BattleLeaveDataOrder { +input s1_eternum_BattleLeaveDataOrder { direction: OrderDirection! - field: s0_eternum_BattleLeaveDataOrderField! + field: s1_eternum_BattleLeaveDataOrderField! } -enum s0_eternum_BattleLeaveDataOrderField { +enum s1_eternum_BattleLeaveDataOrderField { BATTLE_ENTITY_ID DURATION_LEFT EVENT_ID @@ -1367,7 +2572,7 @@ enum s0_eternum_BattleLeaveDataOrderField { Y } -input s0_eternum_BattleLeaveDataWhereInput { +input s1_eternum_BattleLeaveDataWhereInput { battle_entity_id: u32 battle_entity_idEQ: u32 battle_entity_idGT: u32 @@ -1471,12 +2676,12 @@ input s0_eternum_BattleLeaveDataWhereInput { yNOTLIKE: u32 } -input s0_eternum_BattleOrder { +input s1_eternum_BattleOrder { direction: OrderDirection! - field: s0_eternum_BattleOrderField! + field: s1_eternum_BattleOrderField! } -enum s0_eternum_BattleOrderField { +enum s1_eternum_BattleOrderField { ATTACKERS_RESOURCES_ESCROW_ID ATTACK_ARMY ATTACK_ARMY_HEALTH @@ -1493,14 +2698,14 @@ enum s0_eternum_BattleOrderField { START_AT } -type s0_eternum_BattlePillageData { - attacker_lost_troops: s0_eternum_Troops +type s1_eternum_BattlePillageData { + attacker_lost_troops: s1_eternum_Troops destroyed_building_category: Enum entity: World__Entity eventMessage: World__EventMessage event_id: Enum id: u32 - pillaged_resources: [s0_eternum_u8u128] + pillaged_resources: [s1_eternum_u8u128] pillaged_structure_entity_id: u32 pillaged_structure_owner: ContractAddress pillaged_structure_owner_name: felt252 @@ -1508,7 +2713,7 @@ type s0_eternum_BattlePillageData { pillager_army_entity_id: u32 pillager_name: felt252 pillager_realm_entity_id: u32 - structure_lost_troops: s0_eternum_Troops + structure_lost_troops: s1_eternum_Troops structure_type: Enum timestamp: u64 winner: Enum @@ -1516,23 +2721,23 @@ type s0_eternum_BattlePillageData { y: u32 } -type s0_eternum_BattlePillageDataConnection { - edges: [s0_eternum_BattlePillageDataEdge] +type s1_eternum_BattlePillageDataConnection { + edges: [s1_eternum_BattlePillageDataEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BattlePillageDataEdge { +type s1_eternum_BattlePillageDataEdge { cursor: Cursor - node: s0_eternum_BattlePillageData + node: s1_eternum_BattlePillageData } -input s0_eternum_BattlePillageDataOrder { +input s1_eternum_BattlePillageDataOrder { direction: OrderDirection! - field: s0_eternum_BattlePillageDataOrderField! + field: s1_eternum_BattlePillageDataOrderField! } -enum s0_eternum_BattlePillageDataOrderField { +enum s1_eternum_BattlePillageDataOrderField { ATTACKER_LOST_TROOPS DESTROYED_BUILDING_CATEGORY EVENT_ID @@ -1553,7 +2758,7 @@ enum s0_eternum_BattlePillageDataOrderField { Y } -input s0_eternum_BattlePillageDataWhereInput { +input s1_eternum_BattlePillageDataWhereInput { destroyed_building_category: Enum event_id: Enum id: u32 @@ -1681,7 +2886,7 @@ input s0_eternum_BattlePillageDataWhereInput { yNOTLIKE: u32 } -type s0_eternum_BattleStartData { +type s1_eternum_BattleStartData { attacker: ContractAddress attacker_army_entity_id: u32 attacker_name: felt252 @@ -1700,23 +2905,23 @@ type s0_eternum_BattleStartData { y: u32 } -type s0_eternum_BattleStartDataConnection { - edges: [s0_eternum_BattleStartDataEdge] +type s1_eternum_BattleStartDataConnection { + edges: [s1_eternum_BattleStartDataEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BattleStartDataEdge { +type s1_eternum_BattleStartDataEdge { cursor: Cursor - node: s0_eternum_BattleStartData + node: s1_eternum_BattleStartData } -input s0_eternum_BattleStartDataOrder { +input s1_eternum_BattleStartDataOrder { direction: OrderDirection! - field: s0_eternum_BattleStartDataOrderField! + field: s1_eternum_BattleStartDataOrderField! } -enum s0_eternum_BattleStartDataOrderField { +enum s1_eternum_BattleStartDataOrderField { ATTACKER ATTACKER_ARMY_ENTITY_ID ATTACKER_NAME @@ -1733,7 +2938,7 @@ enum s0_eternum_BattleStartDataOrderField { Y } -input s0_eternum_BattleStartDataWhereInput { +input s1_eternum_BattleStartDataWhereInput { attacker: ContractAddress attackerEQ: ContractAddress attackerGT: ContractAddress @@ -1870,7 +3075,7 @@ input s0_eternum_BattleStartDataWhereInput { yNOTLIKE: u32 } -input s0_eternum_BattleWhereInput { +input s1_eternum_BattleWhereInput { attack_delta: u64 attack_deltaEQ: u64 attack_deltaGT: u64 @@ -1961,7 +3166,7 @@ input s0_eternum_BattleWhereInput { start_atNOTLIKE: u64 } -type s0_eternum_Building { +type s1_eternum_Building { bonus_percent: u32 category: Enum entity: World__Entity @@ -1976,7 +3181,7 @@ type s0_eternum_Building { produced_resource_type: u8 } -type s0_eternum_BuildingCategoryPopConfig { +type s1_eternum_BuildingCategoryPopConfig { building_category: Enum capacity: u32 config_id: u32 @@ -1985,30 +3190,30 @@ type s0_eternum_BuildingCategoryPopConfig { population: u32 } -type s0_eternum_BuildingCategoryPopConfigConnection { - edges: [s0_eternum_BuildingCategoryPopConfigEdge] +type s1_eternum_BuildingCategoryPopConfigConnection { + edges: [s1_eternum_BuildingCategoryPopConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BuildingCategoryPopConfigEdge { +type s1_eternum_BuildingCategoryPopConfigEdge { cursor: Cursor - node: s0_eternum_BuildingCategoryPopConfig + node: s1_eternum_BuildingCategoryPopConfig } -input s0_eternum_BuildingCategoryPopConfigOrder { +input s1_eternum_BuildingCategoryPopConfigOrder { direction: OrderDirection! - field: s0_eternum_BuildingCategoryPopConfigOrderField! + field: s1_eternum_BuildingCategoryPopConfigOrderField! } -enum s0_eternum_BuildingCategoryPopConfigOrderField { +enum s1_eternum_BuildingCategoryPopConfigOrderField { BUILDING_CATEGORY CAPACITY CONFIG_ID POPULATION } -input s0_eternum_BuildingCategoryPopConfigWhereInput { +input s1_eternum_BuildingCategoryPopConfigWhereInput { building_category: Enum capacity: u32 capacityEQ: u32 @@ -2045,7 +3250,7 @@ input s0_eternum_BuildingCategoryPopConfigWhereInput { populationNOTLIKE: u32 } -type s0_eternum_BuildingConfig { +type s1_eternum_BuildingConfig { category: Enum config_id: u32 entity: World__Entity @@ -2055,23 +3260,23 @@ type s0_eternum_BuildingConfig { resource_type: u8 } -type s0_eternum_BuildingConfigConnection { - edges: [s0_eternum_BuildingConfigEdge] +type s1_eternum_BuildingConfigConnection { + edges: [s1_eternum_BuildingConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BuildingConfigEdge { +type s1_eternum_BuildingConfigEdge { cursor: Cursor - node: s0_eternum_BuildingConfig + node: s1_eternum_BuildingConfig } -input s0_eternum_BuildingConfigOrder { +input s1_eternum_BuildingConfigOrder { direction: OrderDirection! - field: s0_eternum_BuildingConfigOrderField! + field: s1_eternum_BuildingConfigOrderField! } -enum s0_eternum_BuildingConfigOrderField { +enum s1_eternum_BuildingConfigOrderField { CATEGORY CONFIG_ID RESOURCE_COST_COUNT @@ -2079,7 +3284,7 @@ enum s0_eternum_BuildingConfigOrderField { RESOURCE_TYPE } -input s0_eternum_BuildingConfigWhereInput { +input s1_eternum_BuildingConfigWhereInput { category: Enum config_id: u32 config_idEQ: u32 @@ -2127,46 +3332,46 @@ input s0_eternum_BuildingConfigWhereInput { resource_typeNOTLIKE: u8 } -type s0_eternum_BuildingConnection { - edges: [s0_eternum_BuildingEdge] +type s1_eternum_BuildingConnection { + edges: [s1_eternum_BuildingEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BuildingEdge { +type s1_eternum_BuildingEdge { cursor: Cursor - node: s0_eternum_Building + node: s1_eternum_Building } -type s0_eternum_BuildingGeneralConfig { +type s1_eternum_BuildingGeneralConfig { base_cost_percent_increase: u16 config_id: u32 entity: World__Entity eventMessage: World__EventMessage } -type s0_eternum_BuildingGeneralConfigConnection { - edges: [s0_eternum_BuildingGeneralConfigEdge] +type s1_eternum_BuildingGeneralConfigConnection { + edges: [s1_eternum_BuildingGeneralConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BuildingGeneralConfigEdge { +type s1_eternum_BuildingGeneralConfigEdge { cursor: Cursor - node: s0_eternum_BuildingGeneralConfig + node: s1_eternum_BuildingGeneralConfig } -input s0_eternum_BuildingGeneralConfigOrder { +input s1_eternum_BuildingGeneralConfigOrder { direction: OrderDirection! - field: s0_eternum_BuildingGeneralConfigOrderField! + field: s1_eternum_BuildingGeneralConfigOrderField! } -enum s0_eternum_BuildingGeneralConfigOrderField { +enum s1_eternum_BuildingGeneralConfigOrderField { BASE_COST_PERCENT_INCREASE CONFIG_ID } -input s0_eternum_BuildingGeneralConfigWhereInput { +input s1_eternum_BuildingGeneralConfigWhereInput { base_cost_percent_increase: u16 base_cost_percent_increaseEQ: u16 base_cost_percent_increaseGT: u16 @@ -2191,12 +3396,12 @@ input s0_eternum_BuildingGeneralConfigWhereInput { config_idNOTLIKE: u32 } -input s0_eternum_BuildingOrder { +input s1_eternum_BuildingOrder { direction: OrderDirection! - field: s0_eternum_BuildingOrderField! + field: s1_eternum_BuildingOrderField! } -enum s0_eternum_BuildingOrderField { +enum s1_eternum_BuildingOrderField { BONUS_PERCENT CATEGORY ENTITY_ID @@ -2209,7 +3414,7 @@ enum s0_eternum_BuildingOrderField { PRODUCED_RESOURCE_TYPE } -type s0_eternum_BuildingQuantityv2 { +type s1_eternum_BuildingQuantityv2 { category: Enum entity: World__Entity entity_id: u32 @@ -2217,29 +3422,29 @@ type s0_eternum_BuildingQuantityv2 { value: u8 } -type s0_eternum_BuildingQuantityv2Connection { - edges: [s0_eternum_BuildingQuantityv2Edge] +type s1_eternum_BuildingQuantityv2Connection { + edges: [s1_eternum_BuildingQuantityv2Edge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BuildingQuantityv2Edge { +type s1_eternum_BuildingQuantityv2Edge { cursor: Cursor - node: s0_eternum_BuildingQuantityv2 + node: s1_eternum_BuildingQuantityv2 } -input s0_eternum_BuildingQuantityv2Order { +input s1_eternum_BuildingQuantityv2Order { direction: OrderDirection! - field: s0_eternum_BuildingQuantityv2OrderField! + field: s1_eternum_BuildingQuantityv2OrderField! } -enum s0_eternum_BuildingQuantityv2OrderField { +enum s1_eternum_BuildingQuantityv2OrderField { CATEGORY ENTITY_ID VALUE } -input s0_eternum_BuildingQuantityv2WhereInput { +input s1_eternum_BuildingQuantityv2WhereInput { category: Enum entity_id: u32 entity_idEQ: u32 @@ -2265,7 +3470,7 @@ input s0_eternum_BuildingQuantityv2WhereInput { valueNOTLIKE: u8 } -input s0_eternum_BuildingWhereInput { +input s1_eternum_BuildingWhereInput { bonus_percent: u32 bonus_percentEQ: u32 bonus_percentGT: u32 @@ -2358,7 +3563,7 @@ input s0_eternum_BuildingWhereInput { produced_resource_typeNOTLIKE: u8 } -type s0_eternum_BurnDonkey { +type s1_eternum_BurnDonkey { amount: u128 entity: World__Entity entity_id: u32 @@ -2367,30 +3572,30 @@ type s0_eternum_BurnDonkey { timestamp: u64 } -type s0_eternum_BurnDonkeyConnection { - edges: [s0_eternum_BurnDonkeyEdge] +type s1_eternum_BurnDonkeyConnection { + edges: [s1_eternum_BurnDonkeyEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_BurnDonkeyEdge { +type s1_eternum_BurnDonkeyEdge { cursor: Cursor - node: s0_eternum_BurnDonkey + node: s1_eternum_BurnDonkey } -input s0_eternum_BurnDonkeyOrder { +input s1_eternum_BurnDonkeyOrder { direction: OrderDirection! - field: s0_eternum_BurnDonkeyOrderField! + field: s1_eternum_BurnDonkeyOrderField! } -enum s0_eternum_BurnDonkeyOrderField { +enum s1_eternum_BurnDonkeyOrderField { AMOUNT ENTITY_ID PLAYER_ADDRESS TIMESTAMP } -input s0_eternum_BurnDonkeyWhereInput { +input s1_eternum_BurnDonkeyWhereInput { amount: u128 amountEQ: u128 amountGT: u128 @@ -2437,7 +3642,7 @@ input s0_eternum_BurnDonkeyWhereInput { timestampNOTLIKE: u64 } -type s0_eternum_CancelOrder { +type s1_eternum_CancelOrder { entity: World__Entity eventMessage: World__EventMessage maker_id: u32 @@ -2446,30 +3651,30 @@ type s0_eternum_CancelOrder { trade_id: u32 } -type s0_eternum_CancelOrderConnection { - edges: [s0_eternum_CancelOrderEdge] +type s1_eternum_CancelOrderConnection { + edges: [s1_eternum_CancelOrderEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_CancelOrderEdge { +type s1_eternum_CancelOrderEdge { cursor: Cursor - node: s0_eternum_CancelOrder + node: s1_eternum_CancelOrder } -input s0_eternum_CancelOrderOrder { +input s1_eternum_CancelOrderOrder { direction: OrderDirection! - field: s0_eternum_CancelOrderOrderField! + field: s1_eternum_CancelOrderOrderField! } -enum s0_eternum_CancelOrderOrderField { +enum s1_eternum_CancelOrderOrderField { MAKER_ID TAKER_ID TIMESTAMP TRADE_ID } -input s0_eternum_CancelOrderWhereInput { +input s1_eternum_CancelOrderWhereInput { maker_id: u32 maker_idEQ: u32 maker_idGT: u32 @@ -2516,35 +3721,35 @@ input s0_eternum_CancelOrderWhereInput { trade_idNOTLIKE: u32 } -type s0_eternum_CapacityCategory { +type s1_eternum_CapacityCategory { category: Enum entity: World__Entity entity_id: u32 eventMessage: World__EventMessage } -type s0_eternum_CapacityCategoryConnection { - edges: [s0_eternum_CapacityCategoryEdge] +type s1_eternum_CapacityCategoryConnection { + edges: [s1_eternum_CapacityCategoryEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_CapacityCategoryEdge { +type s1_eternum_CapacityCategoryEdge { cursor: Cursor - node: s0_eternum_CapacityCategory + node: s1_eternum_CapacityCategory } -input s0_eternum_CapacityCategoryOrder { +input s1_eternum_CapacityCategoryOrder { direction: OrderDirection! - field: s0_eternum_CapacityCategoryOrderField! + field: s1_eternum_CapacityCategoryOrderField! } -enum s0_eternum_CapacityCategoryOrderField { +enum s1_eternum_CapacityCategoryOrderField { CATEGORY ENTITY_ID } -input s0_eternum_CapacityCategoryWhereInput { +input s1_eternum_CapacityCategoryWhereInput { category: Enum entity_id: u32 entity_idEQ: u32 @@ -2559,35 +3764,35 @@ input s0_eternum_CapacityCategoryWhereInput { entity_idNOTLIKE: u32 } -type s0_eternum_CapacityConfig { +type s1_eternum_CapacityConfig { category: Enum entity: World__Entity eventMessage: World__EventMessage weight_gram: u128 } -type s0_eternum_CapacityConfigConnection { - edges: [s0_eternum_CapacityConfigEdge] +type s1_eternum_CapacityConfigConnection { + edges: [s1_eternum_CapacityConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_CapacityConfigEdge { +type s1_eternum_CapacityConfigEdge { cursor: Cursor - node: s0_eternum_CapacityConfig + node: s1_eternum_CapacityConfig } -input s0_eternum_CapacityConfigOrder { +input s1_eternum_CapacityConfigOrder { direction: OrderDirection! - field: s0_eternum_CapacityConfigOrderField! + field: s1_eternum_CapacityConfigOrderField! } -enum s0_eternum_CapacityConfigOrderField { +enum s1_eternum_CapacityConfigOrderField { CATEGORY WEIGHT_GRAM } -input s0_eternum_CapacityConfigWhereInput { +input s1_eternum_CapacityConfigWhereInput { category: Enum weight_gram: u128 weight_gramEQ: u128 @@ -2602,12 +3807,12 @@ input s0_eternum_CapacityConfigWhereInput { weight_gramNOTLIKE: u128 } -type s0_eternum_ContractAddressu16 { +type s1_eternum_ContractAddressu16 { _0: ContractAddress _1: u16 } -type s0_eternum_Contribution { +type s1_eternum_Contribution { amount: u128 entity: World__Entity eventMessage: World__EventMessage @@ -2616,30 +3821,30 @@ type s0_eternum_Contribution { resource_type: u8 } -type s0_eternum_ContributionConnection { - edges: [s0_eternum_ContributionEdge] +type s1_eternum_ContributionConnection { + edges: [s1_eternum_ContributionEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ContributionEdge { +type s1_eternum_ContributionEdge { cursor: Cursor - node: s0_eternum_Contribution + node: s1_eternum_Contribution } -input s0_eternum_ContributionOrder { +input s1_eternum_ContributionOrder { direction: OrderDirection! - field: s0_eternum_ContributionOrderField! + field: s1_eternum_ContributionOrderField! } -enum s0_eternum_ContributionOrderField { +enum s1_eternum_ContributionOrderField { AMOUNT HYPERSTRUCTURE_ENTITY_ID PLAYER_ADDRESS RESOURCE_TYPE } -input s0_eternum_ContributionWhereInput { +input s1_eternum_ContributionWhereInput { amount: u128 amountEQ: u128 amountGT: u128 @@ -2686,12 +3891,12 @@ input s0_eternum_ContributionWhereInput { resource_typeNOTLIKE: u8 } -type s0_eternum_Coord { +type s1_eternum_Coord { x: u32 y: u32 } -type s0_eternum_CreateGuild { +type s1_eternum_CreateGuild { entity: World__Entity eventMessage: World__EventMessage guild_entity_id: u32 @@ -2699,29 +3904,29 @@ type s0_eternum_CreateGuild { timestamp: u64 } -type s0_eternum_CreateGuildConnection { - edges: [s0_eternum_CreateGuildEdge] +type s1_eternum_CreateGuildConnection { + edges: [s1_eternum_CreateGuildEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_CreateGuildEdge { +type s1_eternum_CreateGuildEdge { cursor: Cursor - node: s0_eternum_CreateGuild + node: s1_eternum_CreateGuild } -input s0_eternum_CreateGuildOrder { +input s1_eternum_CreateGuildOrder { direction: OrderDirection! - field: s0_eternum_CreateGuildOrderField! + field: s1_eternum_CreateGuildOrderField! } -enum s0_eternum_CreateGuildOrderField { +enum s1_eternum_CreateGuildOrderField { GUILD_ENTITY_ID GUILD_NAME TIMESTAMP } -input s0_eternum_CreateGuildWhereInput { +input s1_eternum_CreateGuildWhereInput { guild_entity_id: u32 guild_entity_idEQ: u32 guild_entity_idGT: u32 @@ -2757,7 +3962,7 @@ input s0_eternum_CreateGuildWhereInput { timestampNOTLIKE: u64 } -type s0_eternum_CreateOrder { +type s1_eternum_CreateOrder { entity: World__Entity eventMessage: World__EventMessage maker_id: u32 @@ -2766,30 +3971,30 @@ type s0_eternum_CreateOrder { trade_id: u32 } -type s0_eternum_CreateOrderConnection { - edges: [s0_eternum_CreateOrderEdge] +type s1_eternum_CreateOrderConnection { + edges: [s1_eternum_CreateOrderEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_CreateOrderEdge { +type s1_eternum_CreateOrderEdge { cursor: Cursor - node: s0_eternum_CreateOrder + node: s1_eternum_CreateOrder } -input s0_eternum_CreateOrderOrder { +input s1_eternum_CreateOrderOrder { direction: OrderDirection! - field: s0_eternum_CreateOrderOrderField! + field: s1_eternum_CreateOrderOrderField! } -enum s0_eternum_CreateOrderOrderField { +enum s1_eternum_CreateOrderOrderField { MAKER_ID TAKER_ID TIMESTAMP TRADE_ID } -input s0_eternum_CreateOrderWhereInput { +input s1_eternum_CreateOrderWhereInput { maker_id: u32 maker_idEQ: u32 maker_idGT: u32 @@ -2836,7 +4041,7 @@ input s0_eternum_CreateOrderWhereInput { trade_idNOTLIKE: u32 } -type s0_eternum_DetachedResource { +type s1_eternum_DetachedResource { entity: World__Entity entity_id: u32 eventMessage: World__EventMessage @@ -2845,30 +4050,30 @@ type s0_eternum_DetachedResource { resource_type: u8 } -type s0_eternum_DetachedResourceConnection { - edges: [s0_eternum_DetachedResourceEdge] +type s1_eternum_DetachedResourceConnection { + edges: [s1_eternum_DetachedResourceEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_DetachedResourceEdge { +type s1_eternum_DetachedResourceEdge { cursor: Cursor - node: s0_eternum_DetachedResource + node: s1_eternum_DetachedResource } -input s0_eternum_DetachedResourceOrder { +input s1_eternum_DetachedResourceOrder { direction: OrderDirection! - field: s0_eternum_DetachedResourceOrderField! + field: s1_eternum_DetachedResourceOrderField! } -enum s0_eternum_DetachedResourceOrderField { +enum s1_eternum_DetachedResourceOrderField { ENTITY_ID INDEX RESOURCE_AMOUNT RESOURCE_TYPE } -input s0_eternum_DetachedResourceWhereInput { +input s1_eternum_DetachedResourceWhereInput { entity_id: u32 entity_idEQ: u32 entity_idGT: u32 @@ -2915,35 +4120,35 @@ input s0_eternum_DetachedResourceWhereInput { resource_typeNOTLIKE: u8 } -type s0_eternum_EntityName { +type s1_eternum_EntityName { entity: World__Entity entity_id: u32 eventMessage: World__EventMessage name: felt252 } -type s0_eternum_EntityNameConnection { - edges: [s0_eternum_EntityNameEdge] +type s1_eternum_EntityNameConnection { + edges: [s1_eternum_EntityNameEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_EntityNameEdge { +type s1_eternum_EntityNameEdge { cursor: Cursor - node: s0_eternum_EntityName + node: s1_eternum_EntityName } -input s0_eternum_EntityNameOrder { +input s1_eternum_EntityNameOrder { direction: OrderDirection! - field: s0_eternum_EntityNameOrderField! + field: s1_eternum_EntityNameOrderField! } -enum s0_eternum_EntityNameOrderField { +enum s1_eternum_EntityNameOrderField { ENTITY_ID NAME } -input s0_eternum_EntityNameWhereInput { +input s1_eternum_EntityNameWhereInput { entity_id: u32 entity_idEQ: u32 entity_idGT: u32 @@ -2968,35 +4173,35 @@ input s0_eternum_EntityNameWhereInput { nameNOTLIKE: felt252 } -type s0_eternum_EntityOwner { +type s1_eternum_EntityOwner { entity: World__Entity entity_id: u32 entity_owner_id: u32 eventMessage: World__EventMessage } -type s0_eternum_EntityOwnerConnection { - edges: [s0_eternum_EntityOwnerEdge] +type s1_eternum_EntityOwnerConnection { + edges: [s1_eternum_EntityOwnerEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_EntityOwnerEdge { +type s1_eternum_EntityOwnerEdge { cursor: Cursor - node: s0_eternum_EntityOwner + node: s1_eternum_EntityOwner } -input s0_eternum_EntityOwnerOrder { +input s1_eternum_EntityOwnerOrder { direction: OrderDirection! - field: s0_eternum_EntityOwnerOrderField! + field: s1_eternum_EntityOwnerOrderField! } -enum s0_eternum_EntityOwnerOrderField { +enum s1_eternum_EntityOwnerOrderField { ENTITY_ID ENTITY_OWNER_ID } -input s0_eternum_EntityOwnerWhereInput { +input s1_eternum_EntityOwnerWhereInput { entity_id: u32 entity_idEQ: u32 entity_idGT: u32 @@ -3021,39 +4226,39 @@ input s0_eternum_EntityOwnerWhereInput { entity_owner_idNOTLIKE: u32 } -type s0_eternum_Epoch { +type s1_eternum_Epoch { entity: World__Entity eventMessage: World__EventMessage hyperstructure_entity_id: u32 index: u16 - owners: [s0_eternum_ContractAddressu16] + owners: [s1_eternum_ContractAddressu16] start_timestamp: u64 } -type s0_eternum_EpochConnection { - edges: [s0_eternum_EpochEdge] +type s1_eternum_EpochConnection { + edges: [s1_eternum_EpochEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_EpochEdge { +type s1_eternum_EpochEdge { cursor: Cursor - node: s0_eternum_Epoch + node: s1_eternum_Epoch } -input s0_eternum_EpochOrder { +input s1_eternum_EpochOrder { direction: OrderDirection! - field: s0_eternum_EpochOrderField! + field: s1_eternum_EpochOrderField! } -enum s0_eternum_EpochOrderField { +enum s1_eternum_EpochOrderField { HYPERSTRUCTURE_ENTITY_ID INDEX OWNERS START_TIMESTAMP } -input s0_eternum_EpochWhereInput { +input s1_eternum_EpochWhereInput { hyperstructure_entity_id: u32 hyperstructure_entity_idEQ: u32 hyperstructure_entity_idGT: u32 @@ -3089,44 +4294,43 @@ input s0_eternum_EpochWhereInput { start_timestampNOTLIKE: u64 } -type s0_eternum_Fixed { +type s1_eternum_Fixed { mag: u128 sign: bool } -type s0_eternum_FragmentMineDiscovered { +type s1_eternum_FragmentMineDiscovered { discovered_at: u64 entity: World__Entity entity_owner_id: u32 eventMessage: World__EventMessage mine_entity_id: u32 - production_deadline_tick: u64 } -type s0_eternum_FragmentMineDiscoveredConnection { - edges: [s0_eternum_FragmentMineDiscoveredEdge] +type s1_eternum_FragmentMineDiscoveredConnection { + edges: [s1_eternum_FragmentMineDiscoveredEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_FragmentMineDiscoveredEdge { +type s1_eternum_FragmentMineDiscoveredEdge { cursor: Cursor - node: s0_eternum_FragmentMineDiscovered + node: s1_eternum_FragmentMineDiscovered } -input s0_eternum_FragmentMineDiscoveredOrder { +input s1_eternum_FragmentMineDiscoveredOrder { direction: OrderDirection! - field: s0_eternum_FragmentMineDiscoveredOrderField! + field: s1_eternum_FragmentMineDiscoveredOrderField! } -enum s0_eternum_FragmentMineDiscoveredOrderField { +enum s1_eternum_FragmentMineDiscoveredOrderField { DISCOVERED_AT ENTITY_OWNER_ID MINE_ENTITY_ID PRODUCTION_DEADLINE_TICK } -input s0_eternum_FragmentMineDiscoveredWhereInput { +input s1_eternum_FragmentMineDiscoveredWhereInput { discovered_at: u64 discovered_atEQ: u64 discovered_atGT: u64 @@ -3160,48 +4364,37 @@ input s0_eternum_FragmentMineDiscoveredWhereInput { mine_entity_idNEQ: u32 mine_entity_idNOTIN: [u32] mine_entity_idNOTLIKE: u32 - production_deadline_tick: u64 - production_deadline_tickEQ: u64 - production_deadline_tickGT: u64 - production_deadline_tickGTE: u64 - production_deadline_tickIN: [u64] - production_deadline_tickLIKE: u64 - production_deadline_tickLT: u64 - production_deadline_tickLTE: u64 - production_deadline_tickNEQ: u64 - production_deadline_tickNOTIN: [u64] - production_deadline_tickNOTLIKE: u64 -} - -type s0_eternum_GameEnded { +} + +type s1_eternum_GameEnded { entity: World__Entity eventMessage: World__EventMessage timestamp: u64 winner_address: ContractAddress } -type s0_eternum_GameEndedConnection { - edges: [s0_eternum_GameEndedEdge] +type s1_eternum_GameEndedConnection { + edges: [s1_eternum_GameEndedEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_GameEndedEdge { +type s1_eternum_GameEndedEdge { cursor: Cursor - node: s0_eternum_GameEnded + node: s1_eternum_GameEnded } -input s0_eternum_GameEndedOrder { +input s1_eternum_GameEndedOrder { direction: OrderDirection! - field: s0_eternum_GameEndedOrderField! + field: s1_eternum_GameEndedOrderField! } -enum s0_eternum_GameEndedOrderField { +enum s1_eternum_GameEndedOrderField { TIMESTAMP WINNER_ADDRESS } -input s0_eternum_GameEndedWhereInput { +input s1_eternum_GameEndedWhereInput { timestamp: u64 timestampEQ: u64 timestampGT: u64 @@ -3226,7 +4419,7 @@ input s0_eternum_GameEndedWhereInput { winner_addressNOTLIKE: ContractAddress } -type s0_eternum_Guild { +type s1_eternum_Guild { entity: World__Entity entity_id: u32 eventMessage: World__EventMessage @@ -3234,46 +4427,46 @@ type s0_eternum_Guild { member_count: u16 } -type s0_eternum_GuildConnection { - edges: [s0_eternum_GuildEdge] +type s1_eternum_GuildConnection { + edges: [s1_eternum_GuildEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_GuildEdge { +type s1_eternum_GuildEdge { cursor: Cursor - node: s0_eternum_Guild + node: s1_eternum_Guild } -type s0_eternum_GuildMember { +type s1_eternum_GuildMember { address: ContractAddress entity: World__Entity eventMessage: World__EventMessage guild_entity_id: u32 } -type s0_eternum_GuildMemberConnection { - edges: [s0_eternum_GuildMemberEdge] +type s1_eternum_GuildMemberConnection { + edges: [s1_eternum_GuildMemberEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_GuildMemberEdge { +type s1_eternum_GuildMemberEdge { cursor: Cursor - node: s0_eternum_GuildMember + node: s1_eternum_GuildMember } -input s0_eternum_GuildMemberOrder { +input s1_eternum_GuildMemberOrder { direction: OrderDirection! - field: s0_eternum_GuildMemberOrderField! + field: s1_eternum_GuildMemberOrderField! } -enum s0_eternum_GuildMemberOrderField { +enum s1_eternum_GuildMemberOrderField { ADDRESS GUILD_ENTITY_ID } -input s0_eternum_GuildMemberWhereInput { +input s1_eternum_GuildMemberWhereInput { address: ContractAddress addressEQ: ContractAddress addressGT: ContractAddress @@ -3298,18 +4491,18 @@ input s0_eternum_GuildMemberWhereInput { guild_entity_idNOTLIKE: u32 } -input s0_eternum_GuildOrder { +input s1_eternum_GuildOrder { direction: OrderDirection! - field: s0_eternum_GuildOrderField! + field: s1_eternum_GuildOrderField! } -enum s0_eternum_GuildOrderField { +enum s1_eternum_GuildOrderField { ENTITY_ID IS_PUBLIC MEMBER_COUNT } -input s0_eternum_GuildWhereInput { +input s1_eternum_GuildWhereInput { entity_id: u32 entity_idEQ: u32 entity_idGT: u32 @@ -3335,7 +4528,7 @@ input s0_eternum_GuildWhereInput { member_countNOTLIKE: u16 } -type s0_eternum_GuildWhitelist { +type s1_eternum_GuildWhitelist { address: ContractAddress entity: World__Entity eventMessage: World__EventMessage @@ -3343,29 +4536,29 @@ type s0_eternum_GuildWhitelist { is_whitelisted: bool } -type s0_eternum_GuildWhitelistConnection { - edges: [s0_eternum_GuildWhitelistEdge] +type s1_eternum_GuildWhitelistConnection { + edges: [s1_eternum_GuildWhitelistEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_GuildWhitelistEdge { +type s1_eternum_GuildWhitelistEdge { cursor: Cursor - node: s0_eternum_GuildWhitelist + node: s1_eternum_GuildWhitelist } -input s0_eternum_GuildWhitelistOrder { +input s1_eternum_GuildWhitelistOrder { direction: OrderDirection! - field: s0_eternum_GuildWhitelistOrderField! + field: s1_eternum_GuildWhitelistOrderField! } -enum s0_eternum_GuildWhitelistOrderField { +enum s1_eternum_GuildWhitelistOrderField { ADDRESS GUILD_ENTITY_ID IS_WHITELISTED } -input s0_eternum_GuildWhitelistWhereInput { +input s1_eternum_GuildWhitelistWhereInput { address: ContractAddress addressEQ: ContractAddress addressGT: ContractAddress @@ -3391,7 +4584,7 @@ input s0_eternum_GuildWhitelistWhereInput { is_whitelisted: bool } -type s0_eternum_Health { +type s1_eternum_Health { current: u128 entity: World__Entity entity_id: u32 @@ -3399,29 +4592,29 @@ type s0_eternum_Health { lifetime: u128 } -type s0_eternum_HealthConnection { - edges: [s0_eternum_HealthEdge] +type s1_eternum_HealthConnection { + edges: [s1_eternum_HealthEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_HealthEdge { +type s1_eternum_HealthEdge { cursor: Cursor - node: s0_eternum_Health + node: s1_eternum_Health } -input s0_eternum_HealthOrder { +input s1_eternum_HealthOrder { direction: OrderDirection! - field: s0_eternum_HealthOrderField! + field: s1_eternum_HealthOrderField! } -enum s0_eternum_HealthOrderField { +enum s1_eternum_HealthOrderField { CURRENT ENTITY_ID LIFETIME } -input s0_eternum_HealthWhereInput { +input s1_eternum_HealthWhereInput { current: u128 currentEQ: u128 currentGT: u128 @@ -3457,7 +4650,7 @@ input s0_eternum_HealthWhereInput { lifetimeNOTLIKE: u128 } -type s0_eternum_Hyperstructure { +type s1_eternum_Hyperstructure { access: Enum completed: bool current_epoch: u16 @@ -3469,8 +4662,8 @@ type s0_eternum_Hyperstructure { randomness: felt252 } -type s0_eternum_HyperstructureCoOwnersChange { - co_owners: [s0_eternum_ContractAddressu16] +type s1_eternum_HyperstructureCoOwnersChange { + co_owners: [s1_eternum_ContractAddressu16] entity: World__Entity eventMessage: World__EventMessage hyperstructure_entity_id: u32 @@ -3478,30 +4671,30 @@ type s0_eternum_HyperstructureCoOwnersChange { timestamp: u64 } -type s0_eternum_HyperstructureCoOwnersChangeConnection { - edges: [s0_eternum_HyperstructureCoOwnersChangeEdge] +type s1_eternum_HyperstructureCoOwnersChangeConnection { + edges: [s1_eternum_HyperstructureCoOwnersChangeEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_HyperstructureCoOwnersChangeEdge { +type s1_eternum_HyperstructureCoOwnersChangeEdge { cursor: Cursor - node: s0_eternum_HyperstructureCoOwnersChange + node: s1_eternum_HyperstructureCoOwnersChange } -input s0_eternum_HyperstructureCoOwnersChangeOrder { +input s1_eternum_HyperstructureCoOwnersChangeOrder { direction: OrderDirection! - field: s0_eternum_HyperstructureCoOwnersChangeOrderField! + field: s1_eternum_HyperstructureCoOwnersChangeOrderField! } -enum s0_eternum_HyperstructureCoOwnersChangeOrderField { +enum s1_eternum_HyperstructureCoOwnersChangeOrderField { CO_OWNERS HYPERSTRUCTURE_ENTITY_ID ID TIMESTAMP } -input s0_eternum_HyperstructureCoOwnersChangeWhereInput { +input s1_eternum_HyperstructureCoOwnersChangeWhereInput { hyperstructure_entity_id: u32 hyperstructure_entity_idEQ: u32 hyperstructure_entity_idGT: u32 @@ -3537,7 +4730,7 @@ input s0_eternum_HyperstructureCoOwnersChangeWhereInput { timestampNOTLIKE: u64 } -type s0_eternum_HyperstructureConfig { +type s1_eternum_HyperstructureConfig { config_id: u32 entity: World__Entity eventMessage: World__EventMessage @@ -3547,23 +4740,23 @@ type s0_eternum_HyperstructureConfig { time_between_shares_change: u64 } -type s0_eternum_HyperstructureConfigConnection { - edges: [s0_eternum_HyperstructureConfigEdge] +type s1_eternum_HyperstructureConfigConnection { + edges: [s1_eternum_HyperstructureConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_HyperstructureConfigEdge { +type s1_eternum_HyperstructureConfigEdge { cursor: Cursor - node: s0_eternum_HyperstructureConfig + node: s1_eternum_HyperstructureConfig } -input s0_eternum_HyperstructureConfigOrder { +input s1_eternum_HyperstructureConfigOrder { direction: OrderDirection! - field: s0_eternum_HyperstructureConfigOrderField! + field: s1_eternum_HyperstructureConfigOrderField! } -enum s0_eternum_HyperstructureConfigOrderField { +enum s1_eternum_HyperstructureConfigOrderField { CONFIG_ID POINTS_FOR_WIN POINTS_ON_COMPLETION @@ -3571,7 +4764,7 @@ enum s0_eternum_HyperstructureConfigOrderField { TIME_BETWEEN_SHARES_CHANGE } -input s0_eternum_HyperstructureConfigWhereInput { +input s1_eternum_HyperstructureConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -3629,14 +4822,14 @@ input s0_eternum_HyperstructureConfigWhereInput { time_between_shares_changeNOTLIKE: u64 } -type s0_eternum_HyperstructureConnection { - edges: [s0_eternum_HyperstructureEdge] +type s1_eternum_HyperstructureConnection { + edges: [s1_eternum_HyperstructureEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_HyperstructureContribution { - contributions: [s0_eternum_u8u128] +type s1_eternum_HyperstructureContribution { + contributions: [s1_eternum_u8u128] contributor_entity_id: u32 entity: World__Entity eventMessage: World__EventMessage @@ -3645,23 +4838,23 @@ type s0_eternum_HyperstructureContribution { timestamp: u64 } -type s0_eternum_HyperstructureContributionConnection { - edges: [s0_eternum_HyperstructureContributionEdge] +type s1_eternum_HyperstructureContributionConnection { + edges: [s1_eternum_HyperstructureContributionEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_HyperstructureContributionEdge { +type s1_eternum_HyperstructureContributionEdge { cursor: Cursor - node: s0_eternum_HyperstructureContribution + node: s1_eternum_HyperstructureContribution } -input s0_eternum_HyperstructureContributionOrder { +input s1_eternum_HyperstructureContributionOrder { direction: OrderDirection! - field: s0_eternum_HyperstructureContributionOrderField! + field: s1_eternum_HyperstructureContributionOrderField! } -enum s0_eternum_HyperstructureContributionOrderField { +enum s1_eternum_HyperstructureContributionOrderField { CONTRIBUTIONS CONTRIBUTOR_ENTITY_ID HYPERSTRUCTURE_ENTITY_ID @@ -3669,7 +4862,7 @@ enum s0_eternum_HyperstructureContributionOrderField { TIMESTAMP } -input s0_eternum_HyperstructureContributionWhereInput { +input s1_eternum_HyperstructureContributionWhereInput { contributor_entity_id: u32 contributor_entity_idEQ: u32 contributor_entity_idGT: u32 @@ -3716,12 +4909,12 @@ input s0_eternum_HyperstructureContributionWhereInput { timestampNOTLIKE: u64 } -type s0_eternum_HyperstructureEdge { +type s1_eternum_HyperstructureEdge { cursor: Cursor - node: s0_eternum_Hyperstructure + node: s1_eternum_Hyperstructure } -type s0_eternum_HyperstructureFinished { +type s1_eternum_HyperstructureFinished { contributor_entity_id: u32 entity: World__Entity eventMessage: World__EventMessage @@ -3731,23 +4924,23 @@ type s0_eternum_HyperstructureFinished { timestamp: u64 } -type s0_eternum_HyperstructureFinishedConnection { - edges: [s0_eternum_HyperstructureFinishedEdge] +type s1_eternum_HyperstructureFinishedConnection { + edges: [s1_eternum_HyperstructureFinishedEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_HyperstructureFinishedEdge { +type s1_eternum_HyperstructureFinishedEdge { cursor: Cursor - node: s0_eternum_HyperstructureFinished + node: s1_eternum_HyperstructureFinished } -input s0_eternum_HyperstructureFinishedOrder { +input s1_eternum_HyperstructureFinishedOrder { direction: OrderDirection! - field: s0_eternum_HyperstructureFinishedOrderField! + field: s1_eternum_HyperstructureFinishedOrderField! } -enum s0_eternum_HyperstructureFinishedOrderField { +enum s1_eternum_HyperstructureFinishedOrderField { CONTRIBUTOR_ENTITY_ID HYPERSTRUCTURE_ENTITY_ID HYPERSTRUCTURE_OWNER_NAME @@ -3755,7 +4948,7 @@ enum s0_eternum_HyperstructureFinishedOrderField { TIMESTAMP } -input s0_eternum_HyperstructureFinishedWhereInput { +input s1_eternum_HyperstructureFinishedWhereInput { contributor_entity_id: u32 contributor_entity_idEQ: u32 contributor_entity_idGT: u32 @@ -3813,12 +5006,12 @@ input s0_eternum_HyperstructureFinishedWhereInput { timestampNOTLIKE: u64 } -input s0_eternum_HyperstructureOrder { +input s1_eternum_HyperstructureOrder { direction: OrderDirection! - field: s0_eternum_HyperstructureOrderField! + field: s1_eternum_HyperstructureOrderField! } -enum s0_eternum_HyperstructureOrderField { +enum s1_eternum_HyperstructureOrderField { ACCESS COMPLETED CURRENT_EPOCH @@ -3828,7 +5021,7 @@ enum s0_eternum_HyperstructureOrderField { RANDOMNESS } -type s0_eternum_HyperstructureResourceConfig { +type s1_eternum_HyperstructureResourceConfig { config_id: u32 entity: World__Entity eventMessage: World__EventMessage @@ -3837,30 +5030,30 @@ type s0_eternum_HyperstructureResourceConfig { resource_tier: u8 } -type s0_eternum_HyperstructureResourceConfigConnection { - edges: [s0_eternum_HyperstructureResourceConfigEdge] +type s1_eternum_HyperstructureResourceConfigConnection { + edges: [s1_eternum_HyperstructureResourceConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_HyperstructureResourceConfigEdge { +type s1_eternum_HyperstructureResourceConfigEdge { cursor: Cursor - node: s0_eternum_HyperstructureResourceConfig + node: s1_eternum_HyperstructureResourceConfig } -input s0_eternum_HyperstructureResourceConfigOrder { +input s1_eternum_HyperstructureResourceConfigOrder { direction: OrderDirection! - field: s0_eternum_HyperstructureResourceConfigOrderField! + field: s1_eternum_HyperstructureResourceConfigOrderField! } -enum s0_eternum_HyperstructureResourceConfigOrderField { +enum s1_eternum_HyperstructureResourceConfigOrderField { CONFIG_ID MAX_AMOUNT MIN_AMOUNT RESOURCE_TIER } -input s0_eternum_HyperstructureResourceConfigWhereInput { +input s1_eternum_HyperstructureResourceConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -3907,7 +5100,7 @@ input s0_eternum_HyperstructureResourceConfigWhereInput { resource_tierNOTLIKE: u8 } -type s0_eternum_HyperstructureStarted { +type s1_eternum_HyperstructureStarted { creator_address_name: felt252 entity: World__Entity eventMessage: World__EventMessage @@ -3916,30 +5109,30 @@ type s0_eternum_HyperstructureStarted { timestamp: u64 } -type s0_eternum_HyperstructureStartedConnection { - edges: [s0_eternum_HyperstructureStartedEdge] +type s1_eternum_HyperstructureStartedConnection { + edges: [s1_eternum_HyperstructureStartedEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_HyperstructureStartedEdge { +type s1_eternum_HyperstructureStartedEdge { cursor: Cursor - node: s0_eternum_HyperstructureStarted + node: s1_eternum_HyperstructureStarted } -input s0_eternum_HyperstructureStartedOrder { +input s1_eternum_HyperstructureStartedOrder { direction: OrderDirection! - field: s0_eternum_HyperstructureStartedOrderField! + field: s1_eternum_HyperstructureStartedOrderField! } -enum s0_eternum_HyperstructureStartedOrderField { +enum s1_eternum_HyperstructureStartedOrderField { CREATOR_ADDRESS_NAME HYPERSTRUCTURE_ENTITY_ID ID TIMESTAMP } -input s0_eternum_HyperstructureStartedWhereInput { +input s1_eternum_HyperstructureStartedWhereInput { creator_address_name: felt252 creator_address_nameEQ: felt252 creator_address_nameGT: felt252 @@ -3986,7 +5179,7 @@ input s0_eternum_HyperstructureStartedWhereInput { timestampNOTLIKE: u64 } -input s0_eternum_HyperstructureWhereInput { +input s1_eternum_HyperstructureWhereInput { access: Enum completed: bool current_epoch: u16 @@ -4046,7 +5239,7 @@ input s0_eternum_HyperstructureWhereInput { randomnessNOTLIKE: felt252 } -type s0_eternum_JoinGuild { +type s1_eternum_JoinGuild { address: ContractAddress entity: World__Entity eventMessage: World__EventMessage @@ -4055,30 +5248,30 @@ type s0_eternum_JoinGuild { timestamp: u64 } -type s0_eternum_JoinGuildConnection { - edges: [s0_eternum_JoinGuildEdge] +type s1_eternum_JoinGuildConnection { + edges: [s1_eternum_JoinGuildEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_JoinGuildEdge { +type s1_eternum_JoinGuildEdge { cursor: Cursor - node: s0_eternum_JoinGuild + node: s1_eternum_JoinGuild } -input s0_eternum_JoinGuildOrder { +input s1_eternum_JoinGuildOrder { direction: OrderDirection! - field: s0_eternum_JoinGuildOrderField! + field: s1_eternum_JoinGuildOrderField! } -enum s0_eternum_JoinGuildOrderField { +enum s1_eternum_JoinGuildOrderField { ADDRESS GUILD_ENTITY_ID GUILD_NAME TIMESTAMP } -input s0_eternum_JoinGuildWhereInput { +input s1_eternum_JoinGuildWhereInput { address: ContractAddress addressEQ: ContractAddress addressGT: ContractAddress @@ -4125,56 +5318,56 @@ input s0_eternum_JoinGuildWhereInput { timestampNOTLIKE: u64 } -type s0_eternum_Leaderboard { +type s1_eternum_Leaderboard { config_id: u32 distribution_started: bool entity: World__Entity eventMessage: World__EventMessage registration_end_timestamp: u64 total_points: u128 - total_price_pool: s0_eternum_Optionu256 + total_price_pool: s1_eternum_Optionu256 } -type s0_eternum_LeaderboardConnection { - edges: [s0_eternum_LeaderboardEdge] +type s1_eternum_LeaderboardConnection { + edges: [s1_eternum_LeaderboardEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_LeaderboardEdge { +type s1_eternum_LeaderboardEdge { cursor: Cursor - node: s0_eternum_Leaderboard + node: s1_eternum_Leaderboard } -type s0_eternum_LeaderboardEntry { +type s1_eternum_LeaderboardEntry { address: ContractAddress entity: World__Entity eventMessage: World__EventMessage points: u128 } -type s0_eternum_LeaderboardEntryConnection { - edges: [s0_eternum_LeaderboardEntryEdge] +type s1_eternum_LeaderboardEntryConnection { + edges: [s1_eternum_LeaderboardEntryEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_LeaderboardEntryEdge { +type s1_eternum_LeaderboardEntryEdge { cursor: Cursor - node: s0_eternum_LeaderboardEntry + node: s1_eternum_LeaderboardEntry } -input s0_eternum_LeaderboardEntryOrder { +input s1_eternum_LeaderboardEntryOrder { direction: OrderDirection! - field: s0_eternum_LeaderboardEntryOrderField! + field: s1_eternum_LeaderboardEntryOrderField! } -enum s0_eternum_LeaderboardEntryOrderField { +enum s1_eternum_LeaderboardEntryOrderField { ADDRESS POINTS } -input s0_eternum_LeaderboardEntryWhereInput { +input s1_eternum_LeaderboardEntryWhereInput { address: ContractAddress addressEQ: ContractAddress addressGT: ContractAddress @@ -4199,12 +5392,12 @@ input s0_eternum_LeaderboardEntryWhereInput { pointsNOTLIKE: u128 } -input s0_eternum_LeaderboardOrder { +input s1_eternum_LeaderboardOrder { direction: OrderDirection! - field: s0_eternum_LeaderboardOrderField! + field: s1_eternum_LeaderboardOrderField! } -enum s0_eternum_LeaderboardOrderField { +enum s1_eternum_LeaderboardOrderField { CONFIG_ID DISTRIBUTION_STARTED REGISTRATION_END_TIMESTAMP @@ -4212,7 +5405,7 @@ enum s0_eternum_LeaderboardOrderField { TOTAL_PRICE_POOL } -type s0_eternum_LeaderboardRegisterContribution { +type s1_eternum_LeaderboardRegisterContribution { address: ContractAddress entity: World__Entity eventMessage: World__EventMessage @@ -4220,29 +5413,29 @@ type s0_eternum_LeaderboardRegisterContribution { registered: bool } -type s0_eternum_LeaderboardRegisterContributionConnection { - edges: [s0_eternum_LeaderboardRegisterContributionEdge] +type s1_eternum_LeaderboardRegisterContributionConnection { + edges: [s1_eternum_LeaderboardRegisterContributionEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_LeaderboardRegisterContributionEdge { +type s1_eternum_LeaderboardRegisterContributionEdge { cursor: Cursor - node: s0_eternum_LeaderboardRegisterContribution + node: s1_eternum_LeaderboardRegisterContribution } -input s0_eternum_LeaderboardRegisterContributionOrder { +input s1_eternum_LeaderboardRegisterContributionOrder { direction: OrderDirection! - field: s0_eternum_LeaderboardRegisterContributionOrderField! + field: s1_eternum_LeaderboardRegisterContributionOrderField! } -enum s0_eternum_LeaderboardRegisterContributionOrderField { +enum s1_eternum_LeaderboardRegisterContributionOrderField { ADDRESS HYPERSTRUCTURE_ENTITY_ID REGISTERED } -input s0_eternum_LeaderboardRegisterContributionWhereInput { +input s1_eternum_LeaderboardRegisterContributionWhereInput { address: ContractAddress addressEQ: ContractAddress addressGT: ContractAddress @@ -4268,7 +5461,7 @@ input s0_eternum_LeaderboardRegisterContributionWhereInput { registered: bool } -type s0_eternum_LeaderboardRegisterShare { +type s1_eternum_LeaderboardRegisterShare { address: ContractAddress entity: World__Entity epoch: u16 @@ -4277,30 +5470,30 @@ type s0_eternum_LeaderboardRegisterShare { registered: bool } -type s0_eternum_LeaderboardRegisterShareConnection { - edges: [s0_eternum_LeaderboardRegisterShareEdge] +type s1_eternum_LeaderboardRegisterShareConnection { + edges: [s1_eternum_LeaderboardRegisterShareEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_LeaderboardRegisterShareEdge { +type s1_eternum_LeaderboardRegisterShareEdge { cursor: Cursor - node: s0_eternum_LeaderboardRegisterShare + node: s1_eternum_LeaderboardRegisterShare } -input s0_eternum_LeaderboardRegisterShareOrder { +input s1_eternum_LeaderboardRegisterShareOrder { direction: OrderDirection! - field: s0_eternum_LeaderboardRegisterShareOrderField! + field: s1_eternum_LeaderboardRegisterShareOrderField! } -enum s0_eternum_LeaderboardRegisterShareOrderField { +enum s1_eternum_LeaderboardRegisterShareOrderField { ADDRESS EPOCH HYPERSTRUCTURE_ENTITY_ID REGISTERED } -input s0_eternum_LeaderboardRegisterShareWhereInput { +input s1_eternum_LeaderboardRegisterShareWhereInput { address: ContractAddress addressEQ: ContractAddress addressGT: ContractAddress @@ -4337,35 +5530,35 @@ input s0_eternum_LeaderboardRegisterShareWhereInput { registered: bool } -type s0_eternum_LeaderboardRegistered { +type s1_eternum_LeaderboardRegistered { address: ContractAddress entity: World__Entity eventMessage: World__EventMessage registered: bool } -type s0_eternum_LeaderboardRegisteredConnection { - edges: [s0_eternum_LeaderboardRegisteredEdge] +type s1_eternum_LeaderboardRegisteredConnection { + edges: [s1_eternum_LeaderboardRegisteredEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_LeaderboardRegisteredEdge { +type s1_eternum_LeaderboardRegisteredEdge { cursor: Cursor - node: s0_eternum_LeaderboardRegistered + node: s1_eternum_LeaderboardRegistered } -input s0_eternum_LeaderboardRegisteredOrder { +input s1_eternum_LeaderboardRegisteredOrder { direction: OrderDirection! - field: s0_eternum_LeaderboardRegisteredOrderField! + field: s1_eternum_LeaderboardRegisteredOrderField! } -enum s0_eternum_LeaderboardRegisteredOrderField { +enum s1_eternum_LeaderboardRegisteredOrderField { ADDRESS REGISTERED } -input s0_eternum_LeaderboardRegisteredWhereInput { +input s1_eternum_LeaderboardRegisteredWhereInput { address: ContractAddress addressEQ: ContractAddress addressGT: ContractAddress @@ -4380,35 +5573,35 @@ input s0_eternum_LeaderboardRegisteredWhereInput { registered: bool } -type s0_eternum_LeaderboardRewardClaimed { +type s1_eternum_LeaderboardRewardClaimed { address: ContractAddress claimed: bool entity: World__Entity eventMessage: World__EventMessage } -type s0_eternum_LeaderboardRewardClaimedConnection { - edges: [s0_eternum_LeaderboardRewardClaimedEdge] +type s1_eternum_LeaderboardRewardClaimedConnection { + edges: [s1_eternum_LeaderboardRewardClaimedEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_LeaderboardRewardClaimedEdge { +type s1_eternum_LeaderboardRewardClaimedEdge { cursor: Cursor - node: s0_eternum_LeaderboardRewardClaimed + node: s1_eternum_LeaderboardRewardClaimed } -input s0_eternum_LeaderboardRewardClaimedOrder { +input s1_eternum_LeaderboardRewardClaimedOrder { direction: OrderDirection! - field: s0_eternum_LeaderboardRewardClaimedOrderField! + field: s1_eternum_LeaderboardRewardClaimedOrderField! } -enum s0_eternum_LeaderboardRewardClaimedOrderField { +enum s1_eternum_LeaderboardRewardClaimedOrderField { ADDRESS CLAIMED } -input s0_eternum_LeaderboardRewardClaimedWhereInput { +input s1_eternum_LeaderboardRewardClaimedWhereInput { address: ContractAddress addressEQ: ContractAddress addressGT: ContractAddress @@ -4423,7 +5616,7 @@ input s0_eternum_LeaderboardRewardClaimedWhereInput { claimed: bool } -input s0_eternum_LeaderboardWhereInput { +input s1_eternum_LeaderboardWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -4460,7 +5653,7 @@ input s0_eternum_LeaderboardWhereInput { total_pointsNOTLIKE: u128 } -type s0_eternum_LevelingConfig { +type s1_eternum_LevelingConfig { base_multiplier: u128 config_id: u32 cost_percentage_scaled: u128 @@ -4479,23 +5672,23 @@ type s0_eternum_LevelingConfig { wheat_base_amount: u128 } -type s0_eternum_LevelingConfigConnection { - edges: [s0_eternum_LevelingConfigEdge] +type s1_eternum_LevelingConfigConnection { + edges: [s1_eternum_LevelingConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_LevelingConfigEdge { +type s1_eternum_LevelingConfigEdge { cursor: Cursor - node: s0_eternum_LevelingConfig + node: s1_eternum_LevelingConfig } -input s0_eternum_LevelingConfigOrder { +input s1_eternum_LevelingConfigOrder { direction: OrderDirection! - field: s0_eternum_LevelingConfigOrderField! + field: s1_eternum_LevelingConfigOrderField! } -enum s0_eternum_LevelingConfigOrderField { +enum s1_eternum_LevelingConfigOrderField { BASE_MULTIPLIER CONFIG_ID COST_PERCENTAGE_SCALED @@ -4512,7 +5705,7 @@ enum s0_eternum_LevelingConfigOrderField { WHEAT_BASE_AMOUNT } -input s0_eternum_LevelingConfigWhereInput { +input s1_eternum_LevelingConfigWhereInput { base_multiplier: u128 base_multiplierEQ: u128 base_multiplierGT: u128 @@ -4669,27 +5862,27 @@ input s0_eternum_LevelingConfigWhereInput { wheat_base_amountNOTLIKE: u128 } -type s0_eternum_Liquidity { +type s1_eternum_Liquidity { bank_entity_id: u32 entity: World__Entity eventMessage: World__EventMessage player: ContractAddress resource_type: u8 - shares: s0_eternum_Fixed + shares: s1_eternum_Fixed } -type s0_eternum_LiquidityConnection { - edges: [s0_eternum_LiquidityEdge] +type s1_eternum_LiquidityConnection { + edges: [s1_eternum_LiquidityEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_LiquidityEdge { +type s1_eternum_LiquidityEdge { cursor: Cursor - node: s0_eternum_Liquidity + node: s1_eternum_Liquidity } -type s0_eternum_LiquidityEvent { +type s1_eternum_LiquidityEvent { add: bool bank_entity_id: u32 entity: World__Entity @@ -4702,23 +5895,23 @@ type s0_eternum_LiquidityEvent { timestamp: u64 } -type s0_eternum_LiquidityEventConnection { - edges: [s0_eternum_LiquidityEventEdge] +type s1_eternum_LiquidityEventConnection { + edges: [s1_eternum_LiquidityEventEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_LiquidityEventEdge { +type s1_eternum_LiquidityEventEdge { cursor: Cursor - node: s0_eternum_LiquidityEvent + node: s1_eternum_LiquidityEvent } -input s0_eternum_LiquidityEventOrder { +input s1_eternum_LiquidityEventOrder { direction: OrderDirection! - field: s0_eternum_LiquidityEventOrderField! + field: s1_eternum_LiquidityEventOrderField! } -enum s0_eternum_LiquidityEventOrderField { +enum s1_eternum_LiquidityEventOrderField { ADD BANK_ENTITY_ID ENTITY_ID @@ -4729,7 +5922,7 @@ enum s0_eternum_LiquidityEventOrderField { TIMESTAMP } -input s0_eternum_LiquidityEventWhereInput { +input s1_eternum_LiquidityEventWhereInput { add: bool bank_entity_id: u32 bank_entity_idEQ: u32 @@ -4810,19 +6003,19 @@ input s0_eternum_LiquidityEventWhereInput { timestampNOTLIKE: u64 } -input s0_eternum_LiquidityOrder { +input s1_eternum_LiquidityOrder { direction: OrderDirection! - field: s0_eternum_LiquidityOrderField! + field: s1_eternum_LiquidityOrderField! } -enum s0_eternum_LiquidityOrderField { +enum s1_eternum_LiquidityOrderField { BANK_ENTITY_ID PLAYER RESOURCE_TYPE SHARES } -input s0_eternum_LiquidityWhereInput { +input s1_eternum_LiquidityWhereInput { bank_entity_id: u32 bank_entity_idEQ: u32 bank_entity_idGT: u32 @@ -4858,7 +6051,7 @@ input s0_eternum_LiquidityWhereInput { resource_typeNOTLIKE: u8 } -type s0_eternum_MapConfig { +type s1_eternum_MapConfig { config_id: u32 entity: World__Entity eventMessage: World__EventMessage @@ -4866,29 +6059,29 @@ type s0_eternum_MapConfig { shards_mines_fail_probability: u128 } -type s0_eternum_MapConfigConnection { - edges: [s0_eternum_MapConfigEdge] +type s1_eternum_MapConfigConnection { + edges: [s1_eternum_MapConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_MapConfigEdge { +type s1_eternum_MapConfigEdge { cursor: Cursor - node: s0_eternum_MapConfig + node: s1_eternum_MapConfig } -input s0_eternum_MapConfigOrder { +input s1_eternum_MapConfigOrder { direction: OrderDirection! - field: s0_eternum_MapConfigOrderField! + field: s1_eternum_MapConfigOrderField! } -enum s0_eternum_MapConfigOrderField { +enum s1_eternum_MapConfigOrderField { CONFIG_ID REWARD_RESOURCE_AMOUNT SHARDS_MINES_FAIL_PROBABILITY } -input s0_eternum_MapConfigWhereInput { +input s1_eternum_MapConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -4924,7 +6117,7 @@ input s0_eternum_MapConfigWhereInput { shards_mines_fail_probabilityNOTLIKE: u128 } -type s0_eternum_MapExplored { +type s1_eternum_MapExplored { biome: Enum col: u32 entity: World__Entity @@ -4932,28 +6125,28 @@ type s0_eternum_MapExplored { entity_owner_id: u32 eventMessage: World__EventMessage id: u32 - reward: [s0_eternum_u8u128] + reward: [s1_eternum_u8u128] row: u32 timestamp: u64 } -type s0_eternum_MapExploredConnection { - edges: [s0_eternum_MapExploredEdge] +type s1_eternum_MapExploredConnection { + edges: [s1_eternum_MapExploredEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_MapExploredEdge { +type s1_eternum_MapExploredEdge { cursor: Cursor - node: s0_eternum_MapExplored + node: s1_eternum_MapExplored } -input s0_eternum_MapExploredOrder { +input s1_eternum_MapExploredOrder { direction: OrderDirection! - field: s0_eternum_MapExploredOrderField! + field: s1_eternum_MapExploredOrderField! } -enum s0_eternum_MapExploredOrderField { +enum s1_eternum_MapExploredOrderField { BIOME COL ENTITY_ID @@ -4964,7 +6157,7 @@ enum s0_eternum_MapExploredOrderField { TIMESTAMP } -input s0_eternum_MapExploredWhereInput { +input s1_eternum_MapExploredWhereInput { biome: Enum col: u32 colEQ: u32 @@ -5034,33 +6227,33 @@ input s0_eternum_MapExploredWhereInput { timestampNOTLIKE: u64 } -type s0_eternum_Market { +type s1_eternum_Market { bank_entity_id: u32 entity: World__Entity eventMessage: World__EventMessage lords_amount: u128 resource_amount: u128 resource_type: u8 - total_shares: s0_eternum_Fixed + total_shares: s1_eternum_Fixed } -type s0_eternum_MarketConnection { - edges: [s0_eternum_MarketEdge] +type s1_eternum_MarketConnection { + edges: [s1_eternum_MarketEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_MarketEdge { +type s1_eternum_MarketEdge { cursor: Cursor - node: s0_eternum_Market + node: s1_eternum_Market } -input s0_eternum_MarketOrder { +input s1_eternum_MarketOrder { direction: OrderDirection! - field: s0_eternum_MarketOrderField! + field: s1_eternum_MarketOrderField! } -enum s0_eternum_MarketOrderField { +enum s1_eternum_MarketOrderField { BANK_ENTITY_ID LORDS_AMOUNT RESOURCE_AMOUNT @@ -5068,7 +6261,7 @@ enum s0_eternum_MarketOrderField { TOTAL_SHARES } -input s0_eternum_MarketWhereInput { +input s1_eternum_MarketWhereInput { bank_entity_id: u32 bank_entity_idEQ: u32 bank_entity_idGT: u32 @@ -5115,7 +6308,7 @@ input s0_eternum_MarketWhereInput { resource_typeNOTLIKE: u8 } -type s0_eternum_MercenariesConfig { +type s1_eternum_MercenariesConfig { config_id: u32 crossbowmen_lower_bound: u64 crossbowmen_upper_bound: u64 @@ -5125,26 +6318,26 @@ type s0_eternum_MercenariesConfig { knights_upper_bound: u64 paladins_lower_bound: u64 paladins_upper_bound: u64 - rewards: [s0_eternum_u8u128] + rewards: [s1_eternum_u8u128] } -type s0_eternum_MercenariesConfigConnection { - edges: [s0_eternum_MercenariesConfigEdge] +type s1_eternum_MercenariesConfigConnection { + edges: [s1_eternum_MercenariesConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_MercenariesConfigEdge { +type s1_eternum_MercenariesConfigEdge { cursor: Cursor - node: s0_eternum_MercenariesConfig + node: s1_eternum_MercenariesConfig } -input s0_eternum_MercenariesConfigOrder { +input s1_eternum_MercenariesConfigOrder { direction: OrderDirection! - field: s0_eternum_MercenariesConfigOrderField! + field: s1_eternum_MercenariesConfigOrderField! } -enum s0_eternum_MercenariesConfigOrderField { +enum s1_eternum_MercenariesConfigOrderField { CONFIG_ID CROSSBOWMEN_LOWER_BOUND CROSSBOWMEN_UPPER_BOUND @@ -5155,7 +6348,7 @@ enum s0_eternum_MercenariesConfigOrderField { REWARDS } -input s0_eternum_MercenariesConfigWhereInput { +input s1_eternum_MercenariesConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -5235,7 +6428,7 @@ input s0_eternum_MercenariesConfigWhereInput { paladins_upper_boundNOTLIKE: u64 } -type s0_eternum_Message { +type s1_eternum_Message { channel: felt252 content: ByteArray entity: World__Entity @@ -5245,23 +6438,23 @@ type s0_eternum_Message { timestamp: u64 } -type s0_eternum_MessageConnection { - edges: [s0_eternum_MessageEdge] +type s1_eternum_MessageConnection { + edges: [s1_eternum_MessageEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_MessageEdge { +type s1_eternum_MessageEdge { cursor: Cursor - node: s0_eternum_Message + node: s1_eternum_Message } -input s0_eternum_MessageOrder { +input s1_eternum_MessageOrder { direction: OrderDirection! - field: s0_eternum_MessageOrderField! + field: s1_eternum_MessageOrderField! } -enum s0_eternum_MessageOrderField { +enum s1_eternum_MessageOrderField { CHANNEL CONTENT IDENTITY @@ -5269,7 +6462,7 @@ enum s0_eternum_MessageOrderField { TIMESTAMP } -input s0_eternum_MessageWhereInput { +input s1_eternum_MessageWhereInput { channel: felt252 channelEQ: felt252 channelGT: felt252 @@ -5327,7 +6520,7 @@ input s0_eternum_MessageWhereInput { timestampNOTLIKE: u64 } -type s0_eternum_Movable { +type s1_eternum_Movable { blocked: bool entity: World__Entity entity_id: u32 @@ -5340,23 +6533,23 @@ type s0_eternum_Movable { start_coord_y: u32 } -type s0_eternum_MovableConnection { - edges: [s0_eternum_MovableEdge] +type s1_eternum_MovableConnection { + edges: [s1_eternum_MovableEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_MovableEdge { +type s1_eternum_MovableEdge { cursor: Cursor - node: s0_eternum_Movable + node: s1_eternum_Movable } -input s0_eternum_MovableOrder { +input s1_eternum_MovableOrder { direction: OrderDirection! - field: s0_eternum_MovableOrderField! + field: s1_eternum_MovableOrderField! } -enum s0_eternum_MovableOrderField { +enum s1_eternum_MovableOrderField { BLOCKED ENTITY_ID INTERMEDIATE_COORD_X @@ -5367,7 +6560,7 @@ enum s0_eternum_MovableOrderField { START_COORD_Y } -input s0_eternum_MovableWhereInput { +input s1_eternum_MovableWhereInput { blocked: bool entity_id: u32 entity_idEQ: u32 @@ -5438,40 +6631,40 @@ input s0_eternum_MovableWhereInput { start_coord_yNOTLIKE: u32 } -type s0_eternum_Optionu256 { +type s1_eternum_Optionu256 { Some: u256 option: Enum } -type s0_eternum_Orders { +type s1_eternum_Orders { entity: World__Entity eventMessage: World__EventMessage hyperstructure_count: u32 order_id: u32 } -type s0_eternum_OrdersConnection { - edges: [s0_eternum_OrdersEdge] +type s1_eternum_OrdersConnection { + edges: [s1_eternum_OrdersEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_OrdersEdge { +type s1_eternum_OrdersEdge { cursor: Cursor - node: s0_eternum_Orders + node: s1_eternum_Orders } -input s0_eternum_OrdersOrder { +input s1_eternum_OrdersOrder { direction: OrderDirection! - field: s0_eternum_OrdersOrderField! + field: s1_eternum_OrdersOrderField! } -enum s0_eternum_OrdersOrderField { +enum s1_eternum_OrdersOrderField { HYPERSTRUCTURE_COUNT ORDER_ID } -input s0_eternum_OrdersWhereInput { +input s1_eternum_OrdersWhereInput { hyperstructure_count: u32 hyperstructure_countEQ: u32 hyperstructure_countGT: u32 @@ -5496,35 +6689,35 @@ input s0_eternum_OrdersWhereInput { order_idNOTLIKE: u32 } -type s0_eternum_OwnedResourcesTracker { +type s1_eternum_OwnedResourcesTracker { entity: World__Entity entity_id: u32 eventMessage: World__EventMessage resource_types: u256 } -type s0_eternum_OwnedResourcesTrackerConnection { - edges: [s0_eternum_OwnedResourcesTrackerEdge] +type s1_eternum_OwnedResourcesTrackerConnection { + edges: [s1_eternum_OwnedResourcesTrackerEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_OwnedResourcesTrackerEdge { +type s1_eternum_OwnedResourcesTrackerEdge { cursor: Cursor - node: s0_eternum_OwnedResourcesTracker + node: s1_eternum_OwnedResourcesTracker } -input s0_eternum_OwnedResourcesTrackerOrder { +input s1_eternum_OwnedResourcesTrackerOrder { direction: OrderDirection! - field: s0_eternum_OwnedResourcesTrackerOrderField! + field: s1_eternum_OwnedResourcesTrackerOrderField! } -enum s0_eternum_OwnedResourcesTrackerOrderField { +enum s1_eternum_OwnedResourcesTrackerOrderField { ENTITY_ID RESOURCE_TYPES } -input s0_eternum_OwnedResourcesTrackerWhereInput { +input s1_eternum_OwnedResourcesTrackerWhereInput { entity_id: u32 entity_idEQ: u32 entity_idGT: u32 @@ -5549,35 +6742,35 @@ input s0_eternum_OwnedResourcesTrackerWhereInput { resource_typesNOTLIKE: u256 } -type s0_eternum_Owner { +type s1_eternum_Owner { address: ContractAddress entity: World__Entity entity_id: u32 eventMessage: World__EventMessage } -type s0_eternum_OwnerConnection { - edges: [s0_eternum_OwnerEdge] +type s1_eternum_OwnerConnection { + edges: [s1_eternum_OwnerEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_OwnerEdge { +type s1_eternum_OwnerEdge { cursor: Cursor - node: s0_eternum_Owner + node: s1_eternum_Owner } -input s0_eternum_OwnerOrder { +input s1_eternum_OwnerOrder { direction: OrderDirection! - field: s0_eternum_OwnerOrderField! + field: s1_eternum_OwnerOrderField! } -enum s0_eternum_OwnerOrderField { +enum s1_eternum_OwnerOrderField { ADDRESS ENTITY_ID } -input s0_eternum_OwnerWhereInput { +input s1_eternum_OwnerWhereInput { address: ContractAddress addressEQ: ContractAddress addressGT: ContractAddress @@ -5602,7 +6795,7 @@ input s0_eternum_OwnerWhereInput { entity_idNOTLIKE: u32 } -type s0_eternum_Population { +type s1_eternum_Population { capacity: u32 entity: World__Entity entity_id: u32 @@ -5610,35 +6803,35 @@ type s0_eternum_Population { population: u32 } -type s0_eternum_PopulationConfig { +type s1_eternum_PopulationConfig { base_population: u32 config_id: u32 entity: World__Entity eventMessage: World__EventMessage } -type s0_eternum_PopulationConfigConnection { - edges: [s0_eternum_PopulationConfigEdge] +type s1_eternum_PopulationConfigConnection { + edges: [s1_eternum_PopulationConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_PopulationConfigEdge { +type s1_eternum_PopulationConfigEdge { cursor: Cursor - node: s0_eternum_PopulationConfig + node: s1_eternum_PopulationConfig } -input s0_eternum_PopulationConfigOrder { +input s1_eternum_PopulationConfigOrder { direction: OrderDirection! - field: s0_eternum_PopulationConfigOrderField! + field: s1_eternum_PopulationConfigOrderField! } -enum s0_eternum_PopulationConfigOrderField { +enum s1_eternum_PopulationConfigOrderField { BASE_POPULATION CONFIG_ID } -input s0_eternum_PopulationConfigWhereInput { +input s1_eternum_PopulationConfigWhereInput { base_population: u32 base_populationEQ: u32 base_populationGT: u32 @@ -5663,29 +6856,29 @@ input s0_eternum_PopulationConfigWhereInput { config_idNOTLIKE: u32 } -type s0_eternum_PopulationConnection { - edges: [s0_eternum_PopulationEdge] +type s1_eternum_PopulationConnection { + edges: [s1_eternum_PopulationEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_PopulationEdge { +type s1_eternum_PopulationEdge { cursor: Cursor - node: s0_eternum_Population + node: s1_eternum_Population } -input s0_eternum_PopulationOrder { +input s1_eternum_PopulationOrder { direction: OrderDirection! - field: s0_eternum_PopulationOrderField! + field: s1_eternum_PopulationOrderField! } -enum s0_eternum_PopulationOrderField { +enum s1_eternum_PopulationOrderField { CAPACITY ENTITY_ID POPULATION } -input s0_eternum_PopulationWhereInput { +input s1_eternum_PopulationWhereInput { capacity: u32 capacityEQ: u32 capacityGT: u32 @@ -5721,7 +6914,7 @@ input s0_eternum_PopulationWhereInput { populationNOTLIKE: u32 } -type s0_eternum_Position { +type s1_eternum_Position { entity: World__Entity entity_id: u32 eventMessage: World__EventMessage @@ -5729,29 +6922,29 @@ type s0_eternum_Position { y: u32 } -type s0_eternum_PositionConnection { - edges: [s0_eternum_PositionEdge] +type s1_eternum_PositionConnection { + edges: [s1_eternum_PositionEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_PositionEdge { +type s1_eternum_PositionEdge { cursor: Cursor - node: s0_eternum_Position + node: s1_eternum_Position } -input s0_eternum_PositionOrder { +input s1_eternum_PositionOrder { direction: OrderDirection! - field: s0_eternum_PositionOrderField! + field: s1_eternum_PositionOrderField! } -enum s0_eternum_PositionOrderField { +enum s1_eternum_PositionOrderField { ENTITY_ID X Y } -input s0_eternum_PositionWhereInput { +input s1_eternum_PositionWhereInput { entity_id: u32 entity_idEQ: u32 entity_idGT: u32 @@ -5787,19 +6980,19 @@ input s0_eternum_PositionWhereInput { yNOTLIKE: u32 } -type s0_eternum_Production { +type s1_eternum_Production { building_count: u8 consumption_rate: u128 entity: World__Entity entity_id: u32 eventMessage: World__EventMessage - input_finish_tick: u64 + labor_finish_tick: u64 last_updated_tick: u64 production_rate: u128 resource_type: u8 } -type s0_eternum_ProductionConfig { +type s1_eternum_ProductionConfig { amount: u128 entity: World__Entity eventMessage: World__EventMessage @@ -5808,30 +7001,30 @@ type s0_eternum_ProductionConfig { resource_type: u8 } -type s0_eternum_ProductionConfigConnection { - edges: [s0_eternum_ProductionConfigEdge] +type s1_eternum_ProductionConfigConnection { + edges: [s1_eternum_ProductionConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ProductionConfigEdge { +type s1_eternum_ProductionConfigEdge { cursor: Cursor - node: s0_eternum_ProductionConfig + node: s1_eternum_ProductionConfig } -input s0_eternum_ProductionConfigOrder { +input s1_eternum_ProductionConfigOrder { direction: OrderDirection! - field: s0_eternum_ProductionConfigOrderField! + field: s1_eternum_ProductionConfigOrderField! } -enum s0_eternum_ProductionConfigOrderField { +enum s1_eternum_ProductionConfigOrderField { AMOUNT INPUT_COUNT OUTPUT_COUNT RESOURCE_TYPE } -input s0_eternum_ProductionConfigWhereInput { +input s1_eternum_ProductionConfigWhereInput { amount: u128 amountEQ: u128 amountGT: u128 @@ -5878,41 +7071,41 @@ input s0_eternum_ProductionConfigWhereInput { resource_typeNOTLIKE: u8 } -type s0_eternum_ProductionConnection { - edges: [s0_eternum_ProductionEdge] +type s1_eternum_ProductionConnection { + edges: [s1_eternum_ProductionEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ProductionDeadline { +type s1_eternum_ProductionDeadline { deadline_tick: u64 entity: World__Entity entity_id: u32 eventMessage: World__EventMessage } -type s0_eternum_ProductionDeadlineConnection { - edges: [s0_eternum_ProductionDeadlineEdge] +type s1_eternum_ProductionDeadlineConnection { + edges: [s1_eternum_ProductionDeadlineEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ProductionDeadlineEdge { +type s1_eternum_ProductionDeadlineEdge { cursor: Cursor - node: s0_eternum_ProductionDeadline + node: s1_eternum_ProductionDeadline } -input s0_eternum_ProductionDeadlineOrder { +input s1_eternum_ProductionDeadlineOrder { direction: OrderDirection! - field: s0_eternum_ProductionDeadlineOrderField! + field: s1_eternum_ProductionDeadlineOrderField! } -enum s0_eternum_ProductionDeadlineOrderField { +enum s1_eternum_ProductionDeadlineOrderField { DEADLINE_TICK ENTITY_ID } -input s0_eternum_ProductionDeadlineWhereInput { +input s1_eternum_ProductionDeadlineWhereInput { deadline_tick: u64 deadline_tickEQ: u64 deadline_tickGT: u64 @@ -5937,12 +7130,12 @@ input s0_eternum_ProductionDeadlineWhereInput { entity_idNOTLIKE: u32 } -type s0_eternum_ProductionEdge { +type s1_eternum_ProductionEdge { cursor: Cursor - node: s0_eternum_Production + node: s1_eternum_Production } -type s0_eternum_ProductionInput { +type s1_eternum_ProductionInput { entity: World__Entity eventMessage: World__EventMessage index: u8 @@ -5951,30 +7144,30 @@ type s0_eternum_ProductionInput { output_resource_type: u8 } -type s0_eternum_ProductionInputConnection { - edges: [s0_eternum_ProductionInputEdge] +type s1_eternum_ProductionInputConnection { + edges: [s1_eternum_ProductionInputEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ProductionInputEdge { +type s1_eternum_ProductionInputEdge { cursor: Cursor - node: s0_eternum_ProductionInput + node: s1_eternum_ProductionInput } -input s0_eternum_ProductionInputOrder { +input s1_eternum_ProductionInputOrder { direction: OrderDirection! - field: s0_eternum_ProductionInputOrderField! + field: s1_eternum_ProductionInputOrderField! } -enum s0_eternum_ProductionInputOrderField { +enum s1_eternum_ProductionInputOrderField { INDEX INPUT_RESOURCE_AMOUNT INPUT_RESOURCE_TYPE OUTPUT_RESOURCE_TYPE } -input s0_eternum_ProductionInputWhereInput { +input s1_eternum_ProductionInputWhereInput { index: u8 indexEQ: u8 indexGT: u8 @@ -6021,22 +7214,22 @@ input s0_eternum_ProductionInputWhereInput { output_resource_typeNOTLIKE: u8 } -input s0_eternum_ProductionOrder { +input s1_eternum_ProductionOrder { direction: OrderDirection! - field: s0_eternum_ProductionOrderField! + field: s1_eternum_ProductionOrderField! } -enum s0_eternum_ProductionOrderField { +enum s1_eternum_ProductionOrderField { BUILDING_COUNT CONSUMPTION_RATE ENTITY_ID - INPUT_FINISH_TICK + labor_finish_tick LAST_UPDATED_TICK PRODUCTION_RATE RESOURCE_TYPE } -type s0_eternum_ProductionOutput { +type s1_eternum_ProductionOutput { entity: World__Entity eventMessage: World__EventMessage index: u8 @@ -6044,29 +7237,29 @@ type s0_eternum_ProductionOutput { output_resource_type: u8 } -type s0_eternum_ProductionOutputConnection { - edges: [s0_eternum_ProductionOutputEdge] +type s1_eternum_ProductionOutputConnection { + edges: [s1_eternum_ProductionOutputEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ProductionOutputEdge { +type s1_eternum_ProductionOutputEdge { cursor: Cursor - node: s0_eternum_ProductionOutput + node: s1_eternum_ProductionOutput } -input s0_eternum_ProductionOutputOrder { +input s1_eternum_ProductionOutputOrder { direction: OrderDirection! - field: s0_eternum_ProductionOutputOrderField! + field: s1_eternum_ProductionOutputOrderField! } -enum s0_eternum_ProductionOutputOrderField { +enum s1_eternum_ProductionOutputOrderField { INDEX INPUT_RESOURCE_TYPE OUTPUT_RESOURCE_TYPE } -input s0_eternum_ProductionOutputWhereInput { +input s1_eternum_ProductionOutputWhereInput { index: u8 indexEQ: u8 indexGT: u8 @@ -6102,7 +7295,7 @@ input s0_eternum_ProductionOutputWhereInput { output_resource_typeNOTLIKE: u8 } -input s0_eternum_ProductionWhereInput { +input s1_eternum_ProductionWhereInput { building_count: u8 building_countEQ: u8 building_countGT: u8 @@ -6136,17 +7329,17 @@ input s0_eternum_ProductionWhereInput { entity_idNEQ: u32 entity_idNOTIN: [u32] entity_idNOTLIKE: u32 - input_finish_tick: u64 - input_finish_tickEQ: u64 - input_finish_tickGT: u64 - input_finish_tickGTE: u64 - input_finish_tickIN: [u64] - input_finish_tickLIKE: u64 - input_finish_tickLT: u64 - input_finish_tickLTE: u64 - input_finish_tickNEQ: u64 - input_finish_tickNOTIN: [u64] - input_finish_tickNOTLIKE: u64 + labor_finish_tick: u64 + labor_finish_tickEQ: u64 + labor_finish_tickGT: u64 + labor_finish_tickGTE: u64 + labor_finish_tickIN: [u64] + labor_finish_tickLIKE: u64 + labor_finish_tickLT: u64 + labor_finish_tickLTE: u64 + labor_finish_tickNEQ: u64 + labor_finish_tickNOTIN: [u64] + labor_finish_tickNOTLIKE: u64 last_updated_tick: u64 last_updated_tickEQ: u64 last_updated_tickGT: u64 @@ -6182,7 +7375,7 @@ input s0_eternum_ProductionWhereInput { resource_typeNOTLIKE: u8 } -type s0_eternum_Progress { +type s1_eternum_Progress { amount: u128 entity: World__Entity eventMessage: World__EventMessage @@ -6190,29 +7383,29 @@ type s0_eternum_Progress { resource_type: u8 } -type s0_eternum_ProgressConnection { - edges: [s0_eternum_ProgressEdge] +type s1_eternum_ProgressConnection { + edges: [s1_eternum_ProgressEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ProgressEdge { +type s1_eternum_ProgressEdge { cursor: Cursor - node: s0_eternum_Progress + node: s1_eternum_Progress } -input s0_eternum_ProgressOrder { +input s1_eternum_ProgressOrder { direction: OrderDirection! - field: s0_eternum_ProgressOrderField! + field: s1_eternum_ProgressOrderField! } -enum s0_eternum_ProgressOrderField { +enum s1_eternum_ProgressOrderField { AMOUNT HYPERSTRUCTURE_ENTITY_ID RESOURCE_TYPE } -input s0_eternum_ProgressWhereInput { +input s1_eternum_ProgressWhereInput { amount: u128 amountEQ: u128 amountGT: u128 @@ -6248,35 +7441,35 @@ input s0_eternum_ProgressWhereInput { resource_typeNOTLIKE: u8 } -type s0_eternum_Protectee { +type s1_eternum_Protectee { army_id: u32 entity: World__Entity eventMessage: World__EventMessage protectee_id: u32 } -type s0_eternum_ProtecteeConnection { - edges: [s0_eternum_ProtecteeEdge] +type s1_eternum_ProtecteeConnection { + edges: [s1_eternum_ProtecteeEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ProtecteeEdge { +type s1_eternum_ProtecteeEdge { cursor: Cursor - node: s0_eternum_Protectee + node: s1_eternum_Protectee } -input s0_eternum_ProtecteeOrder { +input s1_eternum_ProtecteeOrder { direction: OrderDirection! - field: s0_eternum_ProtecteeOrderField! + field: s1_eternum_ProtecteeOrderField! } -enum s0_eternum_ProtecteeOrderField { +enum s1_eternum_ProtecteeOrderField { ARMY_ID PROTECTEE_ID } -input s0_eternum_ProtecteeWhereInput { +input s1_eternum_ProtecteeWhereInput { army_id: u32 army_idEQ: u32 army_idGT: u32 @@ -6301,35 +7494,35 @@ input s0_eternum_ProtecteeWhereInput { protectee_idNOTLIKE: u32 } -type s0_eternum_Protector { +type s1_eternum_Protector { army_id: u32 entity: World__Entity entity_id: u32 eventMessage: World__EventMessage } -type s0_eternum_ProtectorConnection { - edges: [s0_eternum_ProtectorEdge] +type s1_eternum_ProtectorConnection { + edges: [s1_eternum_ProtectorEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ProtectorEdge { +type s1_eternum_ProtectorEdge { cursor: Cursor - node: s0_eternum_Protector + node: s1_eternum_Protector } -input s0_eternum_ProtectorOrder { +input s1_eternum_ProtectorOrder { direction: OrderDirection! - field: s0_eternum_ProtectorOrderField! + field: s1_eternum_ProtectorOrderField! } -enum s0_eternum_ProtectorOrderField { +enum s1_eternum_ProtectorOrderField { ARMY_ID ENTITY_ID } -input s0_eternum_ProtectorWhereInput { +input s1_eternum_ProtectorWhereInput { army_id: u32 army_idEQ: u32 army_idGT: u32 @@ -6354,63 +7547,63 @@ input s0_eternum_ProtectorWhereInput { entity_idNOTLIKE: u32 } -type s0_eternum_Quantity { +type s1_eternum_Quantity { entity: World__Entity entity_id: u32 eventMessage: World__EventMessage value: u128 } -type s0_eternum_QuantityConnection { - edges: [s0_eternum_QuantityEdge] +type s1_eternum_QuantityConnection { + edges: [s1_eternum_QuantityEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_QuantityEdge { +type s1_eternum_QuantityEdge { cursor: Cursor - node: s0_eternum_Quantity + node: s1_eternum_Quantity } -input s0_eternum_QuantityOrder { +input s1_eternum_QuantityOrder { direction: OrderDirection! - field: s0_eternum_QuantityOrderField! + field: s1_eternum_QuantityOrderField! } -enum s0_eternum_QuantityOrderField { +enum s1_eternum_QuantityOrderField { ENTITY_ID VALUE } -type s0_eternum_QuantityTracker { +type s1_eternum_QuantityTracker { count: u128 entity: World__Entity entity_id: felt252 eventMessage: World__EventMessage } -type s0_eternum_QuantityTrackerConnection { - edges: [s0_eternum_QuantityTrackerEdge] +type s1_eternum_QuantityTrackerConnection { + edges: [s1_eternum_QuantityTrackerEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_QuantityTrackerEdge { +type s1_eternum_QuantityTrackerEdge { cursor: Cursor - node: s0_eternum_QuantityTracker + node: s1_eternum_QuantityTracker } -input s0_eternum_QuantityTrackerOrder { +input s1_eternum_QuantityTrackerOrder { direction: OrderDirection! - field: s0_eternum_QuantityTrackerOrderField! + field: s1_eternum_QuantityTrackerOrderField! } -enum s0_eternum_QuantityTrackerOrderField { +enum s1_eternum_QuantityTrackerOrderField { COUNT ENTITY_ID } -input s0_eternum_QuantityTrackerWhereInput { +input s1_eternum_QuantityTrackerWhereInput { count: u128 countEQ: u128 countGT: u128 @@ -6435,7 +7628,7 @@ input s0_eternum_QuantityTrackerWhereInput { entity_idNOTLIKE: felt252 } -input s0_eternum_QuantityWhereInput { +input s1_eternum_QuantityWhereInput { entity_id: u32 entity_idEQ: u32 entity_idGT: u32 @@ -6460,7 +7653,7 @@ input s0_eternum_QuantityWhereInput { valueNOTLIKE: u128 } -type s0_eternum_Quest { +type s1_eternum_Quest { completed: bool config_id: u32 entity: World__Entity @@ -6468,138 +7661,30 @@ type s0_eternum_Quest { eventMessage: World__EventMessage } -type s0_eternum_QuestBonus { - claimed: bool - entity: World__Entity - entity_id: u32 - eventMessage: World__EventMessage - resource_type: u8 -} -type s0_eternum_QuestBonusConnection { - edges: [s0_eternum_QuestBonusEdge] +type s1_eternum_QuestConnection { + edges: [s1_eternum_QuestEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_QuestBonusEdge { +type s1_eternum_QuestEdge { cursor: Cursor - node: s0_eternum_QuestBonus + node: s1_eternum_Quest } -input s0_eternum_QuestBonusOrder { +input s1_eternum_QuestOrder { direction: OrderDirection! - field: s0_eternum_QuestBonusOrderField! -} - -enum s0_eternum_QuestBonusOrderField { - CLAIMED - ENTITY_ID - RESOURCE_TYPE -} - -input s0_eternum_QuestBonusWhereInput { - claimed: bool - entity_id: u32 - entity_idEQ: u32 - entity_idGT: u32 - entity_idGTE: u32 - entity_idIN: [u32] - entity_idLIKE: u32 - entity_idLT: u32 - entity_idLTE: u32 - entity_idNEQ: u32 - entity_idNOTIN: [u32] - entity_idNOTLIKE: u32 - resource_type: u8 - resource_typeEQ: u8 - resource_typeGT: u8 - resource_typeGTE: u8 - resource_typeIN: [u8] - resource_typeLIKE: u8 - resource_typeLT: u8 - resource_typeLTE: u8 - resource_typeNEQ: u8 - resource_typeNOTIN: [u8] - resource_typeNOTLIKE: u8 + field: s1_eternum_QuestOrderField! } -type s0_eternum_QuestConfig { - config_id: u32 - entity: World__Entity - eventMessage: World__EventMessage - production_material_multiplier: u16 -} - -type s0_eternum_QuestConfigConnection { - edges: [s0_eternum_QuestConfigEdge] - pageInfo: World__PageInfo! - totalCount: Int! -} - -type s0_eternum_QuestConfigEdge { - cursor: Cursor - node: s0_eternum_QuestConfig -} - -input s0_eternum_QuestConfigOrder { - direction: OrderDirection! - field: s0_eternum_QuestConfigOrderField! -} - -enum s0_eternum_QuestConfigOrderField { - CONFIG_ID - PRODUCTION_MATERIAL_MULTIPLIER -} - -input s0_eternum_QuestConfigWhereInput { - config_id: u32 - config_idEQ: u32 - config_idGT: u32 - config_idGTE: u32 - config_idIN: [u32] - config_idLIKE: u32 - config_idLT: u32 - config_idLTE: u32 - config_idNEQ: u32 - config_idNOTIN: [u32] - config_idNOTLIKE: u32 - production_material_multiplier: u16 - production_material_multiplierEQ: u16 - production_material_multiplierGT: u16 - production_material_multiplierGTE: u16 - production_material_multiplierIN: [u16] - production_material_multiplierLIKE: u16 - production_material_multiplierLT: u16 - production_material_multiplierLTE: u16 - production_material_multiplierNEQ: u16 - production_material_multiplierNOTIN: [u16] - production_material_multiplierNOTLIKE: u16 -} - -type s0_eternum_QuestConnection { - edges: [s0_eternum_QuestEdge] - pageInfo: World__PageInfo! - totalCount: Int! -} - -type s0_eternum_QuestEdge { - cursor: Cursor - node: s0_eternum_Quest -} - -input s0_eternum_QuestOrder { - direction: OrderDirection! - field: s0_eternum_QuestOrderField! -} - -enum s0_eternum_QuestOrderField { +enum s1_eternum_QuestOrderField { COMPLETED CONFIG_ID ENTITY_ID } -type s0_eternum_QuestRewardConfig { +type s1_eternum_QuestRewardConfig { detached_resource_count: u32 detached_resource_id: u32 entity: World__Entity @@ -6607,29 +7692,29 @@ type s0_eternum_QuestRewardConfig { quest_id: u32 } -type s0_eternum_QuestRewardConfigConnection { - edges: [s0_eternum_QuestRewardConfigEdge] +type s1_eternum_QuestRewardConfigConnection { + edges: [s1_eternum_QuestRewardConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_QuestRewardConfigEdge { +type s1_eternum_QuestRewardConfigEdge { cursor: Cursor - node: s0_eternum_QuestRewardConfig + node: s1_eternum_QuestRewardConfig } -input s0_eternum_QuestRewardConfigOrder { +input s1_eternum_QuestRewardConfigOrder { direction: OrderDirection! - field: s0_eternum_QuestRewardConfigOrderField! + field: s1_eternum_QuestRewardConfigOrderField! } -enum s0_eternum_QuestRewardConfigOrderField { +enum s1_eternum_QuestRewardConfigOrderField { DETACHED_RESOURCE_COUNT DETACHED_RESOURCE_ID QUEST_ID } -input s0_eternum_QuestRewardConfigWhereInput { +input s1_eternum_QuestRewardConfigWhereInput { detached_resource_count: u32 detached_resource_countEQ: u32 detached_resource_countGT: u32 @@ -6665,7 +7750,7 @@ input s0_eternum_QuestRewardConfigWhereInput { quest_idNOTLIKE: u32 } -input s0_eternum_QuestWhereInput { +input s1_eternum_QuestWhereInput { completed: bool config_id: u32 config_idEQ: u32 @@ -6691,7 +7776,7 @@ input s0_eternum_QuestWhereInput { entity_idNOTLIKE: u32 } -type s0_eternum_Realm { +type s1_eternum_Realm { entity: World__Entity entity_id: u32 eventMessage: World__EventMessage @@ -6700,21 +7785,20 @@ type s0_eternum_Realm { order: u8 produced_resources: u128 realm_id: u32 - settler_address: ContractAddress } -type s0_eternum_RealmConnection { - edges: [s0_eternum_RealmEdge] +type s1_eternum_RealmConnection { + edges: [s1_eternum_RealmEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_RealmEdge { +type s1_eternum_RealmEdge { cursor: Cursor - node: s0_eternum_Realm + node: s1_eternum_Realm } -type s0_eternum_RealmLevelConfig { +type s1_eternum_RealmLevelConfig { entity: World__Entity eventMessage: World__EventMessage level: u8 @@ -6722,29 +7806,29 @@ type s0_eternum_RealmLevelConfig { required_resources_id: u32 } -type s0_eternum_RealmLevelConfigConnection { - edges: [s0_eternum_RealmLevelConfigEdge] +type s1_eternum_RealmLevelConfigConnection { + edges: [s1_eternum_RealmLevelConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_RealmLevelConfigEdge { +type s1_eternum_RealmLevelConfigEdge { cursor: Cursor - node: s0_eternum_RealmLevelConfig + node: s1_eternum_RealmLevelConfig } -input s0_eternum_RealmLevelConfigOrder { +input s1_eternum_RealmLevelConfigOrder { direction: OrderDirection! - field: s0_eternum_RealmLevelConfigOrderField! + field: s1_eternum_RealmLevelConfigOrderField! } -enum s0_eternum_RealmLevelConfigOrderField { +enum s1_eternum_RealmLevelConfigOrderField { LEVEL REQUIRED_RESOURCES_ID REQUIRED_RESOURCE_COUNT } -input s0_eternum_RealmLevelConfigWhereInput { +input s1_eternum_RealmLevelConfigWhereInput { level: u8 levelEQ: u8 levelGT: u8 @@ -6780,35 +7864,35 @@ input s0_eternum_RealmLevelConfigWhereInput { required_resources_idNOTLIKE: u32 } -type s0_eternum_RealmMaxLevelConfig { +type s1_eternum_RealmMaxLevelConfig { config_id: u32 entity: World__Entity eventMessage: World__EventMessage max_level: u8 } -type s0_eternum_RealmMaxLevelConfigConnection { - edges: [s0_eternum_RealmMaxLevelConfigEdge] +type s1_eternum_RealmMaxLevelConfigConnection { + edges: [s1_eternum_RealmMaxLevelConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_RealmMaxLevelConfigEdge { +type s1_eternum_RealmMaxLevelConfigEdge { cursor: Cursor - node: s0_eternum_RealmMaxLevelConfig + node: s1_eternum_RealmMaxLevelConfig } -input s0_eternum_RealmMaxLevelConfigOrder { +input s1_eternum_RealmMaxLevelConfigOrder { direction: OrderDirection! - field: s0_eternum_RealmMaxLevelConfigOrderField! + field: s1_eternum_RealmMaxLevelConfigOrderField! } -enum s0_eternum_RealmMaxLevelConfigOrderField { +enum s1_eternum_RealmMaxLevelConfigOrderField { CONFIG_ID MAX_LEVEL } -input s0_eternum_RealmMaxLevelConfigWhereInput { +input s1_eternum_RealmMaxLevelConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -6833,12 +7917,12 @@ input s0_eternum_RealmMaxLevelConfigWhereInput { max_levelNOTLIKE: u8 } -input s0_eternum_RealmOrder { +input s1_eternum_RealmOrder { direction: OrderDirection! - field: s0_eternum_RealmOrderField! + field: s1_eternum_RealmOrderField! } -enum s0_eternum_RealmOrderField { +enum s1_eternum_RealmOrderField { ENTITY_ID HAS_WONDER LEVEL @@ -6848,7 +7932,7 @@ enum s0_eternum_RealmOrderField { SETTLER_ADDRESS } -input s0_eternum_RealmWhereInput { +input s1_eternum_RealmWhereInput { entity_id: u32 entity_idEQ: u32 entity_idGT: u32 @@ -6905,20 +7989,9 @@ input s0_eternum_RealmWhereInput { realm_idNEQ: u32 realm_idNOTIN: [u32] realm_idNOTLIKE: u32 - settler_address: ContractAddress - settler_addressEQ: ContractAddress - settler_addressGT: ContractAddress - settler_addressGTE: ContractAddress - settler_addressIN: [ContractAddress] - settler_addressLIKE: ContractAddress - settler_addressLT: ContractAddress - settler_addressLTE: ContractAddress - settler_addressNEQ: ContractAddress - settler_addressNOTIN: [ContractAddress] - settler_addressNOTLIKE: ContractAddress -} - -type s0_eternum_Resource { +} + +type s1_eternum_Resource { balance: u128 entity: World__Entity entity_id: u32 @@ -6926,7 +7999,7 @@ type s0_eternum_Resource { resource_type: u8 } -type s0_eternum_ResourceAllowance { +type s1_eternum_ResourceAllowance { amount: u128 approved_entity_id: u32 entity: World__Entity @@ -6935,30 +8008,30 @@ type s0_eternum_ResourceAllowance { resource_type: u8 } -type s0_eternum_ResourceAllowanceConnection { - edges: [s0_eternum_ResourceAllowanceEdge] +type s1_eternum_ResourceAllowanceConnection { + edges: [s1_eternum_ResourceAllowanceEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ResourceAllowanceEdge { +type s1_eternum_ResourceAllowanceEdge { cursor: Cursor - node: s0_eternum_ResourceAllowance + node: s1_eternum_ResourceAllowance } -input s0_eternum_ResourceAllowanceOrder { +input s1_eternum_ResourceAllowanceOrder { direction: OrderDirection! - field: s0_eternum_ResourceAllowanceOrderField! + field: s1_eternum_ResourceAllowanceOrderField! } -enum s0_eternum_ResourceAllowanceOrderField { +enum s1_eternum_ResourceAllowanceOrderField { AMOUNT APPROVED_ENTITY_ID OWNER_ENTITY_ID RESOURCE_TYPE } -input s0_eternum_ResourceAllowanceWhereInput { +input s1_eternum_ResourceAllowanceWhereInput { amount: u128 amountEQ: u128 amountGT: u128 @@ -7005,7 +8078,7 @@ input s0_eternum_ResourceAllowanceWhereInput { resource_typeNOTLIKE: u8 } -type s0_eternum_ResourceBridgeConfig { +type s1_eternum_ResourceBridgeConfig { config_id: u32 deposit_paused: bool entity: World__Entity @@ -7013,29 +8086,29 @@ type s0_eternum_ResourceBridgeConfig { withdraw_paused: bool } -type s0_eternum_ResourceBridgeConfigConnection { - edges: [s0_eternum_ResourceBridgeConfigEdge] +type s1_eternum_ResourceBridgeConfigConnection { + edges: [s1_eternum_ResourceBridgeConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ResourceBridgeConfigEdge { +type s1_eternum_ResourceBridgeConfigEdge { cursor: Cursor - node: s0_eternum_ResourceBridgeConfig + node: s1_eternum_ResourceBridgeConfig } -input s0_eternum_ResourceBridgeConfigOrder { +input s1_eternum_ResourceBridgeConfigOrder { direction: OrderDirection! - field: s0_eternum_ResourceBridgeConfigOrderField! + field: s1_eternum_ResourceBridgeConfigOrderField! } -enum s0_eternum_ResourceBridgeConfigOrderField { +enum s1_eternum_ResourceBridgeConfigOrderField { CONFIG_ID DEPOSIT_PAUSED WITHDRAW_PAUSED } -input s0_eternum_ResourceBridgeConfigWhereInput { +input s1_eternum_ResourceBridgeConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -7051,7 +8124,7 @@ input s0_eternum_ResourceBridgeConfigWhereInput { withdraw_paused: bool } -type s0_eternum_ResourceBridgeFeeSplitConfig { +type s1_eternum_ResourceBridgeFeeSplitConfig { client_fee_on_dpt_percent: u16 client_fee_on_wtdr_percent: u16 config_id: u32 @@ -7067,23 +8140,23 @@ type s0_eternum_ResourceBridgeFeeSplitConfig { velords_fee_recipient: ContractAddress } -type s0_eternum_ResourceBridgeFeeSplitConfigConnection { - edges: [s0_eternum_ResourceBridgeFeeSplitConfigEdge] +type s1_eternum_ResourceBridgeFeeSplitConfigConnection { + edges: [s1_eternum_ResourceBridgeFeeSplitConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ResourceBridgeFeeSplitConfigEdge { +type s1_eternum_ResourceBridgeFeeSplitConfigEdge { cursor: Cursor - node: s0_eternum_ResourceBridgeFeeSplitConfig + node: s1_eternum_ResourceBridgeFeeSplitConfig } -input s0_eternum_ResourceBridgeFeeSplitConfigOrder { +input s1_eternum_ResourceBridgeFeeSplitConfigOrder { direction: OrderDirection! - field: s0_eternum_ResourceBridgeFeeSplitConfigOrderField! + field: s1_eternum_ResourceBridgeFeeSplitConfigOrderField! } -enum s0_eternum_ResourceBridgeFeeSplitConfigOrderField { +enum s1_eternum_ResourceBridgeFeeSplitConfigOrderField { CLIENT_FEE_ON_DPT_PERCENT CLIENT_FEE_ON_WTDR_PERCENT CONFIG_ID @@ -7097,7 +8170,7 @@ enum s0_eternum_ResourceBridgeFeeSplitConfigOrderField { VELORDS_FEE_RECIPIENT } -input s0_eternum_ResourceBridgeFeeSplitConfigWhereInput { +input s1_eternum_ResourceBridgeFeeSplitConfigWhereInput { client_fee_on_dpt_percent: u16 client_fee_on_dpt_percentEQ: u16 client_fee_on_dpt_percentGT: u16 @@ -7221,35 +8294,35 @@ input s0_eternum_ResourceBridgeFeeSplitConfigWhereInput { velords_fee_recipientNOTLIKE: ContractAddress } -type s0_eternum_ResourceBridgeWhitelistConfig { +type s1_eternum_ResourceBridgeWhitelistConfig { entity: World__Entity eventMessage: World__EventMessage resource_type: u8 token: ContractAddress } -type s0_eternum_ResourceBridgeWhitelistConfigConnection { - edges: [s0_eternum_ResourceBridgeWhitelistConfigEdge] +type s1_eternum_ResourceBridgeWhitelistConfigConnection { + edges: [s1_eternum_ResourceBridgeWhitelistConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ResourceBridgeWhitelistConfigEdge { +type s1_eternum_ResourceBridgeWhitelistConfigEdge { cursor: Cursor - node: s0_eternum_ResourceBridgeWhitelistConfig + node: s1_eternum_ResourceBridgeWhitelistConfig } -input s0_eternum_ResourceBridgeWhitelistConfigOrder { +input s1_eternum_ResourceBridgeWhitelistConfigOrder { direction: OrderDirection! - field: s0_eternum_ResourceBridgeWhitelistConfigOrderField! + field: s1_eternum_ResourceBridgeWhitelistConfigOrderField! } -enum s0_eternum_ResourceBridgeWhitelistConfigOrderField { +enum s1_eternum_ResourceBridgeWhitelistConfigOrderField { RESOURCE_TYPE TOKEN } -input s0_eternum_ResourceBridgeWhitelistConfigWhereInput { +input s1_eternum_ResourceBridgeWhitelistConfigWhereInput { resource_type: u8 resource_typeEQ: u8 resource_typeGT: u8 @@ -7274,13 +8347,13 @@ input s0_eternum_ResourceBridgeWhitelistConfigWhereInput { tokenNOTLIKE: ContractAddress } -type s0_eternum_ResourceConnection { - edges: [s0_eternum_ResourceEdge] +type s1_eternum_ResourceConnection { + edges: [s1_eternum_ResourceEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ResourceCost { +type s1_eternum_ResourceCost { amount: u128 entity: World__Entity entity_id: u32 @@ -7289,30 +8362,30 @@ type s0_eternum_ResourceCost { resource_type: u8 } -type s0_eternum_ResourceCostConnection { - edges: [s0_eternum_ResourceCostEdge] +type s1_eternum_ResourceCostConnection { + edges: [s1_eternum_ResourceCostEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ResourceCostEdge { +type s1_eternum_ResourceCostEdge { cursor: Cursor - node: s0_eternum_ResourceCost + node: s1_eternum_ResourceCost } -input s0_eternum_ResourceCostOrder { +input s1_eternum_ResourceCostOrder { direction: OrderDirection! - field: s0_eternum_ResourceCostOrderField! + field: s1_eternum_ResourceCostOrderField! } -enum s0_eternum_ResourceCostOrderField { +enum s1_eternum_ResourceCostOrderField { AMOUNT ENTITY_ID INDEX RESOURCE_TYPE } -input s0_eternum_ResourceCostWhereInput { +input s1_eternum_ResourceCostWhereInput { amount: u128 amountEQ: u128 amountGT: u128 @@ -7359,23 +8432,23 @@ input s0_eternum_ResourceCostWhereInput { resource_typeNOTLIKE: u8 } -type s0_eternum_ResourceEdge { +type s1_eternum_ResourceEdge { cursor: Cursor - node: s0_eternum_Resource + node: s1_eternum_Resource } -input s0_eternum_ResourceOrder { +input s1_eternum_ResourceOrder { direction: OrderDirection! - field: s0_eternum_ResourceOrderField! + field: s1_eternum_ResourceOrderField! } -enum s0_eternum_ResourceOrderField { +enum s1_eternum_ResourceOrderField { BALANCE ENTITY_ID RESOURCE_TYPE } -type s0_eternum_ResourceTransferLock { +type s1_eternum_ResourceTransferLock { entity: World__Entity entity_id: u32 eventMessage: World__EventMessage @@ -7383,29 +8456,29 @@ type s0_eternum_ResourceTransferLock { start_at: u64 } -type s0_eternum_ResourceTransferLockConnection { - edges: [s0_eternum_ResourceTransferLockEdge] +type s1_eternum_ResourceTransferLockConnection { + edges: [s1_eternum_ResourceTransferLockEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_ResourceTransferLockEdge { +type s1_eternum_ResourceTransferLockEdge { cursor: Cursor - node: s0_eternum_ResourceTransferLock + node: s1_eternum_ResourceTransferLock } -input s0_eternum_ResourceTransferLockOrder { +input s1_eternum_ResourceTransferLockOrder { direction: OrderDirection! - field: s0_eternum_ResourceTransferLockOrderField! + field: s1_eternum_ResourceTransferLockOrderField! } -enum s0_eternum_ResourceTransferLockOrderField { +enum s1_eternum_ResourceTransferLockOrderField { ENTITY_ID RELEASE_AT START_AT } -input s0_eternum_ResourceTransferLockWhereInput { +input s1_eternum_ResourceTransferLockWhereInput { entity_id: u32 entity_idEQ: u32 entity_idGT: u32 @@ -7441,7 +8514,7 @@ input s0_eternum_ResourceTransferLockWhereInput { start_atNOTLIKE: u64 } -input s0_eternum_ResourceWhereInput { +input s1_eternum_ResourceWhereInput { balance: u128 balanceEQ: u128 balanceGT: u128 @@ -7477,7 +8550,7 @@ input s0_eternum_ResourceWhereInput { resource_typeNOTLIKE: u8 } -type s0_eternum_Season { +type s1_eternum_Season { config_id: u32 ended_at: u64 entity: World__Entity @@ -7486,7 +8559,7 @@ type s0_eternum_Season { start_at: u64 } -type s0_eternum_SeasonAddressesConfig { +type s1_eternum_SeasonAddressesConfig { config_id: u32 entity: World__Entity eventMessage: World__EventMessage @@ -7495,30 +8568,30 @@ type s0_eternum_SeasonAddressesConfig { season_pass_address: ContractAddress } -type s0_eternum_SeasonAddressesConfigConnection { - edges: [s0_eternum_SeasonAddressesConfigEdge] +type s1_eternum_SeasonAddressesConfigConnection { + edges: [s1_eternum_SeasonAddressesConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_SeasonAddressesConfigEdge { +type s1_eternum_SeasonAddressesConfigEdge { cursor: Cursor - node: s0_eternum_SeasonAddressesConfig + node: s1_eternum_SeasonAddressesConfig } -input s0_eternum_SeasonAddressesConfigOrder { +input s1_eternum_SeasonAddressesConfigOrder { direction: OrderDirection! - field: s0_eternum_SeasonAddressesConfigOrderField! + field: s1_eternum_SeasonAddressesConfigOrderField! } -enum s0_eternum_SeasonAddressesConfigOrderField { +enum s1_eternum_SeasonAddressesConfigOrderField { CONFIG_ID LORDS_ADDRESS REALMS_ADDRESS SEASON_PASS_ADDRESS } -input s0_eternum_SeasonAddressesConfigWhereInput { +input s1_eternum_SeasonAddressesConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -7565,35 +8638,35 @@ input s0_eternum_SeasonAddressesConfigWhereInput { season_pass_addressNOTLIKE: ContractAddress } -type s0_eternum_SeasonBridgeConfig { +type s1_eternum_SeasonBridgeConfig { close_after_end_seconds: u64 config_id: u32 entity: World__Entity eventMessage: World__EventMessage } -type s0_eternum_SeasonBridgeConfigConnection { - edges: [s0_eternum_SeasonBridgeConfigEdge] +type s1_eternum_SeasonBridgeConfigConnection { + edges: [s1_eternum_SeasonBridgeConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_SeasonBridgeConfigEdge { +type s1_eternum_SeasonBridgeConfigEdge { cursor: Cursor - node: s0_eternum_SeasonBridgeConfig + node: s1_eternum_SeasonBridgeConfig } -input s0_eternum_SeasonBridgeConfigOrder { +input s1_eternum_SeasonBridgeConfigOrder { direction: OrderDirection! - field: s0_eternum_SeasonBridgeConfigOrderField! + field: s1_eternum_SeasonBridgeConfigOrderField! } -enum s0_eternum_SeasonBridgeConfigOrderField { +enum s1_eternum_SeasonBridgeConfigOrderField { CLOSE_AFTER_END_SECONDS CONFIG_ID } -input s0_eternum_SeasonBridgeConfigWhereInput { +input s1_eternum_SeasonBridgeConfigWhereInput { close_after_end_seconds: u64 close_after_end_secondsEQ: u64 close_after_end_secondsGT: u64 @@ -7618,30 +8691,30 @@ input s0_eternum_SeasonBridgeConfigWhereInput { config_idNOTLIKE: u32 } -type s0_eternum_SeasonConnection { - edges: [s0_eternum_SeasonEdge] +type s1_eternum_SeasonConnection { + edges: [s1_eternum_SeasonEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_SeasonEdge { +type s1_eternum_SeasonEdge { cursor: Cursor - node: s0_eternum_Season + node: s1_eternum_Season } -input s0_eternum_SeasonOrder { +input s1_eternum_SeasonOrder { direction: OrderDirection! - field: s0_eternum_SeasonOrderField! + field: s1_eternum_SeasonOrderField! } -enum s0_eternum_SeasonOrderField { +enum s1_eternum_SeasonOrderField { CONFIG_ID ENDED_AT IS_OVER START_AT } -input s0_eternum_SeasonWhereInput { +input s1_eternum_SeasonWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -7678,7 +8751,7 @@ input s0_eternum_SeasonWhereInput { start_atNOTLIKE: u64 } -type s0_eternum_SettleRealmData { +type s1_eternum_SettleRealmData { cities: u8 entity: World__Entity entity_id: u32 @@ -7699,23 +8772,23 @@ type s0_eternum_SettleRealmData { y: u32 } -type s0_eternum_SettleRealmDataConnection { - edges: [s0_eternum_SettleRealmDataEdge] +type s1_eternum_SettleRealmDataConnection { + edges: [s1_eternum_SettleRealmDataEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_SettleRealmDataEdge { +type s1_eternum_SettleRealmDataEdge { cursor: Cursor - node: s0_eternum_SettleRealmData + node: s1_eternum_SettleRealmData } -input s0_eternum_SettleRealmDataOrder { +input s1_eternum_SettleRealmDataOrder { direction: OrderDirection! - field: s0_eternum_SettleRealmDataOrderField! + field: s1_eternum_SettleRealmDataOrderField! } -enum s0_eternum_SettleRealmDataOrderField { +enum s1_eternum_SettleRealmDataOrderField { CITIES ENTITY_ID EVENT_ID @@ -7734,7 +8807,7 @@ enum s0_eternum_SettleRealmDataOrderField { Y } -input s0_eternum_SettleRealmDataWhereInput { +input s1_eternum_SettleRealmDataWhereInput { cities: u8 citiesEQ: u8 citiesGT: u8 @@ -7903,7 +8976,7 @@ input s0_eternum_SettleRealmDataWhereInput { yNOTLIKE: u32 } -type s0_eternum_SettlementConfig { +type s1_eternum_SettlementConfig { base_distance: u32 center: u32 config_id: u32 @@ -7916,23 +8989,23 @@ type s0_eternum_SettlementConfig { points_placed: u32 } -type s0_eternum_SettlementConfigConnection { - edges: [s0_eternum_SettlementConfigEdge] +type s1_eternum_SettlementConfigConnection { + edges: [s1_eternum_SettlementConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_SettlementConfigEdge { +type s1_eternum_SettlementConfigEdge { cursor: Cursor - node: s0_eternum_SettlementConfig + node: s1_eternum_SettlementConfig } -input s0_eternum_SettlementConfigOrder { +input s1_eternum_SettlementConfigOrder { direction: OrderDirection! - field: s0_eternum_SettlementConfigOrderField! + field: s1_eternum_SettlementConfigOrderField! } -enum s0_eternum_SettlementConfigOrderField { +enum s1_eternum_SettlementConfigOrderField { BASE_DISTANCE CENTER CONFIG_ID @@ -7943,7 +9016,7 @@ enum s0_eternum_SettlementConfigOrderField { POINTS_PLACED } -input s0_eternum_SettlementConfigWhereInput { +input s1_eternum_SettlementConfigWhereInput { base_distance: u32 base_distanceEQ: u32 base_distanceGT: u32 @@ -8034,7 +9107,7 @@ input s0_eternum_SettlementConfigWhereInput { points_placedNOTLIKE: u32 } -type s0_eternum_SpeedConfig { +type s1_eternum_SpeedConfig { config_id: u32 entity: World__Entity entity_type: u32 @@ -8043,30 +9116,30 @@ type s0_eternum_SpeedConfig { speed_config_id: u32 } -type s0_eternum_SpeedConfigConnection { - edges: [s0_eternum_SpeedConfigEdge] +type s1_eternum_SpeedConfigConnection { + edges: [s1_eternum_SpeedConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_SpeedConfigEdge { +type s1_eternum_SpeedConfigEdge { cursor: Cursor - node: s0_eternum_SpeedConfig + node: s1_eternum_SpeedConfig } -input s0_eternum_SpeedConfigOrder { +input s1_eternum_SpeedConfigOrder { direction: OrderDirection! - field: s0_eternum_SpeedConfigOrderField! + field: s1_eternum_SpeedConfigOrderField! } -enum s0_eternum_SpeedConfigOrderField { +enum s1_eternum_SpeedConfigOrderField { CONFIG_ID ENTITY_TYPE SEC_PER_KM SPEED_CONFIG_ID } -input s0_eternum_SpeedConfigWhereInput { +input s1_eternum_SpeedConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -8113,7 +9186,7 @@ input s0_eternum_SpeedConfigWhereInput { speed_config_idNOTLIKE: u32 } -type s0_eternum_Stamina { +type s1_eternum_Stamina { amount: u16 entity: World__Entity entity_id: u32 @@ -8121,7 +9194,7 @@ type s0_eternum_Stamina { last_refill_tick: u64 } -type s0_eternum_StaminaConfig { +type s1_eternum_StaminaConfig { config_id: u32 entity: World__Entity eventMessage: World__EventMessage @@ -8129,29 +9202,29 @@ type s0_eternum_StaminaConfig { unit_type: u8 } -type s0_eternum_StaminaConfigConnection { - edges: [s0_eternum_StaminaConfigEdge] +type s1_eternum_StaminaConfigConnection { + edges: [s1_eternum_StaminaConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_StaminaConfigEdge { +type s1_eternum_StaminaConfigEdge { cursor: Cursor - node: s0_eternum_StaminaConfig + node: s1_eternum_StaminaConfig } -input s0_eternum_StaminaConfigOrder { +input s1_eternum_StaminaConfigOrder { direction: OrderDirection! - field: s0_eternum_StaminaConfigOrderField! + field: s1_eternum_StaminaConfigOrderField! } -enum s0_eternum_StaminaConfigOrderField { +enum s1_eternum_StaminaConfigOrderField { CONFIG_ID MAX_STAMINA UNIT_TYPE } -input s0_eternum_StaminaConfigWhereInput { +input s1_eternum_StaminaConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -8187,29 +9260,29 @@ input s0_eternum_StaminaConfigWhereInput { unit_typeNOTLIKE: u8 } -type s0_eternum_StaminaConnection { - edges: [s0_eternum_StaminaEdge] +type s1_eternum_StaminaConnection { + edges: [s1_eternum_StaminaEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_StaminaEdge { +type s1_eternum_StaminaEdge { cursor: Cursor - node: s0_eternum_Stamina + node: s1_eternum_Stamina } -input s0_eternum_StaminaOrder { +input s1_eternum_StaminaOrder { direction: OrderDirection! - field: s0_eternum_StaminaOrderField! + field: s1_eternum_StaminaOrderField! } -enum s0_eternum_StaminaOrderField { +enum s1_eternum_StaminaOrderField { AMOUNT ENTITY_ID LAST_REFILL_TICK } -type s0_eternum_StaminaRefillConfig { +type s1_eternum_StaminaRefillConfig { amount_per_tick: u16 config_id: u32 entity: World__Entity @@ -8217,29 +9290,29 @@ type s0_eternum_StaminaRefillConfig { start_boost_tick_count: u8 } -type s0_eternum_StaminaRefillConfigConnection { - edges: [s0_eternum_StaminaRefillConfigEdge] +type s1_eternum_StaminaRefillConfigConnection { + edges: [s1_eternum_StaminaRefillConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_StaminaRefillConfigEdge { +type s1_eternum_StaminaRefillConfigEdge { cursor: Cursor - node: s0_eternum_StaminaRefillConfig + node: s1_eternum_StaminaRefillConfig } -input s0_eternum_StaminaRefillConfigOrder { +input s1_eternum_StaminaRefillConfigOrder { direction: OrderDirection! - field: s0_eternum_StaminaRefillConfigOrderField! + field: s1_eternum_StaminaRefillConfigOrderField! } -enum s0_eternum_StaminaRefillConfigOrderField { +enum s1_eternum_StaminaRefillConfigOrderField { AMOUNT_PER_TICK CONFIG_ID START_BOOST_TICK_COUNT } -input s0_eternum_StaminaRefillConfigWhereInput { +input s1_eternum_StaminaRefillConfigWhereInput { amount_per_tick: u16 amount_per_tickEQ: u16 amount_per_tickGT: u16 @@ -8275,7 +9348,7 @@ input s0_eternum_StaminaRefillConfigWhereInput { start_boost_tick_countNOTLIKE: u8 } -input s0_eternum_StaminaWhereInput { +input s1_eternum_StaminaWhereInput { amount: u16 amountEQ: u16 amountGT: u16 @@ -8311,35 +9384,35 @@ input s0_eternum_StaminaWhereInput { last_refill_tickNOTLIKE: u64 } -type s0_eternum_Status { +type s1_eternum_Status { entity: World__Entity eventMessage: World__EventMessage trade_id: u32 value: u128 } -type s0_eternum_StatusConnection { - edges: [s0_eternum_StatusEdge] +type s1_eternum_StatusConnection { + edges: [s1_eternum_StatusEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_StatusEdge { +type s1_eternum_StatusEdge { cursor: Cursor - node: s0_eternum_Status + node: s1_eternum_Status } -input s0_eternum_StatusOrder { +input s1_eternum_StatusOrder { direction: OrderDirection! - field: s0_eternum_StatusOrderField! + field: s1_eternum_StatusOrderField! } -enum s0_eternum_StatusOrderField { +enum s1_eternum_StatusOrderField { TRADE_ID VALUE } -input s0_eternum_StatusWhereInput { +input s1_eternum_StatusWhereInput { trade_id: u32 trade_idEQ: u32 trade_idGT: u32 @@ -8364,7 +9437,7 @@ input s0_eternum_StatusWhereInput { valueNOTLIKE: u128 } -type s0_eternum_Structure { +type s1_eternum_Structure { category: Enum created_at: u64 entity: World__Entity @@ -8372,41 +9445,41 @@ type s0_eternum_Structure { eventMessage: World__EventMessage } -type s0_eternum_StructureConnection { - edges: [s0_eternum_StructureEdge] +type s1_eternum_StructureConnection { + edges: [s1_eternum_StructureEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_StructureCount { - coord: s0_eternum_Coord +type s1_eternum_StructureCount { + coord: s1_eternum_Coord count: u8 entity: World__Entity eventMessage: World__EventMessage } -type s0_eternum_StructureCountConnection { - edges: [s0_eternum_StructureCountEdge] +type s1_eternum_StructureCountConnection { + edges: [s1_eternum_StructureCountEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_StructureCountEdge { +type s1_eternum_StructureCountEdge { cursor: Cursor - node: s0_eternum_StructureCount + node: s1_eternum_StructureCount } -input s0_eternum_StructureCountOrder { +input s1_eternum_StructureCountOrder { direction: OrderDirection! - field: s0_eternum_StructureCountOrderField! + field: s1_eternum_StructureCountOrderField! } -enum s0_eternum_StructureCountOrderField { +enum s1_eternum_StructureCountOrderField { COORD COUNT } -input s0_eternum_StructureCountWhereInput { +input s1_eternum_StructureCountWhereInput { count: u8 countEQ: u8 countGT: u8 @@ -8420,23 +9493,23 @@ input s0_eternum_StructureCountWhereInput { countNOTLIKE: u8 } -type s0_eternum_StructureEdge { +type s1_eternum_StructureEdge { cursor: Cursor - node: s0_eternum_Structure + node: s1_eternum_Structure } -input s0_eternum_StructureOrder { +input s1_eternum_StructureOrder { direction: OrderDirection! - field: s0_eternum_StructureOrderField! + field: s1_eternum_StructureOrderField! } -enum s0_eternum_StructureOrderField { +enum s1_eternum_StructureOrderField { CATEGORY CREATED_AT ENTITY_ID } -input s0_eternum_StructureWhereInput { +input s1_eternum_StructureWhereInput { category: Enum created_at: u64 created_atEQ: u64 @@ -8462,7 +9535,7 @@ input s0_eternum_StructureWhereInput { entity_idNOTLIKE: u32 } -type s0_eternum_SwapEvent { +type s1_eternum_SwapEvent { bank_entity_id: u32 bank_owner_fees: u128 buy: bool @@ -8478,23 +9551,23 @@ type s0_eternum_SwapEvent { timestamp: u64 } -type s0_eternum_SwapEventConnection { - edges: [s0_eternum_SwapEventEdge] +type s1_eternum_SwapEventConnection { + edges: [s1_eternum_SwapEventEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_SwapEventEdge { +type s1_eternum_SwapEventEdge { cursor: Cursor - node: s0_eternum_SwapEvent + node: s1_eternum_SwapEvent } -input s0_eternum_SwapEventOrder { +input s1_eternum_SwapEventOrder { direction: OrderDirection! - field: s0_eternum_SwapEventOrderField! + field: s1_eternum_SwapEventOrderField! } -enum s0_eternum_SwapEventOrderField { +enum s1_eternum_SwapEventOrderField { BANK_ENTITY_ID BANK_OWNER_FEES BUY @@ -8508,7 +9581,7 @@ enum s0_eternum_SwapEventOrderField { TIMESTAMP } -input s0_eternum_SwapEventWhereInput { +input s1_eternum_SwapEventWhereInput { bank_entity_id: u32 bank_entity_idEQ: u32 bank_entity_idGT: u32 @@ -8622,13 +9695,13 @@ input s0_eternum_SwapEventWhereInput { timestampNOTLIKE: u64 } -type s0_eternum_Task { +type s1_eternum_Task { description: ByteArray id: felt252 total: u32 } -type s0_eternum_TickConfig { +type s1_eternum_TickConfig { config_id: u32 entity: World__Entity eventMessage: World__EventMessage @@ -8636,29 +9709,29 @@ type s0_eternum_TickConfig { tick_interval_in_seconds: u64 } -type s0_eternum_TickConfigConnection { - edges: [s0_eternum_TickConfigEdge] +type s1_eternum_TickConfigConnection { + edges: [s1_eternum_TickConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_TickConfigEdge { +type s1_eternum_TickConfigEdge { cursor: Cursor - node: s0_eternum_TickConfig + node: s1_eternum_TickConfig } -input s0_eternum_TickConfigOrder { +input s1_eternum_TickConfigOrder { direction: OrderDirection! - field: s0_eternum_TickConfigOrderField! + field: s1_eternum_TickConfigOrderField! } -enum s0_eternum_TickConfigOrderField { +enum s1_eternum_TickConfigOrderField { CONFIG_ID TICK_ID TICK_INTERVAL_IN_SECONDS } -input s0_eternum_TickConfigWhereInput { +input s1_eternum_TickConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -8694,7 +9767,7 @@ input s0_eternum_TickConfigWhereInput { tick_interval_in_secondsNOTLIKE: u64 } -type s0_eternum_Tile { +type s1_eternum_Tile { biome: Enum col: u32 entity: World__Entity @@ -8704,23 +9777,23 @@ type s0_eternum_Tile { row: u32 } -type s0_eternum_TileConnection { - edges: [s0_eternum_TileEdge] +type s1_eternum_TileConnection { + edges: [s1_eternum_TileEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_TileEdge { +type s1_eternum_TileEdge { cursor: Cursor - node: s0_eternum_Tile + node: s1_eternum_Tile } -input s0_eternum_TileOrder { +input s1_eternum_TileOrder { direction: OrderDirection! - field: s0_eternum_TileOrderField! + field: s1_eternum_TileOrderField! } -enum s0_eternum_TileOrderField { +enum s1_eternum_TileOrderField { BIOME COL EXPLORED_AT @@ -8728,7 +9801,7 @@ enum s0_eternum_TileOrderField { ROW } -input s0_eternum_TileWhereInput { +input s1_eternum_TileWhereInput { biome: Enum col: u32 colEQ: u32 @@ -8776,7 +9849,7 @@ input s0_eternum_TileWhereInput { rowNOTLIKE: u32 } -type s0_eternum_Trade { +type s1_eternum_Trade { entity: World__Entity eventMessage: World__EventMessage expires_at: u64 @@ -8793,23 +9866,23 @@ type s0_eternum_Trade { trade_id: u32 } -type s0_eternum_TradeConnection { - edges: [s0_eternum_TradeEdge] +type s1_eternum_TradeConnection { + edges: [s1_eternum_TradeEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_TradeEdge { +type s1_eternum_TradeEdge { cursor: Cursor - node: s0_eternum_Trade + node: s1_eternum_Trade } -input s0_eternum_TradeOrder { +input s1_eternum_TradeOrder { direction: OrderDirection! - field: s0_eternum_TradeOrderField! + field: s1_eternum_TradeOrderField! } -enum s0_eternum_TradeOrderField { +enum s1_eternum_TradeOrderField { EXPIRES_AT MAKER_GIVES_RESOURCES_HASH MAKER_GIVES_RESOURCES_ID @@ -8824,7 +9897,7 @@ enum s0_eternum_TradeOrderField { TRADE_ID } -input s0_eternum_TradeWhereInput { +input s1_eternum_TradeWhereInput { expires_at: u64 expires_atEQ: u64 expires_atGT: u64 @@ -8959,33 +10032,33 @@ input s0_eternum_TradeWhereInput { trade_idNOTLIKE: u32 } -type s0_eternum_Transfer { +type s1_eternum_Transfer { entity: World__Entity eventMessage: World__EventMessage recipient_entity_id: u32 - resources: [s0_eternum_u8u128] + resources: [s1_eternum_u8u128] sender_entity_id: u32 sending_realm_id: u32 timestamp: u64 } -type s0_eternum_TransferConnection { - edges: [s0_eternum_TransferEdge] +type s1_eternum_TransferConnection { + edges: [s1_eternum_TransferEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_TransferEdge { +type s1_eternum_TransferEdge { cursor: Cursor - node: s0_eternum_Transfer + node: s1_eternum_Transfer } -input s0_eternum_TransferOrder { +input s1_eternum_TransferOrder { direction: OrderDirection! - field: s0_eternum_TransferOrderField! + field: s1_eternum_TransferOrderField! } -enum s0_eternum_TransferOrderField { +enum s1_eternum_TransferOrderField { RECIPIENT_ENTITY_ID RESOURCES SENDER_ENTITY_ID @@ -8993,7 +10066,7 @@ enum s0_eternum_TransferOrderField { TIMESTAMP } -input s0_eternum_TransferWhereInput { +input s1_eternum_TransferWhereInput { recipient_entity_id: u32 recipient_entity_idEQ: u32 recipient_entity_idGT: u32 @@ -9040,7 +10113,7 @@ input s0_eternum_TransferWhereInput { timestampNOTLIKE: u64 } -type s0_eternum_Travel { +type s1_eternum_Travel { destination_coord_x: u32 destination_coord_y: u32 entity: World__Entity @@ -9048,22 +10121,22 @@ type s0_eternum_Travel { eventMessage: World__EventMessage owner: ContractAddress timestamp: u64 - travel_path: [s0_eternum_Coord] + travel_path: [s1_eternum_Coord] travel_time: u64 } -type s0_eternum_TravelConnection { - edges: [s0_eternum_TravelEdge] +type s1_eternum_TravelConnection { + edges: [s1_eternum_TravelEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_TravelEdge { +type s1_eternum_TravelEdge { cursor: Cursor - node: s0_eternum_Travel + node: s1_eternum_Travel } -type s0_eternum_TravelFoodCostConfig { +type s1_eternum_TravelFoodCostConfig { config_id: u32 entity: World__Entity eventMessage: World__EventMessage @@ -9074,23 +10147,23 @@ type s0_eternum_TravelFoodCostConfig { unit_type: u8 } -type s0_eternum_TravelFoodCostConfigConnection { - edges: [s0_eternum_TravelFoodCostConfigEdge] +type s1_eternum_TravelFoodCostConfigConnection { + edges: [s1_eternum_TravelFoodCostConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_TravelFoodCostConfigEdge { +type s1_eternum_TravelFoodCostConfigEdge { cursor: Cursor - node: s0_eternum_TravelFoodCostConfig + node: s1_eternum_TravelFoodCostConfig } -input s0_eternum_TravelFoodCostConfigOrder { +input s1_eternum_TravelFoodCostConfigOrder { direction: OrderDirection! - field: s0_eternum_TravelFoodCostConfigOrderField! + field: s1_eternum_TravelFoodCostConfigOrderField! } -enum s0_eternum_TravelFoodCostConfigOrderField { +enum s1_eternum_TravelFoodCostConfigOrderField { CONFIG_ID EXPLORE_FISH_BURN_AMOUNT EXPLORE_WHEAT_BURN_AMOUNT @@ -9099,7 +10172,7 @@ enum s0_eternum_TravelFoodCostConfigOrderField { UNIT_TYPE } -input s0_eternum_TravelFoodCostConfigWhereInput { +input s1_eternum_TravelFoodCostConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -9168,12 +10241,12 @@ input s0_eternum_TravelFoodCostConfigWhereInput { unit_typeNOTLIKE: u8 } -input s0_eternum_TravelOrder { +input s1_eternum_TravelOrder { direction: OrderDirection! - field: s0_eternum_TravelOrderField! + field: s1_eternum_TravelOrderField! } -enum s0_eternum_TravelOrderField { +enum s1_eternum_TravelOrderField { DESTINATION_COORD_X DESTINATION_COORD_Y ENTITY_ID @@ -9183,7 +10256,7 @@ enum s0_eternum_TravelOrderField { TRAVEL_TIME } -type s0_eternum_TravelStaminaCostConfig { +type s1_eternum_TravelStaminaCostConfig { config_id: u32 cost: u16 entity: World__Entity @@ -9191,29 +10264,29 @@ type s0_eternum_TravelStaminaCostConfig { travel_type: u8 } -type s0_eternum_TravelStaminaCostConfigConnection { - edges: [s0_eternum_TravelStaminaCostConfigEdge] +type s1_eternum_TravelStaminaCostConfigConnection { + edges: [s1_eternum_TravelStaminaCostConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_TravelStaminaCostConfigEdge { +type s1_eternum_TravelStaminaCostConfigEdge { cursor: Cursor - node: s0_eternum_TravelStaminaCostConfig + node: s1_eternum_TravelStaminaCostConfig } -input s0_eternum_TravelStaminaCostConfigOrder { +input s1_eternum_TravelStaminaCostConfigOrder { direction: OrderDirection! - field: s0_eternum_TravelStaminaCostConfigOrderField! + field: s1_eternum_TravelStaminaCostConfigOrderField! } -enum s0_eternum_TravelStaminaCostConfigOrderField { +enum s1_eternum_TravelStaminaCostConfigOrderField { CONFIG_ID COST TRAVEL_TYPE } -input s0_eternum_TravelStaminaCostConfigWhereInput { +input s1_eternum_TravelStaminaCostConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -9249,7 +10322,7 @@ input s0_eternum_TravelStaminaCostConfigWhereInput { travel_typeNOTLIKE: u8 } -input s0_eternum_TravelWhereInput { +input s1_eternum_TravelWhereInput { destination_coord_x: u32 destination_coord_xEQ: u32 destination_coord_xGT: u32 @@ -9318,7 +10391,7 @@ input s0_eternum_TravelWhereInput { travel_timeNOTLIKE: u64 } -type s0_eternum_TroopConfig { +type s1_eternum_TroopConfig { advantage_percent: u16 army_extra_per_building: u8 army_free_per_structure: u8 @@ -9339,23 +10412,23 @@ type s0_eternum_TroopConfig { pillage_health_divisor: u8 } -type s0_eternum_TroopConfigConnection { - edges: [s0_eternum_TroopConfigEdge] +type s1_eternum_TroopConfigConnection { + edges: [s1_eternum_TroopConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_TroopConfigEdge { +type s1_eternum_TroopConfigEdge { cursor: Cursor - node: s0_eternum_TroopConfig + node: s1_eternum_TroopConfig } -input s0_eternum_TroopConfigOrder { +input s1_eternum_TroopConfigOrder { direction: OrderDirection! - field: s0_eternum_TroopConfigOrderField! + field: s1_eternum_TroopConfigOrderField! } -enum s0_eternum_TroopConfigOrderField { +enum s1_eternum_TroopConfigOrderField { ADVANTAGE_PERCENT ARMY_EXTRA_PER_BUILDING ARMY_FREE_PER_STRUCTURE @@ -9374,7 +10447,7 @@ enum s0_eternum_TroopConfigOrderField { PILLAGE_HEALTH_DIVISOR } -input s0_eternum_TroopConfigWhereInput { +input s1_eternum_TroopConfigWhereInput { advantage_percent: u16 advantage_percentEQ: u16 advantage_percentGT: u16 @@ -9553,13 +10626,13 @@ input s0_eternum_TroopConfigWhereInput { pillage_health_divisorNOTLIKE: u8 } -type s0_eternum_Troops { +type s1_eternum_Troops { crossbowman_count: u64 knight_count: u64 paladin_count: u64 } -type s0_eternum_TrophyCreation { +type s1_eternum_TrophyCreation { data: ByteArray description: ByteArray end: u64 @@ -9572,27 +10645,27 @@ type s0_eternum_TrophyCreation { index: u8 points: u16 start: u64 - tasks: [s0_eternum_Task] + tasks: [s1_eternum_Task] title: felt252 } -type s0_eternum_TrophyCreationConnection { - edges: [s0_eternum_TrophyCreationEdge] +type s1_eternum_TrophyCreationConnection { + edges: [s1_eternum_TrophyCreationEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_TrophyCreationEdge { +type s1_eternum_TrophyCreationEdge { cursor: Cursor - node: s0_eternum_TrophyCreation + node: s1_eternum_TrophyCreation } -input s0_eternum_TrophyCreationOrder { +input s1_eternum_TrophyCreationOrder { direction: OrderDirection! - field: s0_eternum_TrophyCreationOrderField! + field: s1_eternum_TrophyCreationOrderField! } -enum s0_eternum_TrophyCreationOrderField { +enum s1_eternum_TrophyCreationOrderField { DATA DESCRIPTION END @@ -9607,7 +10680,7 @@ enum s0_eternum_TrophyCreationOrderField { TITLE } -input s0_eternum_TrophyCreationWhereInput { +input s1_eternum_TrophyCreationWhereInput { data: ByteArray dataEQ: ByteArray dataGT: ByteArray @@ -9721,7 +10794,7 @@ input s0_eternum_TrophyCreationWhereInput { titleNOTLIKE: felt252 } -type s0_eternum_TrophyProgression { +type s1_eternum_TrophyProgression { count: u32 entity: World__Entity eventMessage: World__EventMessage @@ -9730,30 +10803,30 @@ type s0_eternum_TrophyProgression { time: u64 } -type s0_eternum_TrophyProgressionConnection { - edges: [s0_eternum_TrophyProgressionEdge] +type s1_eternum_TrophyProgressionConnection { + edges: [s1_eternum_TrophyProgressionEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_TrophyProgressionEdge { +type s1_eternum_TrophyProgressionEdge { cursor: Cursor - node: s0_eternum_TrophyProgression + node: s1_eternum_TrophyProgression } -input s0_eternum_TrophyProgressionOrder { +input s1_eternum_TrophyProgressionOrder { direction: OrderDirection! - field: s0_eternum_TrophyProgressionOrderField! + field: s1_eternum_TrophyProgressionOrderField! } -enum s0_eternum_TrophyProgressionOrderField { +enum s1_eternum_TrophyProgressionOrderField { COUNT PLAYER_ID TASK_ID TIME } -input s0_eternum_TrophyProgressionWhereInput { +input s1_eternum_TrophyProgressionWhereInput { count: u32 countEQ: u32 countGT: u32 @@ -9800,35 +10873,35 @@ input s0_eternum_TrophyProgressionWhereInput { timeNOTLIKE: u64 } -type s0_eternum_VRFConfig { +type s1_eternum_VRFConfig { config_id: u32 entity: World__Entity eventMessage: World__EventMessage vrf_provider_address: ContractAddress } -type s0_eternum_VRFConfigConnection { - edges: [s0_eternum_VRFConfigEdge] +type s1_eternum_VRFConfigConnection { + edges: [s1_eternum_VRFConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_VRFConfigEdge { +type s1_eternum_VRFConfigEdge { cursor: Cursor - node: s0_eternum_VRFConfig + node: s1_eternum_VRFConfig } -input s0_eternum_VRFConfigOrder { +input s1_eternum_VRFConfigOrder { direction: OrderDirection! - field: s0_eternum_VRFConfigOrderField! + field: s1_eternum_VRFConfigOrderField! } -enum s0_eternum_VRFConfigOrderField { +enum s1_eternum_VRFConfigOrderField { CONFIG_ID VRF_PROVIDER_ADDRESS } -input s0_eternum_VRFConfigWhereInput { +input s1_eternum_VRFConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -9853,14 +10926,14 @@ input s0_eternum_VRFConfigWhereInput { vrf_provider_addressNOTLIKE: ContractAddress } -type s0_eternum_Weight { +type s1_eternum_Weight { entity: World__Entity entity_id: u32 eventMessage: World__EventMessage value: u128 } -type s0_eternum_WeightConfig { +type s1_eternum_WeightConfig { config_id: u32 entity: World__Entity entity_type: u32 @@ -9869,30 +10942,30 @@ type s0_eternum_WeightConfig { weight_gram: u128 } -type s0_eternum_WeightConfigConnection { - edges: [s0_eternum_WeightConfigEdge] +type s1_eternum_WeightConfigConnection { + edges: [s1_eternum_WeightConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_WeightConfigEdge { +type s1_eternum_WeightConfigEdge { cursor: Cursor - node: s0_eternum_WeightConfig + node: s1_eternum_WeightConfig } -input s0_eternum_WeightConfigOrder { +input s1_eternum_WeightConfigOrder { direction: OrderDirection! - field: s0_eternum_WeightConfigOrderField! + field: s1_eternum_WeightConfigOrderField! } -enum s0_eternum_WeightConfigOrderField { +enum s1_eternum_WeightConfigOrderField { CONFIG_ID ENTITY_TYPE WEIGHT_CONFIG_ID WEIGHT_GRAM } -input s0_eternum_WeightConfigWhereInput { +input s1_eternum_WeightConfigWhereInput { config_id: u32 config_idEQ: u32 config_idGT: u32 @@ -9939,28 +11012,28 @@ input s0_eternum_WeightConfigWhereInput { weight_gramNOTLIKE: u128 } -type s0_eternum_WeightConnection { - edges: [s0_eternum_WeightEdge] +type s1_eternum_WeightConnection { + edges: [s1_eternum_WeightEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_WeightEdge { +type s1_eternum_WeightEdge { cursor: Cursor - node: s0_eternum_Weight + node: s1_eternum_Weight } -input s0_eternum_WeightOrder { +input s1_eternum_WeightOrder { direction: OrderDirection! - field: s0_eternum_WeightOrderField! + field: s1_eternum_WeightOrderField! } -enum s0_eternum_WeightOrderField { +enum s1_eternum_WeightOrderField { ENTITY_ID VALUE } -input s0_eternum_WeightWhereInput { +input s1_eternum_WeightWhereInput { entity_id: u32 entity_idEQ: u32 entity_idGT: u32 @@ -9985,7 +11058,7 @@ input s0_eternum_WeightWhereInput { valueNOTLIKE: u128 } -type s0_eternum_WorldConfig { +type s1_eternum_WorldConfig { admin_address: ContractAddress config_id: u32 entity: World__Entity @@ -9993,29 +11066,29 @@ type s0_eternum_WorldConfig { realm_l2_contract: ContractAddress } -type s0_eternum_WorldConfigConnection { - edges: [s0_eternum_WorldConfigEdge] +type s1_eternum_WorldConfigConnection { + edges: [s1_eternum_WorldConfigEdge] pageInfo: World__PageInfo! totalCount: Int! } -type s0_eternum_WorldConfigEdge { +type s1_eternum_WorldConfigEdge { cursor: Cursor - node: s0_eternum_WorldConfig + node: s1_eternum_WorldConfig } -input s0_eternum_WorldConfigOrder { +input s1_eternum_WorldConfigOrder { direction: OrderDirection! - field: s0_eternum_WorldConfigOrderField! + field: s1_eternum_WorldConfigOrderField! } -enum s0_eternum_WorldConfigOrderField { +enum s1_eternum_WorldConfigOrderField { ADMIN_ADDRESS CONFIG_ID REALM_L2_CONTRACT } -input s0_eternum_WorldConfigWhereInput { +input s1_eternum_WorldConfigWhereInput { admin_address: ContractAddress admin_addressEQ: ContractAddress admin_addressGT: ContractAddress @@ -10051,7 +11124,7 @@ input s0_eternum_WorldConfigWhereInput { realm_l2_contractNOTLIKE: ContractAddress } -type s0_eternum_u8u128 { +type s1_eternum_u8u128 { _0: u8 _1: u128 } @@ -10066,4 +11139,4 @@ scalar u64 scalar u128 -scalar u256 \ No newline at end of file +scalar u256 diff --git a/client/apps/landing/src/components/modules/app-sidebar.tsx b/client/apps/landing/src/components/modules/app-sidebar.tsx index 3b861f005c..a7ef0ac75d 100644 --- a/client/apps/landing/src/components/modules/app-sidebar.tsx +++ b/client/apps/landing/src/components/modules/app-sidebar.tsx @@ -12,7 +12,7 @@ import { Castle, Coins, Gamepad2, Home, PlayCircle, Scale, Sheet, Ship, Twitter import { TypeH2 } from "../typography/type-h2"; import { ReactComponent as Discord } from "@/assets/icons/discord.svg"; -import { ReactComponent as EternumLogo } from "@/assets/icons/eternum_new_logo.svg"; +import { ReactComponent as EternumLogo } from "@/assets/icons/eternum-new-logo.svg"; // Menu items. const items = [ { diff --git a/client/apps/landing/src/components/modules/bridge-fees.tsx b/client/apps/landing/src/components/modules/bridge-fees.tsx index 2a4ecbb9c9..c35dcdda9f 100644 --- a/client/apps/landing/src/components/modules/bridge-fees.tsx +++ b/client/apps/landing/src/components/modules/bridge-fees.tsx @@ -1,4 +1,4 @@ -import { BRIDGE_FEE_DENOMINATOR, EternumGlobalConfig, ResourcesIds } from "@bibliothecadao/eternum"; +import { BRIDGE_FEE_DENOMINATOR, ResourcesIds } from "@bibliothecadao/eternum"; import { Minus, Plus } from "lucide-react"; import { useMemo } from "react"; import { Button } from "../ui/button"; @@ -37,7 +37,7 @@ export const BridgeFees = ({ type, setResourceFees, }: FeesCollapsibleProps) => { - const bridgeConfig = EternumGlobalConfig.bridge; + const bridgeConfig = ETERNUM_CONFIG().bridge; const calculateBridgeFeeDisplayPercent = (percent: number) => { return (percent * 100) / BRIDGE_FEE_DENOMINATOR; diff --git a/client/apps/landing/src/components/modules/bridge-in.tsx b/client/apps/landing/src/components/modules/bridge-in.tsx index 851a1e0fee..e26b4658fd 100644 --- a/client/apps/landing/src/components/modules/bridge-in.tsx +++ b/client/apps/landing/src/components/modules/bridge-in.tsx @@ -21,7 +21,8 @@ import { ResourceIcon } from "../ui/elements/ResourceIcon"; import { Input } from "../ui/input"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../ui/tooltip"; -import { calculateDonkeysNeeded, getSeasonAddresses, getTotalResourceWeight } from "../ui/utils/utils"; +import { getResourceAddresses } from "../ui/utils/addresses"; +import { calculateDonkeysNeeded, getTotalResourceWeight } from "../ui/utils/utils"; import { BridgeFees } from "./bridge-fees"; export const BridgeIn = () => { @@ -64,7 +65,7 @@ export const BridgeIn = () => { const [selectedResourceAmounts, setSelectedResourceAmounts] = useState<{ [key: string]: number }>({ [ResourcesIds.Lords]: 0, }); - const [resourceAddresses, setResourceAddresses] = useState<{ [key: string]: string }>({}); + const [resourceAddresses, setResourceAddresses] = useState<{ [key: string]: [number, string] }>({}); const unselectedResources = useMemo( () => resources.filter((res) => !selectedResourceIds.includes(res.id)), [selectedResourceIds], @@ -121,7 +122,7 @@ export const BridgeIn = () => { useEffect(() => { const fetchAddresses = async () => { - const addresses = await getSeasonAddresses(); + const addresses = await getResourceAddresses(); setResourceAddresses(addresses); }; fetchAddresses(); @@ -142,7 +143,7 @@ export const BridgeIn = () => { .filter(([id, amount]) => amount > 0) .map(async ([id, amount]) => { const tokenAddress = - resourceAddresses[ResourcesIds[id].toLocaleUpperCase() as keyof typeof resourceAddresses][1]; + resourceAddresses[ResourcesIds[id as keyof typeof ResourcesIds].toLocaleUpperCase() as keyof typeof resourceAddresses][1]; return { tokenAddress: tokenAddress as string, amount: BigInt(amount * 10 ** 18), diff --git a/client/apps/landing/src/components/modules/bridge-out-step-1.tsx b/client/apps/landing/src/components/modules/bridge-out-step-1.tsx index a8dd204ded..c800920e43 100644 --- a/client/apps/landing/src/components/modules/bridge-out-step-1.tsx +++ b/client/apps/landing/src/components/modules/bridge-out-step-1.tsx @@ -24,10 +24,10 @@ import { Button } from "../ui/button"; import { ResourceIcon } from "../ui/elements/ResourceIcon"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select"; import { Tooltip, TooltipProvider } from "../ui/tooltip"; +import { getResourceAddresses } from "../ui/utils/addresses"; import { calculateDonkeysNeeded, divideByPrecision, - getSeasonAddresses, getTotalResourceWeight, } from "../ui/utils/utils"; import { BridgeFees } from "./bridge-fees"; @@ -131,7 +131,7 @@ export const BridgeOutStep1 = () => { try { setIsLoading(true); - const resourceAddresses = await getSeasonAddresses(); + const resourceAddresses = await getResourceAddresses(); const validResources = await Promise.all( Object.entries(selectedResourceAmounts) .filter(([id, amount]) => amount > 0) @@ -315,7 +315,7 @@ export const BridgeOutStep1 = () => { ); }; -export const SelectResourceRow = ({ +const SelectResourceRow = ({ realmEntityId, selectedResourceIds, setSelectedResourceIds, diff --git a/client/apps/landing/src/components/modules/bridge-out-step-2.tsx b/client/apps/landing/src/components/modules/bridge-out-step-2.tsx index b0cb882f17..f00b30e39f 100644 --- a/client/apps/landing/src/components/modules/bridge-out-step-2.tsx +++ b/client/apps/landing/src/components/modules/bridge-out-step-2.tsx @@ -6,16 +6,14 @@ import { displayAddress } from "@/lib/utils"; import { ADMIN_BANK_ENTITY_ID, RESOURCE_PRECISION, ResourcesIds } from "@bibliothecadao/eternum"; import { useAccount } from "@starknet-react/core"; import { ChevronDown, ChevronUp, Loader } from "lucide-react"; -import { useEffect, useMemo, useState } from "react"; +import { useEffect, useState } from "react"; import { TypeP } from "../typography/type-p"; -import { ShowSingleResource } from "../ui/SelectResources"; import { Button } from "../ui/button"; import { ResourceIcon } from "../ui/elements/ResourceIcon"; import { Input } from "../ui/input"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "../ui/table"; -import { getSeasonAddresses } from "../ui/utils/utils"; +import { getResourceAddresses } from "../ui/utils/addresses"; import { BridgeFees } from "./bridge-fees"; - export const BridgeOutStep2 = () => { const { address } = useAccount(); @@ -60,7 +58,7 @@ export const BridgeOutStep2 = () => { const onFinishWithdrawFromBank = async () => { if (selectedResourceIds.length) { - const resourceAddresses = await getSeasonAddresses(); + const resourceAddresses = await getResourceAddresses(); const donkeyResources = selectedResourceIds.map((id, index) => ({ tokenAddress: resourceAddresses[ResourcesIds[id].toUpperCase() as keyof typeof resourceAddresses][1], from_entity_id: Array.from(selectedDonkeys)[index], @@ -334,29 +332,3 @@ export const BridgeOutStep2 = () => { ); }; - -export const SelectResourceRow = ({ - selectedResourceIds, - setSelectedResourceIds, - selectedResourceAmounts, - setSelectedResourceAmounts, -}: { - selectedResourceIds: number[]; - setSelectedResourceIds: (value: number[]) => void; - selectedResourceAmounts: { [key: string]: number }; - setSelectedResourceAmounts: (value: { [key: string]: number }) => void; -}) => { - return ( -
-
- -
-
- ); -}; diff --git a/client/apps/landing/src/components/modules/bridged-resources.tsx b/client/apps/landing/src/components/modules/bridged-resources.tsx index 03c7f1a61e..7ffef7e545 100644 --- a/client/apps/landing/src/components/modules/bridged-resources.tsx +++ b/client/apps/landing/src/components/modules/bridged-resources.tsx @@ -6,7 +6,7 @@ import { useCallback, useEffect, useState } from "react"; import { TypeH2 } from "../typography/type-h2"; import { Card, CardHeader } from "../ui/card"; import { ResourceIcon } from "../ui/elements/ResourceIcon"; -import { getSeasonAddresses } from "../ui/utils/utils"; +import { getResourceAddresses } from "../ui/utils/addresses"; type SortKey = "totalSupply" | "balance"; type SortDirection = "asc" | "desc"; @@ -19,7 +19,7 @@ export const BridgedResources = () => { useEffect(() => { const getResources = async () => { - const addresses = await getSeasonAddresses(); + const addresses = await getResourceAddresses(); setSortedResources(Object.entries(addresses)); }; void getResources(); @@ -104,7 +104,7 @@ export const BridgedResources = () => { ); }; -export const BridgeResource = ({ +const BridgeResource = ({ name, resourceId, contractAddress, diff --git a/client/apps/landing/src/components/modules/cartridge-connect-button.tsx b/client/apps/landing/src/components/modules/cartridge-connect-button.tsx deleted file mode 100644 index 1e8408ca96..0000000000 --- a/client/apps/landing/src/components/modules/cartridge-connect-button.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { displayAddress } from "@/lib/utils"; -import ControllerConnector from "@cartridge/connector/controller"; -import { useConnect } from "@starknet-react/core"; -import { TrashIcon } from "lucide-react"; -import { useEffect, useState } from "react"; -import { Button, ButtonProps } from "../ui/button"; - -export const CartridgeConnectButton = ( - props: ButtonProps & { cartridgeAddress?: string; setCartridgeAddress?: (address: string | undefined) => void }, -) => { - const { connectors } = useConnect(); - const [username, setUsername] = useState(); - const controller = connectors[0] as ControllerConnector; - const controllerAddress = controller?.controller.account?.address; - - const connectCartridge = async () => { - try { - const res = await controller.connect({ chainIdHint: 1n }); - if (res.account) { - props.setCartridgeAddress?.(res.account); - } - } catch (e) { - console.log(e); - } - }; - const disconnectCartridge = () => { - connectors[0].disconnect(); - props.setCartridgeAddress?.(undefined); - }; - useEffect(() => { - if (!controllerAddress) return; - controller.username()?.then((n) => setUsername(n)); - }, [controllerAddress, controller]); - - return ( - <> - {controllerAddress ? ( -
-
-
Minting to:
-
-
- -
-
- {username} - {displayAddress(controllerAddress)} -
-
- -
-
-
-
- ) : ( - - )} - - ); -}; diff --git a/client/apps/landing/src/components/modules/filters.tsx b/client/apps/landing/src/components/modules/filters.tsx deleted file mode 100644 index 5ce530e1ac..0000000000 --- a/client/apps/landing/src/components/modules/filters.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { Switch } from "@/components/ui/switch"; -import { useState } from "react"; -import { MultiSelect } from "../ui/multi-select"; - -import { ResourcesIds } from "@bibliothecadao/eternum"; - -const frameworksList = Object.values(ResourcesIds) - .filter((value) => isNaN(Number(value))) - .map((value) => ({ - value: value.toString(), - label: value.toString(), - })); - -export const AttributeFilters = () => { - const [selectedFrameworks, setSelectedFrameworks] = useState( - Object.values(ResourcesIds) - .filter((value) => isNaN(Number(value))) - .map((value) => value.toString()), - ); - return ( -
- - -
- ); -}; diff --git a/client/apps/landing/src/components/modules/guild-leaderboard-panel.tsx b/client/apps/landing/src/components/modules/guild-leaderboard-panel.tsx deleted file mode 100644 index a61b9b004b..0000000000 --- a/client/apps/landing/src/components/modules/guild-leaderboard-panel.tsx +++ /dev/null @@ -1,202 +0,0 @@ -import { Guild } from "@/types"; -import { ResourcesIds } from "@bibliothecadao/eternum"; -import { ChevronLeft, ChevronRight } from "lucide-react"; -import { useState } from "react"; -import { Button } from "../ui/button"; -import { CardContent } from "../ui/card"; -import { ResourceIcon } from "../ui/elements/ResourceIcon"; -import { Input } from "../ui/input"; -import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../ui/tooltip"; - -interface GuildLeaderboardPanelProps { - /** Title displayed at the top of the leaderboard */ - title?: string; - /** Array of players to display in the leaderboard */ - guilds: Guild[]; - /** Custom class name for the card container */ - className?: string; - /** Whether to show player rankings */ - showRank?: boolean; - /** Custom points suffix (e.g. "pts", "points", etc) */ - pointsSuffix?: string; -} - -export const GuildLeaderboardPanel = ({ - guilds, - showRank = true, - pointsSuffix = "pts", -}: GuildLeaderboardPanelProps) => { - const [currentPage, setCurrentPage] = useState(0); - const [searchTerm, setSearchTerm] = useState(""); - - const elementsPerPage = 10; - - const filteredGuilds = guilds.filter((guild) => guild.name.toLowerCase().includes(searchTerm.toLowerCase())); - - const totalPages = Math.ceil(filteredGuilds.length / elementsPerPage); - const startIndex = currentPage * elementsPerPage; - const displayedGuilds = filteredGuilds.slice(startIndex, startIndex + elementsPerPage); - - return ( - - { - setSearchTerm(e.target.value); - }} - /> -
-
- {showRank && ( - - - -
#
-
- -

Guilds ranking position

-
-
-
- )} - - - -
Guild
-
- -

Guild's name

-
-
-
- - - -
- Realms -
-
- -

Number of realms owned

-
-
-
- - - -
- Mines -
-
- -

Number of mines owned

-
-
-
- - - -
- Hypers -
-
- -

Number of hyperstructures owned

-
-
-
- - - -
- Points -
-
- -

Total points earned in the game

-
-
-
- - - -
- Share -
-
- -

Percentage share of the prize pool

-
-
-
- - - -
-
- LORDS - -
-
-
- -

$LORDS tokens earned if game ends now

-
-
-
-
- {displayedGuilds.map((guild, index) => ( -
- {showRank &&
{startIndex + index + 1}
} -
{guild.name}
-
{guild.realms}
-
{guild.mines}
-
{guild.hyperstructures}
-
- {guild.points.toLocaleString()} {pointsSuffix} -
-
{guild.percentage.toFixed(2)}%
-
- {guild.lords.toLocaleString()} - -
-
- ))} -
- {totalPages > 1 && ( -
-
- - -
- - {startIndex + 1}-{Math.min(startIndex + elementsPerPage, filteredGuilds.length)} of {filteredGuilds.length} - -
- )} -
- ); -}; diff --git a/client/apps/landing/src/components/modules/leaderboard.tsx b/client/apps/landing/src/components/modules/leaderboard.tsx deleted file mode 100644 index 7f99bf94f2..0000000000 --- a/client/apps/landing/src/components/modules/leaderboard.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { getGuilds } from "@/hooks/get-guilds"; -import { useGetAllPlayers } from "@/hooks/use-get-all-players"; -import { Trophy } from "lucide-react"; -import { useMemo } from "react"; -import { TypeH2 } from "../typography/type-h2"; -import { Card, CardHeader } from "../ui/card"; -import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs"; -import { GuildLeaderboardPanel } from "./guild-leaderboard-panel"; -import { PlayerLeaderboardPanel } from "./player-leaderboard-panel"; - -export const Leaderboard = () => { - const getPlayers = useGetAllPlayers(); - const players = useMemo(() => getPlayers().sort((a, b) => b.points - a.points), [getPlayers]); - const guilds = useMemo(() => getGuilds(players).sort((a, b) => b.points - a.points), [players]); - - return ( - - - - {} - {"Leaderboard"} - - - - -
- - Players - Guilds - -
- - - - - - -
-
- ); -}; diff --git a/client/apps/landing/src/components/modules/realm-card.tsx b/client/apps/landing/src/components/modules/realm-card.tsx index 81389b6fcf..d6955a724e 100644 --- a/client/apps/landing/src/components/modules/realm-card.tsx +++ b/client/apps/landing/src/components/modules/realm-card.tsx @@ -7,7 +7,7 @@ import { Loader } from "lucide-react"; import { useEffect, useState } from "react"; import { Checkbox } from "../ui/checkbox"; import { ResourceIcon } from "../ui/elements/ResourceIcon"; -export interface RealmCardProps { +interface RealmCardProps { realm: NonNullable["tokenBalances"]>["edges"]>[0] & { seasonPassMinted?: boolean; }; diff --git a/client/apps/landing/src/components/providers/starknet-provider.tsx b/client/apps/landing/src/components/providers/starknet-provider.tsx index 9f70a95ee3..5b6009ebb4 100644 --- a/client/apps/landing/src/components/providers/starknet-provider.tsx +++ b/client/apps/landing/src/components/providers/starknet-provider.tsx @@ -4,10 +4,10 @@ import { mainnet, sepolia } from "@starknet-react/chains"; import { StarknetConfig, argent, braavos, jsonRpcProvider, useInjectedConnectors, voyager } from "@starknet-react/core"; import React, { useCallback } from "react"; import { env } from "../../../env"; -import { getSeasonAddresses } from "../ui/utils/utils"; +import { getResourceAddresses } from "../ui/utils/addresses"; //import { cartridgeController } from "./cartridge-controller"; -const resourceAddresses = await getSeasonAddresses(); +const resourceAddresses = await getResourceAddresses(); const LORDS = resourceAddresses["LORDS"][1]; const otherResources = Object.entries(resourceAddresses) diff --git a/client/apps/landing/src/components/ui/command.tsx b/client/apps/landing/src/components/ui/command.tsx deleted file mode 100644 index 0d77ce7ccf..0000000000 --- a/client/apps/landing/src/components/ui/command.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import * as React from "react"; -import { type DialogProps } from "@radix-ui/react-dialog"; -import { MagnifyingGlassIcon } from "@radix-ui/react-icons"; -import { Command as CommandPrimitive } from "cmdk"; - -import { cn } from "@/lib/utils"; -import { Dialog, DialogContent } from "@/components/ui/dialog"; - -const Command = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -Command.displayName = CommandPrimitive.displayName; - -interface CommandDialogProps extends DialogProps {} - -const CommandDialog = ({ children, ...props }: CommandDialogProps) => { - return ( - - - - {children} - - - - ); -}; - -const CommandInput = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( -
- - -
-)); - -CommandInput.displayName = CommandPrimitive.Input.displayName; - -const CommandList = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); - -CommandList.displayName = CommandPrimitive.List.displayName; - -const CommandEmpty = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->((props, ref) => ); - -CommandEmpty.displayName = CommandPrimitive.Empty.displayName; - -const CommandGroup = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); - -CommandGroup.displayName = CommandPrimitive.Group.displayName; - -const CommandSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -CommandSeparator.displayName = CommandPrimitive.Separator.displayName; - -const CommandItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); - -CommandItem.displayName = CommandPrimitive.Item.displayName; - -const CommandShortcut = ({ className, ...props }: React.HTMLAttributes) => { - return ; -}; -CommandShortcut.displayName = "CommandShortcut"; - -export { - Command, - CommandDialog, - CommandInput, - CommandList, - CommandEmpty, - CommandGroup, - CommandItem, - CommandShortcut, - CommandSeparator, -}; diff --git a/client/apps/landing/src/components/ui/custom-iframe.tsx b/client/apps/landing/src/components/ui/custom-iframe.tsx deleted file mode 100644 index 40b4a4b7c0..0000000000 --- a/client/apps/landing/src/components/ui/custom-iframe.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { useEffect, useState } from "react"; -import { createPortal } from "react-dom"; -import style from "../../index.css?inline"; - -interface CustomIframeProps extends React.IframeHTMLAttributes { - children: React.ReactNode; -} - -const CustomIframe: React.FC = ({ children, ...props }) => { - const [contentRef, setContentRef] = useState(null); - const [mountNode, setMountNode] = useState(null); - - useEffect(() => { - if (contentRef) { - const iframeDocument = contentRef.contentDocument; - const iframeWindow = contentRef.contentWindow; - - if (iframeDocument) { - const styleTag = iframeDocument.createElement("style"); - styleTag.textContent = style; - iframeDocument.head.appendChild(styleTag); - } - - setMountNode(iframeDocument?.body || null); - } - }, [contentRef]); - - useEffect(() => { - if (mountNode) { - mountNode.style.overflow = "hidden"; - mountNode.style.backgroundColor = "transparent"; - } - }, [mountNode]); - - return ( - - ); -}; - -export default CustomIframe; diff --git a/client/apps/landing/src/components/ui/elements/CountdownTimer.tsx b/client/apps/landing/src/components/ui/elements/CountdownTimer.tsx index f1ae81baed..23584c385c 100644 --- a/client/apps/landing/src/components/ui/elements/CountdownTimer.tsx +++ b/client/apps/landing/src/components/ui/elements/CountdownTimer.tsx @@ -18,7 +18,7 @@ export function CountdownTimer() { {/* Timer container */}
- + Eternum is Launching in
diff --git a/client/apps/landing/src/components/ui/elements/ResourceIcon.tsx b/client/apps/landing/src/components/ui/elements/ResourceIcon.tsx index 6f94037a88..36be2c6bbb 100644 --- a/client/apps/landing/src/components/ui/elements/ResourceIcon.tsx +++ b/client/apps/landing/src/components/ui/elements/ResourceIcon.tsx @@ -1,10 +1,4 @@ -import { ReactComponent as People } from "@/assets/icons/common/people.svg"; -import { ReactComponent as Cloth } from "@/assets/icons/resources/Cloth.svg"; -import { ReactComponent as DemonHide } from "@/assets/icons/resources/DemonHide.svg"; -import { ReactComponent as DesertGlass } from "@/assets/icons/resources/DesertGlass.svg"; -import { ReactComponent as Lords } from "@/assets/icons/resources/Lords.svg"; -import { ReactComponent as Ore } from "@/assets/icons/resources/Ore.svg"; -import { ReactComponent as Spores } from "@/assets/icons/resources/Spores.svg"; +import People from "@/assets/icons/common/people.svg?react"; import clsx from "clsx"; import type { ReactElement } from "react"; @@ -25,48 +19,43 @@ type Resource = { }; const Components: { [key: string]: Resource } = Object.freeze({ - Adamantine: { - component: , - name: "Adamantine", - }, - AlchemicalSilver: { - component: , - name: "Alchemical Silver", - }, + Wood: { component: , name: "Wood" }, + Stone: { component: , name: "Stone" }, Coal: { component: , name: "Coal" }, - ColdIron: { component: , name: "Cold Iron" }, Copper: { component: , name: "Copper" }, - DeepCrystal: { component: , name: "Deep Crystal" }, - Diamonds: { component: , name: "Diamonds" }, - Dragonhide: { component: , name: "Dragonhide" }, - EtherealSilica: { component: , name: "Ethereal Silica" }, + Obsidian: { component: , name: "Obsidian" }, + Silver: { component: , name: "Silver" }, + Ironwood: { component: , name: "Ironwood" }, + ColdIron: { component: , name: "Cold Iron" }, Gold: { component: , name: "Gold" }, Hartwood: { component: , name: "Hartwood" }, - Ignium: { component: , name: "Ignium" }, - Ironwood: { component: , name: "Ironwood" }, - Mithral: { component: , name: "Mithral" }, - Obsidian: { component: , name: "Obsidian" }, - Ruby: { component: , name: "Ruby" }, + Diamonds: { component: , name: "Diamonds" }, Sapphire: { component: , name: "Sapphire" }, - Silver: { component: , name: "Silver" }, - Stone: { component: , name: "Stone" }, + Ruby: { component: , name: "Ruby" }, + DeepCrystal: { component: , name: "Deep Crystal" }, + Ignium: { component: , name: "Ignium" }, + EtherealSilica: { component: , name: "Ethereal Silica" }, TrueIce: { component: , name: "TrueIce" }, TwilightQuartz: { component: , name: "Twilight Quartz" }, - Wood: { component: , name: "Wood" }, - EmbersGlow: { component: , name: "Demon Hide" }, - StoneTemple: { component: , name: "Cloth" }, - DesertOasis: { component: , name: "Desert Glass" }, - MountainDeep: { component: , name: "Ore" }, - UnderwaterKeep: { component: , name: "Lords" }, - ForestRuins: { component: , name: "Spores" }, - Lords: { component: , name: "Lords" }, - Fish: { component: , name: "Fish" }, - Wheat: { component: , name: "Wheat" }, - Donkey: { component: , name: "Donkey" }, + AlchemicalSilver: { + component: , + name: "Alchemical Silver", + }, + Adamantine: { + component: , + name: "Adamantine", + }, + Mithral: { component: , name: "Mithral" }, + Dragonhide: { component: , name: "Dragonhide" }, + AncientFragment: { component: , name: "Ancient Fragment" }, Knight: { component: , name: "Knight" }, Crossbowman: { component: , name: "Crossbowman" }, Paladin: { component: , name: "Paladin" }, - AncientFragment: { component: , name: "Ancient Fragment" }, + Lords: { component: , name: "Lords" }, + Wheat: { component: , name: "Wheat" }, + Fish: { component: , name: "Fish" }, + + Donkey: { component: , name: "Donkey" }, House: { component: , name: "House" }, Silo: { component: , name: "Silo" }, Timeglass: { component: , name: "Timeglass" }, diff --git a/client/apps/landing/src/components/ui/utils/addresses.ts b/client/apps/landing/src/components/ui/utils/addresses.ts new file mode 100644 index 0000000000..24021c4ea5 --- /dev/null +++ b/client/apps/landing/src/components/ui/utils/addresses.ts @@ -0,0 +1,19 @@ +import { Chain, getSeasonAddresses } from "../../../../../../common/utils"; +import { env } from "../../../../env"; + +export const getResourceAddresses = async () => { + const addresses = (await getSeasonAddresses(env.VITE_PUBLIC_CHAIN as Chain)).resources; + return addresses; +}; + +export const getSeasonPassAddress = async () => { + return (await getSeasonAddresses(env.VITE_PUBLIC_CHAIN as Chain)).seasonPass; +}; + +export const getLordsAddress = async () => { + return (await getSeasonAddresses(env.VITE_PUBLIC_CHAIN as Chain)).lords; +}; + +export const getRealmsAddress = async () => { + return (await getSeasonAddresses(env.VITE_PUBLIC_CHAIN as Chain)).realms; +}; diff --git a/client/apps/landing/src/components/ui/utils/utils.ts b/client/apps/landing/src/components/ui/utils/utils.ts index 61dbbe9da1..72a13d03d0 100644 --- a/client/apps/landing/src/components/ui/utils/utils.ts +++ b/client/apps/landing/src/components/ui/utils/utils.ts @@ -1,14 +1,12 @@ import { ClientConfigManager } from "@bibliothecadao/eternum"; -import { env } from "../../../../env"; import { - BuildingType, - ContractAddress, - EternumGlobalConfig, - TickIds, - type ID, - type Position, - type Resource, + BuildingType, + ContractAddress, + TickIds, + type ID, + type Position, + type Resource } from "@bibliothecadao/eternum"; import { getEntityIdFromKeys } from "@dojoengine/utils"; @@ -49,11 +47,11 @@ export function displayAddress(string: string) { } export function multiplyByPrecision(value: number): number { - return Math.floor(value * EternumGlobalConfig.resources.resourcePrecision); + return Math.floor(value * ETERNUM_CONFIG().resources.resourcePrecision); } export function divideByPrecision(value: number): number { - return value / EternumGlobalConfig.resources.resourcePrecision; + return value / ETERNUM_CONFIG().resources.resourcePrecision; } export function roundDownToPrecision(value: bigint, precision: number) { @@ -362,28 +360,4 @@ export const separateCamelCase = (str: string): string => { export const calculateDonkeysNeeded = (orderWeight: number, donkeyCapacity: number): number => { return Math.ceil(divideByPrecision(orderWeight) / donkeyCapacity); -}; - -export const getSeasonAddressesPath = () => { - return `/resource_addresses/${env.VITE_PUBLIC_CHAIN}/resource_addresses.json`; -}; -export const getJSONFile = async (filePath: string) => { - const response = await fetch(filePath); - const data = await response.json(); - return data; -}; - -export interface ResourceAddresses { - [key: string]: [number, string]; -} - -export const getSeasonAddresses = async (): Promise => { - try { - const path = getSeasonAddressesPath(); - const data = await getJSONFile(path); - return data; - } catch (error) { - console.error("Error loading season addresses:", error); - return {}; - } -}; +}; \ No newline at end of file diff --git a/client/apps/landing/src/config.ts b/client/apps/landing/src/config.ts index bff902331c..331e974ef2 100644 --- a/client/apps/landing/src/config.ts +++ b/client/apps/landing/src/config.ts @@ -1,72 +1,5 @@ -import { env } from "../env"; +import { getLordsAddress, getRealmsAddress, getSeasonPassAddress } from "./components/ui/utils/addresses"; -export enum Chain { - MAINNET = "mainnet", - SEPOLIA = "sepolia", - LOCAL = "local", -} - -export enum Token { - LORDS = "LORDS", - SEASON_PASS = "SEASON_PASS", - REALMS = "REALMS", -} - -export const tokens: { - [key in Chain]: { - [Token.LORDS]?: { - address: string; - decimals: number; - }; - [Token.SEASON_PASS]?: { - address: string; - }; - [Token.REALMS]?: { - address: string; - }; - }; -} = { - [Chain.MAINNET]: { - [Token.LORDS]: { - address: import.meta.env.VITE_LORDS_ADDRESS, - decimals: 18, - }, - [Token.SEASON_PASS]: { - address: import.meta.env.VITE_SEASON_PASS_ADDRESS, - }, - [Token.REALMS]: { - address: import.meta.env.VITE_REALMS_ADDRESS, - }, - }, - [Chain.SEPOLIA]: { - // @dev: These are test contracts and are not used in production - [Token.LORDS]: { - address: import.meta.env.VITE_LORDS_ADDRESS, - decimals: 18, - }, - [Token.SEASON_PASS]: { - address: import.meta.env.VITE_SEASON_PASS_ADDRESS, - }, - [Token.REALMS]: { - address: import.meta.env.VITE_REALMS_ADDRESS, - }, - }, - [Chain.LOCAL]: { - [Token.LORDS]: { - address: env.VITE_LORDS_ADDRESS, - decimals: 18, - }, - [Token.SEASON_PASS]: { - address: env.VITE_SEASON_PASS_ADDRESS, - }, - [Token.REALMS]: { - address: env.VITE_REALMS_ADDRESS, - }, - }, -}; - -export const chain = import.meta.env.VITE_PUBLIC_CHAIN as Chain | Chain.LOCAL; - -export const seasonPassAddress = tokens[chain][Token.SEASON_PASS]?.address as `0x${string}`; -export const lordsAddress = tokens[chain][Token.LORDS]?.address as `0x${string}`; -export const realmsAddress = tokens[chain][Token.REALMS]?.address as `0x${string}`; +export const lordsAddress = await getLordsAddress(); +export const seasonPassAddress = await getSeasonPassAddress(); +export const realmsAddress = await getRealmsAddress(); \ No newline at end of file diff --git a/client/apps/landing/src/dojo/contractComponents.ts b/client/apps/landing/src/dojo/contractComponents.ts deleted file mode 100644 index 5c6c048724..0000000000 --- a/client/apps/landing/src/dojo/contractComponents.ts +++ /dev/null @@ -1,2254 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ - -import { defineComponent, Type as RecsType, type World } from "@dojoengine/recs"; - -export type ContractComponents = ReturnType; - -export function defineContractComponents(world: World) { - return { - AddressName: (() => { - return defineComponent( - world, - { address: RecsType.BigInt, name: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "AddressName", - types: ["felt252", "felt252"], - customTypes: [], - }, - }, - ); - })(), - Army: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - troops: { knight_count: RecsType.BigInt, paladin_count: RecsType.BigInt, crossbowman_count: RecsType.BigInt }, - battle_id: RecsType.Number, - battle_side: RecsType.String, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Army", - types: ["u32", "u64", "u64", "u64", "u32", "enum"], - customTypes: ["Troops", "BattleSide"], - }, - }, - ); - })(), - ArrivalTime: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, arrives_at: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "ArrivalTime", - types: ["u32", "u64"], - customTypes: [], - }, - }, - ); - })(), - Bank: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - owner_fee_num: RecsType.BigInt, - owner_fee_denom: RecsType.BigInt, - owner_bridge_fee_dpt_percent: RecsType.Number, - owner_bridge_fee_wtdr_percent: RecsType.Number, - exists: RecsType.Boolean, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Bank", - types: ["u32", "u128", "u128", "u16", "u16", "bool"], - customTypes: [], - }, - }, - ); - })(), - BankConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - lords_cost: RecsType.BigInt, - lp_fee_num: RecsType.BigInt, - lp_fee_denom: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BankConfig", - types: ["u32", "u128", "u128", "u128"], - customTypes: [], - }, - }, - ); - })(), - Battle: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - attack_army: { - troops: { - knight_count: RecsType.BigInt, - paladin_count: RecsType.BigInt, - crossbowman_count: RecsType.BigInt, - }, - battle_id: RecsType.Number, - battle_side: RecsType.String, - }, - attack_army_lifetime: { - troops: { - knight_count: RecsType.BigInt, - paladin_count: RecsType.BigInt, - crossbowman_count: RecsType.BigInt, - }, - battle_id: RecsType.Number, - battle_side: RecsType.String, - }, - defence_army: { - troops: { - knight_count: RecsType.BigInt, - paladin_count: RecsType.BigInt, - crossbowman_count: RecsType.BigInt, - }, - battle_id: RecsType.Number, - battle_side: RecsType.String, - }, - defence_army_lifetime: { - troops: { - knight_count: RecsType.BigInt, - paladin_count: RecsType.BigInt, - crossbowman_count: RecsType.BigInt, - }, - battle_id: RecsType.Number, - battle_side: RecsType.String, - }, - attackers_resources_escrow_id: RecsType.Number, - defenders_resources_escrow_id: RecsType.Number, - attack_army_health: { current: RecsType.BigInt, lifetime: RecsType.BigInt }, - defence_army_health: { current: RecsType.BigInt, lifetime: RecsType.BigInt }, - attack_delta: RecsType.BigInt, - defence_delta: RecsType.BigInt, - last_updated: RecsType.BigInt, - duration_left: RecsType.BigInt, - start_at: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Battle", - types: [ - "u32", - "u64", - "u64", - "u64", - "u32", - "enum", - "u64", - "u64", - "u64", - "u32", - "enum", - "u64", - "u64", - "u64", - "u32", - "enum", - "u64", - "u64", - "u64", - "u32", - "enum", - "u32", - "u32", - "u128", - "u128", - "u128", - "u128", - "u64", - "u64", - "u64", - "u64", - "u64", - ], - customTypes: [ - "BattleArmy", - "Troops", - "BattleSide", - "BattleArmy", - "Troops", - "BattleSide", - "BattleArmy", - "Troops", - "BattleSide", - "BattleArmy", - "Troops", - "BattleSide", - "BattleHealth", - "BattleHealth", - ], - }, - }, - ); - })(), - BattleConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - regular_immunity_ticks: RecsType.Number, - hyperstructure_immunity_ticks: RecsType.Number, - battle_delay_seconds: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BattleConfig", - types: ["u32", "u8", "u8", "u64"], - customTypes: [], - }, - }, - ); - })(), - Building: (() => { - return defineComponent( - world, - { - outer_col: RecsType.Number, - outer_row: RecsType.Number, - inner_col: RecsType.Number, - inner_row: RecsType.Number, - category: RecsType.String, - produced_resource_type: RecsType.Number, - bonus_percent: RecsType.Number, - entity_id: RecsType.Number, - outer_entity_id: RecsType.Number, - paused: RecsType.Boolean, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Building", - types: ["u32", "u32", "u32", "u32", "enum", "u8", "u32", "u32", "u32", "bool"], - customTypes: ["BuildingCategory"], - }, - }, - ); - })(), - BuildingCategoryPopConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - building_category: RecsType.String, - population: RecsType.Number, - capacity: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BuildingCategoryPopConfig", - types: ["u32", "enum", "u32", "u32"], - customTypes: ["BuildingCategory"], - }, - }, - ); - })(), - BuildingConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - category: RecsType.String, - resource_type: RecsType.Number, - resource_cost_id: RecsType.Number, - resource_cost_count: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BuildingConfig", - types: ["u32", "enum", "u8", "u32", "u32"], - customTypes: ["BuildingCategory"], - }, - }, - ); - })(), - BuildingGeneralConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - base_cost_percent_increase: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BuildingGeneralConfig", - types: ["u32", "u16"], - customTypes: [], - }, - }, - ); - })(), - BuildingQuantityv2: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, category: RecsType.String, value: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "BuildingQuantityv2", - types: ["u32", "enum", "u8"], - customTypes: ["BuildingCategory"], - }, - }, - ); - })(), - CapacityCategory: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, category: RecsType.String }, - { - metadata: { - namespace: "s0_eternum", - name: "CapacityCategory", - types: ["u32", "enum"], - customTypes: ["CapacityConfigCategory"], - }, - }, - ); - })(), - CapacityConfig: (() => { - return defineComponent( - world, - { - category: RecsType.String, - weight_gram: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "CapacityConfig", - types: ["enum", "u128"], - customTypes: ["CapacityConfigCategory"], - }, - }, - ); - })(), - Contribution: (() => { - return defineComponent( - world, - { - hyperstructure_entity_id: RecsType.Number, - player_address: RecsType.BigInt, - resource_type: RecsType.Number, - amount: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Contribution", - types: ["u32", "contractaddress", "u8", "u128"], - customTypes: [], - }, - }, - ); - })(), - DetachedResource: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - index: RecsType.Number, - resource_type: RecsType.Number, - resource_amount: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "DetachedResource", - types: ["u32", "u32", "u8", "u128"], - customTypes: [], - }, - }, - ); - })(), - EntityName: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, name: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "EntityName", - types: ["u32", "felt252"], - customTypes: [], - }, - }, - ); - })(), - EntityOwner: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, entity_owner_id: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "EntityOwner", - types: ["u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - Epoch: (() => { - return defineComponent( - world, - { - hyperstructure_entity_id: RecsType.Number, - index: RecsType.Number, - start_timestamp: RecsType.BigInt, - owners: RecsType.BigIntArray, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Epoch", - types: ["u32", "u16", "u64", "array"], - customTypes: [], - }, - }, - ); - })(), - Guild: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, is_public: RecsType.Boolean, member_count: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "Guild", - types: ["u32", "bool", "u16"], - customTypes: [], - }, - }, - ); - })(), - GuildMember: (() => { - return defineComponent( - world, - { address: RecsType.BigInt, guild_entity_id: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "GuildMember", - types: ["contractaddress", "u32"], - customTypes: [], - }, - }, - ); - })(), - GuildWhitelist: (() => { - return defineComponent( - world, - { address: RecsType.BigInt, guild_entity_id: RecsType.Number, is_whitelisted: RecsType.Boolean }, - { - metadata: { - namespace: "s0_eternum", - name: "GuildWhitelist", - types: ["contractaddress", "u32", "bool"], - customTypes: [], - }, - }, - ); - })(), - Health: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, current: RecsType.BigInt, lifetime: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Health", - types: ["u32", "u128", "u128"], - customTypes: [], - }, - }, - ); - })(), - Hyperstructure: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - current_epoch: RecsType.Number, - completed: RecsType.Boolean, - last_updated_by: RecsType.BigInt, - last_updated_timestamp: RecsType.Number, - access: RecsType.String, - randomness: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Hyperstructure", - types: ["u32", "u16", "bool", "contractaddress", "u64", "enum", "felt252"], - customTypes: ["Access"], - }, - }, - ); - })(), - HyperstructureConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - time_between_shares_change: RecsType.Number, - points_per_cycle: RecsType.BigInt, - points_for_win: RecsType.BigInt, - points_on_completion: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "HyperstructureConfig", - types: ["u32", "u64", "u128", "u128", "u128"], - customTypes: [], - }, - }, - ); - })(), - HyperstructureResourceConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - resource_tier: RecsType.Number, - min_amount: RecsType.BigInt, - max_amount: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "HyperstructureResourceConfig", - types: ["u32", "u8", "u128", "u128"], - customTypes: [], - }, - }, - ); - })(), - Leaderboard: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - registration_end_timestamp: RecsType.Number, - total_points: RecsType.BigInt, - total_price_pool: RecsType.OptionalBigInt, - distribution_started: RecsType.Boolean, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Leaderboard", - types: ["u32", "u64", "u128", "u256", "bool"], - customTypes: [], - }, - }, - ); - })(), - - LeaderboardEntry: (() => { - return defineComponent( - world, - { - address: RecsType.BigInt, - points: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "LeaderboardEntry", - types: ["contractaddress", "u128"], - customTypes: [], - }, - }, - ); - })(), - - LeaderboardRewardClaimed: (() => { - return defineComponent( - world, - { - address: RecsType.BigInt, - claimed: RecsType.Boolean, - }, - { - metadata: { - namespace: "s0_eternum", - name: "LeaderboardRewardClaimed", - types: ["contractaddress", "bool"], - customTypes: [], - }, - }, - ); - })(), - - LeaderboardRegistered: (() => { - return defineComponent( - world, - { - address: RecsType.BigInt, - registered: RecsType.Boolean, - }, - { - metadata: { - namespace: "s0_eternum", - name: "LeaderboardRegistered", - types: ["contractaddress", "bool"], - customTypes: [], - }, - }, - ); - })(), - - LeaderboardRegisterContribution: (() => { - return defineComponent( - world, - { - address: RecsType.BigInt, - hyperstructure_entity_id: RecsType.Number, - registered: RecsType.Boolean, - }, - { - metadata: { - namespace: "s0_eternum", - name: "LeaderboardRegisterContribution", - types: ["contractaddress", "u32", "bool"], - customTypes: [], - }, - }, - ); - })(), - - LeaderboardRegisterShare: (() => { - return defineComponent( - world, - { - address: RecsType.BigInt, - hyperstructure_entity_id: RecsType.Number, - registered: RecsType.Boolean, - }, - { - metadata: { - namespace: "s0_eternum", - name: "LeaderboardRegisterShare", - types: ["contractaddress", "u32", "bool"], - customTypes: [], - }, - }, - ); - })(), - - Liquidity: (() => { - return defineComponent( - world, - { - bank_entity_id: RecsType.Number, - player: RecsType.BigInt, - resource_type: RecsType.Number, - shares: { mag: RecsType.BigInt, sign: RecsType.Boolean }, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Liquidity", - types: ["u32", "contractaddress", "u8", "u128", "bool"], - customTypes: ["Fixed"], - }, - }, - ); - })(), - - MapConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - reward_resource_amount: RecsType.BigInt, - shards_mines_fail_probability: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "MapConfig", - types: ["u32", "u128", "u128"], - customTypes: [], - }, - }, - ); - })(), - Market: (() => { - return defineComponent( - world, - { - bank_entity_id: RecsType.Number, - resource_type: RecsType.Number, - lords_amount: RecsType.BigInt, - resource_amount: RecsType.BigInt, - total_shares: { mag: RecsType.BigInt, sign: RecsType.Boolean }, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Market", - types: ["u32", "u8", "u128", "u128", "u128", "bool"], - customTypes: ["Fixed"], - }, - }, - ); - })(), - MercenariesConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - troops: { knight_count: RecsType.BigInt, paladin_count: RecsType.BigInt, crossbowman_count: RecsType.BigInt }, - rewards: RecsType.StringArray, - }, - { - metadata: { - namespace: "s0_eternum", - name: "MercenariesConfig", - types: ["u32", "u64", "u64", "u64"], - customTypes: ["Troops"], - }, - }, - ); - })(), - Message: (() => { - return defineComponent( - world, - { - identity: RecsType.BigInt, - channel: RecsType.BigInt, - content: RecsType.String, - salt: RecsType.BigInt, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Message", - types: ["felt252", "felt252", "BytesArray", "felt252", "u64"], - customTypes: [], - }, - }, - ); - })(), - Movable: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - sec_per_km: RecsType.Number, - blocked: RecsType.Boolean, - round_trip: RecsType.Boolean, - start_coord_x: RecsType.Number, - start_coord_y: RecsType.Number, - intermediate_coord_x: RecsType.Number, - intermediate_coord_y: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Movable", - types: ["u32", "u16", "bool", "bool", "u32", "u32", "u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - Orders: (() => { - return defineComponent( - world, - { order_id: RecsType.Number, hyperstructure_count: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "Orders", - types: ["u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - OwnedResourcesTracker: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, resource_types: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "OwnedResourcesTracker", - types: ["u32", "u256"], - customTypes: [], - }, - }, - ); - })(), - Owner: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, address: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Owner", - types: ["u32", "contractaddress"], - customTypes: [], - }, - }, - ); - })(), - Population: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, population: RecsType.Number, capacity: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "Population", - types: ["u32", "u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - PopulationConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, base_population: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "PopulationConfig", - types: ["u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - Position: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, x: RecsType.Number, y: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "Position", - types: ["u32", "u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - Production: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - resource_type: RecsType.Number, - building_count: RecsType.Number, - production_rate: RecsType.BigInt, - consumption_rate: RecsType.BigInt, - last_updated_tick: RecsType.BigInt, - input_finish_tick: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Production", - types: ["u32", "u8", "u8", "u128", "u128", "u64", "u64"], - customTypes: [], - }, - }, - ); - })(), - ProductionConfig: (() => { - return defineComponent( - world, - { - resource_type: RecsType.Number, - amount: RecsType.BigInt, - input_count: RecsType.BigInt, - output_count: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "ProductionConfig", - types: ["u8", "u128", "u128", "u128"], - customTypes: [], - }, - }, - ); - })(), - ProductionDeadline: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, deadline_tick: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "ProductionDeadline", - types: ["u32", "u64"], - customTypes: [], - }, - }, - ); - })(), - ProductionInput: (() => { - return defineComponent( - world, - { - output_resource_type: RecsType.Number, - index: RecsType.Number, - input_resource_type: RecsType.Number, - input_resource_amount: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "ProductionInput", - types: ["u8", "u8", "u8", "u128"], - customTypes: [], - }, - }, - ); - })(), - ProductionOutput: (() => { - return defineComponent( - world, - { input_resource_type: RecsType.Number, index: RecsType.Number, output_resource_type: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "ProductionOutput", - types: ["u8", "u8", "u8"], - customTypes: [], - }, - }, - ); - })(), - Progress: (() => { - return defineComponent( - world, - { hyperstructure_entity_id: RecsType.Number, resource_type: RecsType.Number, amount: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Progress", - types: ["u32", "u8", "u128"], - customTypes: [], - }, - }, - ); - })(), - Protectee: (() => { - return defineComponent( - world, - { army_id: RecsType.Number, protectee_id: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "Protectee", - types: ["u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - Protector: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, army_id: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "Protector", - types: ["u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - Quantity: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, value: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Quantity", - types: ["u32", "u128"], - customTypes: [], - }, - }, - ); - })(), - QuantityTracker: (() => { - return defineComponent( - world, - { entity_id: RecsType.BigInt, count: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "QuantityTracker", - types: ["felt252", "u128"], - customTypes: [], - }, - }, - ); - })(), - Quest: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, config_id: RecsType.Number, completed: RecsType.Boolean }, - { - metadata: { - namespace: "s0_eternum", - name: "Quest", - types: ["u32", "u32", "bool"], - customTypes: [], - }, - }, - ); - })(), - QuestBonus: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, resource_type: RecsType.Number, claimed: RecsType.Boolean }, - { - metadata: { - namespace: "s0_eternum", - name: "QuestBonus", - types: ["u32", "u8", "bool"], - customTypes: [], - }, - }, - ); - })(), - QuestConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, production_material_multiplier: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "QuestConfig", - types: ["u32", "u16"], - customTypes: [], - }, - }, - ); - })(), - QuestRewardConfig: (() => { - return defineComponent( - world, - { quest_id: RecsType.Number, detached_resource_id: RecsType.Number, detached_resource_count: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "QuestRewardConfig", - types: ["u32", "u32", "u32"], - customTypes: [], - }, - }, - ); - })(), - Realm: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - realm_id: RecsType.Number, - produced_resources: RecsType.BigInt, - order: RecsType.Number, - level: RecsType.Number, - has_wonder: RecsType.Boolean, - settler_address: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Realm", - types: ["u32", "u32", "u128", "u8", "u8", "bool", "contractaddress"], - customTypes: [], - }, - }, - ); - })(), - RealmLevelConfig: (() => { - return defineComponent( - world, - { level: RecsType.Number, required_resources_id: RecsType.Number, required_resource_count: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "RealmLevelConfig", - types: ["u8", "u32", "u8"], - customTypes: [], - }, - }, - ); - })(), - RealmMaxLevelConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, max_level: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "RealmMaxLevelConfig", - types: ["u32", "u8"], - customTypes: [], - }, - }, - ); - })(), - Resource: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, resource_type: RecsType.Number, balance: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Resource", - types: ["u32", "u8", "u128"], - customTypes: [], - }, - }, - ); - })(), - ResourceAllowance: (() => { - return defineComponent( - world, - { - owner_entity_id: RecsType.Number, - approved_entity_id: RecsType.Number, - resource_type: RecsType.Number, - amount: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "ResourceAllowance", - types: ["u32", "u32", "u8", "u128"], - customTypes: [], - }, - }, - ); - })(), - ResourceBridgeFeeSplitConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - velords_fee_on_dpt_percent: RecsType.Number, - velords_fee_on_wtdr_percent: RecsType.Number, - season_pool_fee_on_dpt_percent: RecsType.Number, - season_pool_fee_on_wtdr_percent: RecsType.Number, - client_fee_on_dpt_percent: RecsType.Number, - client_fee_on_wtdr_percent: RecsType.Number, - velords_fee_recipient: RecsType.BigInt, - season_pool_fee_recipient: RecsType.BigInt, - max_bank_fee_dpt_percent: RecsType.Number, - max_bank_fee_wtdr_percent: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "ResourceBridgeFeeSplitConfig", - types: [ - "u32", - "u16", - "u16", - "u16", - "u16", - "u16", - "u16", - "ContractAddress", - "ContractAddress", - "u16", - "u16", - ], - customTypes: [], - }, - }, - ); - })(), - ResourceBridgeWhitelistConfig: (() => { - return defineComponent( - world, - { - token: RecsType.BigInt, - resource_type: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "ResourceBridgeWhitelistConfig", - types: ["ContractAddress", "u8"], - customTypes: [], - }, - }, - ); - })(), - ResourceCost: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, index: RecsType.Number, resource_type: RecsType.Number, amount: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "ResourceCost", - types: ["u32", "u32", "u8", "u128"], - customTypes: [], - }, - }, - ); - })(), - ResourceTransferLock: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, start_at: RecsType.BigInt, release_at: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "ResourceTransferLock", - types: ["u32", "u64", "u64"], - customTypes: [], - }, - }, - ); - })(), - Season: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - start_at: RecsType.BigInt, - is_over: RecsType.Boolean, - ended_at: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Season", - types: ["u32", "u64", "bool", "u64"], - customTypes: [], - }, - }, - ); - })(), - SeasonAddressesConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - season_pass_address: RecsType.BigInt, - realms_address: RecsType.BigInt, - lords_address: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "SeasonAddressesConfig", - types: ["u32", "ContractAddress", "ContractAddress", "ContractAddress"], - customTypes: [], - }, - }, - ); - })(), - SettlementConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - angle_scaled: RecsType.BigInt, - center: RecsType.Number, - min_scaling_factor_scaled: RecsType.BigInt, - radius: RecsType.Number, - min_distance: RecsType.Number, - max_distance: RecsType.Number, - min_angle_increase: RecsType.BigInt, - max_angle_increase: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "SettlementConfig", - types: ["u32", "u128", "u32", "u128", "u32", "u32", "u32", "u64", "u64"], - customTypes: [], - }, - }, - ); - })(), - SpeedConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - speed_config_id: RecsType.Number, - entity_type: RecsType.Number, - sec_per_km: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "SpeedConfig", - types: ["u32", "u32", "u32", "u16"], - customTypes: [], - }, - }, - ); - })(), - Stamina: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, amount: RecsType.Number, last_refill_tick: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Stamina", - types: ["u32", "u16", "u64"], - customTypes: [], - }, - }, - ); - })(), - StaminaConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, unit_type: RecsType.Number, max_stamina: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "StaminaConfig", - types: ["u32", "u8", "u16"], - customTypes: [], - }, - }, - ); - })(), - StaminaRefillConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, amount_per_tick: RecsType.Number, start_boost_tick_count: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "StaminaRefillConfig", - types: ["u32", "u16", "u8"], - customTypes: [], - }, - }, - ); - })(), - Status: (() => { - return defineComponent( - world, - { trade_id: RecsType.Number, value: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Status", - types: ["u32", "u128"], - customTypes: [], - }, - }, - ); - })(), - Structure: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, category: RecsType.String, created_at: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Structure", - types: ["u32", "enum", "u64"], - customTypes: ["StructureCategory"], - }, - }, - ); - })(), - StructureCount: (() => { - return defineComponent( - world, - { coord: { x: RecsType.Number, y: RecsType.Number }, count: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "StructureCount", - types: ["u32", "u32", "u8"], - customTypes: ["Coord"], - }, - }, - ); - })(), - TickConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, tick_id: RecsType.Number, tick_interval_in_seconds: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "TickConfig", - types: ["u32", "u8", "u64"], - customTypes: [], - }, - }, - ); - })(), - Tile: (() => { - return defineComponent( - world, - { - col: RecsType.Number, - row: RecsType.Number, - explored_by_id: RecsType.Number, - explored_at: RecsType.BigInt, - biome: RecsType.String, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Tile", - types: ["u32", "u32", "u32", "u64", "enum"], - customTypes: ["Biome"], - }, - }, - ); - })(), - Trade: (() => { - return defineComponent( - world, - { - trade_id: RecsType.Number, - maker_id: RecsType.Number, - maker_gives_resources_origin_id: RecsType.Number, - maker_gives_resources_id: RecsType.Number, - maker_gives_resources_hash: RecsType.BigInt, - maker_gives_resources_weight: RecsType.BigInt, - taker_id: RecsType.Number, - taker_gives_resources_origin_id: RecsType.Number, - taker_gives_resources_id: RecsType.Number, - taker_gives_resources_hash: RecsType.BigInt, - taker_gives_resources_weight: RecsType.BigInt, - expires_at: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Trade", - types: ["u32", "u32", "u32", "u32", "felt252", "u128", "u32", "u32", "u32", "felt252", "u128", "u64"], - customTypes: [], - }, - }, - ); - })(), - TravelFoodCostConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - unit_type: RecsType.Number, - explore_wheat_burn_amount: RecsType.BigInt, - explore_fish_burn_amount: RecsType.BigInt, - travel_wheat_burn_amount: RecsType.BigInt, - travel_fish_burn_amount: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "TravelFoodCostConfig", - types: ["u32", "u8", "u128", "u128", "u128", "u128"], - customTypes: [], - }, - }, - ); - })(), - TravelStaminaCostConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - travel_type: RecsType.Number, - cost: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "TravelStaminaCostConfig", - types: ["u32", "u8", "u16"], - customTypes: [], - }, - }, - ); - })(), - TroopConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - health: RecsType.Number, - knight_strength: RecsType.Number, - paladin_strength: RecsType.Number, - crossbowman_strength: RecsType.Number, - advantage_percent: RecsType.Number, - disadvantage_percent: RecsType.Number, - max_troop_count: RecsType.Number, - pillage_health_divisor: RecsType.Number, - army_free_per_structure: RecsType.Number, - army_extra_per_building: RecsType.Number, - army_max_per_structure: RecsType.Number, - battle_leave_slash_num: RecsType.Number, - battle_leave_slash_denom: RecsType.Number, - battle_time_scale: RecsType.Number, - battle_max_time_seconds: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "TroopConfig", - types: [ - "u32", - "u32", - "u8", - "u8", - "u16", - "u16", - "u16", - "u64", - "u8", - "u8", - "u8", - "u8", - "u8", - "u8", - "u16", - "u64", - ], - customTypes: [], - }, - }, - ); - })(), - Weight: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, value: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "Weight", - types: ["u32", "u128"], - customTypes: [], - }, - }, - ); - })(), - WeightConfig: (() => { - return defineComponent( - world, - { - config_id: RecsType.Number, - weight_config_id: RecsType.Number, - entity_type: RecsType.Number, - weight_gram: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "WeightConfig", - types: ["u32", "u32", "u32", "u128"], - customTypes: [], - }, - }, - ); - })(), - WorldConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, admin_address: RecsType.BigInt, realm_l2_contract: RecsType.BigInt }, - { - metadata: { - namespace: "s0_eternum", - name: "WorldConfig", - types: ["u32", "contractaddress", "contractaddress"], - customTypes: [], - }, - }, - ); - })(), - ...eventsComponents(world), - }; -} - -const eventsComponents = (world: World) => { - return { - events: { - AcceptOrder: (() => { - return defineComponent( - world, - { - taker_id: RecsType.Number, - maker_id: RecsType.Number, - id: RecsType.Number, - trade_id: RecsType.Number, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "AcceptOrder", - types: ["u32", "u32", "u32", "u32", "u64"], - customTypes: [], - }, - }, - ); - })(), - - BattleClaimData: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - event_id: RecsType.String, - structure_entity_id: RecsType.Number, - claimer: RecsType.BigInt, - claimer_name: RecsType.BigInt, - claimer_army_entity_id: RecsType.Number, - claimee_address: RecsType.BigInt, - claimee_name: RecsType.BigInt, - x: RecsType.Number, - y: RecsType.Number, - structure_type: RecsType.String, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BattleClaimData", - types: [ - "u32", - "EventType", - "u32", - "ContractAddress", - "felt252", - "u32", - "ContractAddress", - "felt252", - "u32", - "u32", - "StructureCategory", - "u64", - ], - customTypes: [], - }, - }, - ); - })(), - - BattleJoinData: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - event_id: RecsType.String, - battle_entity_id: RecsType.Number, - joiner: RecsType.BigInt, - joiner_name: RecsType.BigInt, - joiner_army_entity_id: RecsType.Number, - joiner_side: RecsType.String, - duration_left: RecsType.Number, - x: RecsType.Number, - y: RecsType.Number, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BattleJoinData", - types: [ - "u32", - "EventType", - "u32", - "ContractAddress", - "felt252", - "u32", - "BattleSide", - "u64", - "u32", - "u32", - "u64", - ], - customTypes: [], - }, - }, - ); - })(), - - BattleLeaveData: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - event_id: RecsType.String, - battle_entity_id: RecsType.Number, - leaver: RecsType.BigInt, - leaver_name: RecsType.BigInt, - leaver_army_entity_id: RecsType.Number, - leaver_side: RecsType.String, - duration_left: RecsType.Number, - x: RecsType.Number, - y: RecsType.Number, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BattleLeaveData", - types: [ - "u32", - "EventType", - "u32", - "ContractAddress", - "felt252", - "u32", - "BattleSide", - "u64", - "u32", - "u32", - "u64", - ], - customTypes: [], - }, - }, - ); - })(), - - BattlePillageData: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - event_id: RecsType.String, - pillager: RecsType.BigInt, - pillager_name: RecsType.BigInt, - pillager_realm_entity_id: RecsType.Number, - pillager_army_entity_id: RecsType.Number, - pillaged_structure_owner: RecsType.BigInt, - pillaged_structure_entity_id: RecsType.Number, - attacker_lost_troops: { - knight_count: RecsType.BigInt, - paladin_count: RecsType.BigInt, - crossbowman_count: RecsType.BigInt, - }, - structure_lost_troops: { - knight_count: RecsType.BigInt, - paladin_count: RecsType.BigInt, - crossbowman_count: RecsType.BigInt, - }, - pillaged_structure_owner_name: RecsType.BigInt, - winner: RecsType.String, - x: RecsType.Number, - y: RecsType.Number, - structure_type: RecsType.String, - pillaged_resources: RecsType.StringArray, - destroyed_building_category: RecsType.String, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BattlePillageData", - types: [ - "u32", - "EventType", - "ContractAddress", - "felt252", - "u32", - "u32", - "ContractAddress", - "u32", - // attacking troops - "u64", - "u64", - "u64", - // structure troops - "u64", - "u64", - "u64", - "felt252", - "BattleSide", - "u32", - "u32", - "StructureCategory", - "array", - "enum", - "u64", - ], - customTypes: ["Troops", "BuildingCategory"], - }, - }, - ); - })(), - - BattleStartData: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - event_id: RecsType.String, - battle_entity_id: RecsType.Number, - attacker: RecsType.BigInt, - attacker_name: RecsType.BigInt, - attacker_army_entity_id: RecsType.Number, - defender_name: RecsType.BigInt, - defender: RecsType.BigInt, - defender_army_entity_id: RecsType.Number, - duration_left: RecsType.Number, - x: RecsType.Number, - y: RecsType.Number, - structure_type: RecsType.String, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BattleStartData", - types: [ - "u32", - "EventType", - "u32", - "ContractAddress", - "felt252", - "u32", - "felt252", - "ContractAddress", - "u32", - "u64", - "u32", - "u32", - "StructureCategory", - "u64", - ], - customTypes: [], - }, - }, - ); - })(), - - BurnDonkey: (() => { - return defineComponent( - world, - { - player_address: RecsType.BigInt, - entity_id: RecsType.Number, - amount: RecsType.BigInt, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "BurnDonkey", - types: ["ContractAddress", "u32", "u128", "u64"], - customTypes: [], - }, - }, - ); - })(), - - CancelOrder: (() => { - return defineComponent( - world, - { - taker_id: RecsType.Number, - maker_id: RecsType.Number, - trade_id: RecsType.Number, - timestamp: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "CancelOrder", - types: ["u32", "u32", "u32", "u64"], - customTypes: [], - }, - }, - ); - })(), - - CreateGuild: (() => { - return defineComponent( - world, - { - guild_entity_id: RecsType.Number, - guild_name: RecsType.BigInt, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "CreateGuild", - types: ["u32", "felt252", "u64"], - customTypes: [], - }, - }, - ); - })(), - - CreateOrder: (() => { - return defineComponent( - world, - { - taker_id: RecsType.Number, - maker_id: RecsType.Number, - trade_id: RecsType.Number, - timestamp: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "CreateOrder", - types: ["u32", "u32", "u32", "u64"], - customTypes: [], - }, - }, - ); - })(), - - GameEnded: (() => { - return defineComponent( - world, - { - winner_address: RecsType.BigInt, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "GameEnded", - types: ["ContractAddress", "u64"], - customTypes: [], - }, - }, - ); - })(), - - FragmentMineDiscovered: (() => { - return defineComponent( - world, - { - entity_owner_id: RecsType.Number, - mine_entity_id: RecsType.Number, - production_deadline_tick: RecsType.BigInt, - discovered_at: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "FragmentMineDiscovered", - types: ["u32", "u32", "u64", "u64"], - customTypes: [], - }, - }, - ); - })(), - - HyperstructureContribution: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - hyperstructure_entity_id: RecsType.Number, - contributor_entity_id: RecsType.Number, - contributions: RecsType.StringArray, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "HyperstructureContribution", - types: ["u32", "u32", "u32", "array", "u64"], - customTypes: [], - }, - }, - ); - })(), - - HyperstructureCoOwnersChange: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - hyperstructure_entity_id: RecsType.Number, - co_owners: RecsType.StringArray, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "HyperstructureCoOwnersChange", - types: ["u32", "u32", "array", "u64"], - customTypes: [], - }, - }, - ); - })(), - - HyperstructureFinished: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - hyperstructure_entity_id: RecsType.Number, - contributor_entity_id: RecsType.Number, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "HyperstructureFinished", - types: ["u32", "u32", "u32", "u64"], - customTypes: [], - }, - }, - ); - })(), - - JoinGuild: (() => { - return defineComponent( - world, - { - guild_entity_id: RecsType.Number, - address: RecsType.BigInt, - guild_name: RecsType.BigInt, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "JoinGuild", - types: ["u32", "ContractAddress", "felt252", "u64"], - customTypes: [], - }, - }, - ); - })(), - - LiquidityEvent: (() => { - return defineComponent( - world, - { - bank_entity_id: RecsType.Number, - entity_id: RecsType.Number, - resource_type: RecsType.Number, - lords_amount: RecsType.BigInt, - resource_amount: RecsType.BigInt, - resource_price: RecsType.BigInt, - add: RecsType.Boolean, - timestamp: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "LiquidityEvent", - types: ["u32", "u32", "u8", "u128", "u128", "u128", "bool", "u64"], - customTypes: [], - }, - }, - ); - })(), - - MapExplored: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - col: RecsType.Number, - row: RecsType.Number, - id: RecsType.Number, - entity_owner_id: RecsType.Number, - biome: RecsType.String, - reward: RecsType.StringArray, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "MapExplored", - types: ["u32", "u32", "u32", "u32", "u32", "Biome", "array", "u64"], - customTypes: [], - }, - }, - ); - })(), - - SwapEvent: (() => { - return defineComponent( - world, - { - bank_entity_id: RecsType.Number, - entity_id: RecsType.Number, - id: RecsType.Number, - resource_type: RecsType.Number, - lords_amount: RecsType.BigInt, - resource_amount: RecsType.BigInt, - bank_owner_fees: RecsType.BigInt, - lp_fees: RecsType.BigInt, - resource_price: RecsType.BigInt, - buy: RecsType.Boolean, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "SwapEvent", - types: ["u32", "u32", "u32", "u8", "u128", "u128", "u128", "u128", "u128", "bool", "u64"], - customTypes: [], - }, - }, - ); - })(), - - SettleRealmData: (() => { - return defineComponent( - world, - { - id: RecsType.Number, - event_id: RecsType.String, - entity_id: RecsType.Number, - owner_address: RecsType.BigInt, - owner_name: RecsType.BigInt, - realm_name: RecsType.BigInt, - produced_resources: RecsType.BigInt, - cities: RecsType.Number, - harbors: RecsType.Number, - rivers: RecsType.Number, - regions: RecsType.Number, - wonder: RecsType.Number, - order: RecsType.Number, - x: RecsType.Number, - y: RecsType.Number, - timestamp: RecsType.Number, - }, - { - metadata: { - namespace: "s0_eternum", - name: "SettleRealmData", - types: [ - "u32", - "EventType", - "u32", - "ContractAddress", - "felt252", - "felt252", - "u128", - "u8", - "u8", - "u8", - "u8", - "u8", - "u8", - "u32", - "u32", - "u64", - ], - customTypes: [], - }, - }, - ); - })(), - - Transfer: (() => { - return defineComponent( - world, - { - recipient_entity_id: RecsType.Number, - sending_realm_id: RecsType.Number, - sender_entity_id: RecsType.Number, - resources: RecsType.StringArray, - timestamp: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Transfer", - types: ["u32", "u32", "u32", "array", "u64"], - customTypes: ["Coord"], - }, - }, - ); - })(), - - Travel: (() => { - return defineComponent( - world, - { - destination_coord_x: RecsType.Number, - destination_coord_y: RecsType.Number, - owner: RecsType.BigInt, - entity_id: RecsType.Number, - travel_time: RecsType.BigInt, - travel_path: RecsType.StringArray, - timestamp: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Travel", - types: ["u32", "u32", "ContractAddress", "u32", "array", "u64"], - customTypes: ["Coord"], - }, - }, - ); - })(), - - TrophyProgression: (() => { - return defineComponent( - world, - { - player_id: RecsType.BigInt, - task_id: RecsType.BigInt, - count: RecsType.Number, - time: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "TrophyProgression", - types: ["felt252", "felt252", "u32", "u64"], - customTypes: [], - }, - }, - ); - })(), - }, - }; -}; diff --git a/client/apps/landing/src/dojo/createClientComponents.ts b/client/apps/landing/src/dojo/createClientComponents.ts deleted file mode 100644 index f10fdb1fc8..0000000000 --- a/client/apps/landing/src/dojo/createClientComponents.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { overridableComponent } from "@dojoengine/recs"; -import { SetupNetworkResult } from "./setupNetwork"; - -export type ClientComponents = ReturnType; - -export function createClientComponents({ contractComponents }: SetupNetworkResult) { - return { - ...contractComponents, - Building: overridableComponent(contractComponents.Building), - Position: overridableComponent(contractComponents.Position), - Stamina: overridableComponent(contractComponents.Stamina), - Tile: overridableComponent(contractComponents.Tile), - }; -} diff --git a/client/apps/landing/src/dojo/queries.ts b/client/apps/landing/src/dojo/queries.ts deleted file mode 100644 index 0c79e7e7cb..0000000000 --- a/client/apps/landing/src/dojo/queries.ts +++ /dev/null @@ -1,104 +0,0 @@ -// onload -> fetch single key entities - -import { Component, Metadata, Schema } from "@dojoengine/recs"; -import { setEntities } from "@dojoengine/state"; -import { Clause, EntityKeysClause, PatternMatching, ToriiClient } from "@dojoengine/torii-client"; - -// on hexception -> fetch below queries based on entityID - -// background sync after load -> - -export const getEntities = async ( - client: ToriiClient, - clause: Clause | undefined, - components: Component[], - limit: number = 100, - logging: boolean = false, -) => { - if (logging) console.log("Starting getEntities"); - let offset = 0; - let continueFetching = true; - - while (continueFetching) { - const entities = await client.getEntities({ - limit, - offset, - clause, - dont_include_hashed_keys: false, - order_by: [], - }); - - setEntities(entities, components); - - if (Object.keys(entities).length < limit) { - continueFetching = false; - } else { - offset += limit; - } - } -}; - -export const syncEntitiesEternum = async ( - client: ToriiClient, - components: Component[], - entityKeyClause: EntityKeysClause[], - logging: boolean = false, -) => { - // if (logging) console.log("Starting syncEntities"); - return await client.onEntityUpdated(entityKeyClause, (fetchedEntities: any, data: any) => { - // if (logging) console.log("Entity updated", fetchedEntities); - - setEntities({ [fetchedEntities]: data }, components); - }); -}; - -export const addToSubscription = async ( - client: ToriiClient, - components: Component[], - entityID: string, - position?: { x: number; y: number }, -) => { - const positionClause: EntityKeysClause = { - Keys: { - keys: [String(position?.x || 0), String(position?.y || 0), undefined, undefined], - pattern_matching: "FixedLen" as PatternMatching, - models: [], - }, - }; - - await getEntities( - client, - { - Composite: { - operator: "Or", - clauses: [ - positionClause, - { - Keys: { - keys: [entityID], - pattern_matching: "FixedLen", - models: [], - }, - }, - { - Keys: { - keys: [entityID, undefined], - pattern_matching: "FixedLen", - models: [], - }, - }, - { - Keys: { - keys: [entityID, undefined, undefined], - pattern_matching: "FixedLen", - models: [], - }, - }, - ], - }, - }, - components, - 20_000, - false, - ); -}; diff --git a/client/apps/landing/src/dojo/setup.ts b/client/apps/landing/src/dojo/setup.ts index 6fa6e87c79..ba0837b208 100644 --- a/client/apps/landing/src/dojo/setup.ts +++ b/client/apps/landing/src/dojo/setup.ts @@ -1,8 +1,5 @@ -import { ClientConfigManager, WORLD_CONFIG_ID } from "@bibliothecadao/eternum"; +import { ClientConfigManager, createClientComponents } from "@bibliothecadao/eternum"; import { DojoConfig } from "@dojoengine/core"; -import { getEvents } from "@dojoengine/state"; -import { Clause } from "@dojoengine/torii-client"; -import { createClientComponents } from "./createClientComponents"; import { createSystemCalls } from "./createSystemCalls"; import { setupNetwork } from "./setupNetwork"; @@ -14,102 +11,11 @@ export async function setup({ ...config }: DojoConfig) { const components = createClientComponents(network); const systemCalls = createSystemCalls(network); - const filteredModels = [ - /*"AddressName", - "Realm", - "Owner", - // points - "Hyperstructure", - "Epoch", - "Season", - "Contribution", - "HyperstructureResourceConfig", - "HyperstructureConfig", - "TickConfig", - // leaderboard - "GuildMember", - "EntityName", - "Structure",*/ - "CapacityConfig", - ]; - - const filteredEvents = [ - "BurnDonkey", - // points - // "HyperstructureCoOwnersChange", - // "HyperstructureFinished", - // "GameEnded", - ]; - - const clauses: Clause[] = [ - { - Keys: { - keys: [undefined], - pattern_matching: "FixedLen", - models: [], - }, - }, - { - Keys: { - keys: [WORLD_CONFIG_ID.toString(), undefined], - pattern_matching: "VariableLen", - models: [], - }, - }, - { - Keys: { - keys: [WORLD_CONFIG_ID.toString()], - pattern_matching: "VariableLen", - models: [], - }, - }, - ]; - // fetch all existing entities from torii with optional component filtering - /*await getEntities( - network.toriiClient, - { Composite: { operator: "Or", clauses } }, - filteredModels as any, - 1_000, - ); - - await getEntities( - network.toriiClient, - { - Keys: { - keys: [undefined], - pattern_matching: "VariableLen", - models: filteredModels.map((model) => `s0_eternum-${model}`), - }, - }, - network.contractComponents as any, - 40_000, - ); - - const sync = await syncEntities(network.toriiClient, filteredModels as any, [], false); - - */ - const eventSync = getEvents( - network.toriiClient, - network.contractComponents.events as any, - undefined, - { - Keys: { - keys: [undefined], - pattern_matching: "VariableLen", - models: filteredEvents.map((event) => `s0_eternum-${event}`), - }, - }, - false, - false, - ); - configManager.setDojo(components); return { network, components, systemCalls, - //sync, - eventSync, }; } diff --git a/client/apps/landing/src/dojo/setupNetwork.ts b/client/apps/landing/src/dojo/setupNetwork.ts index 213d5d218b..bcbecf3623 100644 --- a/client/apps/landing/src/dojo/setupNetwork.ts +++ b/client/apps/landing/src/dojo/setupNetwork.ts @@ -1,6 +1,5 @@ -import { EternumProvider } from "@bibliothecadao/eternum"; +import { defineContractComponents, EternumProvider } from "@bibliothecadao/eternum"; import { DojoConfig } from "@dojoengine/core"; -import { defineContractComponents } from "./contractComponents"; import { world } from "./world"; import { BurnerManager } from "@dojoengine/create-burner"; diff --git a/client/apps/landing/src/hooks/context/DojoContext.tsx b/client/apps/landing/src/hooks/context/DojoContext.tsx index 19825e37a1..b9dc3127c5 100644 --- a/client/apps/landing/src/hooks/context/DojoContext.tsx +++ b/client/apps/landing/src/hooks/context/DojoContext.tsx @@ -23,14 +23,14 @@ interface DojoContextType extends SetupResult { account: DojoAccount; } -export interface DojoResult { +interface DojoResult { setup: DojoContextType; account: DojoAccount; network: SetupNetworkResult; masterAccount: Account | AccountInterface; } -export const DojoContext = createContext(null); +const DojoContext = createContext(null); const requiredEnvs: (keyof typeof env)[] = [ "VITE_PUBLIC_MASTER_ADDRESS", diff --git a/client/apps/landing/src/hooks/get-guilds.tsx b/client/apps/landing/src/hooks/get-guilds.tsx deleted file mode 100644 index 9d6e8c8a4d..0000000000 --- a/client/apps/landing/src/hooks/get-guilds.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { PRIZE_POOL_GUILDS } from "@/constants"; -import { Guild } from "@/types"; -import { calculateGuildLordsPrize, Player } from "@bibliothecadao/eternum"; - -export const getGuilds = (players: Player[]): Guild[] => { - const guildMap = new Map(); - - players.forEach((player) => { - if (!player.guildName) return; - - if (!guildMap.has(player.guildName)) { - guildMap.set(player.guildName, { - name: player.guildName, - points: 0, - percentage: 0, - lords: 0, - realms: 0, - mines: 0, - hyperstructures: 0, - isAlive: true, - playerCount: 0, - }); - } - - const guild = guildMap.get(player.guildName); - if (!guild) return; - guild.points += player.points; - guild.realms += player.realms; - guild.mines += player.mines; - guild.hyperstructures += player.hyperstructures; - guild.isAlive = guild.isAlive && player.isAlive; - guild.playerCount++; - }); - - const totalPoints = Array.from(guildMap.values()).reduce((sum, guild) => sum + guild.points, 0); - - const guildsArray = Array.from(guildMap.values()) - .sort((a, b) => b.points - a.points) - .map((guild, index) => ({ - ...guild, - percentage: (guild.points / totalPoints) * 100, - lords: calculateGuildLordsPrize(index + 1, PRIZE_POOL_GUILDS), - })); - - return guildsArray; -}; diff --git a/client/apps/landing/src/hooks/gql/fragment-masking.ts b/client/apps/landing/src/hooks/gql/fragment-masking.ts index f347f50e1f..97b7ccb46e 100644 --- a/client/apps/landing/src/hooks/gql/fragment-masking.ts +++ b/client/apps/landing/src/hooks/gql/fragment-masking.ts @@ -1,77 +1,78 @@ /* eslint-disable */ -import { ResultOf, DocumentTypeDecoration } from '@graphql-typed-document-node/core'; -import { Incremental, TypedDocumentString } from './graphql'; +import { ResultOf, DocumentTypeDecoration } from "@graphql-typed-document-node/core"; +import { Incremental, TypedDocumentString } from "./graphql"; - -export type FragmentType> = TDocumentType extends DocumentTypeDecoration< - infer TType, - any -> - ? [TType] extends [{ ' $fragmentName'?: infer TKey }] - ? TKey extends string - ? { ' $fragmentRefs'?: { [key in TKey]: TType } } +export type FragmentType> = + TDocumentType extends DocumentTypeDecoration + ? [TType] extends [{ " $fragmentName"?: infer TKey }] + ? TKey extends string + ? { " $fragmentRefs"?: { [key in TKey]: TType } } + : never : never - : never - : never; + : never; // return non-nullable if `fragmentType` is non-nullable export function useFragment( _documentNode: DocumentTypeDecoration, - fragmentType: FragmentType> + fragmentType: FragmentType>, ): TType; // return nullable if `fragmentType` is undefined export function useFragment( _documentNode: DocumentTypeDecoration, - fragmentType: FragmentType> | undefined + fragmentType: FragmentType> | undefined, ): TType | undefined; // return nullable if `fragmentType` is nullable export function useFragment( _documentNode: DocumentTypeDecoration, - fragmentType: FragmentType> | null + fragmentType: FragmentType> | null, ): TType | null; // return nullable if `fragmentType` is nullable or undefined export function useFragment( _documentNode: DocumentTypeDecoration, - fragmentType: FragmentType> | null | undefined + fragmentType: FragmentType> | null | undefined, ): TType | null | undefined; // return array of non-nullable if `fragmentType` is array of non-nullable export function useFragment( _documentNode: DocumentTypeDecoration, - fragmentType: Array>> + fragmentType: Array>>, ): Array; // return array of nullable if `fragmentType` is array of nullable export function useFragment( _documentNode: DocumentTypeDecoration, - fragmentType: Array>> | null | undefined + fragmentType: Array>> | null | undefined, ): Array | null | undefined; // return readonly array of non-nullable if `fragmentType` is array of non-nullable export function useFragment( _documentNode: DocumentTypeDecoration, - fragmentType: ReadonlyArray>> + fragmentType: ReadonlyArray>>, ): ReadonlyArray; // return readonly array of nullable if `fragmentType` is array of nullable export function useFragment( _documentNode: DocumentTypeDecoration, - fragmentType: ReadonlyArray>> | null | undefined + fragmentType: ReadonlyArray>> | null | undefined, ): ReadonlyArray | null | undefined; export function useFragment( _documentNode: DocumentTypeDecoration, - fragmentType: FragmentType> | Array>> | ReadonlyArray>> | null | undefined + fragmentType: + | FragmentType> + | Array>> + | ReadonlyArray>> + | null + | undefined, ): TType | Array | ReadonlyArray | null | undefined { return fragmentType as any; } - -export function makeFragmentData< - F extends DocumentTypeDecoration, - FT extends ResultOf ->(data: FT, _fragment: F): FragmentType { +export function makeFragmentData, FT extends ResultOf>( + data: FT, + _fragment: F, +): FragmentType { return data as FragmentType; } export function isFragmentReady( queryNode: TypedDocumentString, fragmentNode: TypedDocumentString, - data: FragmentType, any>> | null | undefined + data: FragmentType, any>> | null | undefined, ): data is FragmentType { const deferredFields = queryNode.__meta__?.deferredFields as Record; const fragName = fragmentNode.__meta__?.fragmentName as string | undefined; @@ -79,5 +80,5 @@ export function isFragmentReady( if (!deferredFields || !fragName) return true; const fields = deferredFields[fragName] ?? []; - return fields.length > 0 && fields.every(field => data && field in data); + return fields.length > 0 && fields.every((field) => data && field in data); } diff --git a/client/apps/landing/src/hooks/gql/gql.ts b/client/apps/landing/src/hooks/gql/gql.ts index c82d4a94cb..be1e0eedc2 100644 --- a/client/apps/landing/src/hooks/gql/gql.ts +++ b/client/apps/landing/src/hooks/gql/gql.ts @@ -1,7 +1,5 @@ /* eslint-disable */ -import * as types from './graphql'; - - +import * as types from "./graphql"; /** * Map of all GraphQL operations in the project. @@ -15,84 +13,112 @@ import * as types from './graphql'; * Learn more about it here: https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size */ const documents = { - "\n query getCapacitySpeedConfig($category: Enum!, $entityType: u32!) {\n s0EternumCapacityConfigModels(where: {category: $category }) {\n edges{\n node {\n weight_gram\n }\n }\n }\n s0EternumSpeedConfigModels(where: {entity_type: $entityType }) {\n edges{\n node {\n sec_per_km\n }\n }\n }\n }\n": types.GetCapacitySpeedConfigDocument, - "\n query getEternumOwnerRealmIds($accountAddress: ContractAddress!) {\n s0EternumOwnerModels(where: { address: $accountAddress }, limit: 8000) {\n edges {\n node {\n address\n entity_id\n entity {\n models {\n __typename\n ... on s0_eternum_Realm {\n realm_id\n }\n }\n }\n }\n }\n }\n }\n": types.GetEternumOwnerRealmIdsDocument, - "\n query getEternumEntityOwner($entityOwnerIds: [u32!]!) {\n s0EternumEntityOwnerModels(where: { entity_owner_idIN: $entityOwnerIds}, limit: 10000) {\n edges {\n node {\n entity_id\n entity_owner_id\n entity {\n models {\n __typename\n ... on s0_eternum_OwnedResourcesTracker {\n resource_types\n }\n ... on s0_eternum_Position {\n x\n y\n }\n ... on s0_eternum_ArrivalTime {\n arrives_at\n }\n ... on s0_eternum_Weight {\n value\n }\n }\n }\n }\n }\n }\n }\n": types.GetEternumEntityOwnerDocument, - "\n query getAccountTokens($accountAddress: String!) {\n tokenBalances(accountAddress: $accountAddress, limit: 8000) {\n edges {\n node {\n tokenMetadata {\n __typename\n ... on ERC721__Token {\n tokenId\n metadataDescription\n imagePath\n contractAddress\n metadata\n }\n }\n }\n }\n }\n }\n": types.GetAccountTokensDocument, - "\n query getERC721Mints {\n tokenTransfers(accountAddress: \"0x0\", limit: 8000) {\n edges {\n node {\n tokenMetadata {\n __typename\n ... on ERC721__Token {\n tokenId\n metadataDescription\n imagePath\n contractAddress\n metadata\n }\n }\n }\n }\n }\n }\n": types.GetErc721MintsDocument, - "\n query eternumStatistics {\n s0EternumAddressNameModels {\n totalCount\n }\n s0EternumHyperstructureModels {\n totalCount\n }\n s0EternumRealmModels {\n totalCount\n }\n s0EternumFragmentMineDiscoveredModels {\n totalCount\n }\n }\n": types.EternumStatisticsDocument, - "\n query hasGameEnded {\n s0EternumGameEndedModels {\n edges {\n node {\n winner_address\n }\n }\n }\n }\n": types.HasGameEndedDocument, - "\n query hasPlayerRegistered($accountAddress: ContractAddress!) {\n s0EternumOwnerModels(where: { address: $accountAddress }) {\n totalCount\n }\n }\n": types.HasPlayerRegisteredDocument, - "\n query hasPlayerClaimed($accountAddress: ContractAddress!) {\n s0EternumLeaderboardRewardClaimedModels(where: { address: $accountAddress }) {\n totalCount\n }\n }\n": types.HasPlayerClaimedDocument, - "\n query getLeaderboardEntry($accountAddress: ContractAddress!) {\n s0EternumLeaderboardEntryModels(where: { address: $accountAddress }) {\n edges {\n node {\n address\n points\n }\n }\n }\n }\n": types.GetLeaderboardEntryDocument, - "\n query getLeaderboard {\n s0EternumLeaderboardModels {\n edges {\n node {\n total_points\n registration_end_timestamp\n total_price_pool {\n Some\n option\n }\n distribution_started\n }\n }\n }\n }\n": types.GetLeaderboardDocument, - "\n query getHyperstructureContributions($accountAddress: ContractAddress!) {\n s0EternumContributionModels(where: { player_address: $accountAddress }, limit: 1000) {\n edges {\n node {\n hyperstructure_entity_id\n amount\n }\n }\n }\n }\n": types.GetHyperstructureContributionsDocument, - "\n query getEpochs {\n s0EternumEpochModels(limit: 1000) {\n edges {\n node {\n owners {\n _0\n _1\n }\n start_timestamp\n hyperstructure_entity_id\n index\n }\n }\n }\n }\n": types.GetEpochsDocument, - "\n query getEntityPosition($entityIds: [u32!]!) {\n s0EternumPositionModels(where: { entity_idIN: $entityIds }, limit: 8000) {\n edges {\n node {\n x\n y\n entity_id\n entity {\n __typename\n }\n }\n }\n }\n }\n": types.GetEntityPositionDocument, - "\n query getEntitiesResources($entityIds: [u32!]!) {\n s0EternumResourceModels(where: { entity_idIN: $entityIds }, limit: 8000) {\n edges {\n node {\n entity_id\n resource_type\n balance\n entity {\n __typename\n }\n }\n }\n }\n }\n": types.GetEntitiesResourcesDocument, + "\n query getCapacitySpeedConfig($category: Enum!, $entityType: u32!) {\n s0EternumCapacityConfigModels(where: { category: $category }) {\n edges {\n node {\n weight_gram\n }\n }\n }\n s0EternumSpeedConfigModels(where: { entity_type: $entityType }) {\n edges {\n node {\n sec_per_km\n }\n }\n }\n }\n": + types.GetCapacitySpeedConfigDocument, + "\n query getEternumOwnerRealmIds($accountAddress: ContractAddress!) {\n s0EternumOwnerModels(where: { address: $accountAddress }, limit: 8000) {\n edges {\n node {\n address\n entity_id\n entity {\n models {\n __typename\n ... on s1_eternum_Realm {\n realm_id\n }\n }\n }\n }\n }\n }\n }\n": + types.GetEternumOwnerRealmIdsDocument, + "\n query getEternumEntityOwner($entityOwnerIds: [u32!]!) {\n s0EternumEntityOwnerModels(where: { entity_owner_idIN: $entityOwnerIds }, limit: 10000) {\n edges {\n node {\n entity_id\n entity_owner_id\n entity {\n models {\n __typename\n ... on s1_eternum_OwnedResourcesTracker {\n resource_types\n }\n ... on s1_eternum_Position {\n x\n y\n }\n ... on s1_eternum_ArrivalTime {\n arrives_at\n }\n ... on s1_eternum_Weight {\n value\n }\n }\n }\n }\n }\n }\n }\n": + types.GetEternumEntityOwnerDocument, + "\n query getAccountTokens($accountAddress: String!) {\n tokenBalances(accountAddress: $accountAddress, limit: 8000) {\n edges {\n node {\n tokenMetadata {\n __typename\n ... on ERC721__Token {\n tokenId\n metadataDescription\n imagePath\n contractAddress\n metadata\n }\n }\n }\n }\n }\n }\n": + types.GetAccountTokensDocument, + '\n query getERC721Mints {\n tokenTransfers(accountAddress: "0x0", limit: 8000) {\n edges {\n node {\n tokenMetadata {\n __typename\n ... on ERC721__Token {\n tokenId\n metadataDescription\n imagePath\n contractAddress\n metadata\n }\n }\n }\n }\n }\n }\n': + types.GetErc721MintsDocument, + "\n query eternumStatistics {\n s0EternumAddressNameModels {\n totalCount\n }\n s0EternumHyperstructureModels {\n totalCount\n }\n s0EternumRealmModels {\n totalCount\n }\n s0EternumFragmentMineDiscoveredModels {\n totalCount\n }\n }\n": + types.EternumStatisticsDocument, + "\n query hasGameEnded {\n s0EternumGameEndedModels {\n edges {\n node {\n winner_address\n }\n }\n }\n }\n": + types.HasGameEndedDocument, + "\n query getLeaderboardEntry($accountAddress: ContractAddress!) {\n s0EternumLeaderboardEntryModels(where: { address: $accountAddress }) {\n edges {\n node {\n address\n points\n }\n }\n }\n }\n": + types.GetLeaderboardEntryDocument, + "\n query getLeaderboard {\n s0EternumLeaderboardModels {\n edges {\n node {\n total_points\n registration_end_timestamp\n total_price_pool {\n Some\n option\n }\n distribution_started\n }\n }\n }\n }\n": + types.GetLeaderboardDocument, + "\n query getHyperstructureContributions($accountAddress: ContractAddress!) {\n s0EternumContributionModels(where: { player_address: $accountAddress }, limit: 1000) {\n edges {\n node {\n hyperstructure_entity_id\n amount\n }\n }\n }\n }\n": + types.GetHyperstructureContributionsDocument, + "\n query getEpochs {\n s0EternumEpochModels(limit: 1000) {\n edges {\n node {\n owners {\n _0\n _1\n }\n start_timestamp\n hyperstructure_entity_id\n index\n }\n }\n }\n }\n": + types.GetEpochsDocument, + "\n query getEntityPosition($entityIds: [u32!]!) {\n s0EternumPositionModels(where: { entity_idIN: $entityIds }, limit: 8000) {\n edges {\n node {\n x\n y\n entity_id\n entity {\n __typename\n }\n }\n }\n }\n }\n": + types.GetEntityPositionDocument, + "\n query getEntitiesResources($entityIds: [u32!]!) {\n s0EternumResourceModels(where: { entity_idIN: $entityIds }, limit: 8000) {\n edges {\n node {\n entity_id\n resource_type\n balance\n entity {\n __typename\n }\n }\n }\n }\n }\n": + types.GetEntitiesResourcesDocument, }; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query getCapacitySpeedConfig($category: Enum!, $entityType: u32!) {\n s0EternumCapacityConfigModels(where: {category: $category }) {\n edges{\n node {\n weight_gram\n }\n }\n }\n s0EternumSpeedConfigModels(where: {entity_type: $entityType }) {\n edges{\n node {\n sec_per_km\n }\n }\n }\n }\n"): typeof import('./graphql').GetCapacitySpeedConfigDocument; -/** - * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - */ -export function graphql(source: "\n query getEternumOwnerRealmIds($accountAddress: ContractAddress!) {\n s0EternumOwnerModels(where: { address: $accountAddress }, limit: 8000) {\n edges {\n node {\n address\n entity_id\n entity {\n models {\n __typename\n ... on s0_eternum_Realm {\n realm_id\n }\n }\n }\n }\n }\n }\n }\n"): typeof import('./graphql').GetEternumOwnerRealmIdsDocument; +export function graphql( + source: "\n query getCapacitySpeedConfig($category: Enum!, $entityType: u32!) {\n s0EternumCapacityConfigModels(where: { category: $category }) {\n edges {\n node {\n weight_gram\n }\n }\n }\n s0EternumSpeedConfigModels(where: { entity_type: $entityType }) {\n edges {\n node {\n sec_per_km\n }\n }\n }\n }\n", +): typeof import("./graphql").GetCapacitySpeedConfigDocument; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query getEternumEntityOwner($entityOwnerIds: [u32!]!) {\n s0EternumEntityOwnerModels(where: { entity_owner_idIN: $entityOwnerIds}, limit: 10000) {\n edges {\n node {\n entity_id\n entity_owner_id\n entity {\n models {\n __typename\n ... on s0_eternum_OwnedResourcesTracker {\n resource_types\n }\n ... on s0_eternum_Position {\n x\n y\n }\n ... on s0_eternum_ArrivalTime {\n arrives_at\n }\n ... on s0_eternum_Weight {\n value\n }\n }\n }\n }\n }\n }\n }\n"): typeof import('./graphql').GetEternumEntityOwnerDocument; +export function graphql( + source: "\n query getEternumOwnerRealmIds($accountAddress: ContractAddress!) {\n s0EternumOwnerModels(where: { address: $accountAddress }, limit: 8000) {\n edges {\n node {\n address\n entity_id\n entity {\n models {\n __typename\n ... on s1_eternum_Realm {\n realm_id\n }\n }\n }\n }\n }\n }\n }\n", +): typeof import("./graphql").GetEternumOwnerRealmIdsDocument; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query getAccountTokens($accountAddress: String!) {\n tokenBalances(accountAddress: $accountAddress, limit: 8000) {\n edges {\n node {\n tokenMetadata {\n __typename\n ... on ERC721__Token {\n tokenId\n metadataDescription\n imagePath\n contractAddress\n metadata\n }\n }\n }\n }\n }\n }\n"): typeof import('./graphql').GetAccountTokensDocument; +export function graphql( + source: "\n query getEternumEntityOwner($entityOwnerIds: [u32!]!) {\n s0EternumEntityOwnerModels(where: { entity_owner_idIN: $entityOwnerIds }, limit: 10000) {\n edges {\n node {\n entity_id\n entity_owner_id\n entity {\n models {\n __typename\n ... on s1_eternum_OwnedResourcesTracker {\n resource_types\n }\n ... on s1_eternum_Position {\n x\n y\n }\n ... on s1_eternum_ArrivalTime {\n arrives_at\n }\n ... on s1_eternum_Weight {\n value\n }\n }\n }\n }\n }\n }\n }\n", +): typeof import("./graphql").GetEternumEntityOwnerDocument; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query getERC721Mints {\n tokenTransfers(accountAddress: \"0x0\", limit: 8000) {\n edges {\n node {\n tokenMetadata {\n __typename\n ... on ERC721__Token {\n tokenId\n metadataDescription\n imagePath\n contractAddress\n metadata\n }\n }\n }\n }\n }\n }\n"): typeof import('./graphql').GetErc721MintsDocument; +export function graphql( + source: "\n query getAccountTokens($accountAddress: String!) {\n tokenBalances(accountAddress: $accountAddress, limit: 8000) {\n edges {\n node {\n tokenMetadata {\n __typename\n ... on ERC721__Token {\n tokenId\n metadataDescription\n imagePath\n contractAddress\n metadata\n }\n }\n }\n }\n }\n }\n", +): typeof import("./graphql").GetAccountTokensDocument; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query eternumStatistics {\n s0EternumAddressNameModels {\n totalCount\n }\n s0EternumHyperstructureModels {\n totalCount\n }\n s0EternumRealmModels {\n totalCount\n }\n s0EternumFragmentMineDiscoveredModels {\n totalCount\n }\n }\n"): typeof import('./graphql').EternumStatisticsDocument; +export function graphql( + source: '\n query getERC721Mints {\n tokenTransfers(accountAddress: "0x0", limit: 8000) {\n edges {\n node {\n tokenMetadata {\n __typename\n ... on ERC721__Token {\n tokenId\n metadataDescription\n imagePath\n contractAddress\n metadata\n }\n }\n }\n }\n }\n }\n', +): typeof import("./graphql").GetErc721MintsDocument; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query hasGameEnded {\n s0EternumGameEndedModels {\n edges {\n node {\n winner_address\n }\n }\n }\n }\n"): typeof import('./graphql').HasGameEndedDocument; +export function graphql( + source: "\n query eternumStatistics {\n s0EternumAddressNameModels {\n totalCount\n }\n s0EternumHyperstructureModels {\n totalCount\n }\n s0EternumRealmModels {\n totalCount\n }\n s0EternumFragmentMineDiscoveredModels {\n totalCount\n }\n }\n", +): typeof import("./graphql").EternumStatisticsDocument; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query hasPlayerRegistered($accountAddress: ContractAddress!) {\n s0EternumOwnerModels(where: { address: $accountAddress }) {\n totalCount\n }\n }\n"): typeof import('./graphql').HasPlayerRegisteredDocument; +export function graphql( + source: "\n query hasGameEnded {\n s0EternumGameEndedModels {\n edges {\n node {\n winner_address\n }\n }\n }\n }\n", +): typeof import("./graphql").HasGameEndedDocument; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query hasPlayerClaimed($accountAddress: ContractAddress!) {\n s0EternumLeaderboardRewardClaimedModels(where: { address: $accountAddress }) {\n totalCount\n }\n }\n"): typeof import('./graphql').HasPlayerClaimedDocument; +export function graphql( + source: "\n query getLeaderboardEntry($accountAddress: ContractAddress!) {\n s0EternumLeaderboardEntryModels(where: { address: $accountAddress }) {\n edges {\n node {\n address\n points\n }\n }\n }\n }\n", +): typeof import("./graphql").GetLeaderboardEntryDocument; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query getLeaderboardEntry($accountAddress: ContractAddress!) {\n s0EternumLeaderboardEntryModels(where: { address: $accountAddress }) {\n edges {\n node {\n address\n points\n }\n }\n }\n }\n"): typeof import('./graphql').GetLeaderboardEntryDocument; +export function graphql( + source: "\n query getLeaderboard {\n s0EternumLeaderboardModels {\n edges {\n node {\n total_points\n registration_end_timestamp\n total_price_pool {\n Some\n option\n }\n distribution_started\n }\n }\n }\n }\n", +): typeof import("./graphql").GetLeaderboardDocument; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query getLeaderboard {\n s0EternumLeaderboardModels {\n edges {\n node {\n total_points\n registration_end_timestamp\n total_price_pool {\n Some\n option\n }\n distribution_started\n }\n }\n }\n }\n"): typeof import('./graphql').GetLeaderboardDocument; +export function graphql( + source: "\n query getHyperstructureContributions($accountAddress: ContractAddress!) {\n s0EternumContributionModels(where: { player_address: $accountAddress }, limit: 1000) {\n edges {\n node {\n hyperstructure_entity_id\n amount\n }\n }\n }\n }\n", +): typeof import("./graphql").GetHyperstructureContributionsDocument; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query getHyperstructureContributions($accountAddress: ContractAddress!) {\n s0EternumContributionModels(where: { player_address: $accountAddress }, limit: 1000) {\n edges {\n node {\n hyperstructure_entity_id\n amount\n }\n }\n }\n }\n"): typeof import('./graphql').GetHyperstructureContributionsDocument; +export function graphql( + source: "\n query getEpochs {\n s0EternumEpochModels(limit: 1000) {\n edges {\n node {\n owners {\n _0\n _1\n }\n start_timestamp\n hyperstructure_entity_id\n index\n }\n }\n }\n }\n", +): typeof import("./graphql").GetEpochsDocument; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query getEpochs {\n s0EternumEpochModels(limit: 1000) {\n edges {\n node {\n owners {\n _0\n _1\n }\n start_timestamp\n hyperstructure_entity_id\n index\n }\n }\n }\n }\n"): typeof import('./graphql').GetEpochsDocument; +export function graphql( + source: "\n query getEntityPosition($entityIds: [u32!]!) {\n s0EternumPositionModels(where: { entity_idIN: $entityIds }, limit: 8000) {\n edges {\n node {\n x\n y\n entity_id\n entity {\n __typename\n }\n }\n }\n }\n }\n", +): typeof import("./graphql").GetEntityPositionDocument; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query getEntityPosition($entityIds: [u32!]!) {\n s0EternumPositionModels(where: { entity_idIN: $entityIds }, limit: 8000) {\n edges {\n node {\n x\n y\n entity_id\n entity {\n __typename\n }\n }\n }\n }\n }\n"): typeof import('./graphql').GetEntityPositionDocument; -/** - * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - */ -export function graphql(source: "\n query getEntitiesResources($entityIds: [u32!]!) {\n s0EternumResourceModels(where: { entity_idIN: $entityIds }, limit: 8000) {\n edges {\n node {\n entity_id\n resource_type\n balance\n entity {\n __typename\n }\n }\n }\n }\n }\n"): typeof import('./graphql').GetEntitiesResourcesDocument; - +export function graphql( + source: "\n query getEntitiesResources($entityIds: [u32!]!) {\n s0EternumResourceModels(where: { entity_idIN: $entityIds }, limit: 8000) {\n edges {\n node {\n entity_id\n resource_type\n balance\n entity {\n __typename\n }\n }\n }\n }\n }\n", +): typeof import("./graphql").GetEntitiesResourcesDocument; export function graphql(source: string) { return (documents as any)[source] ?? {}; diff --git a/client/apps/landing/src/hooks/gql/graphql.ts b/client/apps/landing/src/hooks/gql/graphql.ts index e9ada96827..fbe3225208 100644 --- a/client/apps/landing/src/hooks/gql/graphql.ts +++ b/client/apps/landing/src/hooks/gql/graphql.ts @@ -1,37 +1,37 @@ /* eslint-disable */ -import { DocumentTypeDecoration } from '@graphql-typed-document-node/core'; +import { DocumentTypeDecoration } from "@graphql-typed-document-node/core"; export type Maybe = T | null; export type InputMaybe = Maybe; export type Exact = { [K in keyof T]: T[K] }; export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; export type MakeEmpty = { [_ in K]?: never }; -export type Incremental = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }; +export type Incremental = T | { [P in keyof T]?: P extends " $fragmentName" | "__typename" ? T[P] : never }; /** All built-in and custom scalars, mapped to their actual values */ export type Scalars = { - ID: { input: string; output: string; } - String: { input: string; output: string; } - Boolean: { input: boolean; output: boolean; } - Int: { input: number; output: number; } - Float: { input: number; output: number; } - ByteArray: { input: any; output: any; } - ContractAddress: { input: any; output: any; } - Cursor: { input: any; output: any; } - DateTime: { input: any; output: any; } - Enum: { input: any; output: any; } - bool: { input: any; output: any; } - felt252: { input: any; output: any; } - u8: { input: any; output: any; } - u16: { input: any; output: any; } - u32: { input: any; output: any; } - u64: { input: any; output: any; } - u128: { input: any; output: any; } - u256: { input: any; output: any; } + ID: { input: string; output: string }; + String: { input: string; output: string }; + Boolean: { input: boolean; output: boolean }; + Int: { input: number; output: number }; + Float: { input: number; output: number }; + ByteArray: { input: any; output: any }; + ContractAddress: { input: any; output: any }; + Cursor: { input: any; output: any }; + DateTime: { input: any; output: any }; + Enum: { input: any; output: any }; + bool: { input: any; output: any }; + felt252: { input: any; output: any }; + u8: { input: any; output: any }; + u16: { input: any; output: any }; + u32: { input: any; output: any }; + u64: { input: any; output: any }; + u128: { input: any; output: any }; + u256: { input: any; output: any }; }; export enum OrderDirection { - Asc = 'ASC', - Desc = 'DESC' + Asc = "ASC", + Desc = "DESC", } export type World__ModelOrder = { @@ -40,2062 +40,2062 @@ export type World__ModelOrder = { }; export enum World__ModelOrderField { - ClassHash = 'CLASS_HASH', - Name = 'NAME' + ClassHash = "CLASS_HASH", + Name = "NAME", } -export type S0_Eternum_AcceptOrderOrder = { +export type s1_eternum_AcceptOrderOrder = { direction: OrderDirection; - field: S0_Eternum_AcceptOrderOrderField; -}; - -export enum S0_Eternum_AcceptOrderOrderField { - Id = 'ID', - MakerId = 'MAKER_ID', - TakerId = 'TAKER_ID', - Timestamp = 'TIMESTAMP', - TradeId = 'TRADE_ID' -} - -export type S0_Eternum_AcceptOrderWhereInput = { - id?: InputMaybe; - idEQ?: InputMaybe; - idGT?: InputMaybe; - idGTE?: InputMaybe; - idIN?: InputMaybe>>; - idLIKE?: InputMaybe; - idLT?: InputMaybe; - idLTE?: InputMaybe; - idNEQ?: InputMaybe; - idNOTIN?: InputMaybe>>; - idNOTLIKE?: InputMaybe; - maker_id?: InputMaybe; - maker_idEQ?: InputMaybe; - maker_idGT?: InputMaybe; - maker_idGTE?: InputMaybe; - maker_idIN?: InputMaybe>>; - maker_idLIKE?: InputMaybe; - maker_idLT?: InputMaybe; - maker_idLTE?: InputMaybe; - maker_idNEQ?: InputMaybe; - maker_idNOTIN?: InputMaybe>>; - maker_idNOTLIKE?: InputMaybe; - taker_id?: InputMaybe; - taker_idEQ?: InputMaybe; - taker_idGT?: InputMaybe; - taker_idGTE?: InputMaybe; - taker_idIN?: InputMaybe>>; - taker_idLIKE?: InputMaybe; - taker_idLT?: InputMaybe; - taker_idLTE?: InputMaybe; - taker_idNEQ?: InputMaybe; - taker_idNOTIN?: InputMaybe>>; - taker_idNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; - trade_id?: InputMaybe; - trade_idEQ?: InputMaybe; - trade_idGT?: InputMaybe; - trade_idGTE?: InputMaybe; - trade_idIN?: InputMaybe>>; - trade_idLIKE?: InputMaybe; - trade_idLT?: InputMaybe; - trade_idLTE?: InputMaybe; - trade_idNEQ?: InputMaybe; - trade_idNOTIN?: InputMaybe>>; - trade_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_AcceptPartialOrderOrder = { + field: s1_eternum_AcceptOrderOrderField; +}; + +export enum s1_eternum_AcceptOrderOrderField { + Id = "ID", + MakerId = "MAKER_ID", + TakerId = "TAKER_ID", + Timestamp = "TIMESTAMP", + TradeId = "TRADE_ID", +} + +export type s1_eternum_AcceptOrderWhereInput = { + id?: InputMaybe; + idEQ?: InputMaybe; + idGT?: InputMaybe; + idGTE?: InputMaybe; + idIN?: InputMaybe>>; + idLIKE?: InputMaybe; + idLT?: InputMaybe; + idLTE?: InputMaybe; + idNEQ?: InputMaybe; + idNOTIN?: InputMaybe>>; + idNOTLIKE?: InputMaybe; + maker_id?: InputMaybe; + maker_idEQ?: InputMaybe; + maker_idGT?: InputMaybe; + maker_idGTE?: InputMaybe; + maker_idIN?: InputMaybe>>; + maker_idLIKE?: InputMaybe; + maker_idLT?: InputMaybe; + maker_idLTE?: InputMaybe; + maker_idNEQ?: InputMaybe; + maker_idNOTIN?: InputMaybe>>; + maker_idNOTLIKE?: InputMaybe; + taker_id?: InputMaybe; + taker_idEQ?: InputMaybe; + taker_idGT?: InputMaybe; + taker_idGTE?: InputMaybe; + taker_idIN?: InputMaybe>>; + taker_idLIKE?: InputMaybe; + taker_idLT?: InputMaybe; + taker_idLTE?: InputMaybe; + taker_idNEQ?: InputMaybe; + taker_idNOTIN?: InputMaybe>>; + taker_idNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; + trade_id?: InputMaybe; + trade_idEQ?: InputMaybe; + trade_idGT?: InputMaybe; + trade_idGTE?: InputMaybe; + trade_idIN?: InputMaybe>>; + trade_idLIKE?: InputMaybe; + trade_idLT?: InputMaybe; + trade_idLTE?: InputMaybe; + trade_idNEQ?: InputMaybe; + trade_idNOTIN?: InputMaybe>>; + trade_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_AcceptPartialOrderOrder = { direction: OrderDirection; - field: S0_Eternum_AcceptPartialOrderOrderField; -}; - -export enum S0_Eternum_AcceptPartialOrderOrderField { - MakerId = 'MAKER_ID', - TakerId = 'TAKER_ID', - Timestamp = 'TIMESTAMP', - TradeId = 'TRADE_ID' -} - -export type S0_Eternum_AcceptPartialOrderWhereInput = { - maker_id?: InputMaybe; - maker_idEQ?: InputMaybe; - maker_idGT?: InputMaybe; - maker_idGTE?: InputMaybe; - maker_idIN?: InputMaybe>>; - maker_idLIKE?: InputMaybe; - maker_idLT?: InputMaybe; - maker_idLTE?: InputMaybe; - maker_idNEQ?: InputMaybe; - maker_idNOTIN?: InputMaybe>>; - maker_idNOTLIKE?: InputMaybe; - taker_id?: InputMaybe; - taker_idEQ?: InputMaybe; - taker_idGT?: InputMaybe; - taker_idGTE?: InputMaybe; - taker_idIN?: InputMaybe>>; - taker_idLIKE?: InputMaybe; - taker_idLT?: InputMaybe; - taker_idLTE?: InputMaybe; - taker_idNEQ?: InputMaybe; - taker_idNOTIN?: InputMaybe>>; - taker_idNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; - trade_id?: InputMaybe; - trade_idEQ?: InputMaybe; - trade_idGT?: InputMaybe; - trade_idGTE?: InputMaybe; - trade_idIN?: InputMaybe>>; - trade_idLIKE?: InputMaybe; - trade_idLT?: InputMaybe; - trade_idLTE?: InputMaybe; - trade_idNEQ?: InputMaybe; - trade_idNOTIN?: InputMaybe>>; - trade_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_AddressNameOrder = { + field: s1_eternum_AcceptPartialOrderOrderField; +}; + +export enum s1_eternum_AcceptPartialOrderOrderField { + MakerId = "MAKER_ID", + TakerId = "TAKER_ID", + Timestamp = "TIMESTAMP", + TradeId = "TRADE_ID", +} + +export type s1_eternum_AcceptPartialOrderWhereInput = { + maker_id?: InputMaybe; + maker_idEQ?: InputMaybe; + maker_idGT?: InputMaybe; + maker_idGTE?: InputMaybe; + maker_idIN?: InputMaybe>>; + maker_idLIKE?: InputMaybe; + maker_idLT?: InputMaybe; + maker_idLTE?: InputMaybe; + maker_idNEQ?: InputMaybe; + maker_idNOTIN?: InputMaybe>>; + maker_idNOTLIKE?: InputMaybe; + taker_id?: InputMaybe; + taker_idEQ?: InputMaybe; + taker_idGT?: InputMaybe; + taker_idGTE?: InputMaybe; + taker_idIN?: InputMaybe>>; + taker_idLIKE?: InputMaybe; + taker_idLT?: InputMaybe; + taker_idLTE?: InputMaybe; + taker_idNEQ?: InputMaybe; + taker_idNOTIN?: InputMaybe>>; + taker_idNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; + trade_id?: InputMaybe; + trade_idEQ?: InputMaybe; + trade_idGT?: InputMaybe; + trade_idGTE?: InputMaybe; + trade_idIN?: InputMaybe>>; + trade_idLIKE?: InputMaybe; + trade_idLT?: InputMaybe; + trade_idLTE?: InputMaybe; + trade_idNEQ?: InputMaybe; + trade_idNOTIN?: InputMaybe>>; + trade_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_AddressNameOrder = { direction: OrderDirection; - field: S0_Eternum_AddressNameOrderField; -}; - -export enum S0_Eternum_AddressNameOrderField { - Address = 'ADDRESS', - Name = 'NAME' -} - -export type S0_Eternum_AddressNameWhereInput = { - address?: InputMaybe; - addressEQ?: InputMaybe; - addressGT?: InputMaybe; - addressGTE?: InputMaybe; - addressIN?: InputMaybe>>; - addressLIKE?: InputMaybe; - addressLT?: InputMaybe; - addressLTE?: InputMaybe; - addressNEQ?: InputMaybe; - addressNOTIN?: InputMaybe>>; - addressNOTLIKE?: InputMaybe; - name?: InputMaybe; - nameEQ?: InputMaybe; - nameGT?: InputMaybe; - nameGTE?: InputMaybe; - nameIN?: InputMaybe>>; - nameLIKE?: InputMaybe; - nameLT?: InputMaybe; - nameLTE?: InputMaybe; - nameNEQ?: InputMaybe; - nameNOTIN?: InputMaybe>>; - nameNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ArmyOrder = { + field: s1_eternum_AddressNameOrderField; +}; + +export enum s1_eternum_AddressNameOrderField { + Address = "ADDRESS", + Name = "NAME", +} + +export type s1_eternum_AddressNameWhereInput = { + address?: InputMaybe; + addressEQ?: InputMaybe; + addressGT?: InputMaybe; + addressGTE?: InputMaybe; + addressIN?: InputMaybe>>; + addressLIKE?: InputMaybe; + addressLT?: InputMaybe; + addressLTE?: InputMaybe; + addressNEQ?: InputMaybe; + addressNOTIN?: InputMaybe>>; + addressNOTLIKE?: InputMaybe; + name?: InputMaybe; + nameEQ?: InputMaybe; + nameGT?: InputMaybe; + nameGTE?: InputMaybe; + nameIN?: InputMaybe>>; + nameLIKE?: InputMaybe; + nameLT?: InputMaybe; + nameLTE?: InputMaybe; + nameNEQ?: InputMaybe; + nameNOTIN?: InputMaybe>>; + nameNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ArmyOrder = { direction: OrderDirection; - field: S0_Eternum_ArmyOrderField; -}; - -export enum S0_Eternum_ArmyOrderField { - BattleId = 'BATTLE_ID', - BattleSide = 'BATTLE_SIDE', - EntityId = 'ENTITY_ID', - Troops = 'TROOPS' -} - -export type S0_Eternum_ArmyWhereInput = { - battle_id?: InputMaybe; - battle_idEQ?: InputMaybe; - battle_idGT?: InputMaybe; - battle_idGTE?: InputMaybe; - battle_idIN?: InputMaybe>>; - battle_idLIKE?: InputMaybe; - battle_idLT?: InputMaybe; - battle_idLTE?: InputMaybe; - battle_idNEQ?: InputMaybe; - battle_idNOTIN?: InputMaybe>>; - battle_idNOTLIKE?: InputMaybe; - battle_side?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ArrivalTimeOrder = { + field: s1_eternum_ArmyOrderField; +}; + +export enum s1_eternum_ArmyOrderField { + BattleId = "BATTLE_ID", + BattleSide = "BATTLE_SIDE", + EntityId = "ENTITY_ID", + Troops = "TROOPS", +} + +export type s1_eternum_ArmyWhereInput = { + battle_id?: InputMaybe; + battle_idEQ?: InputMaybe; + battle_idGT?: InputMaybe; + battle_idGTE?: InputMaybe; + battle_idIN?: InputMaybe>>; + battle_idLIKE?: InputMaybe; + battle_idLT?: InputMaybe; + battle_idLTE?: InputMaybe; + battle_idNEQ?: InputMaybe; + battle_idNOTIN?: InputMaybe>>; + battle_idNOTLIKE?: InputMaybe; + battle_side?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ArrivalTimeOrder = { direction: OrderDirection; - field: S0_Eternum_ArrivalTimeOrderField; -}; - -export enum S0_Eternum_ArrivalTimeOrderField { - ArrivesAt = 'ARRIVES_AT', - EntityId = 'ENTITY_ID' -} - -export type S0_Eternum_ArrivalTimeWhereInput = { - arrives_at?: InputMaybe; - arrives_atEQ?: InputMaybe; - arrives_atGT?: InputMaybe; - arrives_atGTE?: InputMaybe; - arrives_atIN?: InputMaybe>>; - arrives_atLIKE?: InputMaybe; - arrives_atLT?: InputMaybe; - arrives_atLTE?: InputMaybe; - arrives_atNEQ?: InputMaybe; - arrives_atNOTIN?: InputMaybe>>; - arrives_atNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BankConfigOrder = { + field: s1_eternum_ArrivalTimeOrderField; +}; + +export enum s1_eternum_ArrivalTimeOrderField { + ArrivesAt = "ARRIVES_AT", + EntityId = "ENTITY_ID", +} + +export type s1_eternum_ArrivalTimeWhereInput = { + arrives_at?: InputMaybe; + arrives_atEQ?: InputMaybe; + arrives_atGT?: InputMaybe; + arrives_atGTE?: InputMaybe; + arrives_atIN?: InputMaybe>>; + arrives_atLIKE?: InputMaybe; + arrives_atLT?: InputMaybe; + arrives_atLTE?: InputMaybe; + arrives_atNEQ?: InputMaybe; + arrives_atNOTIN?: InputMaybe>>; + arrives_atNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BankConfigOrder = { direction: OrderDirection; - field: S0_Eternum_BankConfigOrderField; -}; - -export enum S0_Eternum_BankConfigOrderField { - ConfigId = 'CONFIG_ID', - LordsCost = 'LORDS_COST', - LpFeeDenom = 'LP_FEE_DENOM', - LpFeeNum = 'LP_FEE_NUM' -} - -export type S0_Eternum_BankConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - lords_cost?: InputMaybe; - lords_costEQ?: InputMaybe; - lords_costGT?: InputMaybe; - lords_costGTE?: InputMaybe; - lords_costIN?: InputMaybe>>; - lords_costLIKE?: InputMaybe; - lords_costLT?: InputMaybe; - lords_costLTE?: InputMaybe; - lords_costNEQ?: InputMaybe; - lords_costNOTIN?: InputMaybe>>; - lords_costNOTLIKE?: InputMaybe; - lp_fee_denom?: InputMaybe; - lp_fee_denomEQ?: InputMaybe; - lp_fee_denomGT?: InputMaybe; - lp_fee_denomGTE?: InputMaybe; - lp_fee_denomIN?: InputMaybe>>; - lp_fee_denomLIKE?: InputMaybe; - lp_fee_denomLT?: InputMaybe; - lp_fee_denomLTE?: InputMaybe; - lp_fee_denomNEQ?: InputMaybe; - lp_fee_denomNOTIN?: InputMaybe>>; - lp_fee_denomNOTLIKE?: InputMaybe; - lp_fee_num?: InputMaybe; - lp_fee_numEQ?: InputMaybe; - lp_fee_numGT?: InputMaybe; - lp_fee_numGTE?: InputMaybe; - lp_fee_numIN?: InputMaybe>>; - lp_fee_numLIKE?: InputMaybe; - lp_fee_numLT?: InputMaybe; - lp_fee_numLTE?: InputMaybe; - lp_fee_numNEQ?: InputMaybe; - lp_fee_numNOTIN?: InputMaybe>>; - lp_fee_numNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BankOrder = { + field: s1_eternum_BankConfigOrderField; +}; + +export enum s1_eternum_BankConfigOrderField { + ConfigId = "CONFIG_ID", + LordsCost = "LORDS_COST", + LpFeeDenom = "LP_FEE_DENOM", + LpFeeNum = "LP_FEE_NUM", +} + +export type s1_eternum_BankConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + lords_cost?: InputMaybe; + lords_costEQ?: InputMaybe; + lords_costGT?: InputMaybe; + lords_costGTE?: InputMaybe; + lords_costIN?: InputMaybe>>; + lords_costLIKE?: InputMaybe; + lords_costLT?: InputMaybe; + lords_costLTE?: InputMaybe; + lords_costNEQ?: InputMaybe; + lords_costNOTIN?: InputMaybe>>; + lords_costNOTLIKE?: InputMaybe; + lp_fee_denom?: InputMaybe; + lp_fee_denomEQ?: InputMaybe; + lp_fee_denomGT?: InputMaybe; + lp_fee_denomGTE?: InputMaybe; + lp_fee_denomIN?: InputMaybe>>; + lp_fee_denomLIKE?: InputMaybe; + lp_fee_denomLT?: InputMaybe; + lp_fee_denomLTE?: InputMaybe; + lp_fee_denomNEQ?: InputMaybe; + lp_fee_denomNOTIN?: InputMaybe>>; + lp_fee_denomNOTLIKE?: InputMaybe; + lp_fee_num?: InputMaybe; + lp_fee_numEQ?: InputMaybe; + lp_fee_numGT?: InputMaybe; + lp_fee_numGTE?: InputMaybe; + lp_fee_numIN?: InputMaybe>>; + lp_fee_numLIKE?: InputMaybe; + lp_fee_numLT?: InputMaybe; + lp_fee_numLTE?: InputMaybe; + lp_fee_numNEQ?: InputMaybe; + lp_fee_numNOTIN?: InputMaybe>>; + lp_fee_numNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BankOrder = { direction: OrderDirection; - field: S0_Eternum_BankOrderField; -}; - -export enum S0_Eternum_BankOrderField { - EntityId = 'ENTITY_ID', - Exists = 'EXISTS', - OwnerBridgeFeeDptPercent = 'OWNER_BRIDGE_FEE_DPT_PERCENT', - OwnerBridgeFeeWtdrPercent = 'OWNER_BRIDGE_FEE_WTDR_PERCENT', - OwnerFeeDenom = 'OWNER_FEE_DENOM', - OwnerFeeNum = 'OWNER_FEE_NUM' -} - -export type S0_Eternum_BankWhereInput = { - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - exists?: InputMaybe; - owner_bridge_fee_dpt_percent?: InputMaybe; - owner_bridge_fee_dpt_percentEQ?: InputMaybe; - owner_bridge_fee_dpt_percentGT?: InputMaybe; - owner_bridge_fee_dpt_percentGTE?: InputMaybe; - owner_bridge_fee_dpt_percentIN?: InputMaybe>>; - owner_bridge_fee_dpt_percentLIKE?: InputMaybe; - owner_bridge_fee_dpt_percentLT?: InputMaybe; - owner_bridge_fee_dpt_percentLTE?: InputMaybe; - owner_bridge_fee_dpt_percentNEQ?: InputMaybe; - owner_bridge_fee_dpt_percentNOTIN?: InputMaybe>>; - owner_bridge_fee_dpt_percentNOTLIKE?: InputMaybe; - owner_bridge_fee_wtdr_percent?: InputMaybe; - owner_bridge_fee_wtdr_percentEQ?: InputMaybe; - owner_bridge_fee_wtdr_percentGT?: InputMaybe; - owner_bridge_fee_wtdr_percentGTE?: InputMaybe; - owner_bridge_fee_wtdr_percentIN?: InputMaybe>>; - owner_bridge_fee_wtdr_percentLIKE?: InputMaybe; - owner_bridge_fee_wtdr_percentLT?: InputMaybe; - owner_bridge_fee_wtdr_percentLTE?: InputMaybe; - owner_bridge_fee_wtdr_percentNEQ?: InputMaybe; - owner_bridge_fee_wtdr_percentNOTIN?: InputMaybe>>; - owner_bridge_fee_wtdr_percentNOTLIKE?: InputMaybe; - owner_fee_denom?: InputMaybe; - owner_fee_denomEQ?: InputMaybe; - owner_fee_denomGT?: InputMaybe; - owner_fee_denomGTE?: InputMaybe; - owner_fee_denomIN?: InputMaybe>>; - owner_fee_denomLIKE?: InputMaybe; - owner_fee_denomLT?: InputMaybe; - owner_fee_denomLTE?: InputMaybe; - owner_fee_denomNEQ?: InputMaybe; - owner_fee_denomNOTIN?: InputMaybe>>; - owner_fee_denomNOTLIKE?: InputMaybe; - owner_fee_num?: InputMaybe; - owner_fee_numEQ?: InputMaybe; - owner_fee_numGT?: InputMaybe; - owner_fee_numGTE?: InputMaybe; - owner_fee_numIN?: InputMaybe>>; - owner_fee_numLIKE?: InputMaybe; - owner_fee_numLT?: InputMaybe; - owner_fee_numLTE?: InputMaybe; - owner_fee_numNEQ?: InputMaybe; - owner_fee_numNOTIN?: InputMaybe>>; - owner_fee_numNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BattleClaimDataOrder = { + field: s1_eternum_BankOrderField; +}; + +export enum s1_eternum_BankOrderField { + EntityId = "ENTITY_ID", + Exists = "EXISTS", + OwnerBridgeFeeDptPercent = "OWNER_BRIDGE_FEE_DPT_PERCENT", + OwnerBridgeFeeWtdrPercent = "OWNER_BRIDGE_FEE_WTDR_PERCENT", + OwnerFeeDenom = "OWNER_FEE_DENOM", + OwnerFeeNum = "OWNER_FEE_NUM", +} + +export type s1_eternum_BankWhereInput = { + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + exists?: InputMaybe; + owner_bridge_fee_dpt_percent?: InputMaybe; + owner_bridge_fee_dpt_percentEQ?: InputMaybe; + owner_bridge_fee_dpt_percentGT?: InputMaybe; + owner_bridge_fee_dpt_percentGTE?: InputMaybe; + owner_bridge_fee_dpt_percentIN?: InputMaybe>>; + owner_bridge_fee_dpt_percentLIKE?: InputMaybe; + owner_bridge_fee_dpt_percentLT?: InputMaybe; + owner_bridge_fee_dpt_percentLTE?: InputMaybe; + owner_bridge_fee_dpt_percentNEQ?: InputMaybe; + owner_bridge_fee_dpt_percentNOTIN?: InputMaybe>>; + owner_bridge_fee_dpt_percentNOTLIKE?: InputMaybe; + owner_bridge_fee_wtdr_percent?: InputMaybe; + owner_bridge_fee_wtdr_percentEQ?: InputMaybe; + owner_bridge_fee_wtdr_percentGT?: InputMaybe; + owner_bridge_fee_wtdr_percentGTE?: InputMaybe; + owner_bridge_fee_wtdr_percentIN?: InputMaybe>>; + owner_bridge_fee_wtdr_percentLIKE?: InputMaybe; + owner_bridge_fee_wtdr_percentLT?: InputMaybe; + owner_bridge_fee_wtdr_percentLTE?: InputMaybe; + owner_bridge_fee_wtdr_percentNEQ?: InputMaybe; + owner_bridge_fee_wtdr_percentNOTIN?: InputMaybe>>; + owner_bridge_fee_wtdr_percentNOTLIKE?: InputMaybe; + owner_fee_denom?: InputMaybe; + owner_fee_denomEQ?: InputMaybe; + owner_fee_denomGT?: InputMaybe; + owner_fee_denomGTE?: InputMaybe; + owner_fee_denomIN?: InputMaybe>>; + owner_fee_denomLIKE?: InputMaybe; + owner_fee_denomLT?: InputMaybe; + owner_fee_denomLTE?: InputMaybe; + owner_fee_denomNEQ?: InputMaybe; + owner_fee_denomNOTIN?: InputMaybe>>; + owner_fee_denomNOTLIKE?: InputMaybe; + owner_fee_num?: InputMaybe; + owner_fee_numEQ?: InputMaybe; + owner_fee_numGT?: InputMaybe; + owner_fee_numGTE?: InputMaybe; + owner_fee_numIN?: InputMaybe>>; + owner_fee_numLIKE?: InputMaybe; + owner_fee_numLT?: InputMaybe; + owner_fee_numLTE?: InputMaybe; + owner_fee_numNEQ?: InputMaybe; + owner_fee_numNOTIN?: InputMaybe>>; + owner_fee_numNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BattleClaimDataOrder = { direction: OrderDirection; - field: S0_Eternum_BattleClaimDataOrderField; -}; - -export enum S0_Eternum_BattleClaimDataOrderField { - ClaimeeAddress = 'CLAIMEE_ADDRESS', - ClaimeeName = 'CLAIMEE_NAME', - Claimer = 'CLAIMER', - ClaimerArmyEntityId = 'CLAIMER_ARMY_ENTITY_ID', - ClaimerName = 'CLAIMER_NAME', - EventId = 'EVENT_ID', - Id = 'ID', - StructureEntityId = 'STRUCTURE_ENTITY_ID', - StructureType = 'STRUCTURE_TYPE', - Timestamp = 'TIMESTAMP', - X = 'X', - Y = 'Y' -} - -export type S0_Eternum_BattleClaimDataWhereInput = { - claimee_address?: InputMaybe; - claimee_addressEQ?: InputMaybe; - claimee_addressGT?: InputMaybe; - claimee_addressGTE?: InputMaybe; - claimee_addressIN?: InputMaybe>>; - claimee_addressLIKE?: InputMaybe; - claimee_addressLT?: InputMaybe; - claimee_addressLTE?: InputMaybe; - claimee_addressNEQ?: InputMaybe; - claimee_addressNOTIN?: InputMaybe>>; - claimee_addressNOTLIKE?: InputMaybe; - claimee_name?: InputMaybe; - claimee_nameEQ?: InputMaybe; - claimee_nameGT?: InputMaybe; - claimee_nameGTE?: InputMaybe; - claimee_nameIN?: InputMaybe>>; - claimee_nameLIKE?: InputMaybe; - claimee_nameLT?: InputMaybe; - claimee_nameLTE?: InputMaybe; - claimee_nameNEQ?: InputMaybe; - claimee_nameNOTIN?: InputMaybe>>; - claimee_nameNOTLIKE?: InputMaybe; - claimer?: InputMaybe; - claimerEQ?: InputMaybe; - claimerGT?: InputMaybe; - claimerGTE?: InputMaybe; - claimerIN?: InputMaybe>>; - claimerLIKE?: InputMaybe; - claimerLT?: InputMaybe; - claimerLTE?: InputMaybe; - claimerNEQ?: InputMaybe; - claimerNOTIN?: InputMaybe>>; - claimerNOTLIKE?: InputMaybe; - claimer_army_entity_id?: InputMaybe; - claimer_army_entity_idEQ?: InputMaybe; - claimer_army_entity_idGT?: InputMaybe; - claimer_army_entity_idGTE?: InputMaybe; - claimer_army_entity_idIN?: InputMaybe>>; - claimer_army_entity_idLIKE?: InputMaybe; - claimer_army_entity_idLT?: InputMaybe; - claimer_army_entity_idLTE?: InputMaybe; - claimer_army_entity_idNEQ?: InputMaybe; - claimer_army_entity_idNOTIN?: InputMaybe>>; - claimer_army_entity_idNOTLIKE?: InputMaybe; - claimer_name?: InputMaybe; - claimer_nameEQ?: InputMaybe; - claimer_nameGT?: InputMaybe; - claimer_nameGTE?: InputMaybe; - claimer_nameIN?: InputMaybe>>; - claimer_nameLIKE?: InputMaybe; - claimer_nameLT?: InputMaybe; - claimer_nameLTE?: InputMaybe; - claimer_nameNEQ?: InputMaybe; - claimer_nameNOTIN?: InputMaybe>>; - claimer_nameNOTLIKE?: InputMaybe; - event_id?: InputMaybe; - id?: InputMaybe; - idEQ?: InputMaybe; - idGT?: InputMaybe; - idGTE?: InputMaybe; - idIN?: InputMaybe>>; - idLIKE?: InputMaybe; - idLT?: InputMaybe; - idLTE?: InputMaybe; - idNEQ?: InputMaybe; - idNOTIN?: InputMaybe>>; - idNOTLIKE?: InputMaybe; - structure_entity_id?: InputMaybe; - structure_entity_idEQ?: InputMaybe; - structure_entity_idGT?: InputMaybe; - structure_entity_idGTE?: InputMaybe; - structure_entity_idIN?: InputMaybe>>; - structure_entity_idLIKE?: InputMaybe; - structure_entity_idLT?: InputMaybe; - structure_entity_idLTE?: InputMaybe; - structure_entity_idNEQ?: InputMaybe; - structure_entity_idNOTIN?: InputMaybe>>; - structure_entity_idNOTLIKE?: InputMaybe; - structure_type?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; - x?: InputMaybe; - xEQ?: InputMaybe; - xGT?: InputMaybe; - xGTE?: InputMaybe; - xIN?: InputMaybe>>; - xLIKE?: InputMaybe; - xLT?: InputMaybe; - xLTE?: InputMaybe; - xNEQ?: InputMaybe; - xNOTIN?: InputMaybe>>; - xNOTLIKE?: InputMaybe; - y?: InputMaybe; - yEQ?: InputMaybe; - yGT?: InputMaybe; - yGTE?: InputMaybe; - yIN?: InputMaybe>>; - yLIKE?: InputMaybe; - yLT?: InputMaybe; - yLTE?: InputMaybe; - yNEQ?: InputMaybe; - yNOTIN?: InputMaybe>>; - yNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BattleConfigOrder = { + field: s1_eternum_BattleClaimDataOrderField; +}; + +export enum s1_eternum_BattleClaimDataOrderField { + ClaimeeAddress = "CLAIMEE_ADDRESS", + ClaimeeName = "CLAIMEE_NAME", + Claimer = "CLAIMER", + ClaimerArmyEntityId = "CLAIMER_ARMY_ENTITY_ID", + ClaimerName = "CLAIMER_NAME", + EventId = "EVENT_ID", + Id = "ID", + StructureEntityId = "STRUCTURE_ENTITY_ID", + StructureType = "STRUCTURE_TYPE", + Timestamp = "TIMESTAMP", + X = "X", + Y = "Y", +} + +export type s1_eternum_BattleClaimDataWhereInput = { + claimee_address?: InputMaybe; + claimee_addressEQ?: InputMaybe; + claimee_addressGT?: InputMaybe; + claimee_addressGTE?: InputMaybe; + claimee_addressIN?: InputMaybe>>; + claimee_addressLIKE?: InputMaybe; + claimee_addressLT?: InputMaybe; + claimee_addressLTE?: InputMaybe; + claimee_addressNEQ?: InputMaybe; + claimee_addressNOTIN?: InputMaybe>>; + claimee_addressNOTLIKE?: InputMaybe; + claimee_name?: InputMaybe; + claimee_nameEQ?: InputMaybe; + claimee_nameGT?: InputMaybe; + claimee_nameGTE?: InputMaybe; + claimee_nameIN?: InputMaybe>>; + claimee_nameLIKE?: InputMaybe; + claimee_nameLT?: InputMaybe; + claimee_nameLTE?: InputMaybe; + claimee_nameNEQ?: InputMaybe; + claimee_nameNOTIN?: InputMaybe>>; + claimee_nameNOTLIKE?: InputMaybe; + claimer?: InputMaybe; + claimerEQ?: InputMaybe; + claimerGT?: InputMaybe; + claimerGTE?: InputMaybe; + claimerIN?: InputMaybe>>; + claimerLIKE?: InputMaybe; + claimerLT?: InputMaybe; + claimerLTE?: InputMaybe; + claimerNEQ?: InputMaybe; + claimerNOTIN?: InputMaybe>>; + claimerNOTLIKE?: InputMaybe; + claimer_army_entity_id?: InputMaybe; + claimer_army_entity_idEQ?: InputMaybe; + claimer_army_entity_idGT?: InputMaybe; + claimer_army_entity_idGTE?: InputMaybe; + claimer_army_entity_idIN?: InputMaybe>>; + claimer_army_entity_idLIKE?: InputMaybe; + claimer_army_entity_idLT?: InputMaybe; + claimer_army_entity_idLTE?: InputMaybe; + claimer_army_entity_idNEQ?: InputMaybe; + claimer_army_entity_idNOTIN?: InputMaybe>>; + claimer_army_entity_idNOTLIKE?: InputMaybe; + claimer_name?: InputMaybe; + claimer_nameEQ?: InputMaybe; + claimer_nameGT?: InputMaybe; + claimer_nameGTE?: InputMaybe; + claimer_nameIN?: InputMaybe>>; + claimer_nameLIKE?: InputMaybe; + claimer_nameLT?: InputMaybe; + claimer_nameLTE?: InputMaybe; + claimer_nameNEQ?: InputMaybe; + claimer_nameNOTIN?: InputMaybe>>; + claimer_nameNOTLIKE?: InputMaybe; + event_id?: InputMaybe; + id?: InputMaybe; + idEQ?: InputMaybe; + idGT?: InputMaybe; + idGTE?: InputMaybe; + idIN?: InputMaybe>>; + idLIKE?: InputMaybe; + idLT?: InputMaybe; + idLTE?: InputMaybe; + idNEQ?: InputMaybe; + idNOTIN?: InputMaybe>>; + idNOTLIKE?: InputMaybe; + structure_entity_id?: InputMaybe; + structure_entity_idEQ?: InputMaybe; + structure_entity_idGT?: InputMaybe; + structure_entity_idGTE?: InputMaybe; + structure_entity_idIN?: InputMaybe>>; + structure_entity_idLIKE?: InputMaybe; + structure_entity_idLT?: InputMaybe; + structure_entity_idLTE?: InputMaybe; + structure_entity_idNEQ?: InputMaybe; + structure_entity_idNOTIN?: InputMaybe>>; + structure_entity_idNOTLIKE?: InputMaybe; + structure_type?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; + x?: InputMaybe; + xEQ?: InputMaybe; + xGT?: InputMaybe; + xGTE?: InputMaybe; + xIN?: InputMaybe>>; + xLIKE?: InputMaybe; + xLT?: InputMaybe; + xLTE?: InputMaybe; + xNEQ?: InputMaybe; + xNOTIN?: InputMaybe>>; + xNOTLIKE?: InputMaybe; + y?: InputMaybe; + yEQ?: InputMaybe; + yGT?: InputMaybe; + yGTE?: InputMaybe; + yIN?: InputMaybe>>; + yLIKE?: InputMaybe; + yLT?: InputMaybe; + yLTE?: InputMaybe; + yNEQ?: InputMaybe; + yNOTIN?: InputMaybe>>; + yNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BattleConfigOrder = { direction: OrderDirection; - field: S0_Eternum_BattleConfigOrderField; -}; - -export enum S0_Eternum_BattleConfigOrderField { - BattleDelaySeconds = 'BATTLE_DELAY_SECONDS', - ConfigId = 'CONFIG_ID', - HyperstructureImmunityTicks = 'HYPERSTRUCTURE_IMMUNITY_TICKS', - RegularImmunityTicks = 'REGULAR_IMMUNITY_TICKS' -} - -export type S0_Eternum_BattleConfigWhereInput = { - battle_delay_seconds?: InputMaybe; - battle_delay_secondsEQ?: InputMaybe; - battle_delay_secondsGT?: InputMaybe; - battle_delay_secondsGTE?: InputMaybe; - battle_delay_secondsIN?: InputMaybe>>; - battle_delay_secondsLIKE?: InputMaybe; - battle_delay_secondsLT?: InputMaybe; - battle_delay_secondsLTE?: InputMaybe; - battle_delay_secondsNEQ?: InputMaybe; - battle_delay_secondsNOTIN?: InputMaybe>>; - battle_delay_secondsNOTLIKE?: InputMaybe; - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - hyperstructure_immunity_ticks?: InputMaybe; - hyperstructure_immunity_ticksEQ?: InputMaybe; - hyperstructure_immunity_ticksGT?: InputMaybe; - hyperstructure_immunity_ticksGTE?: InputMaybe; - hyperstructure_immunity_ticksIN?: InputMaybe>>; - hyperstructure_immunity_ticksLIKE?: InputMaybe; - hyperstructure_immunity_ticksLT?: InputMaybe; - hyperstructure_immunity_ticksLTE?: InputMaybe; - hyperstructure_immunity_ticksNEQ?: InputMaybe; - hyperstructure_immunity_ticksNOTIN?: InputMaybe>>; - hyperstructure_immunity_ticksNOTLIKE?: InputMaybe; - regular_immunity_ticks?: InputMaybe; - regular_immunity_ticksEQ?: InputMaybe; - regular_immunity_ticksGT?: InputMaybe; - regular_immunity_ticksGTE?: InputMaybe; - regular_immunity_ticksIN?: InputMaybe>>; - regular_immunity_ticksLIKE?: InputMaybe; - regular_immunity_ticksLT?: InputMaybe; - regular_immunity_ticksLTE?: InputMaybe; - regular_immunity_ticksNEQ?: InputMaybe; - regular_immunity_ticksNOTIN?: InputMaybe>>; - regular_immunity_ticksNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BattleJoinDataOrder = { + field: s1_eternum_BattleConfigOrderField; +}; + +export enum s1_eternum_BattleConfigOrderField { + BattleDelaySeconds = "BATTLE_DELAY_SECONDS", + ConfigId = "CONFIG_ID", + HyperstructureImmunityTicks = "HYPERSTRUCTURE_IMMUNITY_TICKS", + RegularImmunityTicks = "REGULAR_IMMUNITY_TICKS", +} + +export type s1_eternum_BattleConfigWhereInput = { + battle_delay_seconds?: InputMaybe; + battle_delay_secondsEQ?: InputMaybe; + battle_delay_secondsGT?: InputMaybe; + battle_delay_secondsGTE?: InputMaybe; + battle_delay_secondsIN?: InputMaybe>>; + battle_delay_secondsLIKE?: InputMaybe; + battle_delay_secondsLT?: InputMaybe; + battle_delay_secondsLTE?: InputMaybe; + battle_delay_secondsNEQ?: InputMaybe; + battle_delay_secondsNOTIN?: InputMaybe>>; + battle_delay_secondsNOTLIKE?: InputMaybe; + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + hyperstructure_immunity_ticks?: InputMaybe; + hyperstructure_immunity_ticksEQ?: InputMaybe; + hyperstructure_immunity_ticksGT?: InputMaybe; + hyperstructure_immunity_ticksGTE?: InputMaybe; + hyperstructure_immunity_ticksIN?: InputMaybe>>; + hyperstructure_immunity_ticksLIKE?: InputMaybe; + hyperstructure_immunity_ticksLT?: InputMaybe; + hyperstructure_immunity_ticksLTE?: InputMaybe; + hyperstructure_immunity_ticksNEQ?: InputMaybe; + hyperstructure_immunity_ticksNOTIN?: InputMaybe>>; + hyperstructure_immunity_ticksNOTLIKE?: InputMaybe; + regular_immunity_ticks?: InputMaybe; + regular_immunity_ticksEQ?: InputMaybe; + regular_immunity_ticksGT?: InputMaybe; + regular_immunity_ticksGTE?: InputMaybe; + regular_immunity_ticksIN?: InputMaybe>>; + regular_immunity_ticksLIKE?: InputMaybe; + regular_immunity_ticksLT?: InputMaybe; + regular_immunity_ticksLTE?: InputMaybe; + regular_immunity_ticksNEQ?: InputMaybe; + regular_immunity_ticksNOTIN?: InputMaybe>>; + regular_immunity_ticksNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BattleJoinDataOrder = { direction: OrderDirection; - field: S0_Eternum_BattleJoinDataOrderField; -}; - -export enum S0_Eternum_BattleJoinDataOrderField { - BattleEntityId = 'BATTLE_ENTITY_ID', - DurationLeft = 'DURATION_LEFT', - EventId = 'EVENT_ID', - Id = 'ID', - Joiner = 'JOINER', - JoinerArmyEntityId = 'JOINER_ARMY_ENTITY_ID', - JoinerName = 'JOINER_NAME', - JoinerSide = 'JOINER_SIDE', - Timestamp = 'TIMESTAMP', - X = 'X', - Y = 'Y' -} - -export type S0_Eternum_BattleJoinDataWhereInput = { - battle_entity_id?: InputMaybe; - battle_entity_idEQ?: InputMaybe; - battle_entity_idGT?: InputMaybe; - battle_entity_idGTE?: InputMaybe; - battle_entity_idIN?: InputMaybe>>; - battle_entity_idLIKE?: InputMaybe; - battle_entity_idLT?: InputMaybe; - battle_entity_idLTE?: InputMaybe; - battle_entity_idNEQ?: InputMaybe; - battle_entity_idNOTIN?: InputMaybe>>; - battle_entity_idNOTLIKE?: InputMaybe; - duration_left?: InputMaybe; - duration_leftEQ?: InputMaybe; - duration_leftGT?: InputMaybe; - duration_leftGTE?: InputMaybe; - duration_leftIN?: InputMaybe>>; - duration_leftLIKE?: InputMaybe; - duration_leftLT?: InputMaybe; - duration_leftLTE?: InputMaybe; - duration_leftNEQ?: InputMaybe; - duration_leftNOTIN?: InputMaybe>>; - duration_leftNOTLIKE?: InputMaybe; - event_id?: InputMaybe; - id?: InputMaybe; - idEQ?: InputMaybe; - idGT?: InputMaybe; - idGTE?: InputMaybe; - idIN?: InputMaybe>>; - idLIKE?: InputMaybe; - idLT?: InputMaybe; - idLTE?: InputMaybe; - idNEQ?: InputMaybe; - idNOTIN?: InputMaybe>>; - idNOTLIKE?: InputMaybe; - joiner?: InputMaybe; - joinerEQ?: InputMaybe; - joinerGT?: InputMaybe; - joinerGTE?: InputMaybe; - joinerIN?: InputMaybe>>; - joinerLIKE?: InputMaybe; - joinerLT?: InputMaybe; - joinerLTE?: InputMaybe; - joinerNEQ?: InputMaybe; - joinerNOTIN?: InputMaybe>>; - joinerNOTLIKE?: InputMaybe; - joiner_army_entity_id?: InputMaybe; - joiner_army_entity_idEQ?: InputMaybe; - joiner_army_entity_idGT?: InputMaybe; - joiner_army_entity_idGTE?: InputMaybe; - joiner_army_entity_idIN?: InputMaybe>>; - joiner_army_entity_idLIKE?: InputMaybe; - joiner_army_entity_idLT?: InputMaybe; - joiner_army_entity_idLTE?: InputMaybe; - joiner_army_entity_idNEQ?: InputMaybe; - joiner_army_entity_idNOTIN?: InputMaybe>>; - joiner_army_entity_idNOTLIKE?: InputMaybe; - joiner_name?: InputMaybe; - joiner_nameEQ?: InputMaybe; - joiner_nameGT?: InputMaybe; - joiner_nameGTE?: InputMaybe; - joiner_nameIN?: InputMaybe>>; - joiner_nameLIKE?: InputMaybe; - joiner_nameLT?: InputMaybe; - joiner_nameLTE?: InputMaybe; - joiner_nameNEQ?: InputMaybe; - joiner_nameNOTIN?: InputMaybe>>; - joiner_nameNOTLIKE?: InputMaybe; - joiner_side?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; - x?: InputMaybe; - xEQ?: InputMaybe; - xGT?: InputMaybe; - xGTE?: InputMaybe; - xIN?: InputMaybe>>; - xLIKE?: InputMaybe; - xLT?: InputMaybe; - xLTE?: InputMaybe; - xNEQ?: InputMaybe; - xNOTIN?: InputMaybe>>; - xNOTLIKE?: InputMaybe; - y?: InputMaybe; - yEQ?: InputMaybe; - yGT?: InputMaybe; - yGTE?: InputMaybe; - yIN?: InputMaybe>>; - yLIKE?: InputMaybe; - yLT?: InputMaybe; - yLTE?: InputMaybe; - yNEQ?: InputMaybe; - yNOTIN?: InputMaybe>>; - yNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BattleLeaveDataOrder = { + field: s1_eternum_BattleJoinDataOrderField; +}; + +export enum s1_eternum_BattleJoinDataOrderField { + BattleEntityId = "BATTLE_ENTITY_ID", + DurationLeft = "DURATION_LEFT", + EventId = "EVENT_ID", + Id = "ID", + Joiner = "JOINER", + JoinerArmyEntityId = "JOINER_ARMY_ENTITY_ID", + JoinerName = "JOINER_NAME", + JoinerSide = "JOINER_SIDE", + Timestamp = "TIMESTAMP", + X = "X", + Y = "Y", +} + +export type s1_eternum_BattleJoinDataWhereInput = { + battle_entity_id?: InputMaybe; + battle_entity_idEQ?: InputMaybe; + battle_entity_idGT?: InputMaybe; + battle_entity_idGTE?: InputMaybe; + battle_entity_idIN?: InputMaybe>>; + battle_entity_idLIKE?: InputMaybe; + battle_entity_idLT?: InputMaybe; + battle_entity_idLTE?: InputMaybe; + battle_entity_idNEQ?: InputMaybe; + battle_entity_idNOTIN?: InputMaybe>>; + battle_entity_idNOTLIKE?: InputMaybe; + duration_left?: InputMaybe; + duration_leftEQ?: InputMaybe; + duration_leftGT?: InputMaybe; + duration_leftGTE?: InputMaybe; + duration_leftIN?: InputMaybe>>; + duration_leftLIKE?: InputMaybe; + duration_leftLT?: InputMaybe; + duration_leftLTE?: InputMaybe; + duration_leftNEQ?: InputMaybe; + duration_leftNOTIN?: InputMaybe>>; + duration_leftNOTLIKE?: InputMaybe; + event_id?: InputMaybe; + id?: InputMaybe; + idEQ?: InputMaybe; + idGT?: InputMaybe; + idGTE?: InputMaybe; + idIN?: InputMaybe>>; + idLIKE?: InputMaybe; + idLT?: InputMaybe; + idLTE?: InputMaybe; + idNEQ?: InputMaybe; + idNOTIN?: InputMaybe>>; + idNOTLIKE?: InputMaybe; + joiner?: InputMaybe; + joinerEQ?: InputMaybe; + joinerGT?: InputMaybe; + joinerGTE?: InputMaybe; + joinerIN?: InputMaybe>>; + joinerLIKE?: InputMaybe; + joinerLT?: InputMaybe; + joinerLTE?: InputMaybe; + joinerNEQ?: InputMaybe; + joinerNOTIN?: InputMaybe>>; + joinerNOTLIKE?: InputMaybe; + joiner_army_entity_id?: InputMaybe; + joiner_army_entity_idEQ?: InputMaybe; + joiner_army_entity_idGT?: InputMaybe; + joiner_army_entity_idGTE?: InputMaybe; + joiner_army_entity_idIN?: InputMaybe>>; + joiner_army_entity_idLIKE?: InputMaybe; + joiner_army_entity_idLT?: InputMaybe; + joiner_army_entity_idLTE?: InputMaybe; + joiner_army_entity_idNEQ?: InputMaybe; + joiner_army_entity_idNOTIN?: InputMaybe>>; + joiner_army_entity_idNOTLIKE?: InputMaybe; + joiner_name?: InputMaybe; + joiner_nameEQ?: InputMaybe; + joiner_nameGT?: InputMaybe; + joiner_nameGTE?: InputMaybe; + joiner_nameIN?: InputMaybe>>; + joiner_nameLIKE?: InputMaybe; + joiner_nameLT?: InputMaybe; + joiner_nameLTE?: InputMaybe; + joiner_nameNEQ?: InputMaybe; + joiner_nameNOTIN?: InputMaybe>>; + joiner_nameNOTLIKE?: InputMaybe; + joiner_side?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; + x?: InputMaybe; + xEQ?: InputMaybe; + xGT?: InputMaybe; + xGTE?: InputMaybe; + xIN?: InputMaybe>>; + xLIKE?: InputMaybe; + xLT?: InputMaybe; + xLTE?: InputMaybe; + xNEQ?: InputMaybe; + xNOTIN?: InputMaybe>>; + xNOTLIKE?: InputMaybe; + y?: InputMaybe; + yEQ?: InputMaybe; + yGT?: InputMaybe; + yGTE?: InputMaybe; + yIN?: InputMaybe>>; + yLIKE?: InputMaybe; + yLT?: InputMaybe; + yLTE?: InputMaybe; + yNEQ?: InputMaybe; + yNOTIN?: InputMaybe>>; + yNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BattleLeaveDataOrder = { direction: OrderDirection; - field: S0_Eternum_BattleLeaveDataOrderField; -}; - -export enum S0_Eternum_BattleLeaveDataOrderField { - BattleEntityId = 'BATTLE_ENTITY_ID', - DurationLeft = 'DURATION_LEFT', - EventId = 'EVENT_ID', - Id = 'ID', - Leaver = 'LEAVER', - LeaverArmyEntityId = 'LEAVER_ARMY_ENTITY_ID', - LeaverName = 'LEAVER_NAME', - LeaverSide = 'LEAVER_SIDE', - Timestamp = 'TIMESTAMP', - X = 'X', - Y = 'Y' -} - -export type S0_Eternum_BattleLeaveDataWhereInput = { - battle_entity_id?: InputMaybe; - battle_entity_idEQ?: InputMaybe; - battle_entity_idGT?: InputMaybe; - battle_entity_idGTE?: InputMaybe; - battle_entity_idIN?: InputMaybe>>; - battle_entity_idLIKE?: InputMaybe; - battle_entity_idLT?: InputMaybe; - battle_entity_idLTE?: InputMaybe; - battle_entity_idNEQ?: InputMaybe; - battle_entity_idNOTIN?: InputMaybe>>; - battle_entity_idNOTLIKE?: InputMaybe; - duration_left?: InputMaybe; - duration_leftEQ?: InputMaybe; - duration_leftGT?: InputMaybe; - duration_leftGTE?: InputMaybe; - duration_leftIN?: InputMaybe>>; - duration_leftLIKE?: InputMaybe; - duration_leftLT?: InputMaybe; - duration_leftLTE?: InputMaybe; - duration_leftNEQ?: InputMaybe; - duration_leftNOTIN?: InputMaybe>>; - duration_leftNOTLIKE?: InputMaybe; - event_id?: InputMaybe; - id?: InputMaybe; - idEQ?: InputMaybe; - idGT?: InputMaybe; - idGTE?: InputMaybe; - idIN?: InputMaybe>>; - idLIKE?: InputMaybe; - idLT?: InputMaybe; - idLTE?: InputMaybe; - idNEQ?: InputMaybe; - idNOTIN?: InputMaybe>>; - idNOTLIKE?: InputMaybe; - leaver?: InputMaybe; - leaverEQ?: InputMaybe; - leaverGT?: InputMaybe; - leaverGTE?: InputMaybe; - leaverIN?: InputMaybe>>; - leaverLIKE?: InputMaybe; - leaverLT?: InputMaybe; - leaverLTE?: InputMaybe; - leaverNEQ?: InputMaybe; - leaverNOTIN?: InputMaybe>>; - leaverNOTLIKE?: InputMaybe; - leaver_army_entity_id?: InputMaybe; - leaver_army_entity_idEQ?: InputMaybe; - leaver_army_entity_idGT?: InputMaybe; - leaver_army_entity_idGTE?: InputMaybe; - leaver_army_entity_idIN?: InputMaybe>>; - leaver_army_entity_idLIKE?: InputMaybe; - leaver_army_entity_idLT?: InputMaybe; - leaver_army_entity_idLTE?: InputMaybe; - leaver_army_entity_idNEQ?: InputMaybe; - leaver_army_entity_idNOTIN?: InputMaybe>>; - leaver_army_entity_idNOTLIKE?: InputMaybe; - leaver_name?: InputMaybe; - leaver_nameEQ?: InputMaybe; - leaver_nameGT?: InputMaybe; - leaver_nameGTE?: InputMaybe; - leaver_nameIN?: InputMaybe>>; - leaver_nameLIKE?: InputMaybe; - leaver_nameLT?: InputMaybe; - leaver_nameLTE?: InputMaybe; - leaver_nameNEQ?: InputMaybe; - leaver_nameNOTIN?: InputMaybe>>; - leaver_nameNOTLIKE?: InputMaybe; - leaver_side?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; - x?: InputMaybe; - xEQ?: InputMaybe; - xGT?: InputMaybe; - xGTE?: InputMaybe; - xIN?: InputMaybe>>; - xLIKE?: InputMaybe; - xLT?: InputMaybe; - xLTE?: InputMaybe; - xNEQ?: InputMaybe; - xNOTIN?: InputMaybe>>; - xNOTLIKE?: InputMaybe; - y?: InputMaybe; - yEQ?: InputMaybe; - yGT?: InputMaybe; - yGTE?: InputMaybe; - yIN?: InputMaybe>>; - yLIKE?: InputMaybe; - yLT?: InputMaybe; - yLTE?: InputMaybe; - yNEQ?: InputMaybe; - yNOTIN?: InputMaybe>>; - yNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BattleOrder = { + field: s1_eternum_BattleLeaveDataOrderField; +}; + +export enum s1_eternum_BattleLeaveDataOrderField { + BattleEntityId = "BATTLE_ENTITY_ID", + DurationLeft = "DURATION_LEFT", + EventId = "EVENT_ID", + Id = "ID", + Leaver = "LEAVER", + LeaverArmyEntityId = "LEAVER_ARMY_ENTITY_ID", + LeaverName = "LEAVER_NAME", + LeaverSide = "LEAVER_SIDE", + Timestamp = "TIMESTAMP", + X = "X", + Y = "Y", +} + +export type s1_eternum_BattleLeaveDataWhereInput = { + battle_entity_id?: InputMaybe; + battle_entity_idEQ?: InputMaybe; + battle_entity_idGT?: InputMaybe; + battle_entity_idGTE?: InputMaybe; + battle_entity_idIN?: InputMaybe>>; + battle_entity_idLIKE?: InputMaybe; + battle_entity_idLT?: InputMaybe; + battle_entity_idLTE?: InputMaybe; + battle_entity_idNEQ?: InputMaybe; + battle_entity_idNOTIN?: InputMaybe>>; + battle_entity_idNOTLIKE?: InputMaybe; + duration_left?: InputMaybe; + duration_leftEQ?: InputMaybe; + duration_leftGT?: InputMaybe; + duration_leftGTE?: InputMaybe; + duration_leftIN?: InputMaybe>>; + duration_leftLIKE?: InputMaybe; + duration_leftLT?: InputMaybe; + duration_leftLTE?: InputMaybe; + duration_leftNEQ?: InputMaybe; + duration_leftNOTIN?: InputMaybe>>; + duration_leftNOTLIKE?: InputMaybe; + event_id?: InputMaybe; + id?: InputMaybe; + idEQ?: InputMaybe; + idGT?: InputMaybe; + idGTE?: InputMaybe; + idIN?: InputMaybe>>; + idLIKE?: InputMaybe; + idLT?: InputMaybe; + idLTE?: InputMaybe; + idNEQ?: InputMaybe; + idNOTIN?: InputMaybe>>; + idNOTLIKE?: InputMaybe; + leaver?: InputMaybe; + leaverEQ?: InputMaybe; + leaverGT?: InputMaybe; + leaverGTE?: InputMaybe; + leaverIN?: InputMaybe>>; + leaverLIKE?: InputMaybe; + leaverLT?: InputMaybe; + leaverLTE?: InputMaybe; + leaverNEQ?: InputMaybe; + leaverNOTIN?: InputMaybe>>; + leaverNOTLIKE?: InputMaybe; + leaver_army_entity_id?: InputMaybe; + leaver_army_entity_idEQ?: InputMaybe; + leaver_army_entity_idGT?: InputMaybe; + leaver_army_entity_idGTE?: InputMaybe; + leaver_army_entity_idIN?: InputMaybe>>; + leaver_army_entity_idLIKE?: InputMaybe; + leaver_army_entity_idLT?: InputMaybe; + leaver_army_entity_idLTE?: InputMaybe; + leaver_army_entity_idNEQ?: InputMaybe; + leaver_army_entity_idNOTIN?: InputMaybe>>; + leaver_army_entity_idNOTLIKE?: InputMaybe; + leaver_name?: InputMaybe; + leaver_nameEQ?: InputMaybe; + leaver_nameGT?: InputMaybe; + leaver_nameGTE?: InputMaybe; + leaver_nameIN?: InputMaybe>>; + leaver_nameLIKE?: InputMaybe; + leaver_nameLT?: InputMaybe; + leaver_nameLTE?: InputMaybe; + leaver_nameNEQ?: InputMaybe; + leaver_nameNOTIN?: InputMaybe>>; + leaver_nameNOTLIKE?: InputMaybe; + leaver_side?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; + x?: InputMaybe; + xEQ?: InputMaybe; + xGT?: InputMaybe; + xGTE?: InputMaybe; + xIN?: InputMaybe>>; + xLIKE?: InputMaybe; + xLT?: InputMaybe; + xLTE?: InputMaybe; + xNEQ?: InputMaybe; + xNOTIN?: InputMaybe>>; + xNOTLIKE?: InputMaybe; + y?: InputMaybe; + yEQ?: InputMaybe; + yGT?: InputMaybe; + yGTE?: InputMaybe; + yIN?: InputMaybe>>; + yLIKE?: InputMaybe; + yLT?: InputMaybe; + yLTE?: InputMaybe; + yNEQ?: InputMaybe; + yNOTIN?: InputMaybe>>; + yNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BattleOrder = { direction: OrderDirection; - field: S0_Eternum_BattleOrderField; -}; - -export enum S0_Eternum_BattleOrderField { - AttackersResourcesEscrowId = 'ATTACKERS_RESOURCES_ESCROW_ID', - AttackArmy = 'ATTACK_ARMY', - AttackArmyHealth = 'ATTACK_ARMY_HEALTH', - AttackArmyLifetime = 'ATTACK_ARMY_LIFETIME', - AttackDelta = 'ATTACK_DELTA', - DefenceArmy = 'DEFENCE_ARMY', - DefenceArmyHealth = 'DEFENCE_ARMY_HEALTH', - DefenceArmyLifetime = 'DEFENCE_ARMY_LIFETIME', - DefenceDelta = 'DEFENCE_DELTA', - DefendersResourcesEscrowId = 'DEFENDERS_RESOURCES_ESCROW_ID', - DurationLeft = 'DURATION_LEFT', - EntityId = 'ENTITY_ID', - LastUpdated = 'LAST_UPDATED', - StartAt = 'START_AT' -} - -export type S0_Eternum_BattlePillageDataOrder = { + field: s1_eternum_BattleOrderField; +}; + +export enum s1_eternum_BattleOrderField { + AttackersResourcesEscrowId = "ATTACKERS_RESOURCES_ESCROW_ID", + AttackArmy = "ATTACK_ARMY", + AttackArmyHealth = "ATTACK_ARMY_HEALTH", + AttackArmyLifetime = "ATTACK_ARMY_LIFETIME", + AttackDelta = "ATTACK_DELTA", + DefenceArmy = "DEFENCE_ARMY", + DefenceArmyHealth = "DEFENCE_ARMY_HEALTH", + DefenceArmyLifetime = "DEFENCE_ARMY_LIFETIME", + DefenceDelta = "DEFENCE_DELTA", + DefendersResourcesEscrowId = "DEFENDERS_RESOURCES_ESCROW_ID", + DurationLeft = "DURATION_LEFT", + EntityId = "ENTITY_ID", + LastUpdated = "LAST_UPDATED", + StartAt = "START_AT", +} + +export type s1_eternum_BattlePillageDataOrder = { direction: OrderDirection; - field: S0_Eternum_BattlePillageDataOrderField; -}; - -export enum S0_Eternum_BattlePillageDataOrderField { - AttackerLostTroops = 'ATTACKER_LOST_TROOPS', - DestroyedBuildingCategory = 'DESTROYED_BUILDING_CATEGORY', - EventId = 'EVENT_ID', - Id = 'ID', - PillagedResources = 'PILLAGED_RESOURCES', - PillagedStructureEntityId = 'PILLAGED_STRUCTURE_ENTITY_ID', - PillagedStructureOwner = 'PILLAGED_STRUCTURE_OWNER', - PillagedStructureOwnerName = 'PILLAGED_STRUCTURE_OWNER_NAME', - Pillager = 'PILLAGER', - PillagerArmyEntityId = 'PILLAGER_ARMY_ENTITY_ID', - PillagerName = 'PILLAGER_NAME', - PillagerRealmEntityId = 'PILLAGER_REALM_ENTITY_ID', - StructureLostTroops = 'STRUCTURE_LOST_TROOPS', - StructureType = 'STRUCTURE_TYPE', - Timestamp = 'TIMESTAMP', - Winner = 'WINNER', - X = 'X', - Y = 'Y' -} - -export type S0_Eternum_BattlePillageDataWhereInput = { - destroyed_building_category?: InputMaybe; - event_id?: InputMaybe; - id?: InputMaybe; - idEQ?: InputMaybe; - idGT?: InputMaybe; - idGTE?: InputMaybe; - idIN?: InputMaybe>>; - idLIKE?: InputMaybe; - idLT?: InputMaybe; - idLTE?: InputMaybe; - idNEQ?: InputMaybe; - idNOTIN?: InputMaybe>>; - idNOTLIKE?: InputMaybe; - pillaged_structure_entity_id?: InputMaybe; - pillaged_structure_entity_idEQ?: InputMaybe; - pillaged_structure_entity_idGT?: InputMaybe; - pillaged_structure_entity_idGTE?: InputMaybe; - pillaged_structure_entity_idIN?: InputMaybe>>; - pillaged_structure_entity_idLIKE?: InputMaybe; - pillaged_structure_entity_idLT?: InputMaybe; - pillaged_structure_entity_idLTE?: InputMaybe; - pillaged_structure_entity_idNEQ?: InputMaybe; - pillaged_structure_entity_idNOTIN?: InputMaybe>>; - pillaged_structure_entity_idNOTLIKE?: InputMaybe; - pillaged_structure_owner?: InputMaybe; - pillaged_structure_ownerEQ?: InputMaybe; - pillaged_structure_ownerGT?: InputMaybe; - pillaged_structure_ownerGTE?: InputMaybe; - pillaged_structure_ownerIN?: InputMaybe>>; - pillaged_structure_ownerLIKE?: InputMaybe; - pillaged_structure_ownerLT?: InputMaybe; - pillaged_structure_ownerLTE?: InputMaybe; - pillaged_structure_ownerNEQ?: InputMaybe; - pillaged_structure_ownerNOTIN?: InputMaybe>>; - pillaged_structure_ownerNOTLIKE?: InputMaybe; - pillaged_structure_owner_name?: InputMaybe; - pillaged_structure_owner_nameEQ?: InputMaybe; - pillaged_structure_owner_nameGT?: InputMaybe; - pillaged_structure_owner_nameGTE?: InputMaybe; - pillaged_structure_owner_nameIN?: InputMaybe>>; - pillaged_structure_owner_nameLIKE?: InputMaybe; - pillaged_structure_owner_nameLT?: InputMaybe; - pillaged_structure_owner_nameLTE?: InputMaybe; - pillaged_structure_owner_nameNEQ?: InputMaybe; - pillaged_structure_owner_nameNOTIN?: InputMaybe>>; - pillaged_structure_owner_nameNOTLIKE?: InputMaybe; - pillager?: InputMaybe; - pillagerEQ?: InputMaybe; - pillagerGT?: InputMaybe; - pillagerGTE?: InputMaybe; - pillagerIN?: InputMaybe>>; - pillagerLIKE?: InputMaybe; - pillagerLT?: InputMaybe; - pillagerLTE?: InputMaybe; - pillagerNEQ?: InputMaybe; - pillagerNOTIN?: InputMaybe>>; - pillagerNOTLIKE?: InputMaybe; - pillager_army_entity_id?: InputMaybe; - pillager_army_entity_idEQ?: InputMaybe; - pillager_army_entity_idGT?: InputMaybe; - pillager_army_entity_idGTE?: InputMaybe; - pillager_army_entity_idIN?: InputMaybe>>; - pillager_army_entity_idLIKE?: InputMaybe; - pillager_army_entity_idLT?: InputMaybe; - pillager_army_entity_idLTE?: InputMaybe; - pillager_army_entity_idNEQ?: InputMaybe; - pillager_army_entity_idNOTIN?: InputMaybe>>; - pillager_army_entity_idNOTLIKE?: InputMaybe; - pillager_name?: InputMaybe; - pillager_nameEQ?: InputMaybe; - pillager_nameGT?: InputMaybe; - pillager_nameGTE?: InputMaybe; - pillager_nameIN?: InputMaybe>>; - pillager_nameLIKE?: InputMaybe; - pillager_nameLT?: InputMaybe; - pillager_nameLTE?: InputMaybe; - pillager_nameNEQ?: InputMaybe; - pillager_nameNOTIN?: InputMaybe>>; - pillager_nameNOTLIKE?: InputMaybe; - pillager_realm_entity_id?: InputMaybe; - pillager_realm_entity_idEQ?: InputMaybe; - pillager_realm_entity_idGT?: InputMaybe; - pillager_realm_entity_idGTE?: InputMaybe; - pillager_realm_entity_idIN?: InputMaybe>>; - pillager_realm_entity_idLIKE?: InputMaybe; - pillager_realm_entity_idLT?: InputMaybe; - pillager_realm_entity_idLTE?: InputMaybe; - pillager_realm_entity_idNEQ?: InputMaybe; - pillager_realm_entity_idNOTIN?: InputMaybe>>; - pillager_realm_entity_idNOTLIKE?: InputMaybe; - structure_type?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; - winner?: InputMaybe; - x?: InputMaybe; - xEQ?: InputMaybe; - xGT?: InputMaybe; - xGTE?: InputMaybe; - xIN?: InputMaybe>>; - xLIKE?: InputMaybe; - xLT?: InputMaybe; - xLTE?: InputMaybe; - xNEQ?: InputMaybe; - xNOTIN?: InputMaybe>>; - xNOTLIKE?: InputMaybe; - y?: InputMaybe; - yEQ?: InputMaybe; - yGT?: InputMaybe; - yGTE?: InputMaybe; - yIN?: InputMaybe>>; - yLIKE?: InputMaybe; - yLT?: InputMaybe; - yLTE?: InputMaybe; - yNEQ?: InputMaybe; - yNOTIN?: InputMaybe>>; - yNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BattleStartDataOrder = { + field: s1_eternum_BattlePillageDataOrderField; +}; + +export enum s1_eternum_BattlePillageDataOrderField { + AttackerLostTroops = "ATTACKER_LOST_TROOPS", + DestroyedBuildingCategory = "DESTROYED_BUILDING_CATEGORY", + EventId = "EVENT_ID", + Id = "ID", + PillagedResources = "PILLAGED_RESOURCES", + PillagedStructureEntityId = "PILLAGED_STRUCTURE_ENTITY_ID", + PillagedStructureOwner = "PILLAGED_STRUCTURE_OWNER", + PillagedStructureOwnerName = "PILLAGED_STRUCTURE_OWNER_NAME", + Pillager = "PILLAGER", + PillagerArmyEntityId = "PILLAGER_ARMY_ENTITY_ID", + PillagerName = "PILLAGER_NAME", + PillagerRealmEntityId = "PILLAGER_REALM_ENTITY_ID", + StructureLostTroops = "STRUCTURE_LOST_TROOPS", + StructureType = "STRUCTURE_TYPE", + Timestamp = "TIMESTAMP", + Winner = "WINNER", + X = "X", + Y = "Y", +} + +export type s1_eternum_BattlePillageDataWhereInput = { + destroyed_building_category?: InputMaybe; + event_id?: InputMaybe; + id?: InputMaybe; + idEQ?: InputMaybe; + idGT?: InputMaybe; + idGTE?: InputMaybe; + idIN?: InputMaybe>>; + idLIKE?: InputMaybe; + idLT?: InputMaybe; + idLTE?: InputMaybe; + idNEQ?: InputMaybe; + idNOTIN?: InputMaybe>>; + idNOTLIKE?: InputMaybe; + pillaged_structure_entity_id?: InputMaybe; + pillaged_structure_entity_idEQ?: InputMaybe; + pillaged_structure_entity_idGT?: InputMaybe; + pillaged_structure_entity_idGTE?: InputMaybe; + pillaged_structure_entity_idIN?: InputMaybe>>; + pillaged_structure_entity_idLIKE?: InputMaybe; + pillaged_structure_entity_idLT?: InputMaybe; + pillaged_structure_entity_idLTE?: InputMaybe; + pillaged_structure_entity_idNEQ?: InputMaybe; + pillaged_structure_entity_idNOTIN?: InputMaybe>>; + pillaged_structure_entity_idNOTLIKE?: InputMaybe; + pillaged_structure_owner?: InputMaybe; + pillaged_structure_ownerEQ?: InputMaybe; + pillaged_structure_ownerGT?: InputMaybe; + pillaged_structure_ownerGTE?: InputMaybe; + pillaged_structure_ownerIN?: InputMaybe>>; + pillaged_structure_ownerLIKE?: InputMaybe; + pillaged_structure_ownerLT?: InputMaybe; + pillaged_structure_ownerLTE?: InputMaybe; + pillaged_structure_ownerNEQ?: InputMaybe; + pillaged_structure_ownerNOTIN?: InputMaybe>>; + pillaged_structure_ownerNOTLIKE?: InputMaybe; + pillaged_structure_owner_name?: InputMaybe; + pillaged_structure_owner_nameEQ?: InputMaybe; + pillaged_structure_owner_nameGT?: InputMaybe; + pillaged_structure_owner_nameGTE?: InputMaybe; + pillaged_structure_owner_nameIN?: InputMaybe>>; + pillaged_structure_owner_nameLIKE?: InputMaybe; + pillaged_structure_owner_nameLT?: InputMaybe; + pillaged_structure_owner_nameLTE?: InputMaybe; + pillaged_structure_owner_nameNEQ?: InputMaybe; + pillaged_structure_owner_nameNOTIN?: InputMaybe>>; + pillaged_structure_owner_nameNOTLIKE?: InputMaybe; + pillager?: InputMaybe; + pillagerEQ?: InputMaybe; + pillagerGT?: InputMaybe; + pillagerGTE?: InputMaybe; + pillagerIN?: InputMaybe>>; + pillagerLIKE?: InputMaybe; + pillagerLT?: InputMaybe; + pillagerLTE?: InputMaybe; + pillagerNEQ?: InputMaybe; + pillagerNOTIN?: InputMaybe>>; + pillagerNOTLIKE?: InputMaybe; + pillager_army_entity_id?: InputMaybe; + pillager_army_entity_idEQ?: InputMaybe; + pillager_army_entity_idGT?: InputMaybe; + pillager_army_entity_idGTE?: InputMaybe; + pillager_army_entity_idIN?: InputMaybe>>; + pillager_army_entity_idLIKE?: InputMaybe; + pillager_army_entity_idLT?: InputMaybe; + pillager_army_entity_idLTE?: InputMaybe; + pillager_army_entity_idNEQ?: InputMaybe; + pillager_army_entity_idNOTIN?: InputMaybe>>; + pillager_army_entity_idNOTLIKE?: InputMaybe; + pillager_name?: InputMaybe; + pillager_nameEQ?: InputMaybe; + pillager_nameGT?: InputMaybe; + pillager_nameGTE?: InputMaybe; + pillager_nameIN?: InputMaybe>>; + pillager_nameLIKE?: InputMaybe; + pillager_nameLT?: InputMaybe; + pillager_nameLTE?: InputMaybe; + pillager_nameNEQ?: InputMaybe; + pillager_nameNOTIN?: InputMaybe>>; + pillager_nameNOTLIKE?: InputMaybe; + pillager_realm_entity_id?: InputMaybe; + pillager_realm_entity_idEQ?: InputMaybe; + pillager_realm_entity_idGT?: InputMaybe; + pillager_realm_entity_idGTE?: InputMaybe; + pillager_realm_entity_idIN?: InputMaybe>>; + pillager_realm_entity_idLIKE?: InputMaybe; + pillager_realm_entity_idLT?: InputMaybe; + pillager_realm_entity_idLTE?: InputMaybe; + pillager_realm_entity_idNEQ?: InputMaybe; + pillager_realm_entity_idNOTIN?: InputMaybe>>; + pillager_realm_entity_idNOTLIKE?: InputMaybe; + structure_type?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; + winner?: InputMaybe; + x?: InputMaybe; + xEQ?: InputMaybe; + xGT?: InputMaybe; + xGTE?: InputMaybe; + xIN?: InputMaybe>>; + xLIKE?: InputMaybe; + xLT?: InputMaybe; + xLTE?: InputMaybe; + xNEQ?: InputMaybe; + xNOTIN?: InputMaybe>>; + xNOTLIKE?: InputMaybe; + y?: InputMaybe; + yEQ?: InputMaybe; + yGT?: InputMaybe; + yGTE?: InputMaybe; + yIN?: InputMaybe>>; + yLIKE?: InputMaybe; + yLT?: InputMaybe; + yLTE?: InputMaybe; + yNEQ?: InputMaybe; + yNOTIN?: InputMaybe>>; + yNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BattleStartDataOrder = { direction: OrderDirection; - field: S0_Eternum_BattleStartDataOrderField; -}; - -export enum S0_Eternum_BattleStartDataOrderField { - Attacker = 'ATTACKER', - AttackerArmyEntityId = 'ATTACKER_ARMY_ENTITY_ID', - AttackerName = 'ATTACKER_NAME', - BattleEntityId = 'BATTLE_ENTITY_ID', - Defender = 'DEFENDER', - DefenderArmyEntityId = 'DEFENDER_ARMY_ENTITY_ID', - DefenderName = 'DEFENDER_NAME', - DurationLeft = 'DURATION_LEFT', - EventId = 'EVENT_ID', - Id = 'ID', - StructureType = 'STRUCTURE_TYPE', - Timestamp = 'TIMESTAMP', - X = 'X', - Y = 'Y' -} - -export type S0_Eternum_BattleStartDataWhereInput = { - attacker?: InputMaybe; - attackerEQ?: InputMaybe; - attackerGT?: InputMaybe; - attackerGTE?: InputMaybe; - attackerIN?: InputMaybe>>; - attackerLIKE?: InputMaybe; - attackerLT?: InputMaybe; - attackerLTE?: InputMaybe; - attackerNEQ?: InputMaybe; - attackerNOTIN?: InputMaybe>>; - attackerNOTLIKE?: InputMaybe; - attacker_army_entity_id?: InputMaybe; - attacker_army_entity_idEQ?: InputMaybe; - attacker_army_entity_idGT?: InputMaybe; - attacker_army_entity_idGTE?: InputMaybe; - attacker_army_entity_idIN?: InputMaybe>>; - attacker_army_entity_idLIKE?: InputMaybe; - attacker_army_entity_idLT?: InputMaybe; - attacker_army_entity_idLTE?: InputMaybe; - attacker_army_entity_idNEQ?: InputMaybe; - attacker_army_entity_idNOTIN?: InputMaybe>>; - attacker_army_entity_idNOTLIKE?: InputMaybe; - attacker_name?: InputMaybe; - attacker_nameEQ?: InputMaybe; - attacker_nameGT?: InputMaybe; - attacker_nameGTE?: InputMaybe; - attacker_nameIN?: InputMaybe>>; - attacker_nameLIKE?: InputMaybe; - attacker_nameLT?: InputMaybe; - attacker_nameLTE?: InputMaybe; - attacker_nameNEQ?: InputMaybe; - attacker_nameNOTIN?: InputMaybe>>; - attacker_nameNOTLIKE?: InputMaybe; - battle_entity_id?: InputMaybe; - battle_entity_idEQ?: InputMaybe; - battle_entity_idGT?: InputMaybe; - battle_entity_idGTE?: InputMaybe; - battle_entity_idIN?: InputMaybe>>; - battle_entity_idLIKE?: InputMaybe; - battle_entity_idLT?: InputMaybe; - battle_entity_idLTE?: InputMaybe; - battle_entity_idNEQ?: InputMaybe; - battle_entity_idNOTIN?: InputMaybe>>; - battle_entity_idNOTLIKE?: InputMaybe; - defender?: InputMaybe; - defenderEQ?: InputMaybe; - defenderGT?: InputMaybe; - defenderGTE?: InputMaybe; - defenderIN?: InputMaybe>>; - defenderLIKE?: InputMaybe; - defenderLT?: InputMaybe; - defenderLTE?: InputMaybe; - defenderNEQ?: InputMaybe; - defenderNOTIN?: InputMaybe>>; - defenderNOTLIKE?: InputMaybe; - defender_army_entity_id?: InputMaybe; - defender_army_entity_idEQ?: InputMaybe; - defender_army_entity_idGT?: InputMaybe; - defender_army_entity_idGTE?: InputMaybe; - defender_army_entity_idIN?: InputMaybe>>; - defender_army_entity_idLIKE?: InputMaybe; - defender_army_entity_idLT?: InputMaybe; - defender_army_entity_idLTE?: InputMaybe; - defender_army_entity_idNEQ?: InputMaybe; - defender_army_entity_idNOTIN?: InputMaybe>>; - defender_army_entity_idNOTLIKE?: InputMaybe; - defender_name?: InputMaybe; - defender_nameEQ?: InputMaybe; - defender_nameGT?: InputMaybe; - defender_nameGTE?: InputMaybe; - defender_nameIN?: InputMaybe>>; - defender_nameLIKE?: InputMaybe; - defender_nameLT?: InputMaybe; - defender_nameLTE?: InputMaybe; - defender_nameNEQ?: InputMaybe; - defender_nameNOTIN?: InputMaybe>>; - defender_nameNOTLIKE?: InputMaybe; - duration_left?: InputMaybe; - duration_leftEQ?: InputMaybe; - duration_leftGT?: InputMaybe; - duration_leftGTE?: InputMaybe; - duration_leftIN?: InputMaybe>>; - duration_leftLIKE?: InputMaybe; - duration_leftLT?: InputMaybe; - duration_leftLTE?: InputMaybe; - duration_leftNEQ?: InputMaybe; - duration_leftNOTIN?: InputMaybe>>; - duration_leftNOTLIKE?: InputMaybe; - event_id?: InputMaybe; - id?: InputMaybe; - idEQ?: InputMaybe; - idGT?: InputMaybe; - idGTE?: InputMaybe; - idIN?: InputMaybe>>; - idLIKE?: InputMaybe; - idLT?: InputMaybe; - idLTE?: InputMaybe; - idNEQ?: InputMaybe; - idNOTIN?: InputMaybe>>; - idNOTLIKE?: InputMaybe; - structure_type?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; - x?: InputMaybe; - xEQ?: InputMaybe; - xGT?: InputMaybe; - xGTE?: InputMaybe; - xIN?: InputMaybe>>; - xLIKE?: InputMaybe; - xLT?: InputMaybe; - xLTE?: InputMaybe; - xNEQ?: InputMaybe; - xNOTIN?: InputMaybe>>; - xNOTLIKE?: InputMaybe; - y?: InputMaybe; - yEQ?: InputMaybe; - yGT?: InputMaybe; - yGTE?: InputMaybe; - yIN?: InputMaybe>>; - yLIKE?: InputMaybe; - yLT?: InputMaybe; - yLTE?: InputMaybe; - yNEQ?: InputMaybe; - yNOTIN?: InputMaybe>>; - yNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BattleWhereInput = { - attack_delta?: InputMaybe; - attack_deltaEQ?: InputMaybe; - attack_deltaGT?: InputMaybe; - attack_deltaGTE?: InputMaybe; - attack_deltaIN?: InputMaybe>>; - attack_deltaLIKE?: InputMaybe; - attack_deltaLT?: InputMaybe; - attack_deltaLTE?: InputMaybe; - attack_deltaNEQ?: InputMaybe; - attack_deltaNOTIN?: InputMaybe>>; - attack_deltaNOTLIKE?: InputMaybe; - attackers_resources_escrow_id?: InputMaybe; - attackers_resources_escrow_idEQ?: InputMaybe; - attackers_resources_escrow_idGT?: InputMaybe; - attackers_resources_escrow_idGTE?: InputMaybe; - attackers_resources_escrow_idIN?: InputMaybe>>; - attackers_resources_escrow_idLIKE?: InputMaybe; - attackers_resources_escrow_idLT?: InputMaybe; - attackers_resources_escrow_idLTE?: InputMaybe; - attackers_resources_escrow_idNEQ?: InputMaybe; - attackers_resources_escrow_idNOTIN?: InputMaybe>>; - attackers_resources_escrow_idNOTLIKE?: InputMaybe; - defence_delta?: InputMaybe; - defence_deltaEQ?: InputMaybe; - defence_deltaGT?: InputMaybe; - defence_deltaGTE?: InputMaybe; - defence_deltaIN?: InputMaybe>>; - defence_deltaLIKE?: InputMaybe; - defence_deltaLT?: InputMaybe; - defence_deltaLTE?: InputMaybe; - defence_deltaNEQ?: InputMaybe; - defence_deltaNOTIN?: InputMaybe>>; - defence_deltaNOTLIKE?: InputMaybe; - defenders_resources_escrow_id?: InputMaybe; - defenders_resources_escrow_idEQ?: InputMaybe; - defenders_resources_escrow_idGT?: InputMaybe; - defenders_resources_escrow_idGTE?: InputMaybe; - defenders_resources_escrow_idIN?: InputMaybe>>; - defenders_resources_escrow_idLIKE?: InputMaybe; - defenders_resources_escrow_idLT?: InputMaybe; - defenders_resources_escrow_idLTE?: InputMaybe; - defenders_resources_escrow_idNEQ?: InputMaybe; - defenders_resources_escrow_idNOTIN?: InputMaybe>>; - defenders_resources_escrow_idNOTLIKE?: InputMaybe; - duration_left?: InputMaybe; - duration_leftEQ?: InputMaybe; - duration_leftGT?: InputMaybe; - duration_leftGTE?: InputMaybe; - duration_leftIN?: InputMaybe>>; - duration_leftLIKE?: InputMaybe; - duration_leftLT?: InputMaybe; - duration_leftLTE?: InputMaybe; - duration_leftNEQ?: InputMaybe; - duration_leftNOTIN?: InputMaybe>>; - duration_leftNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - last_updated?: InputMaybe; - last_updatedEQ?: InputMaybe; - last_updatedGT?: InputMaybe; - last_updatedGTE?: InputMaybe; - last_updatedIN?: InputMaybe>>; - last_updatedLIKE?: InputMaybe; - last_updatedLT?: InputMaybe; - last_updatedLTE?: InputMaybe; - last_updatedNEQ?: InputMaybe; - last_updatedNOTIN?: InputMaybe>>; - last_updatedNOTLIKE?: InputMaybe; - start_at?: InputMaybe; - start_atEQ?: InputMaybe; - start_atGT?: InputMaybe; - start_atGTE?: InputMaybe; - start_atIN?: InputMaybe>>; - start_atLIKE?: InputMaybe; - start_atLT?: InputMaybe; - start_atLTE?: InputMaybe; - start_atNEQ?: InputMaybe; - start_atNOTIN?: InputMaybe>>; - start_atNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BuildingCategoryPopConfigOrder = { + field: s1_eternum_BattleStartDataOrderField; +}; + +export enum s1_eternum_BattleStartDataOrderField { + Attacker = "ATTACKER", + AttackerArmyEntityId = "ATTACKER_ARMY_ENTITY_ID", + AttackerName = "ATTACKER_NAME", + BattleEntityId = "BATTLE_ENTITY_ID", + Defender = "DEFENDER", + DefenderArmyEntityId = "DEFENDER_ARMY_ENTITY_ID", + DefenderName = "DEFENDER_NAME", + DurationLeft = "DURATION_LEFT", + EventId = "EVENT_ID", + Id = "ID", + StructureType = "STRUCTURE_TYPE", + Timestamp = "TIMESTAMP", + X = "X", + Y = "Y", +} + +export type s1_eternum_BattleStartDataWhereInput = { + attacker?: InputMaybe; + attackerEQ?: InputMaybe; + attackerGT?: InputMaybe; + attackerGTE?: InputMaybe; + attackerIN?: InputMaybe>>; + attackerLIKE?: InputMaybe; + attackerLT?: InputMaybe; + attackerLTE?: InputMaybe; + attackerNEQ?: InputMaybe; + attackerNOTIN?: InputMaybe>>; + attackerNOTLIKE?: InputMaybe; + attacker_army_entity_id?: InputMaybe; + attacker_army_entity_idEQ?: InputMaybe; + attacker_army_entity_idGT?: InputMaybe; + attacker_army_entity_idGTE?: InputMaybe; + attacker_army_entity_idIN?: InputMaybe>>; + attacker_army_entity_idLIKE?: InputMaybe; + attacker_army_entity_idLT?: InputMaybe; + attacker_army_entity_idLTE?: InputMaybe; + attacker_army_entity_idNEQ?: InputMaybe; + attacker_army_entity_idNOTIN?: InputMaybe>>; + attacker_army_entity_idNOTLIKE?: InputMaybe; + attacker_name?: InputMaybe; + attacker_nameEQ?: InputMaybe; + attacker_nameGT?: InputMaybe; + attacker_nameGTE?: InputMaybe; + attacker_nameIN?: InputMaybe>>; + attacker_nameLIKE?: InputMaybe; + attacker_nameLT?: InputMaybe; + attacker_nameLTE?: InputMaybe; + attacker_nameNEQ?: InputMaybe; + attacker_nameNOTIN?: InputMaybe>>; + attacker_nameNOTLIKE?: InputMaybe; + battle_entity_id?: InputMaybe; + battle_entity_idEQ?: InputMaybe; + battle_entity_idGT?: InputMaybe; + battle_entity_idGTE?: InputMaybe; + battle_entity_idIN?: InputMaybe>>; + battle_entity_idLIKE?: InputMaybe; + battle_entity_idLT?: InputMaybe; + battle_entity_idLTE?: InputMaybe; + battle_entity_idNEQ?: InputMaybe; + battle_entity_idNOTIN?: InputMaybe>>; + battle_entity_idNOTLIKE?: InputMaybe; + defender?: InputMaybe; + defenderEQ?: InputMaybe; + defenderGT?: InputMaybe; + defenderGTE?: InputMaybe; + defenderIN?: InputMaybe>>; + defenderLIKE?: InputMaybe; + defenderLT?: InputMaybe; + defenderLTE?: InputMaybe; + defenderNEQ?: InputMaybe; + defenderNOTIN?: InputMaybe>>; + defenderNOTLIKE?: InputMaybe; + defender_army_entity_id?: InputMaybe; + defender_army_entity_idEQ?: InputMaybe; + defender_army_entity_idGT?: InputMaybe; + defender_army_entity_idGTE?: InputMaybe; + defender_army_entity_idIN?: InputMaybe>>; + defender_army_entity_idLIKE?: InputMaybe; + defender_army_entity_idLT?: InputMaybe; + defender_army_entity_idLTE?: InputMaybe; + defender_army_entity_idNEQ?: InputMaybe; + defender_army_entity_idNOTIN?: InputMaybe>>; + defender_army_entity_idNOTLIKE?: InputMaybe; + defender_name?: InputMaybe; + defender_nameEQ?: InputMaybe; + defender_nameGT?: InputMaybe; + defender_nameGTE?: InputMaybe; + defender_nameIN?: InputMaybe>>; + defender_nameLIKE?: InputMaybe; + defender_nameLT?: InputMaybe; + defender_nameLTE?: InputMaybe; + defender_nameNEQ?: InputMaybe; + defender_nameNOTIN?: InputMaybe>>; + defender_nameNOTLIKE?: InputMaybe; + duration_left?: InputMaybe; + duration_leftEQ?: InputMaybe; + duration_leftGT?: InputMaybe; + duration_leftGTE?: InputMaybe; + duration_leftIN?: InputMaybe>>; + duration_leftLIKE?: InputMaybe; + duration_leftLT?: InputMaybe; + duration_leftLTE?: InputMaybe; + duration_leftNEQ?: InputMaybe; + duration_leftNOTIN?: InputMaybe>>; + duration_leftNOTLIKE?: InputMaybe; + event_id?: InputMaybe; + id?: InputMaybe; + idEQ?: InputMaybe; + idGT?: InputMaybe; + idGTE?: InputMaybe; + idIN?: InputMaybe>>; + idLIKE?: InputMaybe; + idLT?: InputMaybe; + idLTE?: InputMaybe; + idNEQ?: InputMaybe; + idNOTIN?: InputMaybe>>; + idNOTLIKE?: InputMaybe; + structure_type?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; + x?: InputMaybe; + xEQ?: InputMaybe; + xGT?: InputMaybe; + xGTE?: InputMaybe; + xIN?: InputMaybe>>; + xLIKE?: InputMaybe; + xLT?: InputMaybe; + xLTE?: InputMaybe; + xNEQ?: InputMaybe; + xNOTIN?: InputMaybe>>; + xNOTLIKE?: InputMaybe; + y?: InputMaybe; + yEQ?: InputMaybe; + yGT?: InputMaybe; + yGTE?: InputMaybe; + yIN?: InputMaybe>>; + yLIKE?: InputMaybe; + yLT?: InputMaybe; + yLTE?: InputMaybe; + yNEQ?: InputMaybe; + yNOTIN?: InputMaybe>>; + yNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BattleWhereInput = { + attack_delta?: InputMaybe; + attack_deltaEQ?: InputMaybe; + attack_deltaGT?: InputMaybe; + attack_deltaGTE?: InputMaybe; + attack_deltaIN?: InputMaybe>>; + attack_deltaLIKE?: InputMaybe; + attack_deltaLT?: InputMaybe; + attack_deltaLTE?: InputMaybe; + attack_deltaNEQ?: InputMaybe; + attack_deltaNOTIN?: InputMaybe>>; + attack_deltaNOTLIKE?: InputMaybe; + attackers_resources_escrow_id?: InputMaybe; + attackers_resources_escrow_idEQ?: InputMaybe; + attackers_resources_escrow_idGT?: InputMaybe; + attackers_resources_escrow_idGTE?: InputMaybe; + attackers_resources_escrow_idIN?: InputMaybe>>; + attackers_resources_escrow_idLIKE?: InputMaybe; + attackers_resources_escrow_idLT?: InputMaybe; + attackers_resources_escrow_idLTE?: InputMaybe; + attackers_resources_escrow_idNEQ?: InputMaybe; + attackers_resources_escrow_idNOTIN?: InputMaybe>>; + attackers_resources_escrow_idNOTLIKE?: InputMaybe; + defence_delta?: InputMaybe; + defence_deltaEQ?: InputMaybe; + defence_deltaGT?: InputMaybe; + defence_deltaGTE?: InputMaybe; + defence_deltaIN?: InputMaybe>>; + defence_deltaLIKE?: InputMaybe; + defence_deltaLT?: InputMaybe; + defence_deltaLTE?: InputMaybe; + defence_deltaNEQ?: InputMaybe; + defence_deltaNOTIN?: InputMaybe>>; + defence_deltaNOTLIKE?: InputMaybe; + defenders_resources_escrow_id?: InputMaybe; + defenders_resources_escrow_idEQ?: InputMaybe; + defenders_resources_escrow_idGT?: InputMaybe; + defenders_resources_escrow_idGTE?: InputMaybe; + defenders_resources_escrow_idIN?: InputMaybe>>; + defenders_resources_escrow_idLIKE?: InputMaybe; + defenders_resources_escrow_idLT?: InputMaybe; + defenders_resources_escrow_idLTE?: InputMaybe; + defenders_resources_escrow_idNEQ?: InputMaybe; + defenders_resources_escrow_idNOTIN?: InputMaybe>>; + defenders_resources_escrow_idNOTLIKE?: InputMaybe; + duration_left?: InputMaybe; + duration_leftEQ?: InputMaybe; + duration_leftGT?: InputMaybe; + duration_leftGTE?: InputMaybe; + duration_leftIN?: InputMaybe>>; + duration_leftLIKE?: InputMaybe; + duration_leftLT?: InputMaybe; + duration_leftLTE?: InputMaybe; + duration_leftNEQ?: InputMaybe; + duration_leftNOTIN?: InputMaybe>>; + duration_leftNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + last_updated?: InputMaybe; + last_updatedEQ?: InputMaybe; + last_updatedGT?: InputMaybe; + last_updatedGTE?: InputMaybe; + last_updatedIN?: InputMaybe>>; + last_updatedLIKE?: InputMaybe; + last_updatedLT?: InputMaybe; + last_updatedLTE?: InputMaybe; + last_updatedNEQ?: InputMaybe; + last_updatedNOTIN?: InputMaybe>>; + last_updatedNOTLIKE?: InputMaybe; + start_at?: InputMaybe; + start_atEQ?: InputMaybe; + start_atGT?: InputMaybe; + start_atGTE?: InputMaybe; + start_atIN?: InputMaybe>>; + start_atLIKE?: InputMaybe; + start_atLT?: InputMaybe; + start_atLTE?: InputMaybe; + start_atNEQ?: InputMaybe; + start_atNOTIN?: InputMaybe>>; + start_atNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BuildingCategoryPopConfigOrder = { direction: OrderDirection; - field: S0_Eternum_BuildingCategoryPopConfigOrderField; -}; - -export enum S0_Eternum_BuildingCategoryPopConfigOrderField { - BuildingCategory = 'BUILDING_CATEGORY', - Capacity = 'CAPACITY', - ConfigId = 'CONFIG_ID', - Population = 'POPULATION' -} - -export type S0_Eternum_BuildingCategoryPopConfigWhereInput = { - building_category?: InputMaybe; - capacity?: InputMaybe; - capacityEQ?: InputMaybe; - capacityGT?: InputMaybe; - capacityGTE?: InputMaybe; - capacityIN?: InputMaybe>>; - capacityLIKE?: InputMaybe; - capacityLT?: InputMaybe; - capacityLTE?: InputMaybe; - capacityNEQ?: InputMaybe; - capacityNOTIN?: InputMaybe>>; - capacityNOTLIKE?: InputMaybe; - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - population?: InputMaybe; - populationEQ?: InputMaybe; - populationGT?: InputMaybe; - populationGTE?: InputMaybe; - populationIN?: InputMaybe>>; - populationLIKE?: InputMaybe; - populationLT?: InputMaybe; - populationLTE?: InputMaybe; - populationNEQ?: InputMaybe; - populationNOTIN?: InputMaybe>>; - populationNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BuildingConfigOrder = { + field: s1_eternum_BuildingCategoryPopConfigOrderField; +}; + +export enum s1_eternum_BuildingCategoryPopConfigOrderField { + BuildingCategory = "BUILDING_CATEGORY", + Capacity = "CAPACITY", + ConfigId = "CONFIG_ID", + Population = "POPULATION", +} + +export type s1_eternum_BuildingCategoryPopConfigWhereInput = { + building_category?: InputMaybe; + capacity?: InputMaybe; + capacityEQ?: InputMaybe; + capacityGT?: InputMaybe; + capacityGTE?: InputMaybe; + capacityIN?: InputMaybe>>; + capacityLIKE?: InputMaybe; + capacityLT?: InputMaybe; + capacityLTE?: InputMaybe; + capacityNEQ?: InputMaybe; + capacityNOTIN?: InputMaybe>>; + capacityNOTLIKE?: InputMaybe; + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + population?: InputMaybe; + populationEQ?: InputMaybe; + populationGT?: InputMaybe; + populationGTE?: InputMaybe; + populationIN?: InputMaybe>>; + populationLIKE?: InputMaybe; + populationLT?: InputMaybe; + populationLTE?: InputMaybe; + populationNEQ?: InputMaybe; + populationNOTIN?: InputMaybe>>; + populationNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BuildingConfigOrder = { direction: OrderDirection; - field: S0_Eternum_BuildingConfigOrderField; -}; - -export enum S0_Eternum_BuildingConfigOrderField { - Category = 'CATEGORY', - ConfigId = 'CONFIG_ID', - ResourceCostCount = 'RESOURCE_COST_COUNT', - ResourceCostId = 'RESOURCE_COST_ID', - ResourceType = 'RESOURCE_TYPE' -} - -export type S0_Eternum_BuildingConfigWhereInput = { - category?: InputMaybe; - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - resource_cost_count?: InputMaybe; - resource_cost_countEQ?: InputMaybe; - resource_cost_countGT?: InputMaybe; - resource_cost_countGTE?: InputMaybe; - resource_cost_countIN?: InputMaybe>>; - resource_cost_countLIKE?: InputMaybe; - resource_cost_countLT?: InputMaybe; - resource_cost_countLTE?: InputMaybe; - resource_cost_countNEQ?: InputMaybe; - resource_cost_countNOTIN?: InputMaybe>>; - resource_cost_countNOTLIKE?: InputMaybe; - resource_cost_id?: InputMaybe; - resource_cost_idEQ?: InputMaybe; - resource_cost_idGT?: InputMaybe; - resource_cost_idGTE?: InputMaybe; - resource_cost_idIN?: InputMaybe>>; - resource_cost_idLIKE?: InputMaybe; - resource_cost_idLT?: InputMaybe; - resource_cost_idLTE?: InputMaybe; - resource_cost_idNEQ?: InputMaybe; - resource_cost_idNOTIN?: InputMaybe>>; - resource_cost_idNOTLIKE?: InputMaybe; - resource_type?: InputMaybe; - resource_typeEQ?: InputMaybe; - resource_typeGT?: InputMaybe; - resource_typeGTE?: InputMaybe; - resource_typeIN?: InputMaybe>>; - resource_typeLIKE?: InputMaybe; - resource_typeLT?: InputMaybe; - resource_typeLTE?: InputMaybe; - resource_typeNEQ?: InputMaybe; - resource_typeNOTIN?: InputMaybe>>; - resource_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BuildingGeneralConfigOrder = { + field: s1_eternum_BuildingConfigOrderField; +}; + +export enum s1_eternum_BuildingConfigOrderField { + Category = "CATEGORY", + ConfigId = "CONFIG_ID", + ResourceCostCount = "RESOURCE_COST_COUNT", + ResourceCostId = "RESOURCE_COST_ID", + ResourceType = "RESOURCE_TYPE", +} + +export type s1_eternum_BuildingConfigWhereInput = { + category?: InputMaybe; + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + resource_cost_count?: InputMaybe; + resource_cost_countEQ?: InputMaybe; + resource_cost_countGT?: InputMaybe; + resource_cost_countGTE?: InputMaybe; + resource_cost_countIN?: InputMaybe>>; + resource_cost_countLIKE?: InputMaybe; + resource_cost_countLT?: InputMaybe; + resource_cost_countLTE?: InputMaybe; + resource_cost_countNEQ?: InputMaybe; + resource_cost_countNOTIN?: InputMaybe>>; + resource_cost_countNOTLIKE?: InputMaybe; + resource_cost_id?: InputMaybe; + resource_cost_idEQ?: InputMaybe; + resource_cost_idGT?: InputMaybe; + resource_cost_idGTE?: InputMaybe; + resource_cost_idIN?: InputMaybe>>; + resource_cost_idLIKE?: InputMaybe; + resource_cost_idLT?: InputMaybe; + resource_cost_idLTE?: InputMaybe; + resource_cost_idNEQ?: InputMaybe; + resource_cost_idNOTIN?: InputMaybe>>; + resource_cost_idNOTLIKE?: InputMaybe; + resource_type?: InputMaybe; + resource_typeEQ?: InputMaybe; + resource_typeGT?: InputMaybe; + resource_typeGTE?: InputMaybe; + resource_typeIN?: InputMaybe>>; + resource_typeLIKE?: InputMaybe; + resource_typeLT?: InputMaybe; + resource_typeLTE?: InputMaybe; + resource_typeNEQ?: InputMaybe; + resource_typeNOTIN?: InputMaybe>>; + resource_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BuildingGeneralConfigOrder = { direction: OrderDirection; - field: S0_Eternum_BuildingGeneralConfigOrderField; -}; - -export enum S0_Eternum_BuildingGeneralConfigOrderField { - BaseCostPercentIncrease = 'BASE_COST_PERCENT_INCREASE', - ConfigId = 'CONFIG_ID' -} - -export type S0_Eternum_BuildingGeneralConfigWhereInput = { - base_cost_percent_increase?: InputMaybe; - base_cost_percent_increaseEQ?: InputMaybe; - base_cost_percent_increaseGT?: InputMaybe; - base_cost_percent_increaseGTE?: InputMaybe; - base_cost_percent_increaseIN?: InputMaybe>>; - base_cost_percent_increaseLIKE?: InputMaybe; - base_cost_percent_increaseLT?: InputMaybe; - base_cost_percent_increaseLTE?: InputMaybe; - base_cost_percent_increaseNEQ?: InputMaybe; - base_cost_percent_increaseNOTIN?: InputMaybe>>; - base_cost_percent_increaseNOTLIKE?: InputMaybe; - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BuildingOrder = { + field: s1_eternum_BuildingGeneralConfigOrderField; +}; + +export enum s1_eternum_BuildingGeneralConfigOrderField { + BaseCostPercentIncrease = "BASE_COST_PERCENT_INCREASE", + ConfigId = "CONFIG_ID", +} + +export type s1_eternum_BuildingGeneralConfigWhereInput = { + base_cost_percent_increase?: InputMaybe; + base_cost_percent_increaseEQ?: InputMaybe; + base_cost_percent_increaseGT?: InputMaybe; + base_cost_percent_increaseGTE?: InputMaybe; + base_cost_percent_increaseIN?: InputMaybe>>; + base_cost_percent_increaseLIKE?: InputMaybe; + base_cost_percent_increaseLT?: InputMaybe; + base_cost_percent_increaseLTE?: InputMaybe; + base_cost_percent_increaseNEQ?: InputMaybe; + base_cost_percent_increaseNOTIN?: InputMaybe>>; + base_cost_percent_increaseNOTLIKE?: InputMaybe; + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BuildingOrder = { direction: OrderDirection; - field: S0_Eternum_BuildingOrderField; + field: s1_eternum_BuildingOrderField; }; -export enum S0_Eternum_BuildingOrderField { - BonusPercent = 'BONUS_PERCENT', - Category = 'CATEGORY', - EntityId = 'ENTITY_ID', - InnerCol = 'INNER_COL', - InnerRow = 'INNER_ROW', - OuterCol = 'OUTER_COL', - OuterEntityId = 'OUTER_ENTITY_ID', - OuterRow = 'OUTER_ROW', - Paused = 'PAUSED', - ProducedResourceType = 'PRODUCED_RESOURCE_TYPE' +export enum s1_eternum_BuildingOrderField { + BonusPercent = "BONUS_PERCENT", + Category = "CATEGORY", + EntityId = "ENTITY_ID", + InnerCol = "INNER_COL", + InnerRow = "INNER_ROW", + OuterCol = "OUTER_COL", + OuterEntityId = "OUTER_ENTITY_ID", + OuterRow = "OUTER_ROW", + Paused = "PAUSED", + ProducedResourceType = "PRODUCED_RESOURCE_TYPE", } -export type S0_Eternum_BuildingQuantityv2Order = { +export type s1_eternum_BuildingQuantityv2Order = { direction: OrderDirection; - field: S0_Eternum_BuildingQuantityv2OrderField; -}; - -export enum S0_Eternum_BuildingQuantityv2OrderField { - Category = 'CATEGORY', - EntityId = 'ENTITY_ID', - Value = 'VALUE' -} - -export type S0_Eternum_BuildingQuantityv2WhereInput = { - category?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - value?: InputMaybe; - valueEQ?: InputMaybe; - valueGT?: InputMaybe; - valueGTE?: InputMaybe; - valueIN?: InputMaybe>>; - valueLIKE?: InputMaybe; - valueLT?: InputMaybe; - valueLTE?: InputMaybe; - valueNEQ?: InputMaybe; - valueNOTIN?: InputMaybe>>; - valueNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BuildingWhereInput = { - bonus_percent?: InputMaybe; - bonus_percentEQ?: InputMaybe; - bonus_percentGT?: InputMaybe; - bonus_percentGTE?: InputMaybe; - bonus_percentIN?: InputMaybe>>; - bonus_percentLIKE?: InputMaybe; - bonus_percentLT?: InputMaybe; - bonus_percentLTE?: InputMaybe; - bonus_percentNEQ?: InputMaybe; - bonus_percentNOTIN?: InputMaybe>>; - bonus_percentNOTLIKE?: InputMaybe; - category?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - inner_col?: InputMaybe; - inner_colEQ?: InputMaybe; - inner_colGT?: InputMaybe; - inner_colGTE?: InputMaybe; - inner_colIN?: InputMaybe>>; - inner_colLIKE?: InputMaybe; - inner_colLT?: InputMaybe; - inner_colLTE?: InputMaybe; - inner_colNEQ?: InputMaybe; - inner_colNOTIN?: InputMaybe>>; - inner_colNOTLIKE?: InputMaybe; - inner_row?: InputMaybe; - inner_rowEQ?: InputMaybe; - inner_rowGT?: InputMaybe; - inner_rowGTE?: InputMaybe; - inner_rowIN?: InputMaybe>>; - inner_rowLIKE?: InputMaybe; - inner_rowLT?: InputMaybe; - inner_rowLTE?: InputMaybe; - inner_rowNEQ?: InputMaybe; - inner_rowNOTIN?: InputMaybe>>; - inner_rowNOTLIKE?: InputMaybe; - outer_col?: InputMaybe; - outer_colEQ?: InputMaybe; - outer_colGT?: InputMaybe; - outer_colGTE?: InputMaybe; - outer_colIN?: InputMaybe>>; - outer_colLIKE?: InputMaybe; - outer_colLT?: InputMaybe; - outer_colLTE?: InputMaybe; - outer_colNEQ?: InputMaybe; - outer_colNOTIN?: InputMaybe>>; - outer_colNOTLIKE?: InputMaybe; - outer_entity_id?: InputMaybe; - outer_entity_idEQ?: InputMaybe; - outer_entity_idGT?: InputMaybe; - outer_entity_idGTE?: InputMaybe; - outer_entity_idIN?: InputMaybe>>; - outer_entity_idLIKE?: InputMaybe; - outer_entity_idLT?: InputMaybe; - outer_entity_idLTE?: InputMaybe; - outer_entity_idNEQ?: InputMaybe; - outer_entity_idNOTIN?: InputMaybe>>; - outer_entity_idNOTLIKE?: InputMaybe; - outer_row?: InputMaybe; - outer_rowEQ?: InputMaybe; - outer_rowGT?: InputMaybe; - outer_rowGTE?: InputMaybe; - outer_rowIN?: InputMaybe>>; - outer_rowLIKE?: InputMaybe; - outer_rowLT?: InputMaybe; - outer_rowLTE?: InputMaybe; - outer_rowNEQ?: InputMaybe; - outer_rowNOTIN?: InputMaybe>>; - outer_rowNOTLIKE?: InputMaybe; - paused?: InputMaybe; - produced_resource_type?: InputMaybe; - produced_resource_typeEQ?: InputMaybe; - produced_resource_typeGT?: InputMaybe; - produced_resource_typeGTE?: InputMaybe; - produced_resource_typeIN?: InputMaybe>>; - produced_resource_typeLIKE?: InputMaybe; - produced_resource_typeLT?: InputMaybe; - produced_resource_typeLTE?: InputMaybe; - produced_resource_typeNEQ?: InputMaybe; - produced_resource_typeNOTIN?: InputMaybe>>; - produced_resource_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_BurnDonkeyOrder = { + field: s1_eternum_BuildingQuantityv2OrderField; +}; + +export enum s1_eternum_BuildingQuantityv2OrderField { + Category = "CATEGORY", + EntityId = "ENTITY_ID", + Value = "VALUE", +} + +export type s1_eternum_BuildingQuantityv2WhereInput = { + category?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + value?: InputMaybe; + valueEQ?: InputMaybe; + valueGT?: InputMaybe; + valueGTE?: InputMaybe; + valueIN?: InputMaybe>>; + valueLIKE?: InputMaybe; + valueLT?: InputMaybe; + valueLTE?: InputMaybe; + valueNEQ?: InputMaybe; + valueNOTIN?: InputMaybe>>; + valueNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BuildingWhereInput = { + bonus_percent?: InputMaybe; + bonus_percentEQ?: InputMaybe; + bonus_percentGT?: InputMaybe; + bonus_percentGTE?: InputMaybe; + bonus_percentIN?: InputMaybe>>; + bonus_percentLIKE?: InputMaybe; + bonus_percentLT?: InputMaybe; + bonus_percentLTE?: InputMaybe; + bonus_percentNEQ?: InputMaybe; + bonus_percentNOTIN?: InputMaybe>>; + bonus_percentNOTLIKE?: InputMaybe; + category?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + inner_col?: InputMaybe; + inner_colEQ?: InputMaybe; + inner_colGT?: InputMaybe; + inner_colGTE?: InputMaybe; + inner_colIN?: InputMaybe>>; + inner_colLIKE?: InputMaybe; + inner_colLT?: InputMaybe; + inner_colLTE?: InputMaybe; + inner_colNEQ?: InputMaybe; + inner_colNOTIN?: InputMaybe>>; + inner_colNOTLIKE?: InputMaybe; + inner_row?: InputMaybe; + inner_rowEQ?: InputMaybe; + inner_rowGT?: InputMaybe; + inner_rowGTE?: InputMaybe; + inner_rowIN?: InputMaybe>>; + inner_rowLIKE?: InputMaybe; + inner_rowLT?: InputMaybe; + inner_rowLTE?: InputMaybe; + inner_rowNEQ?: InputMaybe; + inner_rowNOTIN?: InputMaybe>>; + inner_rowNOTLIKE?: InputMaybe; + outer_col?: InputMaybe; + outer_colEQ?: InputMaybe; + outer_colGT?: InputMaybe; + outer_colGTE?: InputMaybe; + outer_colIN?: InputMaybe>>; + outer_colLIKE?: InputMaybe; + outer_colLT?: InputMaybe; + outer_colLTE?: InputMaybe; + outer_colNEQ?: InputMaybe; + outer_colNOTIN?: InputMaybe>>; + outer_colNOTLIKE?: InputMaybe; + outer_entity_id?: InputMaybe; + outer_entity_idEQ?: InputMaybe; + outer_entity_idGT?: InputMaybe; + outer_entity_idGTE?: InputMaybe; + outer_entity_idIN?: InputMaybe>>; + outer_entity_idLIKE?: InputMaybe; + outer_entity_idLT?: InputMaybe; + outer_entity_idLTE?: InputMaybe; + outer_entity_idNEQ?: InputMaybe; + outer_entity_idNOTIN?: InputMaybe>>; + outer_entity_idNOTLIKE?: InputMaybe; + outer_row?: InputMaybe; + outer_rowEQ?: InputMaybe; + outer_rowGT?: InputMaybe; + outer_rowGTE?: InputMaybe; + outer_rowIN?: InputMaybe>>; + outer_rowLIKE?: InputMaybe; + outer_rowLT?: InputMaybe; + outer_rowLTE?: InputMaybe; + outer_rowNEQ?: InputMaybe; + outer_rowNOTIN?: InputMaybe>>; + outer_rowNOTLIKE?: InputMaybe; + paused?: InputMaybe; + produced_resource_type?: InputMaybe; + produced_resource_typeEQ?: InputMaybe; + produced_resource_typeGT?: InputMaybe; + produced_resource_typeGTE?: InputMaybe; + produced_resource_typeIN?: InputMaybe>>; + produced_resource_typeLIKE?: InputMaybe; + produced_resource_typeLT?: InputMaybe; + produced_resource_typeLTE?: InputMaybe; + produced_resource_typeNEQ?: InputMaybe; + produced_resource_typeNOTIN?: InputMaybe>>; + produced_resource_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_BurnDonkeyOrder = { direction: OrderDirection; - field: S0_Eternum_BurnDonkeyOrderField; -}; - -export enum S0_Eternum_BurnDonkeyOrderField { - Amount = 'AMOUNT', - EntityId = 'ENTITY_ID', - PlayerAddress = 'PLAYER_ADDRESS', - Timestamp = 'TIMESTAMP' -} - -export type S0_Eternum_BurnDonkeyWhereInput = { - amount?: InputMaybe; - amountEQ?: InputMaybe; - amountGT?: InputMaybe; - amountGTE?: InputMaybe; - amountIN?: InputMaybe>>; - amountLIKE?: InputMaybe; - amountLT?: InputMaybe; - amountLTE?: InputMaybe; - amountNEQ?: InputMaybe; - amountNOTIN?: InputMaybe>>; - amountNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - player_address?: InputMaybe; - player_addressEQ?: InputMaybe; - player_addressGT?: InputMaybe; - player_addressGTE?: InputMaybe; - player_addressIN?: InputMaybe>>; - player_addressLIKE?: InputMaybe; - player_addressLT?: InputMaybe; - player_addressLTE?: InputMaybe; - player_addressNEQ?: InputMaybe; - player_addressNOTIN?: InputMaybe>>; - player_addressNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_CancelOrderOrder = { + field: s1_eternum_BurnDonkeyOrderField; +}; + +export enum s1_eternum_BurnDonkeyOrderField { + Amount = "AMOUNT", + EntityId = "ENTITY_ID", + PlayerAddress = "PLAYER_ADDRESS", + Timestamp = "TIMESTAMP", +} + +export type s1_eternum_BurnDonkeyWhereInput = { + amount?: InputMaybe; + amountEQ?: InputMaybe; + amountGT?: InputMaybe; + amountGTE?: InputMaybe; + amountIN?: InputMaybe>>; + amountLIKE?: InputMaybe; + amountLT?: InputMaybe; + amountLTE?: InputMaybe; + amountNEQ?: InputMaybe; + amountNOTIN?: InputMaybe>>; + amountNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + player_address?: InputMaybe; + player_addressEQ?: InputMaybe; + player_addressGT?: InputMaybe; + player_addressGTE?: InputMaybe; + player_addressIN?: InputMaybe>>; + player_addressLIKE?: InputMaybe; + player_addressLT?: InputMaybe; + player_addressLTE?: InputMaybe; + player_addressNEQ?: InputMaybe; + player_addressNOTIN?: InputMaybe>>; + player_addressNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_CancelOrderOrder = { direction: OrderDirection; - field: S0_Eternum_CancelOrderOrderField; -}; - -export enum S0_Eternum_CancelOrderOrderField { - MakerId = 'MAKER_ID', - TakerId = 'TAKER_ID', - Timestamp = 'TIMESTAMP', - TradeId = 'TRADE_ID' -} - -export type S0_Eternum_CancelOrderWhereInput = { - maker_id?: InputMaybe; - maker_idEQ?: InputMaybe; - maker_idGT?: InputMaybe; - maker_idGTE?: InputMaybe; - maker_idIN?: InputMaybe>>; - maker_idLIKE?: InputMaybe; - maker_idLT?: InputMaybe; - maker_idLTE?: InputMaybe; - maker_idNEQ?: InputMaybe; - maker_idNOTIN?: InputMaybe>>; - maker_idNOTLIKE?: InputMaybe; - taker_id?: InputMaybe; - taker_idEQ?: InputMaybe; - taker_idGT?: InputMaybe; - taker_idGTE?: InputMaybe; - taker_idIN?: InputMaybe>>; - taker_idLIKE?: InputMaybe; - taker_idLT?: InputMaybe; - taker_idLTE?: InputMaybe; - taker_idNEQ?: InputMaybe; - taker_idNOTIN?: InputMaybe>>; - taker_idNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; - trade_id?: InputMaybe; - trade_idEQ?: InputMaybe; - trade_idGT?: InputMaybe; - trade_idGTE?: InputMaybe; - trade_idIN?: InputMaybe>>; - trade_idLIKE?: InputMaybe; - trade_idLT?: InputMaybe; - trade_idLTE?: InputMaybe; - trade_idNEQ?: InputMaybe; - trade_idNOTIN?: InputMaybe>>; - trade_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_CapacityCategoryOrder = { + field: s1_eternum_CancelOrderOrderField; +}; + +export enum s1_eternum_CancelOrderOrderField { + MakerId = "MAKER_ID", + TakerId = "TAKER_ID", + Timestamp = "TIMESTAMP", + TradeId = "TRADE_ID", +} + +export type s1_eternum_CancelOrderWhereInput = { + maker_id?: InputMaybe; + maker_idEQ?: InputMaybe; + maker_idGT?: InputMaybe; + maker_idGTE?: InputMaybe; + maker_idIN?: InputMaybe>>; + maker_idLIKE?: InputMaybe; + maker_idLT?: InputMaybe; + maker_idLTE?: InputMaybe; + maker_idNEQ?: InputMaybe; + maker_idNOTIN?: InputMaybe>>; + maker_idNOTLIKE?: InputMaybe; + taker_id?: InputMaybe; + taker_idEQ?: InputMaybe; + taker_idGT?: InputMaybe; + taker_idGTE?: InputMaybe; + taker_idIN?: InputMaybe>>; + taker_idLIKE?: InputMaybe; + taker_idLT?: InputMaybe; + taker_idLTE?: InputMaybe; + taker_idNEQ?: InputMaybe; + taker_idNOTIN?: InputMaybe>>; + taker_idNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; + trade_id?: InputMaybe; + trade_idEQ?: InputMaybe; + trade_idGT?: InputMaybe; + trade_idGTE?: InputMaybe; + trade_idIN?: InputMaybe>>; + trade_idLIKE?: InputMaybe; + trade_idLT?: InputMaybe; + trade_idLTE?: InputMaybe; + trade_idNEQ?: InputMaybe; + trade_idNOTIN?: InputMaybe>>; + trade_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_CapacityCategoryOrder = { direction: OrderDirection; - field: S0_Eternum_CapacityCategoryOrderField; + field: s1_eternum_CapacityCategoryOrderField; }; -export enum S0_Eternum_CapacityCategoryOrderField { - Category = 'CATEGORY', - EntityId = 'ENTITY_ID' +export enum s1_eternum_CapacityCategoryOrderField { + Category = "CATEGORY", + EntityId = "ENTITY_ID", } -export type S0_Eternum_CapacityCategoryWhereInput = { - category?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; +export type s1_eternum_CapacityCategoryWhereInput = { + category?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; }; -export type S0_Eternum_CapacityConfigOrder = { +export type s1_eternum_CapacityConfigOrder = { direction: OrderDirection; - field: S0_Eternum_CapacityConfigOrderField; + field: s1_eternum_CapacityConfigOrderField; }; -export enum S0_Eternum_CapacityConfigOrderField { - Category = 'CATEGORY', - WeightGram = 'WEIGHT_GRAM' +export enum s1_eternum_CapacityConfigOrderField { + Category = "CATEGORY", + WeightGram = "WEIGHT_GRAM", } -export type S0_Eternum_CapacityConfigWhereInput = { - category?: InputMaybe; - weight_gram?: InputMaybe; - weight_gramEQ?: InputMaybe; - weight_gramGT?: InputMaybe; - weight_gramGTE?: InputMaybe; - weight_gramIN?: InputMaybe>>; - weight_gramLIKE?: InputMaybe; - weight_gramLT?: InputMaybe; - weight_gramLTE?: InputMaybe; - weight_gramNEQ?: InputMaybe; - weight_gramNOTIN?: InputMaybe>>; - weight_gramNOTLIKE?: InputMaybe; +export type s1_eternum_CapacityConfigWhereInput = { + category?: InputMaybe; + weight_gram?: InputMaybe; + weight_gramEQ?: InputMaybe; + weight_gramGT?: InputMaybe; + weight_gramGTE?: InputMaybe; + weight_gramIN?: InputMaybe>>; + weight_gramLIKE?: InputMaybe; + weight_gramLT?: InputMaybe; + weight_gramLTE?: InputMaybe; + weight_gramNEQ?: InputMaybe; + weight_gramNOTIN?: InputMaybe>>; + weight_gramNOTLIKE?: InputMaybe; }; -export type S0_Eternum_ContributionOrder = { +export type s1_eternum_ContributionOrder = { direction: OrderDirection; - field: S0_Eternum_ContributionOrderField; -}; - -export enum S0_Eternum_ContributionOrderField { - Amount = 'AMOUNT', - HyperstructureEntityId = 'HYPERSTRUCTURE_ENTITY_ID', - PlayerAddress = 'PLAYER_ADDRESS', - ResourceType = 'RESOURCE_TYPE' -} - -export type S0_Eternum_ContributionWhereInput = { - amount?: InputMaybe; - amountEQ?: InputMaybe; - amountGT?: InputMaybe; - amountGTE?: InputMaybe; - amountIN?: InputMaybe>>; - amountLIKE?: InputMaybe; - amountLT?: InputMaybe; - amountLTE?: InputMaybe; - amountNEQ?: InputMaybe; - amountNOTIN?: InputMaybe>>; - amountNOTLIKE?: InputMaybe; - hyperstructure_entity_id?: InputMaybe; - hyperstructure_entity_idEQ?: InputMaybe; - hyperstructure_entity_idGT?: InputMaybe; - hyperstructure_entity_idGTE?: InputMaybe; - hyperstructure_entity_idIN?: InputMaybe>>; - hyperstructure_entity_idLIKE?: InputMaybe; - hyperstructure_entity_idLT?: InputMaybe; - hyperstructure_entity_idLTE?: InputMaybe; - hyperstructure_entity_idNEQ?: InputMaybe; - hyperstructure_entity_idNOTIN?: InputMaybe>>; - hyperstructure_entity_idNOTLIKE?: InputMaybe; - player_address?: InputMaybe; - player_addressEQ?: InputMaybe; - player_addressGT?: InputMaybe; - player_addressGTE?: InputMaybe; - player_addressIN?: InputMaybe>>; - player_addressLIKE?: InputMaybe; - player_addressLT?: InputMaybe; - player_addressLTE?: InputMaybe; - player_addressNEQ?: InputMaybe; - player_addressNOTIN?: InputMaybe>>; - player_addressNOTLIKE?: InputMaybe; - resource_type?: InputMaybe; - resource_typeEQ?: InputMaybe; - resource_typeGT?: InputMaybe; - resource_typeGTE?: InputMaybe; - resource_typeIN?: InputMaybe>>; - resource_typeLIKE?: InputMaybe; - resource_typeLT?: InputMaybe; - resource_typeLTE?: InputMaybe; - resource_typeNEQ?: InputMaybe; - resource_typeNOTIN?: InputMaybe>>; - resource_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_CreateGuildOrder = { + field: s1_eternum_ContributionOrderField; +}; + +export enum s1_eternum_ContributionOrderField { + Amount = "AMOUNT", + HyperstructureEntityId = "HYPERSTRUCTURE_ENTITY_ID", + PlayerAddress = "PLAYER_ADDRESS", + ResourceType = "RESOURCE_TYPE", +} + +export type s1_eternum_ContributionWhereInput = { + amount?: InputMaybe; + amountEQ?: InputMaybe; + amountGT?: InputMaybe; + amountGTE?: InputMaybe; + amountIN?: InputMaybe>>; + amountLIKE?: InputMaybe; + amountLT?: InputMaybe; + amountLTE?: InputMaybe; + amountNEQ?: InputMaybe; + amountNOTIN?: InputMaybe>>; + amountNOTLIKE?: InputMaybe; + hyperstructure_entity_id?: InputMaybe; + hyperstructure_entity_idEQ?: InputMaybe; + hyperstructure_entity_idGT?: InputMaybe; + hyperstructure_entity_idGTE?: InputMaybe; + hyperstructure_entity_idIN?: InputMaybe>>; + hyperstructure_entity_idLIKE?: InputMaybe; + hyperstructure_entity_idLT?: InputMaybe; + hyperstructure_entity_idLTE?: InputMaybe; + hyperstructure_entity_idNEQ?: InputMaybe; + hyperstructure_entity_idNOTIN?: InputMaybe>>; + hyperstructure_entity_idNOTLIKE?: InputMaybe; + player_address?: InputMaybe; + player_addressEQ?: InputMaybe; + player_addressGT?: InputMaybe; + player_addressGTE?: InputMaybe; + player_addressIN?: InputMaybe>>; + player_addressLIKE?: InputMaybe; + player_addressLT?: InputMaybe; + player_addressLTE?: InputMaybe; + player_addressNEQ?: InputMaybe; + player_addressNOTIN?: InputMaybe>>; + player_addressNOTLIKE?: InputMaybe; + resource_type?: InputMaybe; + resource_typeEQ?: InputMaybe; + resource_typeGT?: InputMaybe; + resource_typeGTE?: InputMaybe; + resource_typeIN?: InputMaybe>>; + resource_typeLIKE?: InputMaybe; + resource_typeLT?: InputMaybe; + resource_typeLTE?: InputMaybe; + resource_typeNEQ?: InputMaybe; + resource_typeNOTIN?: InputMaybe>>; + resource_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_CreateGuildOrder = { direction: OrderDirection; - field: S0_Eternum_CreateGuildOrderField; -}; - -export enum S0_Eternum_CreateGuildOrderField { - GuildEntityId = 'GUILD_ENTITY_ID', - GuildName = 'GUILD_NAME', - Timestamp = 'TIMESTAMP' -} - -export type S0_Eternum_CreateGuildWhereInput = { - guild_entity_id?: InputMaybe; - guild_entity_idEQ?: InputMaybe; - guild_entity_idGT?: InputMaybe; - guild_entity_idGTE?: InputMaybe; - guild_entity_idIN?: InputMaybe>>; - guild_entity_idLIKE?: InputMaybe; - guild_entity_idLT?: InputMaybe; - guild_entity_idLTE?: InputMaybe; - guild_entity_idNEQ?: InputMaybe; - guild_entity_idNOTIN?: InputMaybe>>; - guild_entity_idNOTLIKE?: InputMaybe; - guild_name?: InputMaybe; - guild_nameEQ?: InputMaybe; - guild_nameGT?: InputMaybe; - guild_nameGTE?: InputMaybe; - guild_nameIN?: InputMaybe>>; - guild_nameLIKE?: InputMaybe; - guild_nameLT?: InputMaybe; - guild_nameLTE?: InputMaybe; - guild_nameNEQ?: InputMaybe; - guild_nameNOTIN?: InputMaybe>>; - guild_nameNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_CreateOrderOrder = { + field: s1_eternum_CreateGuildOrderField; +}; + +export enum s1_eternum_CreateGuildOrderField { + GuildEntityId = "GUILD_ENTITY_ID", + GuildName = "GUILD_NAME", + Timestamp = "TIMESTAMP", +} + +export type s1_eternum_CreateGuildWhereInput = { + guild_entity_id?: InputMaybe; + guild_entity_idEQ?: InputMaybe; + guild_entity_idGT?: InputMaybe; + guild_entity_idGTE?: InputMaybe; + guild_entity_idIN?: InputMaybe>>; + guild_entity_idLIKE?: InputMaybe; + guild_entity_idLT?: InputMaybe; + guild_entity_idLTE?: InputMaybe; + guild_entity_idNEQ?: InputMaybe; + guild_entity_idNOTIN?: InputMaybe>>; + guild_entity_idNOTLIKE?: InputMaybe; + guild_name?: InputMaybe; + guild_nameEQ?: InputMaybe; + guild_nameGT?: InputMaybe; + guild_nameGTE?: InputMaybe; + guild_nameIN?: InputMaybe>>; + guild_nameLIKE?: InputMaybe; + guild_nameLT?: InputMaybe; + guild_nameLTE?: InputMaybe; + guild_nameNEQ?: InputMaybe; + guild_nameNOTIN?: InputMaybe>>; + guild_nameNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_CreateOrderOrder = { direction: OrderDirection; - field: S0_Eternum_CreateOrderOrderField; -}; - -export enum S0_Eternum_CreateOrderOrderField { - MakerId = 'MAKER_ID', - TakerId = 'TAKER_ID', - Timestamp = 'TIMESTAMP', - TradeId = 'TRADE_ID' -} - -export type S0_Eternum_CreateOrderWhereInput = { - maker_id?: InputMaybe; - maker_idEQ?: InputMaybe; - maker_idGT?: InputMaybe; - maker_idGTE?: InputMaybe; - maker_idIN?: InputMaybe>>; - maker_idLIKE?: InputMaybe; - maker_idLT?: InputMaybe; - maker_idLTE?: InputMaybe; - maker_idNEQ?: InputMaybe; - maker_idNOTIN?: InputMaybe>>; - maker_idNOTLIKE?: InputMaybe; - taker_id?: InputMaybe; - taker_idEQ?: InputMaybe; - taker_idGT?: InputMaybe; - taker_idGTE?: InputMaybe; - taker_idIN?: InputMaybe>>; - taker_idLIKE?: InputMaybe; - taker_idLT?: InputMaybe; - taker_idLTE?: InputMaybe; - taker_idNEQ?: InputMaybe; - taker_idNOTIN?: InputMaybe>>; - taker_idNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; - trade_id?: InputMaybe; - trade_idEQ?: InputMaybe; - trade_idGT?: InputMaybe; - trade_idGTE?: InputMaybe; - trade_idIN?: InputMaybe>>; - trade_idLIKE?: InputMaybe; - trade_idLT?: InputMaybe; - trade_idLTE?: InputMaybe; - trade_idNEQ?: InputMaybe; - trade_idNOTIN?: InputMaybe>>; - trade_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_DetachedResourceOrder = { + field: s1_eternum_CreateOrderOrderField; +}; + +export enum s1_eternum_CreateOrderOrderField { + MakerId = "MAKER_ID", + TakerId = "TAKER_ID", + Timestamp = "TIMESTAMP", + TradeId = "TRADE_ID", +} + +export type s1_eternum_CreateOrderWhereInput = { + maker_id?: InputMaybe; + maker_idEQ?: InputMaybe; + maker_idGT?: InputMaybe; + maker_idGTE?: InputMaybe; + maker_idIN?: InputMaybe>>; + maker_idLIKE?: InputMaybe; + maker_idLT?: InputMaybe; + maker_idLTE?: InputMaybe; + maker_idNEQ?: InputMaybe; + maker_idNOTIN?: InputMaybe>>; + maker_idNOTLIKE?: InputMaybe; + taker_id?: InputMaybe; + taker_idEQ?: InputMaybe; + taker_idGT?: InputMaybe; + taker_idGTE?: InputMaybe; + taker_idIN?: InputMaybe>>; + taker_idLIKE?: InputMaybe; + taker_idLT?: InputMaybe; + taker_idLTE?: InputMaybe; + taker_idNEQ?: InputMaybe; + taker_idNOTIN?: InputMaybe>>; + taker_idNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; + trade_id?: InputMaybe; + trade_idEQ?: InputMaybe; + trade_idGT?: InputMaybe; + trade_idGTE?: InputMaybe; + trade_idIN?: InputMaybe>>; + trade_idLIKE?: InputMaybe; + trade_idLT?: InputMaybe; + trade_idLTE?: InputMaybe; + trade_idNEQ?: InputMaybe; + trade_idNOTIN?: InputMaybe>>; + trade_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_DetachedResourceOrder = { direction: OrderDirection; - field: S0_Eternum_DetachedResourceOrderField; -}; - -export enum S0_Eternum_DetachedResourceOrderField { - EntityId = 'ENTITY_ID', - Index = 'INDEX', - ResourceAmount = 'RESOURCE_AMOUNT', - ResourceType = 'RESOURCE_TYPE' -} - -export type S0_Eternum_DetachedResourceWhereInput = { - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - index?: InputMaybe; - indexEQ?: InputMaybe; - indexGT?: InputMaybe; - indexGTE?: InputMaybe; - indexIN?: InputMaybe>>; - indexLIKE?: InputMaybe; - indexLT?: InputMaybe; - indexLTE?: InputMaybe; - indexNEQ?: InputMaybe; - indexNOTIN?: InputMaybe>>; - indexNOTLIKE?: InputMaybe; - resource_amount?: InputMaybe; - resource_amountEQ?: InputMaybe; - resource_amountGT?: InputMaybe; - resource_amountGTE?: InputMaybe; - resource_amountIN?: InputMaybe>>; - resource_amountLIKE?: InputMaybe; - resource_amountLT?: InputMaybe; - resource_amountLTE?: InputMaybe; - resource_amountNEQ?: InputMaybe; - resource_amountNOTIN?: InputMaybe>>; - resource_amountNOTLIKE?: InputMaybe; - resource_type?: InputMaybe; - resource_typeEQ?: InputMaybe; - resource_typeGT?: InputMaybe; - resource_typeGTE?: InputMaybe; - resource_typeIN?: InputMaybe>>; - resource_typeLIKE?: InputMaybe; - resource_typeLT?: InputMaybe; - resource_typeLTE?: InputMaybe; - resource_typeNEQ?: InputMaybe; - resource_typeNOTIN?: InputMaybe>>; - resource_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_EntityNameOrder = { + field: s1_eternum_DetachedResourceOrderField; +}; + +export enum s1_eternum_DetachedResourceOrderField { + EntityId = "ENTITY_ID", + Index = "INDEX", + ResourceAmount = "RESOURCE_AMOUNT", + ResourceType = "RESOURCE_TYPE", +} + +export type s1_eternum_DetachedResourceWhereInput = { + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + index?: InputMaybe; + indexEQ?: InputMaybe; + indexGT?: InputMaybe; + indexGTE?: InputMaybe; + indexIN?: InputMaybe>>; + indexLIKE?: InputMaybe; + indexLT?: InputMaybe; + indexLTE?: InputMaybe; + indexNEQ?: InputMaybe; + indexNOTIN?: InputMaybe>>; + indexNOTLIKE?: InputMaybe; + resource_amount?: InputMaybe; + resource_amountEQ?: InputMaybe; + resource_amountGT?: InputMaybe; + resource_amountGTE?: InputMaybe; + resource_amountIN?: InputMaybe>>; + resource_amountLIKE?: InputMaybe; + resource_amountLT?: InputMaybe; + resource_amountLTE?: InputMaybe; + resource_amountNEQ?: InputMaybe; + resource_amountNOTIN?: InputMaybe>>; + resource_amountNOTLIKE?: InputMaybe; + resource_type?: InputMaybe; + resource_typeEQ?: InputMaybe; + resource_typeGT?: InputMaybe; + resource_typeGTE?: InputMaybe; + resource_typeIN?: InputMaybe>>; + resource_typeLIKE?: InputMaybe; + resource_typeLT?: InputMaybe; + resource_typeLTE?: InputMaybe; + resource_typeNEQ?: InputMaybe; + resource_typeNOTIN?: InputMaybe>>; + resource_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_EntityNameOrder = { direction: OrderDirection; - field: S0_Eternum_EntityNameOrderField; -}; - -export enum S0_Eternum_EntityNameOrderField { - EntityId = 'ENTITY_ID', - Name = 'NAME' -} - -export type S0_Eternum_EntityNameWhereInput = { - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - name?: InputMaybe; - nameEQ?: InputMaybe; - nameGT?: InputMaybe; - nameGTE?: InputMaybe; - nameIN?: InputMaybe>>; - nameLIKE?: InputMaybe; - nameLT?: InputMaybe; - nameLTE?: InputMaybe; - nameNEQ?: InputMaybe; - nameNOTIN?: InputMaybe>>; - nameNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_EntityOwnerOrder = { + field: s1_eternum_EntityNameOrderField; +}; + +export enum s1_eternum_EntityNameOrderField { + EntityId = "ENTITY_ID", + Name = "NAME", +} + +export type s1_eternum_EntityNameWhereInput = { + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + name?: InputMaybe; + nameEQ?: InputMaybe; + nameGT?: InputMaybe; + nameGTE?: InputMaybe; + nameIN?: InputMaybe>>; + nameLIKE?: InputMaybe; + nameLT?: InputMaybe; + nameLTE?: InputMaybe; + nameNEQ?: InputMaybe; + nameNOTIN?: InputMaybe>>; + nameNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_EntityOwnerOrder = { direction: OrderDirection; - field: S0_Eternum_EntityOwnerOrderField; -}; - -export enum S0_Eternum_EntityOwnerOrderField { - EntityId = 'ENTITY_ID', - EntityOwnerId = 'ENTITY_OWNER_ID' -} - -export type S0_Eternum_EntityOwnerWhereInput = { - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - entity_owner_id?: InputMaybe; - entity_owner_idEQ?: InputMaybe; - entity_owner_idGT?: InputMaybe; - entity_owner_idGTE?: InputMaybe; - entity_owner_idIN?: InputMaybe>>; - entity_owner_idLIKE?: InputMaybe; - entity_owner_idLT?: InputMaybe; - entity_owner_idLTE?: InputMaybe; - entity_owner_idNEQ?: InputMaybe; - entity_owner_idNOTIN?: InputMaybe>>; - entity_owner_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_EpochOrder = { + field: s1_eternum_EntityOwnerOrderField; +}; + +export enum s1_eternum_EntityOwnerOrderField { + EntityId = "ENTITY_ID", + EntityOwnerId = "ENTITY_OWNER_ID", +} + +export type s1_eternum_EntityOwnerWhereInput = { + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + entity_owner_id?: InputMaybe; + entity_owner_idEQ?: InputMaybe; + entity_owner_idGT?: InputMaybe; + entity_owner_idGTE?: InputMaybe; + entity_owner_idIN?: InputMaybe>>; + entity_owner_idLIKE?: InputMaybe; + entity_owner_idLT?: InputMaybe; + entity_owner_idLTE?: InputMaybe; + entity_owner_idNEQ?: InputMaybe; + entity_owner_idNOTIN?: InputMaybe>>; + entity_owner_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_EpochOrder = { direction: OrderDirection; - field: S0_Eternum_EpochOrderField; -}; - -export enum S0_Eternum_EpochOrderField { - HyperstructureEntityId = 'HYPERSTRUCTURE_ENTITY_ID', - Index = 'INDEX', - Owners = 'OWNERS', - StartTimestamp = 'START_TIMESTAMP' -} - -export type S0_Eternum_EpochWhereInput = { - hyperstructure_entity_id?: InputMaybe; - hyperstructure_entity_idEQ?: InputMaybe; - hyperstructure_entity_idGT?: InputMaybe; - hyperstructure_entity_idGTE?: InputMaybe; - hyperstructure_entity_idIN?: InputMaybe>>; - hyperstructure_entity_idLIKE?: InputMaybe; - hyperstructure_entity_idLT?: InputMaybe; - hyperstructure_entity_idLTE?: InputMaybe; - hyperstructure_entity_idNEQ?: InputMaybe; - hyperstructure_entity_idNOTIN?: InputMaybe>>; - hyperstructure_entity_idNOTLIKE?: InputMaybe; - index?: InputMaybe; - indexEQ?: InputMaybe; - indexGT?: InputMaybe; - indexGTE?: InputMaybe; - indexIN?: InputMaybe>>; - indexLIKE?: InputMaybe; - indexLT?: InputMaybe; - indexLTE?: InputMaybe; - indexNEQ?: InputMaybe; - indexNOTIN?: InputMaybe>>; - indexNOTLIKE?: InputMaybe; - start_timestamp?: InputMaybe; - start_timestampEQ?: InputMaybe; - start_timestampGT?: InputMaybe; - start_timestampGTE?: InputMaybe; - start_timestampIN?: InputMaybe>>; - start_timestampLIKE?: InputMaybe; - start_timestampLT?: InputMaybe; - start_timestampLTE?: InputMaybe; - start_timestampNEQ?: InputMaybe; - start_timestampNOTIN?: InputMaybe>>; - start_timestampNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_FragmentMineDiscoveredOrder = { + field: s1_eternum_EpochOrderField; +}; + +export enum s1_eternum_EpochOrderField { + HyperstructureEntityId = "HYPERSTRUCTURE_ENTITY_ID", + Index = "INDEX", + Owners = "OWNERS", + StartTimestamp = "START_TIMESTAMP", +} + +export type s1_eternum_EpochWhereInput = { + hyperstructure_entity_id?: InputMaybe; + hyperstructure_entity_idEQ?: InputMaybe; + hyperstructure_entity_idGT?: InputMaybe; + hyperstructure_entity_idGTE?: InputMaybe; + hyperstructure_entity_idIN?: InputMaybe>>; + hyperstructure_entity_idLIKE?: InputMaybe; + hyperstructure_entity_idLT?: InputMaybe; + hyperstructure_entity_idLTE?: InputMaybe; + hyperstructure_entity_idNEQ?: InputMaybe; + hyperstructure_entity_idNOTIN?: InputMaybe>>; + hyperstructure_entity_idNOTLIKE?: InputMaybe; + index?: InputMaybe; + indexEQ?: InputMaybe; + indexGT?: InputMaybe; + indexGTE?: InputMaybe; + indexIN?: InputMaybe>>; + indexLIKE?: InputMaybe; + indexLT?: InputMaybe; + indexLTE?: InputMaybe; + indexNEQ?: InputMaybe; + indexNOTIN?: InputMaybe>>; + indexNOTLIKE?: InputMaybe; + start_timestamp?: InputMaybe; + start_timestampEQ?: InputMaybe; + start_timestampGT?: InputMaybe; + start_timestampGTE?: InputMaybe; + start_timestampIN?: InputMaybe>>; + start_timestampLIKE?: InputMaybe; + start_timestampLT?: InputMaybe; + start_timestampLTE?: InputMaybe; + start_timestampNEQ?: InputMaybe; + start_timestampNOTIN?: InputMaybe>>; + start_timestampNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_FragmentMineDiscoveredOrder = { direction: OrderDirection; - field: S0_Eternum_FragmentMineDiscoveredOrderField; + field: s1_eternum_FragmentMineDiscoveredOrderField; }; -export enum S0_Eternum_FragmentMineDiscoveredOrderField { - DiscoveredAt = 'DISCOVERED_AT', - EntityOwnerId = 'ENTITY_OWNER_ID', - MineEntityId = 'MINE_ENTITY_ID', - ProductionDeadlineTick = 'PRODUCTION_DEADLINE_TICK' +export enum s1_eternum_FragmentMineDiscoveredOrderField { + DiscoveredAt = "DISCOVERED_AT", + EntityOwnerId = "ENTITY_OWNER_ID", + MineEntityId = "MINE_ENTITY_ID", + ProductionDeadlineTick = "PRODUCTION_DEADLINE_TICK", } -export type S0_Eternum_FragmentMineDiscoveredWhereInput = { +export type s1_eternum_FragmentMineDiscoveredWhereInput = { discovered_at?: InputMaybe; discovered_atEQ?: InputMaybe; discovered_atGT?: InputMaybe; @@ -2129,3031 +2129,2165 @@ export type S0_Eternum_FragmentMineDiscoveredWhereInput = { mine_entity_idNEQ?: InputMaybe; mine_entity_idNOTIN?: InputMaybe>>; mine_entity_idNOTLIKE?: InputMaybe; - production_deadline_tick?: InputMaybe; - production_deadline_tickEQ?: InputMaybe; - production_deadline_tickGT?: InputMaybe; - production_deadline_tickGTE?: InputMaybe; - production_deadline_tickIN?: InputMaybe>>; - production_deadline_tickLIKE?: InputMaybe; - production_deadline_tickLT?: InputMaybe; - production_deadline_tickLTE?: InputMaybe; - production_deadline_tickNEQ?: InputMaybe; - production_deadline_tickNOTIN?: InputMaybe>>; - production_deadline_tickNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_GameEndedOrder = { +}; + +export type s1_eternum_GameEndedOrder = { direction: OrderDirection; - field: S0_Eternum_GameEndedOrderField; -}; - -export enum S0_Eternum_GameEndedOrderField { - Timestamp = 'TIMESTAMP', - WinnerAddress = 'WINNER_ADDRESS' -} - -export type S0_Eternum_GameEndedWhereInput = { - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; - winner_address?: InputMaybe; - winner_addressEQ?: InputMaybe; - winner_addressGT?: InputMaybe; - winner_addressGTE?: InputMaybe; - winner_addressIN?: InputMaybe>>; - winner_addressLIKE?: InputMaybe; - winner_addressLT?: InputMaybe; - winner_addressLTE?: InputMaybe; - winner_addressNEQ?: InputMaybe; - winner_addressNOTIN?: InputMaybe>>; - winner_addressNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_GuildMemberOrder = { + field: s1_eternum_GameEndedOrderField; +}; + +export enum s1_eternum_GameEndedOrderField { + Timestamp = "TIMESTAMP", + WinnerAddress = "WINNER_ADDRESS", +} + +export type s1_eternum_GameEndedWhereInput = { + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; + winner_address?: InputMaybe; + winner_addressEQ?: InputMaybe; + winner_addressGT?: InputMaybe; + winner_addressGTE?: InputMaybe; + winner_addressIN?: InputMaybe>>; + winner_addressLIKE?: InputMaybe; + winner_addressLT?: InputMaybe; + winner_addressLTE?: InputMaybe; + winner_addressNEQ?: InputMaybe; + winner_addressNOTIN?: InputMaybe>>; + winner_addressNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_GuildMemberOrder = { direction: OrderDirection; - field: S0_Eternum_GuildMemberOrderField; -}; - -export enum S0_Eternum_GuildMemberOrderField { - Address = 'ADDRESS', - GuildEntityId = 'GUILD_ENTITY_ID' -} - -export type S0_Eternum_GuildMemberWhereInput = { - address?: InputMaybe; - addressEQ?: InputMaybe; - addressGT?: InputMaybe; - addressGTE?: InputMaybe; - addressIN?: InputMaybe>>; - addressLIKE?: InputMaybe; - addressLT?: InputMaybe; - addressLTE?: InputMaybe; - addressNEQ?: InputMaybe; - addressNOTIN?: InputMaybe>>; - addressNOTLIKE?: InputMaybe; - guild_entity_id?: InputMaybe; - guild_entity_idEQ?: InputMaybe; - guild_entity_idGT?: InputMaybe; - guild_entity_idGTE?: InputMaybe; - guild_entity_idIN?: InputMaybe>>; - guild_entity_idLIKE?: InputMaybe; - guild_entity_idLT?: InputMaybe; - guild_entity_idLTE?: InputMaybe; - guild_entity_idNEQ?: InputMaybe; - guild_entity_idNOTIN?: InputMaybe>>; - guild_entity_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_GuildOrder = { + field: s1_eternum_GuildMemberOrderField; +}; + +export enum s1_eternum_GuildMemberOrderField { + Address = "ADDRESS", + GuildEntityId = "GUILD_ENTITY_ID", +} + +export type s1_eternum_GuildMemberWhereInput = { + address?: InputMaybe; + addressEQ?: InputMaybe; + addressGT?: InputMaybe; + addressGTE?: InputMaybe; + addressIN?: InputMaybe>>; + addressLIKE?: InputMaybe; + addressLT?: InputMaybe; + addressLTE?: InputMaybe; + addressNEQ?: InputMaybe; + addressNOTIN?: InputMaybe>>; + addressNOTLIKE?: InputMaybe; + guild_entity_id?: InputMaybe; + guild_entity_idEQ?: InputMaybe; + guild_entity_idGT?: InputMaybe; + guild_entity_idGTE?: InputMaybe; + guild_entity_idIN?: InputMaybe>>; + guild_entity_idLIKE?: InputMaybe; + guild_entity_idLT?: InputMaybe; + guild_entity_idLTE?: InputMaybe; + guild_entity_idNEQ?: InputMaybe; + guild_entity_idNOTIN?: InputMaybe>>; + guild_entity_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_GuildOrder = { direction: OrderDirection; - field: S0_Eternum_GuildOrderField; -}; - -export enum S0_Eternum_GuildOrderField { - EntityId = 'ENTITY_ID', - IsPublic = 'IS_PUBLIC', - MemberCount = 'MEMBER_COUNT' -} - -export type S0_Eternum_GuildWhereInput = { - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - is_public?: InputMaybe; - member_count?: InputMaybe; - member_countEQ?: InputMaybe; - member_countGT?: InputMaybe; - member_countGTE?: InputMaybe; - member_countIN?: InputMaybe>>; - member_countLIKE?: InputMaybe; - member_countLT?: InputMaybe; - member_countLTE?: InputMaybe; - member_countNEQ?: InputMaybe; - member_countNOTIN?: InputMaybe>>; - member_countNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_GuildWhitelistOrder = { + field: s1_eternum_GuildOrderField; +}; + +export enum s1_eternum_GuildOrderField { + EntityId = "ENTITY_ID", + IsPublic = "IS_PUBLIC", + MemberCount = "MEMBER_COUNT", +} + +export type s1_eternum_GuildWhereInput = { + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + is_public?: InputMaybe; + member_count?: InputMaybe; + member_countEQ?: InputMaybe; + member_countGT?: InputMaybe; + member_countGTE?: InputMaybe; + member_countIN?: InputMaybe>>; + member_countLIKE?: InputMaybe; + member_countLT?: InputMaybe; + member_countLTE?: InputMaybe; + member_countNEQ?: InputMaybe; + member_countNOTIN?: InputMaybe>>; + member_countNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_GuildWhitelistOrder = { direction: OrderDirection; - field: S0_Eternum_GuildWhitelistOrderField; -}; - -export enum S0_Eternum_GuildWhitelistOrderField { - Address = 'ADDRESS', - GuildEntityId = 'GUILD_ENTITY_ID', - IsWhitelisted = 'IS_WHITELISTED' -} - -export type S0_Eternum_GuildWhitelistWhereInput = { - address?: InputMaybe; - addressEQ?: InputMaybe; - addressGT?: InputMaybe; - addressGTE?: InputMaybe; - addressIN?: InputMaybe>>; - addressLIKE?: InputMaybe; - addressLT?: InputMaybe; - addressLTE?: InputMaybe; - addressNEQ?: InputMaybe; - addressNOTIN?: InputMaybe>>; - addressNOTLIKE?: InputMaybe; - guild_entity_id?: InputMaybe; - guild_entity_idEQ?: InputMaybe; - guild_entity_idGT?: InputMaybe; - guild_entity_idGTE?: InputMaybe; - guild_entity_idIN?: InputMaybe>>; - guild_entity_idLIKE?: InputMaybe; - guild_entity_idLT?: InputMaybe; - guild_entity_idLTE?: InputMaybe; - guild_entity_idNEQ?: InputMaybe; - guild_entity_idNOTIN?: InputMaybe>>; - guild_entity_idNOTLIKE?: InputMaybe; - is_whitelisted?: InputMaybe; -}; - -export type S0_Eternum_HealthOrder = { + field: s1_eternum_GuildWhitelistOrderField; +}; + +export enum s1_eternum_GuildWhitelistOrderField { + Address = "ADDRESS", + GuildEntityId = "GUILD_ENTITY_ID", + IsWhitelisted = "IS_WHITELISTED", +} + +export type s1_eternum_GuildWhitelistWhereInput = { + address?: InputMaybe; + addressEQ?: InputMaybe; + addressGT?: InputMaybe; + addressGTE?: InputMaybe; + addressIN?: InputMaybe>>; + addressLIKE?: InputMaybe; + addressLT?: InputMaybe; + addressLTE?: InputMaybe; + addressNEQ?: InputMaybe; + addressNOTIN?: InputMaybe>>; + addressNOTLIKE?: InputMaybe; + guild_entity_id?: InputMaybe; + guild_entity_idEQ?: InputMaybe; + guild_entity_idGT?: InputMaybe; + guild_entity_idGTE?: InputMaybe; + guild_entity_idIN?: InputMaybe>>; + guild_entity_idLIKE?: InputMaybe; + guild_entity_idLT?: InputMaybe; + guild_entity_idLTE?: InputMaybe; + guild_entity_idNEQ?: InputMaybe; + guild_entity_idNOTIN?: InputMaybe>>; + guild_entity_idNOTLIKE?: InputMaybe; + is_whitelisted?: InputMaybe; +}; + +export type s1_eternum_HealthOrder = { direction: OrderDirection; - field: S0_Eternum_HealthOrderField; -}; - -export enum S0_Eternum_HealthOrderField { - Current = 'CURRENT', - EntityId = 'ENTITY_ID', - Lifetime = 'LIFETIME' -} - -export type S0_Eternum_HealthWhereInput = { - current?: InputMaybe; - currentEQ?: InputMaybe; - currentGT?: InputMaybe; - currentGTE?: InputMaybe; - currentIN?: InputMaybe>>; - currentLIKE?: InputMaybe; - currentLT?: InputMaybe; - currentLTE?: InputMaybe; - currentNEQ?: InputMaybe; - currentNOTIN?: InputMaybe>>; - currentNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - lifetime?: InputMaybe; - lifetimeEQ?: InputMaybe; - lifetimeGT?: InputMaybe; - lifetimeGTE?: InputMaybe; - lifetimeIN?: InputMaybe>>; - lifetimeLIKE?: InputMaybe; - lifetimeLT?: InputMaybe; - lifetimeLTE?: InputMaybe; - lifetimeNEQ?: InputMaybe; - lifetimeNOTIN?: InputMaybe>>; - lifetimeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_HyperstructureCoOwnersChangeOrder = { + field: s1_eternum_HealthOrderField; +}; + +export enum s1_eternum_HealthOrderField { + Current = "CURRENT", + EntityId = "ENTITY_ID", + Lifetime = "LIFETIME", +} + +export type s1_eternum_HealthWhereInput = { + current?: InputMaybe; + currentEQ?: InputMaybe; + currentGT?: InputMaybe; + currentGTE?: InputMaybe; + currentIN?: InputMaybe>>; + currentLIKE?: InputMaybe; + currentLT?: InputMaybe; + currentLTE?: InputMaybe; + currentNEQ?: InputMaybe; + currentNOTIN?: InputMaybe>>; + currentNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + lifetime?: InputMaybe; + lifetimeEQ?: InputMaybe; + lifetimeGT?: InputMaybe; + lifetimeGTE?: InputMaybe; + lifetimeIN?: InputMaybe>>; + lifetimeLIKE?: InputMaybe; + lifetimeLT?: InputMaybe; + lifetimeLTE?: InputMaybe; + lifetimeNEQ?: InputMaybe; + lifetimeNOTIN?: InputMaybe>>; + lifetimeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_HyperstructureCoOwnersChangeOrder = { direction: OrderDirection; - field: S0_Eternum_HyperstructureCoOwnersChangeOrderField; -}; - -export enum S0_Eternum_HyperstructureCoOwnersChangeOrderField { - CoOwners = 'CO_OWNERS', - HyperstructureEntityId = 'HYPERSTRUCTURE_ENTITY_ID', - Id = 'ID', - Timestamp = 'TIMESTAMP' -} - -export type S0_Eternum_HyperstructureCoOwnersChangeWhereInput = { - hyperstructure_entity_id?: InputMaybe; - hyperstructure_entity_idEQ?: InputMaybe; - hyperstructure_entity_idGT?: InputMaybe; - hyperstructure_entity_idGTE?: InputMaybe; - hyperstructure_entity_idIN?: InputMaybe>>; - hyperstructure_entity_idLIKE?: InputMaybe; - hyperstructure_entity_idLT?: InputMaybe; - hyperstructure_entity_idLTE?: InputMaybe; - hyperstructure_entity_idNEQ?: InputMaybe; - hyperstructure_entity_idNOTIN?: InputMaybe>>; - hyperstructure_entity_idNOTLIKE?: InputMaybe; - id?: InputMaybe; - idEQ?: InputMaybe; - idGT?: InputMaybe; - idGTE?: InputMaybe; - idIN?: InputMaybe>>; - idLIKE?: InputMaybe; - idLT?: InputMaybe; - idLTE?: InputMaybe; - idNEQ?: InputMaybe; - idNOTIN?: InputMaybe>>; - idNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_HyperstructureConfigOrder = { + field: s1_eternum_HyperstructureCoOwnersChangeOrderField; +}; + +export enum s1_eternum_HyperstructureCoOwnersChangeOrderField { + CoOwners = "CO_OWNERS", + HyperstructureEntityId = "HYPERSTRUCTURE_ENTITY_ID", + Id = "ID", + Timestamp = "TIMESTAMP", +} + +export type s1_eternum_HyperstructureCoOwnersChangeWhereInput = { + hyperstructure_entity_id?: InputMaybe; + hyperstructure_entity_idEQ?: InputMaybe; + hyperstructure_entity_idGT?: InputMaybe; + hyperstructure_entity_idGTE?: InputMaybe; + hyperstructure_entity_idIN?: InputMaybe>>; + hyperstructure_entity_idLIKE?: InputMaybe; + hyperstructure_entity_idLT?: InputMaybe; + hyperstructure_entity_idLTE?: InputMaybe; + hyperstructure_entity_idNEQ?: InputMaybe; + hyperstructure_entity_idNOTIN?: InputMaybe>>; + hyperstructure_entity_idNOTLIKE?: InputMaybe; + id?: InputMaybe; + idEQ?: InputMaybe; + idGT?: InputMaybe; + idGTE?: InputMaybe; + idIN?: InputMaybe>>; + idLIKE?: InputMaybe; + idLT?: InputMaybe; + idLTE?: InputMaybe; + idNEQ?: InputMaybe; + idNOTIN?: InputMaybe>>; + idNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_HyperstructureConfigOrder = { direction: OrderDirection; - field: S0_Eternum_HyperstructureConfigOrderField; -}; - -export enum S0_Eternum_HyperstructureConfigOrderField { - ConfigId = 'CONFIG_ID', - PointsForWin = 'POINTS_FOR_WIN', - PointsOnCompletion = 'POINTS_ON_COMPLETION', - PointsPerCycle = 'POINTS_PER_CYCLE', - TimeBetweenSharesChange = 'TIME_BETWEEN_SHARES_CHANGE' -} - -export type S0_Eternum_HyperstructureConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - points_for_win?: InputMaybe; - points_for_winEQ?: InputMaybe; - points_for_winGT?: InputMaybe; - points_for_winGTE?: InputMaybe; - points_for_winIN?: InputMaybe>>; - points_for_winLIKE?: InputMaybe; - points_for_winLT?: InputMaybe; - points_for_winLTE?: InputMaybe; - points_for_winNEQ?: InputMaybe; - points_for_winNOTIN?: InputMaybe>>; - points_for_winNOTLIKE?: InputMaybe; - points_on_completion?: InputMaybe; - points_on_completionEQ?: InputMaybe; - points_on_completionGT?: InputMaybe; - points_on_completionGTE?: InputMaybe; - points_on_completionIN?: InputMaybe>>; - points_on_completionLIKE?: InputMaybe; - points_on_completionLT?: InputMaybe; - points_on_completionLTE?: InputMaybe; - points_on_completionNEQ?: InputMaybe; - points_on_completionNOTIN?: InputMaybe>>; - points_on_completionNOTLIKE?: InputMaybe; - points_per_cycle?: InputMaybe; - points_per_cycleEQ?: InputMaybe; - points_per_cycleGT?: InputMaybe; - points_per_cycleGTE?: InputMaybe; - points_per_cycleIN?: InputMaybe>>; - points_per_cycleLIKE?: InputMaybe; - points_per_cycleLT?: InputMaybe; - points_per_cycleLTE?: InputMaybe; - points_per_cycleNEQ?: InputMaybe; - points_per_cycleNOTIN?: InputMaybe>>; - points_per_cycleNOTLIKE?: InputMaybe; - time_between_shares_change?: InputMaybe; - time_between_shares_changeEQ?: InputMaybe; - time_between_shares_changeGT?: InputMaybe; - time_between_shares_changeGTE?: InputMaybe; - time_between_shares_changeIN?: InputMaybe>>; - time_between_shares_changeLIKE?: InputMaybe; - time_between_shares_changeLT?: InputMaybe; - time_between_shares_changeLTE?: InputMaybe; - time_between_shares_changeNEQ?: InputMaybe; - time_between_shares_changeNOTIN?: InputMaybe>>; - time_between_shares_changeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_HyperstructureContributionOrder = { + field: s1_eternum_HyperstructureConfigOrderField; +}; + +export enum s1_eternum_HyperstructureConfigOrderField { + ConfigId = "CONFIG_ID", + PointsForWin = "POINTS_FOR_WIN", + PointsOnCompletion = "POINTS_ON_COMPLETION", + PointsPerCycle = "POINTS_PER_CYCLE", + TimeBetweenSharesChange = "TIME_BETWEEN_SHARES_CHANGE", +} + +export type s1_eternum_HyperstructureConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + points_for_win?: InputMaybe; + points_for_winEQ?: InputMaybe; + points_for_winGT?: InputMaybe; + points_for_winGTE?: InputMaybe; + points_for_winIN?: InputMaybe>>; + points_for_winLIKE?: InputMaybe; + points_for_winLT?: InputMaybe; + points_for_winLTE?: InputMaybe; + points_for_winNEQ?: InputMaybe; + points_for_winNOTIN?: InputMaybe>>; + points_for_winNOTLIKE?: InputMaybe; + points_on_completion?: InputMaybe; + points_on_completionEQ?: InputMaybe; + points_on_completionGT?: InputMaybe; + points_on_completionGTE?: InputMaybe; + points_on_completionIN?: InputMaybe>>; + points_on_completionLIKE?: InputMaybe; + points_on_completionLT?: InputMaybe; + points_on_completionLTE?: InputMaybe; + points_on_completionNEQ?: InputMaybe; + points_on_completionNOTIN?: InputMaybe>>; + points_on_completionNOTLIKE?: InputMaybe; + points_per_cycle?: InputMaybe; + points_per_cycleEQ?: InputMaybe; + points_per_cycleGT?: InputMaybe; + points_per_cycleGTE?: InputMaybe; + points_per_cycleIN?: InputMaybe>>; + points_per_cycleLIKE?: InputMaybe; + points_per_cycleLT?: InputMaybe; + points_per_cycleLTE?: InputMaybe; + points_per_cycleNEQ?: InputMaybe; + points_per_cycleNOTIN?: InputMaybe>>; + points_per_cycleNOTLIKE?: InputMaybe; + time_between_shares_change?: InputMaybe; + time_between_shares_changeEQ?: InputMaybe; + time_between_shares_changeGT?: InputMaybe; + time_between_shares_changeGTE?: InputMaybe; + time_between_shares_changeIN?: InputMaybe>>; + time_between_shares_changeLIKE?: InputMaybe; + time_between_shares_changeLT?: InputMaybe; + time_between_shares_changeLTE?: InputMaybe; + time_between_shares_changeNEQ?: InputMaybe; + time_between_shares_changeNOTIN?: InputMaybe>>; + time_between_shares_changeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_HyperstructureContributionOrder = { direction: OrderDirection; - field: S0_Eternum_HyperstructureContributionOrderField; -}; - -export enum S0_Eternum_HyperstructureContributionOrderField { - Contributions = 'CONTRIBUTIONS', - ContributorEntityId = 'CONTRIBUTOR_ENTITY_ID', - HyperstructureEntityId = 'HYPERSTRUCTURE_ENTITY_ID', - Id = 'ID', - Timestamp = 'TIMESTAMP' -} - -export type S0_Eternum_HyperstructureContributionWhereInput = { - contributor_entity_id?: InputMaybe; - contributor_entity_idEQ?: InputMaybe; - contributor_entity_idGT?: InputMaybe; - contributor_entity_idGTE?: InputMaybe; - contributor_entity_idIN?: InputMaybe>>; - contributor_entity_idLIKE?: InputMaybe; - contributor_entity_idLT?: InputMaybe; - contributor_entity_idLTE?: InputMaybe; - contributor_entity_idNEQ?: InputMaybe; - contributor_entity_idNOTIN?: InputMaybe>>; - contributor_entity_idNOTLIKE?: InputMaybe; - hyperstructure_entity_id?: InputMaybe; - hyperstructure_entity_idEQ?: InputMaybe; - hyperstructure_entity_idGT?: InputMaybe; - hyperstructure_entity_idGTE?: InputMaybe; - hyperstructure_entity_idIN?: InputMaybe>>; - hyperstructure_entity_idLIKE?: InputMaybe; - hyperstructure_entity_idLT?: InputMaybe; - hyperstructure_entity_idLTE?: InputMaybe; - hyperstructure_entity_idNEQ?: InputMaybe; - hyperstructure_entity_idNOTIN?: InputMaybe>>; - hyperstructure_entity_idNOTLIKE?: InputMaybe; - id?: InputMaybe; - idEQ?: InputMaybe; - idGT?: InputMaybe; - idGTE?: InputMaybe; - idIN?: InputMaybe>>; - idLIKE?: InputMaybe; - idLT?: InputMaybe; - idLTE?: InputMaybe; - idNEQ?: InputMaybe; - idNOTIN?: InputMaybe>>; - idNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_HyperstructureFinishedOrder = { + field: s1_eternum_HyperstructureContributionOrderField; +}; + +export enum s1_eternum_HyperstructureContributionOrderField { + Contributions = "CONTRIBUTIONS", + ContributorEntityId = "CONTRIBUTOR_ENTITY_ID", + HyperstructureEntityId = "HYPERSTRUCTURE_ENTITY_ID", + Id = "ID", + Timestamp = "TIMESTAMP", +} + +export type s1_eternum_HyperstructureContributionWhereInput = { + contributor_entity_id?: InputMaybe; + contributor_entity_idEQ?: InputMaybe; + contributor_entity_idGT?: InputMaybe; + contributor_entity_idGTE?: InputMaybe; + contributor_entity_idIN?: InputMaybe>>; + contributor_entity_idLIKE?: InputMaybe; + contributor_entity_idLT?: InputMaybe; + contributor_entity_idLTE?: InputMaybe; + contributor_entity_idNEQ?: InputMaybe; + contributor_entity_idNOTIN?: InputMaybe>>; + contributor_entity_idNOTLIKE?: InputMaybe; + hyperstructure_entity_id?: InputMaybe; + hyperstructure_entity_idEQ?: InputMaybe; + hyperstructure_entity_idGT?: InputMaybe; + hyperstructure_entity_idGTE?: InputMaybe; + hyperstructure_entity_idIN?: InputMaybe>>; + hyperstructure_entity_idLIKE?: InputMaybe; + hyperstructure_entity_idLT?: InputMaybe; + hyperstructure_entity_idLTE?: InputMaybe; + hyperstructure_entity_idNEQ?: InputMaybe; + hyperstructure_entity_idNOTIN?: InputMaybe>>; + hyperstructure_entity_idNOTLIKE?: InputMaybe; + id?: InputMaybe; + idEQ?: InputMaybe; + idGT?: InputMaybe; + idGTE?: InputMaybe; + idIN?: InputMaybe>>; + idLIKE?: InputMaybe; + idLT?: InputMaybe; + idLTE?: InputMaybe; + idNEQ?: InputMaybe; + idNOTIN?: InputMaybe>>; + idNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_HyperstructureFinishedOrder = { direction: OrderDirection; - field: S0_Eternum_HyperstructureFinishedOrderField; -}; - -export enum S0_Eternum_HyperstructureFinishedOrderField { - ContributorEntityId = 'CONTRIBUTOR_ENTITY_ID', - HyperstructureEntityId = 'HYPERSTRUCTURE_ENTITY_ID', - HyperstructureOwnerName = 'HYPERSTRUCTURE_OWNER_NAME', - Id = 'ID', - Timestamp = 'TIMESTAMP' -} - -export type S0_Eternum_HyperstructureFinishedWhereInput = { - contributor_entity_id?: InputMaybe; - contributor_entity_idEQ?: InputMaybe; - contributor_entity_idGT?: InputMaybe; - contributor_entity_idGTE?: InputMaybe; - contributor_entity_idIN?: InputMaybe>>; - contributor_entity_idLIKE?: InputMaybe; - contributor_entity_idLT?: InputMaybe; - contributor_entity_idLTE?: InputMaybe; - contributor_entity_idNEQ?: InputMaybe; - contributor_entity_idNOTIN?: InputMaybe>>; - contributor_entity_idNOTLIKE?: InputMaybe; - hyperstructure_entity_id?: InputMaybe; - hyperstructure_entity_idEQ?: InputMaybe; - hyperstructure_entity_idGT?: InputMaybe; - hyperstructure_entity_idGTE?: InputMaybe; - hyperstructure_entity_idIN?: InputMaybe>>; - hyperstructure_entity_idLIKE?: InputMaybe; - hyperstructure_entity_idLT?: InputMaybe; - hyperstructure_entity_idLTE?: InputMaybe; - hyperstructure_entity_idNEQ?: InputMaybe; - hyperstructure_entity_idNOTIN?: InputMaybe>>; - hyperstructure_entity_idNOTLIKE?: InputMaybe; - hyperstructure_owner_name?: InputMaybe; - hyperstructure_owner_nameEQ?: InputMaybe; - hyperstructure_owner_nameGT?: InputMaybe; - hyperstructure_owner_nameGTE?: InputMaybe; - hyperstructure_owner_nameIN?: InputMaybe>>; - hyperstructure_owner_nameLIKE?: InputMaybe; - hyperstructure_owner_nameLT?: InputMaybe; - hyperstructure_owner_nameLTE?: InputMaybe; - hyperstructure_owner_nameNEQ?: InputMaybe; - hyperstructure_owner_nameNOTIN?: InputMaybe>>; - hyperstructure_owner_nameNOTLIKE?: InputMaybe; - id?: InputMaybe; - idEQ?: InputMaybe; - idGT?: InputMaybe; - idGTE?: InputMaybe; - idIN?: InputMaybe>>; - idLIKE?: InputMaybe; - idLT?: InputMaybe; - idLTE?: InputMaybe; - idNEQ?: InputMaybe; - idNOTIN?: InputMaybe>>; - idNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_HyperstructureOrder = { + field: s1_eternum_HyperstructureFinishedOrderField; +}; + +export enum s1_eternum_HyperstructureFinishedOrderField { + ContributorEntityId = "CONTRIBUTOR_ENTITY_ID", + HyperstructureEntityId = "HYPERSTRUCTURE_ENTITY_ID", + HyperstructureOwnerName = "HYPERSTRUCTURE_OWNER_NAME", + Id = "ID", + Timestamp = "TIMESTAMP", +} + +export type s1_eternum_HyperstructureFinishedWhereInput = { + contributor_entity_id?: InputMaybe; + contributor_entity_idEQ?: InputMaybe; + contributor_entity_idGT?: InputMaybe; + contributor_entity_idGTE?: InputMaybe; + contributor_entity_idIN?: InputMaybe>>; + contributor_entity_idLIKE?: InputMaybe; + contributor_entity_idLT?: InputMaybe; + contributor_entity_idLTE?: InputMaybe; + contributor_entity_idNEQ?: InputMaybe; + contributor_entity_idNOTIN?: InputMaybe>>; + contributor_entity_idNOTLIKE?: InputMaybe; + hyperstructure_entity_id?: InputMaybe; + hyperstructure_entity_idEQ?: InputMaybe; + hyperstructure_entity_idGT?: InputMaybe; + hyperstructure_entity_idGTE?: InputMaybe; + hyperstructure_entity_idIN?: InputMaybe>>; + hyperstructure_entity_idLIKE?: InputMaybe; + hyperstructure_entity_idLT?: InputMaybe; + hyperstructure_entity_idLTE?: InputMaybe; + hyperstructure_entity_idNEQ?: InputMaybe; + hyperstructure_entity_idNOTIN?: InputMaybe>>; + hyperstructure_entity_idNOTLIKE?: InputMaybe; + hyperstructure_owner_name?: InputMaybe; + hyperstructure_owner_nameEQ?: InputMaybe; + hyperstructure_owner_nameGT?: InputMaybe; + hyperstructure_owner_nameGTE?: InputMaybe; + hyperstructure_owner_nameIN?: InputMaybe>>; + hyperstructure_owner_nameLIKE?: InputMaybe; + hyperstructure_owner_nameLT?: InputMaybe; + hyperstructure_owner_nameLTE?: InputMaybe; + hyperstructure_owner_nameNEQ?: InputMaybe; + hyperstructure_owner_nameNOTIN?: InputMaybe>>; + hyperstructure_owner_nameNOTLIKE?: InputMaybe; + id?: InputMaybe; + idEQ?: InputMaybe; + idGT?: InputMaybe; + idGTE?: InputMaybe; + idIN?: InputMaybe>>; + idLIKE?: InputMaybe; + idLT?: InputMaybe; + idLTE?: InputMaybe; + idNEQ?: InputMaybe; + idNOTIN?: InputMaybe>>; + idNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_HyperstructureOrder = { direction: OrderDirection; - field: S0_Eternum_HyperstructureOrderField; + field: s1_eternum_HyperstructureOrderField; }; -export enum S0_Eternum_HyperstructureOrderField { - Access = 'ACCESS', - Completed = 'COMPLETED', - CurrentEpoch = 'CURRENT_EPOCH', - EntityId = 'ENTITY_ID', - LastUpdatedBy = 'LAST_UPDATED_BY', - LastUpdatedTimestamp = 'LAST_UPDATED_TIMESTAMP', - Randomness = 'RANDOMNESS' +export enum s1_eternum_HyperstructureOrderField { + Access = "ACCESS", + Completed = "COMPLETED", + CurrentEpoch = "CURRENT_EPOCH", + EntityId = "ENTITY_ID", + LastUpdatedBy = "LAST_UPDATED_BY", + LastUpdatedTimestamp = "LAST_UPDATED_TIMESTAMP", + Randomness = "RANDOMNESS", } -export type S0_Eternum_HyperstructureResourceConfigOrder = { +export type s1_eternum_HyperstructureResourceConfigOrder = { direction: OrderDirection; - field: S0_Eternum_HyperstructureResourceConfigOrderField; -}; - -export enum S0_Eternum_HyperstructureResourceConfigOrderField { - ConfigId = 'CONFIG_ID', - MaxAmount = 'MAX_AMOUNT', - MinAmount = 'MIN_AMOUNT', - ResourceTier = 'RESOURCE_TIER' -} - -export type S0_Eternum_HyperstructureResourceConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - max_amount?: InputMaybe; - max_amountEQ?: InputMaybe; - max_amountGT?: InputMaybe; - max_amountGTE?: InputMaybe; - max_amountIN?: InputMaybe>>; - max_amountLIKE?: InputMaybe; - max_amountLT?: InputMaybe; - max_amountLTE?: InputMaybe; - max_amountNEQ?: InputMaybe; - max_amountNOTIN?: InputMaybe>>; - max_amountNOTLIKE?: InputMaybe; - min_amount?: InputMaybe; - min_amountEQ?: InputMaybe; - min_amountGT?: InputMaybe; - min_amountGTE?: InputMaybe; - min_amountIN?: InputMaybe>>; - min_amountLIKE?: InputMaybe; - min_amountLT?: InputMaybe; - min_amountLTE?: InputMaybe; - min_amountNEQ?: InputMaybe; - min_amountNOTIN?: InputMaybe>>; - min_amountNOTLIKE?: InputMaybe; - resource_tier?: InputMaybe; - resource_tierEQ?: InputMaybe; - resource_tierGT?: InputMaybe; - resource_tierGTE?: InputMaybe; - resource_tierIN?: InputMaybe>>; - resource_tierLIKE?: InputMaybe; - resource_tierLT?: InputMaybe; - resource_tierLTE?: InputMaybe; - resource_tierNEQ?: InputMaybe; - resource_tierNOTIN?: InputMaybe>>; - resource_tierNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_HyperstructureStartedOrder = { + field: s1_eternum_HyperstructureResourceConfigOrderField; +}; + +export enum s1_eternum_HyperstructureResourceConfigOrderField { + ConfigId = "CONFIG_ID", + MaxAmount = "MAX_AMOUNT", + MinAmount = "MIN_AMOUNT", + ResourceTier = "RESOURCE_TIER", +} + +export type s1_eternum_HyperstructureResourceConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + max_amount?: InputMaybe; + max_amountEQ?: InputMaybe; + max_amountGT?: InputMaybe; + max_amountGTE?: InputMaybe; + max_amountIN?: InputMaybe>>; + max_amountLIKE?: InputMaybe; + max_amountLT?: InputMaybe; + max_amountLTE?: InputMaybe; + max_amountNEQ?: InputMaybe; + max_amountNOTIN?: InputMaybe>>; + max_amountNOTLIKE?: InputMaybe; + min_amount?: InputMaybe; + min_amountEQ?: InputMaybe; + min_amountGT?: InputMaybe; + min_amountGTE?: InputMaybe; + min_amountIN?: InputMaybe>>; + min_amountLIKE?: InputMaybe; + min_amountLT?: InputMaybe; + min_amountLTE?: InputMaybe; + min_amountNEQ?: InputMaybe; + min_amountNOTIN?: InputMaybe>>; + min_amountNOTLIKE?: InputMaybe; + resource_tier?: InputMaybe; + resource_tierEQ?: InputMaybe; + resource_tierGT?: InputMaybe; + resource_tierGTE?: InputMaybe; + resource_tierIN?: InputMaybe>>; + resource_tierLIKE?: InputMaybe; + resource_tierLT?: InputMaybe; + resource_tierLTE?: InputMaybe; + resource_tierNEQ?: InputMaybe; + resource_tierNOTIN?: InputMaybe>>; + resource_tierNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_HyperstructureStartedOrder = { direction: OrderDirection; - field: S0_Eternum_HyperstructureStartedOrderField; -}; - -export enum S0_Eternum_HyperstructureStartedOrderField { - CreatorAddressName = 'CREATOR_ADDRESS_NAME', - HyperstructureEntityId = 'HYPERSTRUCTURE_ENTITY_ID', - Id = 'ID', - Timestamp = 'TIMESTAMP' -} - -export type S0_Eternum_HyperstructureStartedWhereInput = { - creator_address_name?: InputMaybe; - creator_address_nameEQ?: InputMaybe; - creator_address_nameGT?: InputMaybe; - creator_address_nameGTE?: InputMaybe; - creator_address_nameIN?: InputMaybe>>; - creator_address_nameLIKE?: InputMaybe; - creator_address_nameLT?: InputMaybe; - creator_address_nameLTE?: InputMaybe; - creator_address_nameNEQ?: InputMaybe; - creator_address_nameNOTIN?: InputMaybe>>; - creator_address_nameNOTLIKE?: InputMaybe; - hyperstructure_entity_id?: InputMaybe; - hyperstructure_entity_idEQ?: InputMaybe; - hyperstructure_entity_idGT?: InputMaybe; - hyperstructure_entity_idGTE?: InputMaybe; - hyperstructure_entity_idIN?: InputMaybe>>; - hyperstructure_entity_idLIKE?: InputMaybe; - hyperstructure_entity_idLT?: InputMaybe; - hyperstructure_entity_idLTE?: InputMaybe; - hyperstructure_entity_idNEQ?: InputMaybe; - hyperstructure_entity_idNOTIN?: InputMaybe>>; - hyperstructure_entity_idNOTLIKE?: InputMaybe; - id?: InputMaybe; - idEQ?: InputMaybe; - idGT?: InputMaybe; - idGTE?: InputMaybe; - idIN?: InputMaybe>>; - idLIKE?: InputMaybe; - idLT?: InputMaybe; - idLTE?: InputMaybe; - idNEQ?: InputMaybe; - idNOTIN?: InputMaybe>>; - idNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_HyperstructureWhereInput = { - access?: InputMaybe; - completed?: InputMaybe; - current_epoch?: InputMaybe; - current_epochEQ?: InputMaybe; - current_epochGT?: InputMaybe; - current_epochGTE?: InputMaybe; - current_epochIN?: InputMaybe>>; - current_epochLIKE?: InputMaybe; - current_epochLT?: InputMaybe; - current_epochLTE?: InputMaybe; - current_epochNEQ?: InputMaybe; - current_epochNOTIN?: InputMaybe>>; - current_epochNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - last_updated_by?: InputMaybe; - last_updated_byEQ?: InputMaybe; - last_updated_byGT?: InputMaybe; - last_updated_byGTE?: InputMaybe; - last_updated_byIN?: InputMaybe>>; - last_updated_byLIKE?: InputMaybe; - last_updated_byLT?: InputMaybe; - last_updated_byLTE?: InputMaybe; - last_updated_byNEQ?: InputMaybe; - last_updated_byNOTIN?: InputMaybe>>; - last_updated_byNOTLIKE?: InputMaybe; - last_updated_timestamp?: InputMaybe; - last_updated_timestampEQ?: InputMaybe; - last_updated_timestampGT?: InputMaybe; - last_updated_timestampGTE?: InputMaybe; - last_updated_timestampIN?: InputMaybe>>; - last_updated_timestampLIKE?: InputMaybe; - last_updated_timestampLT?: InputMaybe; - last_updated_timestampLTE?: InputMaybe; - last_updated_timestampNEQ?: InputMaybe; - last_updated_timestampNOTIN?: InputMaybe>>; - last_updated_timestampNOTLIKE?: InputMaybe; - randomness?: InputMaybe; - randomnessEQ?: InputMaybe; - randomnessGT?: InputMaybe; - randomnessGTE?: InputMaybe; - randomnessIN?: InputMaybe>>; - randomnessLIKE?: InputMaybe; - randomnessLT?: InputMaybe; - randomnessLTE?: InputMaybe; - randomnessNEQ?: InputMaybe; - randomnessNOTIN?: InputMaybe>>; - randomnessNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_JoinGuildOrder = { + field: s1_eternum_HyperstructureStartedOrderField; +}; + +export enum s1_eternum_HyperstructureStartedOrderField { + CreatorAddressName = "CREATOR_ADDRESS_NAME", + HyperstructureEntityId = "HYPERSTRUCTURE_ENTITY_ID", + Id = "ID", + Timestamp = "TIMESTAMP", +} + +export type s1_eternum_HyperstructureStartedWhereInput = { + creator_address_name?: InputMaybe; + creator_address_nameEQ?: InputMaybe; + creator_address_nameGT?: InputMaybe; + creator_address_nameGTE?: InputMaybe; + creator_address_nameIN?: InputMaybe>>; + creator_address_nameLIKE?: InputMaybe; + creator_address_nameLT?: InputMaybe; + creator_address_nameLTE?: InputMaybe; + creator_address_nameNEQ?: InputMaybe; + creator_address_nameNOTIN?: InputMaybe>>; + creator_address_nameNOTLIKE?: InputMaybe; + hyperstructure_entity_id?: InputMaybe; + hyperstructure_entity_idEQ?: InputMaybe; + hyperstructure_entity_idGT?: InputMaybe; + hyperstructure_entity_idGTE?: InputMaybe; + hyperstructure_entity_idIN?: InputMaybe>>; + hyperstructure_entity_idLIKE?: InputMaybe; + hyperstructure_entity_idLT?: InputMaybe; + hyperstructure_entity_idLTE?: InputMaybe; + hyperstructure_entity_idNEQ?: InputMaybe; + hyperstructure_entity_idNOTIN?: InputMaybe>>; + hyperstructure_entity_idNOTLIKE?: InputMaybe; + id?: InputMaybe; + idEQ?: InputMaybe; + idGT?: InputMaybe; + idGTE?: InputMaybe; + idIN?: InputMaybe>>; + idLIKE?: InputMaybe; + idLT?: InputMaybe; + idLTE?: InputMaybe; + idNEQ?: InputMaybe; + idNOTIN?: InputMaybe>>; + idNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_HyperstructureWhereInput = { + access?: InputMaybe; + completed?: InputMaybe; + current_epoch?: InputMaybe; + current_epochEQ?: InputMaybe; + current_epochGT?: InputMaybe; + current_epochGTE?: InputMaybe; + current_epochIN?: InputMaybe>>; + current_epochLIKE?: InputMaybe; + current_epochLT?: InputMaybe; + current_epochLTE?: InputMaybe; + current_epochNEQ?: InputMaybe; + current_epochNOTIN?: InputMaybe>>; + current_epochNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + last_updated_by?: InputMaybe; + last_updated_byEQ?: InputMaybe; + last_updated_byGT?: InputMaybe; + last_updated_byGTE?: InputMaybe; + last_updated_byIN?: InputMaybe>>; + last_updated_byLIKE?: InputMaybe; + last_updated_byLT?: InputMaybe; + last_updated_byLTE?: InputMaybe; + last_updated_byNEQ?: InputMaybe; + last_updated_byNOTIN?: InputMaybe>>; + last_updated_byNOTLIKE?: InputMaybe; + last_updated_timestamp?: InputMaybe; + last_updated_timestampEQ?: InputMaybe; + last_updated_timestampGT?: InputMaybe; + last_updated_timestampGTE?: InputMaybe; + last_updated_timestampIN?: InputMaybe>>; + last_updated_timestampLIKE?: InputMaybe; + last_updated_timestampLT?: InputMaybe; + last_updated_timestampLTE?: InputMaybe; + last_updated_timestampNEQ?: InputMaybe; + last_updated_timestampNOTIN?: InputMaybe>>; + last_updated_timestampNOTLIKE?: InputMaybe; + randomness?: InputMaybe; + randomnessEQ?: InputMaybe; + randomnessGT?: InputMaybe; + randomnessGTE?: InputMaybe; + randomnessIN?: InputMaybe>>; + randomnessLIKE?: InputMaybe; + randomnessLT?: InputMaybe; + randomnessLTE?: InputMaybe; + randomnessNEQ?: InputMaybe; + randomnessNOTIN?: InputMaybe>>; + randomnessNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_JoinGuildOrder = { direction: OrderDirection; - field: S0_Eternum_JoinGuildOrderField; -}; - -export enum S0_Eternum_JoinGuildOrderField { - Address = 'ADDRESS', - GuildEntityId = 'GUILD_ENTITY_ID', - GuildName = 'GUILD_NAME', - Timestamp = 'TIMESTAMP' -} - -export type S0_Eternum_JoinGuildWhereInput = { - address?: InputMaybe; - addressEQ?: InputMaybe; - addressGT?: InputMaybe; - addressGTE?: InputMaybe; - addressIN?: InputMaybe>>; - addressLIKE?: InputMaybe; - addressLT?: InputMaybe; - addressLTE?: InputMaybe; - addressNEQ?: InputMaybe; - addressNOTIN?: InputMaybe>>; - addressNOTLIKE?: InputMaybe; - guild_entity_id?: InputMaybe; - guild_entity_idEQ?: InputMaybe; - guild_entity_idGT?: InputMaybe; - guild_entity_idGTE?: InputMaybe; - guild_entity_idIN?: InputMaybe>>; - guild_entity_idLIKE?: InputMaybe; - guild_entity_idLT?: InputMaybe; - guild_entity_idLTE?: InputMaybe; - guild_entity_idNEQ?: InputMaybe; - guild_entity_idNOTIN?: InputMaybe>>; - guild_entity_idNOTLIKE?: InputMaybe; - guild_name?: InputMaybe; - guild_nameEQ?: InputMaybe; - guild_nameGT?: InputMaybe; - guild_nameGTE?: InputMaybe; - guild_nameIN?: InputMaybe>>; - guild_nameLIKE?: InputMaybe; - guild_nameLT?: InputMaybe; - guild_nameLTE?: InputMaybe; - guild_nameNEQ?: InputMaybe; - guild_nameNOTIN?: InputMaybe>>; - guild_nameNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_LeaderboardEntryOrder = { + field: s1_eternum_JoinGuildOrderField; +}; + +export enum s1_eternum_JoinGuildOrderField { + Address = "ADDRESS", + GuildEntityId = "GUILD_ENTITY_ID", + GuildName = "GUILD_NAME", + Timestamp = "TIMESTAMP", +} + +export type s1_eternum_JoinGuildWhereInput = { + address?: InputMaybe; + addressEQ?: InputMaybe; + addressGT?: InputMaybe; + addressGTE?: InputMaybe; + addressIN?: InputMaybe>>; + addressLIKE?: InputMaybe; + addressLT?: InputMaybe; + addressLTE?: InputMaybe; + addressNEQ?: InputMaybe; + addressNOTIN?: InputMaybe>>; + addressNOTLIKE?: InputMaybe; + guild_entity_id?: InputMaybe; + guild_entity_idEQ?: InputMaybe; + guild_entity_idGT?: InputMaybe; + guild_entity_idGTE?: InputMaybe; + guild_entity_idIN?: InputMaybe>>; + guild_entity_idLIKE?: InputMaybe; + guild_entity_idLT?: InputMaybe; + guild_entity_idLTE?: InputMaybe; + guild_entity_idNEQ?: InputMaybe; + guild_entity_idNOTIN?: InputMaybe>>; + guild_entity_idNOTLIKE?: InputMaybe; + guild_name?: InputMaybe; + guild_nameEQ?: InputMaybe; + guild_nameGT?: InputMaybe; + guild_nameGTE?: InputMaybe; + guild_nameIN?: InputMaybe>>; + guild_nameLIKE?: InputMaybe; + guild_nameLT?: InputMaybe; + guild_nameLTE?: InputMaybe; + guild_nameNEQ?: InputMaybe; + guild_nameNOTIN?: InputMaybe>>; + guild_nameNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_LeaderboardEntryOrder = { direction: OrderDirection; - field: S0_Eternum_LeaderboardEntryOrderField; -}; - -export enum S0_Eternum_LeaderboardEntryOrderField { - Address = 'ADDRESS', - Points = 'POINTS' -} - -export type S0_Eternum_LeaderboardEntryWhereInput = { - address?: InputMaybe; - addressEQ?: InputMaybe; - addressGT?: InputMaybe; - addressGTE?: InputMaybe; - addressIN?: InputMaybe>>; - addressLIKE?: InputMaybe; - addressLT?: InputMaybe; - addressLTE?: InputMaybe; - addressNEQ?: InputMaybe; - addressNOTIN?: InputMaybe>>; - addressNOTLIKE?: InputMaybe; - points?: InputMaybe; - pointsEQ?: InputMaybe; - pointsGT?: InputMaybe; - pointsGTE?: InputMaybe; - pointsIN?: InputMaybe>>; - pointsLIKE?: InputMaybe; - pointsLT?: InputMaybe; - pointsLTE?: InputMaybe; - pointsNEQ?: InputMaybe; - pointsNOTIN?: InputMaybe>>; - pointsNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_LeaderboardOrder = { + field: s1_eternum_LeaderboardEntryOrderField; +}; + +export enum s1_eternum_LeaderboardEntryOrderField { + Address = "ADDRESS", + Points = "POINTS", +} + +export type s1_eternum_LeaderboardEntryWhereInput = { + address?: InputMaybe; + addressEQ?: InputMaybe; + addressGT?: InputMaybe; + addressGTE?: InputMaybe; + addressIN?: InputMaybe>>; + addressLIKE?: InputMaybe; + addressLT?: InputMaybe; + addressLTE?: InputMaybe; + addressNEQ?: InputMaybe; + addressNOTIN?: InputMaybe>>; + addressNOTLIKE?: InputMaybe; + points?: InputMaybe; + pointsEQ?: InputMaybe; + pointsGT?: InputMaybe; + pointsGTE?: InputMaybe; + pointsIN?: InputMaybe>>; + pointsLIKE?: InputMaybe; + pointsLT?: InputMaybe; + pointsLTE?: InputMaybe; + pointsNEQ?: InputMaybe; + pointsNOTIN?: InputMaybe>>; + pointsNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_LeaderboardOrder = { direction: OrderDirection; - field: S0_Eternum_LeaderboardOrderField; + field: s1_eternum_LeaderboardOrderField; }; -export enum S0_Eternum_LeaderboardOrderField { - ConfigId = 'CONFIG_ID', - DistributionStarted = 'DISTRIBUTION_STARTED', - RegistrationEndTimestamp = 'REGISTRATION_END_TIMESTAMP', - TotalPoints = 'TOTAL_POINTS', - TotalPricePool = 'TOTAL_PRICE_POOL' +export enum s1_eternum_LeaderboardOrderField { + ConfigId = "CONFIG_ID", + DistributionStarted = "DISTRIBUTION_STARTED", + RegistrationEndTimestamp = "REGISTRATION_END_TIMESTAMP", + TotalPoints = "TOTAL_POINTS", + TotalPricePool = "TOTAL_PRICE_POOL", } -export type S0_Eternum_LeaderboardRegisterContributionOrder = { +export type s1_eternum_LeaderboardRegisterContributionOrder = { direction: OrderDirection; - field: S0_Eternum_LeaderboardRegisterContributionOrderField; -}; - -export enum S0_Eternum_LeaderboardRegisterContributionOrderField { - Address = 'ADDRESS', - HyperstructureEntityId = 'HYPERSTRUCTURE_ENTITY_ID', - Registered = 'REGISTERED' -} - -export type S0_Eternum_LeaderboardRegisterContributionWhereInput = { - address?: InputMaybe; - addressEQ?: InputMaybe; - addressGT?: InputMaybe; - addressGTE?: InputMaybe; - addressIN?: InputMaybe>>; - addressLIKE?: InputMaybe; - addressLT?: InputMaybe; - addressLTE?: InputMaybe; - addressNEQ?: InputMaybe; - addressNOTIN?: InputMaybe>>; - addressNOTLIKE?: InputMaybe; - hyperstructure_entity_id?: InputMaybe; - hyperstructure_entity_idEQ?: InputMaybe; - hyperstructure_entity_idGT?: InputMaybe; - hyperstructure_entity_idGTE?: InputMaybe; - hyperstructure_entity_idIN?: InputMaybe>>; - hyperstructure_entity_idLIKE?: InputMaybe; - hyperstructure_entity_idLT?: InputMaybe; - hyperstructure_entity_idLTE?: InputMaybe; - hyperstructure_entity_idNEQ?: InputMaybe; - hyperstructure_entity_idNOTIN?: InputMaybe>>; - hyperstructure_entity_idNOTLIKE?: InputMaybe; - registered?: InputMaybe; -}; - -export type S0_Eternum_LeaderboardRegisterShareOrder = { + field: s1_eternum_LeaderboardRegisterContributionOrderField; +}; + +export enum s1_eternum_LeaderboardRegisterContributionOrderField { + Address = "ADDRESS", + HyperstructureEntityId = "HYPERSTRUCTURE_ENTITY_ID", + Registered = "REGISTERED", +} + +export type s1_eternum_LeaderboardRegisterContributionWhereInput = { + address?: InputMaybe; + addressEQ?: InputMaybe; + addressGT?: InputMaybe; + addressGTE?: InputMaybe; + addressIN?: InputMaybe>>; + addressLIKE?: InputMaybe; + addressLT?: InputMaybe; + addressLTE?: InputMaybe; + addressNEQ?: InputMaybe; + addressNOTIN?: InputMaybe>>; + addressNOTLIKE?: InputMaybe; + hyperstructure_entity_id?: InputMaybe; + hyperstructure_entity_idEQ?: InputMaybe; + hyperstructure_entity_idGT?: InputMaybe; + hyperstructure_entity_idGTE?: InputMaybe; + hyperstructure_entity_idIN?: InputMaybe>>; + hyperstructure_entity_idLIKE?: InputMaybe; + hyperstructure_entity_idLT?: InputMaybe; + hyperstructure_entity_idLTE?: InputMaybe; + hyperstructure_entity_idNEQ?: InputMaybe; + hyperstructure_entity_idNOTIN?: InputMaybe>>; + hyperstructure_entity_idNOTLIKE?: InputMaybe; + registered?: InputMaybe; +}; + +export type s1_eternum_LeaderboardRegisterShareOrder = { direction: OrderDirection; - field: S0_Eternum_LeaderboardRegisterShareOrderField; -}; - -export enum S0_Eternum_LeaderboardRegisterShareOrderField { - Address = 'ADDRESS', - Epoch = 'EPOCH', - HyperstructureEntityId = 'HYPERSTRUCTURE_ENTITY_ID', - Registered = 'REGISTERED' -} - -export type S0_Eternum_LeaderboardRegisterShareWhereInput = { - address?: InputMaybe; - addressEQ?: InputMaybe; - addressGT?: InputMaybe; - addressGTE?: InputMaybe; - addressIN?: InputMaybe>>; - addressLIKE?: InputMaybe; - addressLT?: InputMaybe; - addressLTE?: InputMaybe; - addressNEQ?: InputMaybe; - addressNOTIN?: InputMaybe>>; - addressNOTLIKE?: InputMaybe; - epoch?: InputMaybe; - epochEQ?: InputMaybe; - epochGT?: InputMaybe; - epochGTE?: InputMaybe; - epochIN?: InputMaybe>>; - epochLIKE?: InputMaybe; - epochLT?: InputMaybe; - epochLTE?: InputMaybe; - epochNEQ?: InputMaybe; - epochNOTIN?: InputMaybe>>; - epochNOTLIKE?: InputMaybe; - hyperstructure_entity_id?: InputMaybe; - hyperstructure_entity_idEQ?: InputMaybe; - hyperstructure_entity_idGT?: InputMaybe; - hyperstructure_entity_idGTE?: InputMaybe; - hyperstructure_entity_idIN?: InputMaybe>>; - hyperstructure_entity_idLIKE?: InputMaybe; - hyperstructure_entity_idLT?: InputMaybe; - hyperstructure_entity_idLTE?: InputMaybe; - hyperstructure_entity_idNEQ?: InputMaybe; - hyperstructure_entity_idNOTIN?: InputMaybe>>; - hyperstructure_entity_idNOTLIKE?: InputMaybe; - registered?: InputMaybe; -}; - -export type S0_Eternum_LeaderboardRegisteredOrder = { + field: s1_eternum_LeaderboardRegisterShareOrderField; +}; + +export enum s1_eternum_LeaderboardRegisterShareOrderField { + Address = "ADDRESS", + Epoch = "EPOCH", + HyperstructureEntityId = "HYPERSTRUCTURE_ENTITY_ID", + Registered = "REGISTERED", +} + +export type s1_eternum_LeaderboardRegisterShareWhereInput = { + address?: InputMaybe; + addressEQ?: InputMaybe; + addressGT?: InputMaybe; + addressGTE?: InputMaybe; + addressIN?: InputMaybe>>; + addressLIKE?: InputMaybe; + addressLT?: InputMaybe; + addressLTE?: InputMaybe; + addressNEQ?: InputMaybe; + addressNOTIN?: InputMaybe>>; + addressNOTLIKE?: InputMaybe; + epoch?: InputMaybe; + epochEQ?: InputMaybe; + epochGT?: InputMaybe; + epochGTE?: InputMaybe; + epochIN?: InputMaybe>>; + epochLIKE?: InputMaybe; + epochLT?: InputMaybe; + epochLTE?: InputMaybe; + epochNEQ?: InputMaybe; + epochNOTIN?: InputMaybe>>; + epochNOTLIKE?: InputMaybe; + hyperstructure_entity_id?: InputMaybe; + hyperstructure_entity_idEQ?: InputMaybe; + hyperstructure_entity_idGT?: InputMaybe; + hyperstructure_entity_idGTE?: InputMaybe; + hyperstructure_entity_idIN?: InputMaybe>>; + hyperstructure_entity_idLIKE?: InputMaybe; + hyperstructure_entity_idLT?: InputMaybe; + hyperstructure_entity_idLTE?: InputMaybe; + hyperstructure_entity_idNEQ?: InputMaybe; + hyperstructure_entity_idNOTIN?: InputMaybe>>; + hyperstructure_entity_idNOTLIKE?: InputMaybe; + registered?: InputMaybe; +}; + +export type s1_eternum_LeaderboardRegisteredOrder = { direction: OrderDirection; - field: S0_Eternum_LeaderboardRegisteredOrderField; + field: s1_eternum_LeaderboardRegisteredOrderField; }; -export enum S0_Eternum_LeaderboardRegisteredOrderField { - Address = 'ADDRESS', - Registered = 'REGISTERED' +export enum s1_eternum_LeaderboardRegisteredOrderField { + Address = "ADDRESS", + Registered = "REGISTERED", } -export type S0_Eternum_LeaderboardRegisteredWhereInput = { - address?: InputMaybe; - addressEQ?: InputMaybe; - addressGT?: InputMaybe; - addressGTE?: InputMaybe; - addressIN?: InputMaybe>>; - addressLIKE?: InputMaybe; - addressLT?: InputMaybe; - addressLTE?: InputMaybe; - addressNEQ?: InputMaybe; - addressNOTIN?: InputMaybe>>; - addressNOTLIKE?: InputMaybe; - registered?: InputMaybe; +export type s1_eternum_LeaderboardRegisteredWhereInput = { + address?: InputMaybe; + addressEQ?: InputMaybe; + addressGT?: InputMaybe; + addressGTE?: InputMaybe; + addressIN?: InputMaybe>>; + addressLIKE?: InputMaybe; + addressLT?: InputMaybe; + addressLTE?: InputMaybe; + addressNEQ?: InputMaybe; + addressNOTIN?: InputMaybe>>; + addressNOTLIKE?: InputMaybe; + registered?: InputMaybe; }; -export type S0_Eternum_LeaderboardRewardClaimedOrder = { +export type s1_eternum_LeaderboardRewardClaimedOrder = { direction: OrderDirection; - field: S0_Eternum_LeaderboardRewardClaimedOrderField; -}; - -export enum S0_Eternum_LeaderboardRewardClaimedOrderField { - Address = 'ADDRESS', - Claimed = 'CLAIMED' -} - -export type S0_Eternum_LeaderboardRewardClaimedWhereInput = { - address?: InputMaybe; - addressEQ?: InputMaybe; - addressGT?: InputMaybe; - addressGTE?: InputMaybe; - addressIN?: InputMaybe>>; - addressLIKE?: InputMaybe; - addressLT?: InputMaybe; - addressLTE?: InputMaybe; - addressNEQ?: InputMaybe; - addressNOTIN?: InputMaybe>>; - addressNOTLIKE?: InputMaybe; - claimed?: InputMaybe; -}; - -export type S0_Eternum_LeaderboardWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - distribution_started?: InputMaybe; - registration_end_timestamp?: InputMaybe; - registration_end_timestampEQ?: InputMaybe; - registration_end_timestampGT?: InputMaybe; - registration_end_timestampGTE?: InputMaybe; - registration_end_timestampIN?: InputMaybe>>; - registration_end_timestampLIKE?: InputMaybe; - registration_end_timestampLT?: InputMaybe; - registration_end_timestampLTE?: InputMaybe; - registration_end_timestampNEQ?: InputMaybe; - registration_end_timestampNOTIN?: InputMaybe>>; - registration_end_timestampNOTLIKE?: InputMaybe; - total_points?: InputMaybe; - total_pointsEQ?: InputMaybe; - total_pointsGT?: InputMaybe; - total_pointsGTE?: InputMaybe; - total_pointsIN?: InputMaybe>>; - total_pointsLIKE?: InputMaybe; - total_pointsLT?: InputMaybe; - total_pointsLTE?: InputMaybe; - total_pointsNEQ?: InputMaybe; - total_pointsNOTIN?: InputMaybe>>; - total_pointsNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_LevelingConfigOrder = { + field: s1_eternum_LeaderboardRewardClaimedOrderField; +}; + +export enum s1_eternum_LeaderboardRewardClaimedOrderField { + Address = "ADDRESS", + Claimed = "CLAIMED", +} + +export type s1_eternum_LeaderboardRewardClaimedWhereInput = { + address?: InputMaybe; + addressEQ?: InputMaybe; + addressGT?: InputMaybe; + addressGTE?: InputMaybe; + addressIN?: InputMaybe>>; + addressLIKE?: InputMaybe; + addressLT?: InputMaybe; + addressLTE?: InputMaybe; + addressNEQ?: InputMaybe; + addressNOTIN?: InputMaybe>>; + addressNOTLIKE?: InputMaybe; + claimed?: InputMaybe; +}; + +export type s1_eternum_LeaderboardWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + distribution_started?: InputMaybe; + registration_end_timestamp?: InputMaybe; + registration_end_timestampEQ?: InputMaybe; + registration_end_timestampGT?: InputMaybe; + registration_end_timestampGTE?: InputMaybe; + registration_end_timestampIN?: InputMaybe>>; + registration_end_timestampLIKE?: InputMaybe; + registration_end_timestampLT?: InputMaybe; + registration_end_timestampLTE?: InputMaybe; + registration_end_timestampNEQ?: InputMaybe; + registration_end_timestampNOTIN?: InputMaybe>>; + registration_end_timestampNOTLIKE?: InputMaybe; + total_points?: InputMaybe; + total_pointsEQ?: InputMaybe; + total_pointsGT?: InputMaybe; + total_pointsGTE?: InputMaybe; + total_pointsIN?: InputMaybe>>; + total_pointsLIKE?: InputMaybe; + total_pointsLT?: InputMaybe; + total_pointsLTE?: InputMaybe; + total_pointsNEQ?: InputMaybe; + total_pointsNOTIN?: InputMaybe>>; + total_pointsNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_LevelingConfigOrder = { direction: OrderDirection; - field: S0_Eternum_LevelingConfigOrderField; -}; - -export enum S0_Eternum_LevelingConfigOrderField { - BaseMultiplier = 'BASE_MULTIPLIER', - ConfigId = 'CONFIG_ID', - CostPercentageScaled = 'COST_PERCENTAGE_SCALED', - DecayInterval = 'DECAY_INTERVAL', - DecayScaled = 'DECAY_SCALED', - FishBaseAmount = 'FISH_BASE_AMOUNT', - MaxLevel = 'MAX_LEVEL', - Resource_1CostCount = 'RESOURCE_1_COST_COUNT', - Resource_1CostId = 'RESOURCE_1_COST_ID', - Resource_2CostCount = 'RESOURCE_2_COST_COUNT', - Resource_2CostId = 'RESOURCE_2_COST_ID', - Resource_3CostCount = 'RESOURCE_3_COST_COUNT', - Resource_3CostId = 'RESOURCE_3_COST_ID', - WheatBaseAmount = 'WHEAT_BASE_AMOUNT' -} - -export type S0_Eternum_LevelingConfigWhereInput = { - base_multiplier?: InputMaybe; - base_multiplierEQ?: InputMaybe; - base_multiplierGT?: InputMaybe; - base_multiplierGTE?: InputMaybe; - base_multiplierIN?: InputMaybe>>; - base_multiplierLIKE?: InputMaybe; - base_multiplierLT?: InputMaybe; - base_multiplierLTE?: InputMaybe; - base_multiplierNEQ?: InputMaybe; - base_multiplierNOTIN?: InputMaybe>>; - base_multiplierNOTLIKE?: InputMaybe; - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - cost_percentage_scaled?: InputMaybe; - cost_percentage_scaledEQ?: InputMaybe; - cost_percentage_scaledGT?: InputMaybe; - cost_percentage_scaledGTE?: InputMaybe; - cost_percentage_scaledIN?: InputMaybe>>; - cost_percentage_scaledLIKE?: InputMaybe; - cost_percentage_scaledLT?: InputMaybe; - cost_percentage_scaledLTE?: InputMaybe; - cost_percentage_scaledNEQ?: InputMaybe; - cost_percentage_scaledNOTIN?: InputMaybe>>; - cost_percentage_scaledNOTLIKE?: InputMaybe; - decay_interval?: InputMaybe; - decay_intervalEQ?: InputMaybe; - decay_intervalGT?: InputMaybe; - decay_intervalGTE?: InputMaybe; - decay_intervalIN?: InputMaybe>>; - decay_intervalLIKE?: InputMaybe; - decay_intervalLT?: InputMaybe; - decay_intervalLTE?: InputMaybe; - decay_intervalNEQ?: InputMaybe; - decay_intervalNOTIN?: InputMaybe>>; - decay_intervalNOTLIKE?: InputMaybe; - decay_scaled?: InputMaybe; - decay_scaledEQ?: InputMaybe; - decay_scaledGT?: InputMaybe; - decay_scaledGTE?: InputMaybe; - decay_scaledIN?: InputMaybe>>; - decay_scaledLIKE?: InputMaybe; - decay_scaledLT?: InputMaybe; - decay_scaledLTE?: InputMaybe; - decay_scaledNEQ?: InputMaybe; - decay_scaledNOTIN?: InputMaybe>>; - decay_scaledNOTLIKE?: InputMaybe; - fish_base_amount?: InputMaybe; - fish_base_amountEQ?: InputMaybe; - fish_base_amountGT?: InputMaybe; - fish_base_amountGTE?: InputMaybe; - fish_base_amountIN?: InputMaybe>>; - fish_base_amountLIKE?: InputMaybe; - fish_base_amountLT?: InputMaybe; - fish_base_amountLTE?: InputMaybe; - fish_base_amountNEQ?: InputMaybe; - fish_base_amountNOTIN?: InputMaybe>>; - fish_base_amountNOTLIKE?: InputMaybe; - max_level?: InputMaybe; - max_levelEQ?: InputMaybe; - max_levelGT?: InputMaybe; - max_levelGTE?: InputMaybe; - max_levelIN?: InputMaybe>>; - max_levelLIKE?: InputMaybe; - max_levelLT?: InputMaybe; - max_levelLTE?: InputMaybe; - max_levelNEQ?: InputMaybe; - max_levelNOTIN?: InputMaybe>>; - max_levelNOTLIKE?: InputMaybe; - resource_1_cost_count?: InputMaybe; - resource_1_cost_countEQ?: InputMaybe; - resource_1_cost_countGT?: InputMaybe; - resource_1_cost_countGTE?: InputMaybe; - resource_1_cost_countIN?: InputMaybe>>; - resource_1_cost_countLIKE?: InputMaybe; - resource_1_cost_countLT?: InputMaybe; - resource_1_cost_countLTE?: InputMaybe; - resource_1_cost_countNEQ?: InputMaybe; - resource_1_cost_countNOTIN?: InputMaybe>>; - resource_1_cost_countNOTLIKE?: InputMaybe; - resource_1_cost_id?: InputMaybe; - resource_1_cost_idEQ?: InputMaybe; - resource_1_cost_idGT?: InputMaybe; - resource_1_cost_idGTE?: InputMaybe; - resource_1_cost_idIN?: InputMaybe>>; - resource_1_cost_idLIKE?: InputMaybe; - resource_1_cost_idLT?: InputMaybe; - resource_1_cost_idLTE?: InputMaybe; - resource_1_cost_idNEQ?: InputMaybe; - resource_1_cost_idNOTIN?: InputMaybe>>; - resource_1_cost_idNOTLIKE?: InputMaybe; - resource_2_cost_count?: InputMaybe; - resource_2_cost_countEQ?: InputMaybe; - resource_2_cost_countGT?: InputMaybe; - resource_2_cost_countGTE?: InputMaybe; - resource_2_cost_countIN?: InputMaybe>>; - resource_2_cost_countLIKE?: InputMaybe; - resource_2_cost_countLT?: InputMaybe; - resource_2_cost_countLTE?: InputMaybe; - resource_2_cost_countNEQ?: InputMaybe; - resource_2_cost_countNOTIN?: InputMaybe>>; - resource_2_cost_countNOTLIKE?: InputMaybe; - resource_2_cost_id?: InputMaybe; - resource_2_cost_idEQ?: InputMaybe; - resource_2_cost_idGT?: InputMaybe; - resource_2_cost_idGTE?: InputMaybe; - resource_2_cost_idIN?: InputMaybe>>; - resource_2_cost_idLIKE?: InputMaybe; - resource_2_cost_idLT?: InputMaybe; - resource_2_cost_idLTE?: InputMaybe; - resource_2_cost_idNEQ?: InputMaybe; - resource_2_cost_idNOTIN?: InputMaybe>>; - resource_2_cost_idNOTLIKE?: InputMaybe; - resource_3_cost_count?: InputMaybe; - resource_3_cost_countEQ?: InputMaybe; - resource_3_cost_countGT?: InputMaybe; - resource_3_cost_countGTE?: InputMaybe; - resource_3_cost_countIN?: InputMaybe>>; - resource_3_cost_countLIKE?: InputMaybe; - resource_3_cost_countLT?: InputMaybe; - resource_3_cost_countLTE?: InputMaybe; - resource_3_cost_countNEQ?: InputMaybe; - resource_3_cost_countNOTIN?: InputMaybe>>; - resource_3_cost_countNOTLIKE?: InputMaybe; - resource_3_cost_id?: InputMaybe; - resource_3_cost_idEQ?: InputMaybe; - resource_3_cost_idGT?: InputMaybe; - resource_3_cost_idGTE?: InputMaybe; - resource_3_cost_idIN?: InputMaybe>>; - resource_3_cost_idLIKE?: InputMaybe; - resource_3_cost_idLT?: InputMaybe; - resource_3_cost_idLTE?: InputMaybe; - resource_3_cost_idNEQ?: InputMaybe; - resource_3_cost_idNOTIN?: InputMaybe>>; - resource_3_cost_idNOTLIKE?: InputMaybe; - wheat_base_amount?: InputMaybe; - wheat_base_amountEQ?: InputMaybe; - wheat_base_amountGT?: InputMaybe; - wheat_base_amountGTE?: InputMaybe; - wheat_base_amountIN?: InputMaybe>>; - wheat_base_amountLIKE?: InputMaybe; - wheat_base_amountLT?: InputMaybe; - wheat_base_amountLTE?: InputMaybe; - wheat_base_amountNEQ?: InputMaybe; - wheat_base_amountNOTIN?: InputMaybe>>; - wheat_base_amountNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_LiquidityEventOrder = { + field: s1_eternum_LevelingConfigOrderField; +}; + +export enum s1_eternum_LevelingConfigOrderField { + BaseMultiplier = "BASE_MULTIPLIER", + ConfigId = "CONFIG_ID", + CostPercentageScaled = "COST_PERCENTAGE_SCALED", + DecayInterval = "DECAY_INTERVAL", + DecayScaled = "DECAY_SCALED", + FishBaseAmount = "FISH_BASE_AMOUNT", + MaxLevel = "MAX_LEVEL", + Resource_1CostCount = "RESOURCE_1_COST_COUNT", + Resource_1CostId = "RESOURCE_1_COST_ID", + Resource_2CostCount = "RESOURCE_2_COST_COUNT", + Resource_2CostId = "RESOURCE_2_COST_ID", + Resource_3CostCount = "RESOURCE_3_COST_COUNT", + Resource_3CostId = "RESOURCE_3_COST_ID", + WheatBaseAmount = "WHEAT_BASE_AMOUNT", +} + +export type s1_eternum_LevelingConfigWhereInput = { + base_multiplier?: InputMaybe; + base_multiplierEQ?: InputMaybe; + base_multiplierGT?: InputMaybe; + base_multiplierGTE?: InputMaybe; + base_multiplierIN?: InputMaybe>>; + base_multiplierLIKE?: InputMaybe; + base_multiplierLT?: InputMaybe; + base_multiplierLTE?: InputMaybe; + base_multiplierNEQ?: InputMaybe; + base_multiplierNOTIN?: InputMaybe>>; + base_multiplierNOTLIKE?: InputMaybe; + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + cost_percentage_scaled?: InputMaybe; + cost_percentage_scaledEQ?: InputMaybe; + cost_percentage_scaledGT?: InputMaybe; + cost_percentage_scaledGTE?: InputMaybe; + cost_percentage_scaledIN?: InputMaybe>>; + cost_percentage_scaledLIKE?: InputMaybe; + cost_percentage_scaledLT?: InputMaybe; + cost_percentage_scaledLTE?: InputMaybe; + cost_percentage_scaledNEQ?: InputMaybe; + cost_percentage_scaledNOTIN?: InputMaybe>>; + cost_percentage_scaledNOTLIKE?: InputMaybe; + decay_interval?: InputMaybe; + decay_intervalEQ?: InputMaybe; + decay_intervalGT?: InputMaybe; + decay_intervalGTE?: InputMaybe; + decay_intervalIN?: InputMaybe>>; + decay_intervalLIKE?: InputMaybe; + decay_intervalLT?: InputMaybe; + decay_intervalLTE?: InputMaybe; + decay_intervalNEQ?: InputMaybe; + decay_intervalNOTIN?: InputMaybe>>; + decay_intervalNOTLIKE?: InputMaybe; + decay_scaled?: InputMaybe; + decay_scaledEQ?: InputMaybe; + decay_scaledGT?: InputMaybe; + decay_scaledGTE?: InputMaybe; + decay_scaledIN?: InputMaybe>>; + decay_scaledLIKE?: InputMaybe; + decay_scaledLT?: InputMaybe; + decay_scaledLTE?: InputMaybe; + decay_scaledNEQ?: InputMaybe; + decay_scaledNOTIN?: InputMaybe>>; + decay_scaledNOTLIKE?: InputMaybe; + fish_base_amount?: InputMaybe; + fish_base_amountEQ?: InputMaybe; + fish_base_amountGT?: InputMaybe; + fish_base_amountGTE?: InputMaybe; + fish_base_amountIN?: InputMaybe>>; + fish_base_amountLIKE?: InputMaybe; + fish_base_amountLT?: InputMaybe; + fish_base_amountLTE?: InputMaybe; + fish_base_amountNEQ?: InputMaybe; + fish_base_amountNOTIN?: InputMaybe>>; + fish_base_amountNOTLIKE?: InputMaybe; + max_level?: InputMaybe; + max_levelEQ?: InputMaybe; + max_levelGT?: InputMaybe; + max_levelGTE?: InputMaybe; + max_levelIN?: InputMaybe>>; + max_levelLIKE?: InputMaybe; + max_levelLT?: InputMaybe; + max_levelLTE?: InputMaybe; + max_levelNEQ?: InputMaybe; + max_levelNOTIN?: InputMaybe>>; + max_levelNOTLIKE?: InputMaybe; + resource_1_cost_count?: InputMaybe; + resource_1_cost_countEQ?: InputMaybe; + resource_1_cost_countGT?: InputMaybe; + resource_1_cost_countGTE?: InputMaybe; + resource_1_cost_countIN?: InputMaybe>>; + resource_1_cost_countLIKE?: InputMaybe; + resource_1_cost_countLT?: InputMaybe; + resource_1_cost_countLTE?: InputMaybe; + resource_1_cost_countNEQ?: InputMaybe; + resource_1_cost_countNOTIN?: InputMaybe>>; + resource_1_cost_countNOTLIKE?: InputMaybe; + resource_1_cost_id?: InputMaybe; + resource_1_cost_idEQ?: InputMaybe; + resource_1_cost_idGT?: InputMaybe; + resource_1_cost_idGTE?: InputMaybe; + resource_1_cost_idIN?: InputMaybe>>; + resource_1_cost_idLIKE?: InputMaybe; + resource_1_cost_idLT?: InputMaybe; + resource_1_cost_idLTE?: InputMaybe; + resource_1_cost_idNEQ?: InputMaybe; + resource_1_cost_idNOTIN?: InputMaybe>>; + resource_1_cost_idNOTLIKE?: InputMaybe; + resource_2_cost_count?: InputMaybe; + resource_2_cost_countEQ?: InputMaybe; + resource_2_cost_countGT?: InputMaybe; + resource_2_cost_countGTE?: InputMaybe; + resource_2_cost_countIN?: InputMaybe>>; + resource_2_cost_countLIKE?: InputMaybe; + resource_2_cost_countLT?: InputMaybe; + resource_2_cost_countLTE?: InputMaybe; + resource_2_cost_countNEQ?: InputMaybe; + resource_2_cost_countNOTIN?: InputMaybe>>; + resource_2_cost_countNOTLIKE?: InputMaybe; + resource_2_cost_id?: InputMaybe; + resource_2_cost_idEQ?: InputMaybe; + resource_2_cost_idGT?: InputMaybe; + resource_2_cost_idGTE?: InputMaybe; + resource_2_cost_idIN?: InputMaybe>>; + resource_2_cost_idLIKE?: InputMaybe; + resource_2_cost_idLT?: InputMaybe; + resource_2_cost_idLTE?: InputMaybe; + resource_2_cost_idNEQ?: InputMaybe; + resource_2_cost_idNOTIN?: InputMaybe>>; + resource_2_cost_idNOTLIKE?: InputMaybe; + resource_3_cost_count?: InputMaybe; + resource_3_cost_countEQ?: InputMaybe; + resource_3_cost_countGT?: InputMaybe; + resource_3_cost_countGTE?: InputMaybe; + resource_3_cost_countIN?: InputMaybe>>; + resource_3_cost_countLIKE?: InputMaybe; + resource_3_cost_countLT?: InputMaybe; + resource_3_cost_countLTE?: InputMaybe; + resource_3_cost_countNEQ?: InputMaybe; + resource_3_cost_countNOTIN?: InputMaybe>>; + resource_3_cost_countNOTLIKE?: InputMaybe; + resource_3_cost_id?: InputMaybe; + resource_3_cost_idEQ?: InputMaybe; + resource_3_cost_idGT?: InputMaybe; + resource_3_cost_idGTE?: InputMaybe; + resource_3_cost_idIN?: InputMaybe>>; + resource_3_cost_idLIKE?: InputMaybe; + resource_3_cost_idLT?: InputMaybe; + resource_3_cost_idLTE?: InputMaybe; + resource_3_cost_idNEQ?: InputMaybe; + resource_3_cost_idNOTIN?: InputMaybe>>; + resource_3_cost_idNOTLIKE?: InputMaybe; + wheat_base_amount?: InputMaybe; + wheat_base_amountEQ?: InputMaybe; + wheat_base_amountGT?: InputMaybe; + wheat_base_amountGTE?: InputMaybe; + wheat_base_amountIN?: InputMaybe>>; + wheat_base_amountLIKE?: InputMaybe; + wheat_base_amountLT?: InputMaybe; + wheat_base_amountLTE?: InputMaybe; + wheat_base_amountNEQ?: InputMaybe; + wheat_base_amountNOTIN?: InputMaybe>>; + wheat_base_amountNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_LiquidityEventOrder = { direction: OrderDirection; - field: S0_Eternum_LiquidityEventOrderField; -}; - -export enum S0_Eternum_LiquidityEventOrderField { - Add = 'ADD', - BankEntityId = 'BANK_ENTITY_ID', - EntityId = 'ENTITY_ID', - LordsAmount = 'LORDS_AMOUNT', - ResourceAmount = 'RESOURCE_AMOUNT', - ResourcePrice = 'RESOURCE_PRICE', - ResourceType = 'RESOURCE_TYPE', - Timestamp = 'TIMESTAMP' -} - -export type S0_Eternum_LiquidityEventWhereInput = { - add?: InputMaybe; - bank_entity_id?: InputMaybe; - bank_entity_idEQ?: InputMaybe; - bank_entity_idGT?: InputMaybe; - bank_entity_idGTE?: InputMaybe; - bank_entity_idIN?: InputMaybe>>; - bank_entity_idLIKE?: InputMaybe; - bank_entity_idLT?: InputMaybe; - bank_entity_idLTE?: InputMaybe; - bank_entity_idNEQ?: InputMaybe; - bank_entity_idNOTIN?: InputMaybe>>; - bank_entity_idNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - lords_amount?: InputMaybe; - lords_amountEQ?: InputMaybe; - lords_amountGT?: InputMaybe; - lords_amountGTE?: InputMaybe; - lords_amountIN?: InputMaybe>>; - lords_amountLIKE?: InputMaybe; - lords_amountLT?: InputMaybe; - lords_amountLTE?: InputMaybe; - lords_amountNEQ?: InputMaybe; - lords_amountNOTIN?: InputMaybe>>; - lords_amountNOTLIKE?: InputMaybe; - resource_amount?: InputMaybe; - resource_amountEQ?: InputMaybe; - resource_amountGT?: InputMaybe; - resource_amountGTE?: InputMaybe; - resource_amountIN?: InputMaybe>>; - resource_amountLIKE?: InputMaybe; - resource_amountLT?: InputMaybe; - resource_amountLTE?: InputMaybe; - resource_amountNEQ?: InputMaybe; - resource_amountNOTIN?: InputMaybe>>; - resource_amountNOTLIKE?: InputMaybe; - resource_price?: InputMaybe; - resource_priceEQ?: InputMaybe; - resource_priceGT?: InputMaybe; - resource_priceGTE?: InputMaybe; - resource_priceIN?: InputMaybe>>; - resource_priceLIKE?: InputMaybe; - resource_priceLT?: InputMaybe; - resource_priceLTE?: InputMaybe; - resource_priceNEQ?: InputMaybe; - resource_priceNOTIN?: InputMaybe>>; - resource_priceNOTLIKE?: InputMaybe; - resource_type?: InputMaybe; - resource_typeEQ?: InputMaybe; - resource_typeGT?: InputMaybe; - resource_typeGTE?: InputMaybe; - resource_typeIN?: InputMaybe>>; - resource_typeLIKE?: InputMaybe; - resource_typeLT?: InputMaybe; - resource_typeLTE?: InputMaybe; - resource_typeNEQ?: InputMaybe; - resource_typeNOTIN?: InputMaybe>>; - resource_typeNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_LiquidityOrder = { + field: s1_eternum_LiquidityEventOrderField; +}; + +export enum s1_eternum_LiquidityEventOrderField { + Add = "ADD", + BankEntityId = "BANK_ENTITY_ID", + EntityId = "ENTITY_ID", + LordsAmount = "LORDS_AMOUNT", + ResourceAmount = "RESOURCE_AMOUNT", + ResourcePrice = "RESOURCE_PRICE", + ResourceType = "RESOURCE_TYPE", + Timestamp = "TIMESTAMP", +} + +export type s1_eternum_LiquidityEventWhereInput = { + add?: InputMaybe; + bank_entity_id?: InputMaybe; + bank_entity_idEQ?: InputMaybe; + bank_entity_idGT?: InputMaybe; + bank_entity_idGTE?: InputMaybe; + bank_entity_idIN?: InputMaybe>>; + bank_entity_idLIKE?: InputMaybe; + bank_entity_idLT?: InputMaybe; + bank_entity_idLTE?: InputMaybe; + bank_entity_idNEQ?: InputMaybe; + bank_entity_idNOTIN?: InputMaybe>>; + bank_entity_idNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + lords_amount?: InputMaybe; + lords_amountEQ?: InputMaybe; + lords_amountGT?: InputMaybe; + lords_amountGTE?: InputMaybe; + lords_amountIN?: InputMaybe>>; + lords_amountLIKE?: InputMaybe; + lords_amountLT?: InputMaybe; + lords_amountLTE?: InputMaybe; + lords_amountNEQ?: InputMaybe; + lords_amountNOTIN?: InputMaybe>>; + lords_amountNOTLIKE?: InputMaybe; + resource_amount?: InputMaybe; + resource_amountEQ?: InputMaybe; + resource_amountGT?: InputMaybe; + resource_amountGTE?: InputMaybe; + resource_amountIN?: InputMaybe>>; + resource_amountLIKE?: InputMaybe; + resource_amountLT?: InputMaybe; + resource_amountLTE?: InputMaybe; + resource_amountNEQ?: InputMaybe; + resource_amountNOTIN?: InputMaybe>>; + resource_amountNOTLIKE?: InputMaybe; + resource_price?: InputMaybe; + resource_priceEQ?: InputMaybe; + resource_priceGT?: InputMaybe; + resource_priceGTE?: InputMaybe; + resource_priceIN?: InputMaybe>>; + resource_priceLIKE?: InputMaybe; + resource_priceLT?: InputMaybe; + resource_priceLTE?: InputMaybe; + resource_priceNEQ?: InputMaybe; + resource_priceNOTIN?: InputMaybe>>; + resource_priceNOTLIKE?: InputMaybe; + resource_type?: InputMaybe; + resource_typeEQ?: InputMaybe; + resource_typeGT?: InputMaybe; + resource_typeGTE?: InputMaybe; + resource_typeIN?: InputMaybe>>; + resource_typeLIKE?: InputMaybe; + resource_typeLT?: InputMaybe; + resource_typeLTE?: InputMaybe; + resource_typeNEQ?: InputMaybe; + resource_typeNOTIN?: InputMaybe>>; + resource_typeNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_LiquidityOrder = { direction: OrderDirection; - field: S0_Eternum_LiquidityOrderField; -}; - -export enum S0_Eternum_LiquidityOrderField { - BankEntityId = 'BANK_ENTITY_ID', - Player = 'PLAYER', - ResourceType = 'RESOURCE_TYPE', - Shares = 'SHARES' -} - -export type S0_Eternum_LiquidityWhereInput = { - bank_entity_id?: InputMaybe; - bank_entity_idEQ?: InputMaybe; - bank_entity_idGT?: InputMaybe; - bank_entity_idGTE?: InputMaybe; - bank_entity_idIN?: InputMaybe>>; - bank_entity_idLIKE?: InputMaybe; - bank_entity_idLT?: InputMaybe; - bank_entity_idLTE?: InputMaybe; - bank_entity_idNEQ?: InputMaybe; - bank_entity_idNOTIN?: InputMaybe>>; - bank_entity_idNOTLIKE?: InputMaybe; - player?: InputMaybe; - playerEQ?: InputMaybe; - playerGT?: InputMaybe; - playerGTE?: InputMaybe; - playerIN?: InputMaybe>>; - playerLIKE?: InputMaybe; - playerLT?: InputMaybe; - playerLTE?: InputMaybe; - playerNEQ?: InputMaybe; - playerNOTIN?: InputMaybe>>; - playerNOTLIKE?: InputMaybe; - resource_type?: InputMaybe; - resource_typeEQ?: InputMaybe; - resource_typeGT?: InputMaybe; - resource_typeGTE?: InputMaybe; - resource_typeIN?: InputMaybe>>; - resource_typeLIKE?: InputMaybe; - resource_typeLT?: InputMaybe; - resource_typeLTE?: InputMaybe; - resource_typeNEQ?: InputMaybe; - resource_typeNOTIN?: InputMaybe>>; - resource_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_MapConfigOrder = { + field: s1_eternum_LiquidityOrderField; +}; + +export enum s1_eternum_LiquidityOrderField { + BankEntityId = "BANK_ENTITY_ID", + Player = "PLAYER", + ResourceType = "RESOURCE_TYPE", + Shares = "SHARES", +} + +export type s1_eternum_LiquidityWhereInput = { + bank_entity_id?: InputMaybe; + bank_entity_idEQ?: InputMaybe; + bank_entity_idGT?: InputMaybe; + bank_entity_idGTE?: InputMaybe; + bank_entity_idIN?: InputMaybe>>; + bank_entity_idLIKE?: InputMaybe; + bank_entity_idLT?: InputMaybe; + bank_entity_idLTE?: InputMaybe; + bank_entity_idNEQ?: InputMaybe; + bank_entity_idNOTIN?: InputMaybe>>; + bank_entity_idNOTLIKE?: InputMaybe; + player?: InputMaybe; + playerEQ?: InputMaybe; + playerGT?: InputMaybe; + playerGTE?: InputMaybe; + playerIN?: InputMaybe>>; + playerLIKE?: InputMaybe; + playerLT?: InputMaybe; + playerLTE?: InputMaybe; + playerNEQ?: InputMaybe; + playerNOTIN?: InputMaybe>>; + playerNOTLIKE?: InputMaybe; + resource_type?: InputMaybe; + resource_typeEQ?: InputMaybe; + resource_typeGT?: InputMaybe; + resource_typeGTE?: InputMaybe; + resource_typeIN?: InputMaybe>>; + resource_typeLIKE?: InputMaybe; + resource_typeLT?: InputMaybe; + resource_typeLTE?: InputMaybe; + resource_typeNEQ?: InputMaybe; + resource_typeNOTIN?: InputMaybe>>; + resource_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_MapConfigOrder = { direction: OrderDirection; - field: S0_Eternum_MapConfigOrderField; -}; - -export enum S0_Eternum_MapConfigOrderField { - ConfigId = 'CONFIG_ID', - RewardResourceAmount = 'REWARD_RESOURCE_AMOUNT', - ShardsMinesFailProbability = 'SHARDS_MINES_FAIL_PROBABILITY' -} - -export type S0_Eternum_MapConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - reward_resource_amount?: InputMaybe; - reward_resource_amountEQ?: InputMaybe; - reward_resource_amountGT?: InputMaybe; - reward_resource_amountGTE?: InputMaybe; - reward_resource_amountIN?: InputMaybe>>; - reward_resource_amountLIKE?: InputMaybe; - reward_resource_amountLT?: InputMaybe; - reward_resource_amountLTE?: InputMaybe; - reward_resource_amountNEQ?: InputMaybe; - reward_resource_amountNOTIN?: InputMaybe>>; - reward_resource_amountNOTLIKE?: InputMaybe; - shards_mines_fail_probability?: InputMaybe; - shards_mines_fail_probabilityEQ?: InputMaybe; - shards_mines_fail_probabilityGT?: InputMaybe; - shards_mines_fail_probabilityGTE?: InputMaybe; - shards_mines_fail_probabilityIN?: InputMaybe>>; - shards_mines_fail_probabilityLIKE?: InputMaybe; - shards_mines_fail_probabilityLT?: InputMaybe; - shards_mines_fail_probabilityLTE?: InputMaybe; - shards_mines_fail_probabilityNEQ?: InputMaybe; - shards_mines_fail_probabilityNOTIN?: InputMaybe>>; - shards_mines_fail_probabilityNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_MapExploredOrder = { + field: s1_eternum_MapConfigOrderField; +}; + +export enum s1_eternum_MapConfigOrderField { + ConfigId = "CONFIG_ID", + RewardResourceAmount = "REWARD_RESOURCE_AMOUNT", + ShardsMinesFailProbability = "SHARDS_MINES_FAIL_PROBABILITY", +} + +export type s1_eternum_MapConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + reward_resource_amount?: InputMaybe; + reward_resource_amountEQ?: InputMaybe; + reward_resource_amountGT?: InputMaybe; + reward_resource_amountGTE?: InputMaybe; + reward_resource_amountIN?: InputMaybe>>; + reward_resource_amountLIKE?: InputMaybe; + reward_resource_amountLT?: InputMaybe; + reward_resource_amountLTE?: InputMaybe; + reward_resource_amountNEQ?: InputMaybe; + reward_resource_amountNOTIN?: InputMaybe>>; + reward_resource_amountNOTLIKE?: InputMaybe; + shards_mines_fail_probability?: InputMaybe; + shards_mines_fail_probabilityEQ?: InputMaybe; + shards_mines_fail_probabilityGT?: InputMaybe; + shards_mines_fail_probabilityGTE?: InputMaybe; + shards_mines_fail_probabilityIN?: InputMaybe>>; + shards_mines_fail_probabilityLIKE?: InputMaybe; + shards_mines_fail_probabilityLT?: InputMaybe; + shards_mines_fail_probabilityLTE?: InputMaybe; + shards_mines_fail_probabilityNEQ?: InputMaybe; + shards_mines_fail_probabilityNOTIN?: InputMaybe>>; + shards_mines_fail_probabilityNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_MapExploredOrder = { direction: OrderDirection; - field: S0_Eternum_MapExploredOrderField; -}; - -export enum S0_Eternum_MapExploredOrderField { - Biome = 'BIOME', - Col = 'COL', - EntityId = 'ENTITY_ID', - EntityOwnerId = 'ENTITY_OWNER_ID', - Id = 'ID', - Reward = 'REWARD', - Row = 'ROW', - Timestamp = 'TIMESTAMP' -} - -export type S0_Eternum_MapExploredWhereInput = { - biome?: InputMaybe; - col?: InputMaybe; - colEQ?: InputMaybe; - colGT?: InputMaybe; - colGTE?: InputMaybe; - colIN?: InputMaybe>>; - colLIKE?: InputMaybe; - colLT?: InputMaybe; - colLTE?: InputMaybe; - colNEQ?: InputMaybe; - colNOTIN?: InputMaybe>>; - colNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - entity_owner_id?: InputMaybe; - entity_owner_idEQ?: InputMaybe; - entity_owner_idGT?: InputMaybe; - entity_owner_idGTE?: InputMaybe; - entity_owner_idIN?: InputMaybe>>; - entity_owner_idLIKE?: InputMaybe; - entity_owner_idLT?: InputMaybe; - entity_owner_idLTE?: InputMaybe; - entity_owner_idNEQ?: InputMaybe; - entity_owner_idNOTIN?: InputMaybe>>; - entity_owner_idNOTLIKE?: InputMaybe; - id?: InputMaybe; - idEQ?: InputMaybe; - idGT?: InputMaybe; - idGTE?: InputMaybe; - idIN?: InputMaybe>>; - idLIKE?: InputMaybe; - idLT?: InputMaybe; - idLTE?: InputMaybe; - idNEQ?: InputMaybe; - idNOTIN?: InputMaybe>>; - idNOTLIKE?: InputMaybe; - row?: InputMaybe; - rowEQ?: InputMaybe; - rowGT?: InputMaybe; - rowGTE?: InputMaybe; - rowIN?: InputMaybe>>; - rowLIKE?: InputMaybe; - rowLT?: InputMaybe; - rowLTE?: InputMaybe; - rowNEQ?: InputMaybe; - rowNOTIN?: InputMaybe>>; - rowNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_MarketOrder = { + field: s1_eternum_MapExploredOrderField; +}; + +export enum s1_eternum_MapExploredOrderField { + Biome = "BIOME", + Col = "COL", + EntityId = "ENTITY_ID", + EntityOwnerId = "ENTITY_OWNER_ID", + Id = "ID", + Reward = "REWARD", + Row = "ROW", + Timestamp = "TIMESTAMP", +} + +export type s1_eternum_MapExploredWhereInput = { + biome?: InputMaybe; + col?: InputMaybe; + colEQ?: InputMaybe; + colGT?: InputMaybe; + colGTE?: InputMaybe; + colIN?: InputMaybe>>; + colLIKE?: InputMaybe; + colLT?: InputMaybe; + colLTE?: InputMaybe; + colNEQ?: InputMaybe; + colNOTIN?: InputMaybe>>; + colNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + entity_owner_id?: InputMaybe; + entity_owner_idEQ?: InputMaybe; + entity_owner_idGT?: InputMaybe; + entity_owner_idGTE?: InputMaybe; + entity_owner_idIN?: InputMaybe>>; + entity_owner_idLIKE?: InputMaybe; + entity_owner_idLT?: InputMaybe; + entity_owner_idLTE?: InputMaybe; + entity_owner_idNEQ?: InputMaybe; + entity_owner_idNOTIN?: InputMaybe>>; + entity_owner_idNOTLIKE?: InputMaybe; + id?: InputMaybe; + idEQ?: InputMaybe; + idGT?: InputMaybe; + idGTE?: InputMaybe; + idIN?: InputMaybe>>; + idLIKE?: InputMaybe; + idLT?: InputMaybe; + idLTE?: InputMaybe; + idNEQ?: InputMaybe; + idNOTIN?: InputMaybe>>; + idNOTLIKE?: InputMaybe; + row?: InputMaybe; + rowEQ?: InputMaybe; + rowGT?: InputMaybe; + rowGTE?: InputMaybe; + rowIN?: InputMaybe>>; + rowLIKE?: InputMaybe; + rowLT?: InputMaybe; + rowLTE?: InputMaybe; + rowNEQ?: InputMaybe; + rowNOTIN?: InputMaybe>>; + rowNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_MarketOrder = { direction: OrderDirection; - field: S0_Eternum_MarketOrderField; -}; - -export enum S0_Eternum_MarketOrderField { - BankEntityId = 'BANK_ENTITY_ID', - LordsAmount = 'LORDS_AMOUNT', - ResourceAmount = 'RESOURCE_AMOUNT', - ResourceType = 'RESOURCE_TYPE', - TotalShares = 'TOTAL_SHARES' -} - -export type S0_Eternum_MarketWhereInput = { - bank_entity_id?: InputMaybe; - bank_entity_idEQ?: InputMaybe; - bank_entity_idGT?: InputMaybe; - bank_entity_idGTE?: InputMaybe; - bank_entity_idIN?: InputMaybe>>; - bank_entity_idLIKE?: InputMaybe; - bank_entity_idLT?: InputMaybe; - bank_entity_idLTE?: InputMaybe; - bank_entity_idNEQ?: InputMaybe; - bank_entity_idNOTIN?: InputMaybe>>; - bank_entity_idNOTLIKE?: InputMaybe; - lords_amount?: InputMaybe; - lords_amountEQ?: InputMaybe; - lords_amountGT?: InputMaybe; - lords_amountGTE?: InputMaybe; - lords_amountIN?: InputMaybe>>; - lords_amountLIKE?: InputMaybe; - lords_amountLT?: InputMaybe; - lords_amountLTE?: InputMaybe; - lords_amountNEQ?: InputMaybe; - lords_amountNOTIN?: InputMaybe>>; - lords_amountNOTLIKE?: InputMaybe; - resource_amount?: InputMaybe; - resource_amountEQ?: InputMaybe; - resource_amountGT?: InputMaybe; - resource_amountGTE?: InputMaybe; - resource_amountIN?: InputMaybe>>; - resource_amountLIKE?: InputMaybe; - resource_amountLT?: InputMaybe; - resource_amountLTE?: InputMaybe; - resource_amountNEQ?: InputMaybe; - resource_amountNOTIN?: InputMaybe>>; - resource_amountNOTLIKE?: InputMaybe; - resource_type?: InputMaybe; - resource_typeEQ?: InputMaybe; - resource_typeGT?: InputMaybe; - resource_typeGTE?: InputMaybe; - resource_typeIN?: InputMaybe>>; - resource_typeLIKE?: InputMaybe; - resource_typeLT?: InputMaybe; - resource_typeLTE?: InputMaybe; - resource_typeNEQ?: InputMaybe; - resource_typeNOTIN?: InputMaybe>>; - resource_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_MercenariesConfigOrder = { + field: s1_eternum_MarketOrderField; +}; + +export enum s1_eternum_MarketOrderField { + BankEntityId = "BANK_ENTITY_ID", + LordsAmount = "LORDS_AMOUNT", + ResourceAmount = "RESOURCE_AMOUNT", + ResourceType = "RESOURCE_TYPE", + TotalShares = "TOTAL_SHARES", +} + +export type s1_eternum_MarketWhereInput = { + bank_entity_id?: InputMaybe; + bank_entity_idEQ?: InputMaybe; + bank_entity_idGT?: InputMaybe; + bank_entity_idGTE?: InputMaybe; + bank_entity_idIN?: InputMaybe>>; + bank_entity_idLIKE?: InputMaybe; + bank_entity_idLT?: InputMaybe; + bank_entity_idLTE?: InputMaybe; + bank_entity_idNEQ?: InputMaybe; + bank_entity_idNOTIN?: InputMaybe>>; + bank_entity_idNOTLIKE?: InputMaybe; + lords_amount?: InputMaybe; + lords_amountEQ?: InputMaybe; + lords_amountGT?: InputMaybe; + lords_amountGTE?: InputMaybe; + lords_amountIN?: InputMaybe>>; + lords_amountLIKE?: InputMaybe; + lords_amountLT?: InputMaybe; + lords_amountLTE?: InputMaybe; + lords_amountNEQ?: InputMaybe; + lords_amountNOTIN?: InputMaybe>>; + lords_amountNOTLIKE?: InputMaybe; + resource_amount?: InputMaybe; + resource_amountEQ?: InputMaybe; + resource_amountGT?: InputMaybe; + resource_amountGTE?: InputMaybe; + resource_amountIN?: InputMaybe>>; + resource_amountLIKE?: InputMaybe; + resource_amountLT?: InputMaybe; + resource_amountLTE?: InputMaybe; + resource_amountNEQ?: InputMaybe; + resource_amountNOTIN?: InputMaybe>>; + resource_amountNOTLIKE?: InputMaybe; + resource_type?: InputMaybe; + resource_typeEQ?: InputMaybe; + resource_typeGT?: InputMaybe; + resource_typeGTE?: InputMaybe; + resource_typeIN?: InputMaybe>>; + resource_typeLIKE?: InputMaybe; + resource_typeLT?: InputMaybe; + resource_typeLTE?: InputMaybe; + resource_typeNEQ?: InputMaybe; + resource_typeNOTIN?: InputMaybe>>; + resource_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_MercenariesConfigOrder = { direction: OrderDirection; - field: S0_Eternum_MercenariesConfigOrderField; -}; - -export enum S0_Eternum_MercenariesConfigOrderField { - ConfigId = 'CONFIG_ID', - CrossbowmenLowerBound = 'CROSSBOWMEN_LOWER_BOUND', - CrossbowmenUpperBound = 'CROSSBOWMEN_UPPER_BOUND', - KnightsLowerBound = 'KNIGHTS_LOWER_BOUND', - KnightsUpperBound = 'KNIGHTS_UPPER_BOUND', - PaladinsLowerBound = 'PALADINS_LOWER_BOUND', - PaladinsUpperBound = 'PALADINS_UPPER_BOUND', - Rewards = 'REWARDS' -} - -export type S0_Eternum_MercenariesConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - crossbowmen_lower_bound?: InputMaybe; - crossbowmen_lower_boundEQ?: InputMaybe; - crossbowmen_lower_boundGT?: InputMaybe; - crossbowmen_lower_boundGTE?: InputMaybe; - crossbowmen_lower_boundIN?: InputMaybe>>; - crossbowmen_lower_boundLIKE?: InputMaybe; - crossbowmen_lower_boundLT?: InputMaybe; - crossbowmen_lower_boundLTE?: InputMaybe; - crossbowmen_lower_boundNEQ?: InputMaybe; - crossbowmen_lower_boundNOTIN?: InputMaybe>>; - crossbowmen_lower_boundNOTLIKE?: InputMaybe; - crossbowmen_upper_bound?: InputMaybe; - crossbowmen_upper_boundEQ?: InputMaybe; - crossbowmen_upper_boundGT?: InputMaybe; - crossbowmen_upper_boundGTE?: InputMaybe; - crossbowmen_upper_boundIN?: InputMaybe>>; - crossbowmen_upper_boundLIKE?: InputMaybe; - crossbowmen_upper_boundLT?: InputMaybe; - crossbowmen_upper_boundLTE?: InputMaybe; - crossbowmen_upper_boundNEQ?: InputMaybe; - crossbowmen_upper_boundNOTIN?: InputMaybe>>; - crossbowmen_upper_boundNOTLIKE?: InputMaybe; - knights_lower_bound?: InputMaybe; - knights_lower_boundEQ?: InputMaybe; - knights_lower_boundGT?: InputMaybe; - knights_lower_boundGTE?: InputMaybe; - knights_lower_boundIN?: InputMaybe>>; - knights_lower_boundLIKE?: InputMaybe; - knights_lower_boundLT?: InputMaybe; - knights_lower_boundLTE?: InputMaybe; - knights_lower_boundNEQ?: InputMaybe; - knights_lower_boundNOTIN?: InputMaybe>>; - knights_lower_boundNOTLIKE?: InputMaybe; - knights_upper_bound?: InputMaybe; - knights_upper_boundEQ?: InputMaybe; - knights_upper_boundGT?: InputMaybe; - knights_upper_boundGTE?: InputMaybe; - knights_upper_boundIN?: InputMaybe>>; - knights_upper_boundLIKE?: InputMaybe; - knights_upper_boundLT?: InputMaybe; - knights_upper_boundLTE?: InputMaybe; - knights_upper_boundNEQ?: InputMaybe; - knights_upper_boundNOTIN?: InputMaybe>>; - knights_upper_boundNOTLIKE?: InputMaybe; - paladins_lower_bound?: InputMaybe; - paladins_lower_boundEQ?: InputMaybe; - paladins_lower_boundGT?: InputMaybe; - paladins_lower_boundGTE?: InputMaybe; - paladins_lower_boundIN?: InputMaybe>>; - paladins_lower_boundLIKE?: InputMaybe; - paladins_lower_boundLT?: InputMaybe; - paladins_lower_boundLTE?: InputMaybe; - paladins_lower_boundNEQ?: InputMaybe; - paladins_lower_boundNOTIN?: InputMaybe>>; - paladins_lower_boundNOTLIKE?: InputMaybe; - paladins_upper_bound?: InputMaybe; - paladins_upper_boundEQ?: InputMaybe; - paladins_upper_boundGT?: InputMaybe; - paladins_upper_boundGTE?: InputMaybe; - paladins_upper_boundIN?: InputMaybe>>; - paladins_upper_boundLIKE?: InputMaybe; - paladins_upper_boundLT?: InputMaybe; - paladins_upper_boundLTE?: InputMaybe; - paladins_upper_boundNEQ?: InputMaybe; - paladins_upper_boundNOTIN?: InputMaybe>>; - paladins_upper_boundNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_MessageOrder = { + field: s1_eternum_MercenariesConfigOrderField; +}; + +export enum s1_eternum_MercenariesConfigOrderField { + ConfigId = "CONFIG_ID", + CrossbowmenLowerBound = "CROSSBOWMEN_LOWER_BOUND", + CrossbowmenUpperBound = "CROSSBOWMEN_UPPER_BOUND", + KnightsLowerBound = "KNIGHTS_LOWER_BOUND", + KnightsUpperBound = "KNIGHTS_UPPER_BOUND", + PaladinsLowerBound = "PALADINS_LOWER_BOUND", + PaladinsUpperBound = "PALADINS_UPPER_BOUND", + Rewards = "REWARDS", +} + +export type s1_eternum_MercenariesConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + crossbowmen_lower_bound?: InputMaybe; + crossbowmen_lower_boundEQ?: InputMaybe; + crossbowmen_lower_boundGT?: InputMaybe; + crossbowmen_lower_boundGTE?: InputMaybe; + crossbowmen_lower_boundIN?: InputMaybe>>; + crossbowmen_lower_boundLIKE?: InputMaybe; + crossbowmen_lower_boundLT?: InputMaybe; + crossbowmen_lower_boundLTE?: InputMaybe; + crossbowmen_lower_boundNEQ?: InputMaybe; + crossbowmen_lower_boundNOTIN?: InputMaybe>>; + crossbowmen_lower_boundNOTLIKE?: InputMaybe; + crossbowmen_upper_bound?: InputMaybe; + crossbowmen_upper_boundEQ?: InputMaybe; + crossbowmen_upper_boundGT?: InputMaybe; + crossbowmen_upper_boundGTE?: InputMaybe; + crossbowmen_upper_boundIN?: InputMaybe>>; + crossbowmen_upper_boundLIKE?: InputMaybe; + crossbowmen_upper_boundLT?: InputMaybe; + crossbowmen_upper_boundLTE?: InputMaybe; + crossbowmen_upper_boundNEQ?: InputMaybe; + crossbowmen_upper_boundNOTIN?: InputMaybe>>; + crossbowmen_upper_boundNOTLIKE?: InputMaybe; + knights_lower_bound?: InputMaybe; + knights_lower_boundEQ?: InputMaybe; + knights_lower_boundGT?: InputMaybe; + knights_lower_boundGTE?: InputMaybe; + knights_lower_boundIN?: InputMaybe>>; + knights_lower_boundLIKE?: InputMaybe; + knights_lower_boundLT?: InputMaybe; + knights_lower_boundLTE?: InputMaybe; + knights_lower_boundNEQ?: InputMaybe; + knights_lower_boundNOTIN?: InputMaybe>>; + knights_lower_boundNOTLIKE?: InputMaybe; + knights_upper_bound?: InputMaybe; + knights_upper_boundEQ?: InputMaybe; + knights_upper_boundGT?: InputMaybe; + knights_upper_boundGTE?: InputMaybe; + knights_upper_boundIN?: InputMaybe>>; + knights_upper_boundLIKE?: InputMaybe; + knights_upper_boundLT?: InputMaybe; + knights_upper_boundLTE?: InputMaybe; + knights_upper_boundNEQ?: InputMaybe; + knights_upper_boundNOTIN?: InputMaybe>>; + knights_upper_boundNOTLIKE?: InputMaybe; + paladins_lower_bound?: InputMaybe; + paladins_lower_boundEQ?: InputMaybe; + paladins_lower_boundGT?: InputMaybe; + paladins_lower_boundGTE?: InputMaybe; + paladins_lower_boundIN?: InputMaybe>>; + paladins_lower_boundLIKE?: InputMaybe; + paladins_lower_boundLT?: InputMaybe; + paladins_lower_boundLTE?: InputMaybe; + paladins_lower_boundNEQ?: InputMaybe; + paladins_lower_boundNOTIN?: InputMaybe>>; + paladins_lower_boundNOTLIKE?: InputMaybe; + paladins_upper_bound?: InputMaybe; + paladins_upper_boundEQ?: InputMaybe; + paladins_upper_boundGT?: InputMaybe; + paladins_upper_boundGTE?: InputMaybe; + paladins_upper_boundIN?: InputMaybe>>; + paladins_upper_boundLIKE?: InputMaybe; + paladins_upper_boundLT?: InputMaybe; + paladins_upper_boundLTE?: InputMaybe; + paladins_upper_boundNEQ?: InputMaybe; + paladins_upper_boundNOTIN?: InputMaybe>>; + paladins_upper_boundNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_MessageOrder = { direction: OrderDirection; - field: S0_Eternum_MessageOrderField; -}; - -export enum S0_Eternum_MessageOrderField { - Channel = 'CHANNEL', - Content = 'CONTENT', - Identity = 'IDENTITY', - Salt = 'SALT', - Timestamp = 'TIMESTAMP' -} - -export type S0_Eternum_MessageWhereInput = { - channel?: InputMaybe; - channelEQ?: InputMaybe; - channelGT?: InputMaybe; - channelGTE?: InputMaybe; - channelIN?: InputMaybe>>; - channelLIKE?: InputMaybe; - channelLT?: InputMaybe; - channelLTE?: InputMaybe; - channelNEQ?: InputMaybe; - channelNOTIN?: InputMaybe>>; - channelNOTLIKE?: InputMaybe; - content?: InputMaybe; - contentEQ?: InputMaybe; - contentGT?: InputMaybe; - contentGTE?: InputMaybe; - contentIN?: InputMaybe>>; - contentLIKE?: InputMaybe; - contentLT?: InputMaybe; - contentLTE?: InputMaybe; - contentNEQ?: InputMaybe; - contentNOTIN?: InputMaybe>>; - contentNOTLIKE?: InputMaybe; - identity?: InputMaybe; - identityEQ?: InputMaybe; - identityGT?: InputMaybe; - identityGTE?: InputMaybe; - identityIN?: InputMaybe>>; - identityLIKE?: InputMaybe; - identityLT?: InputMaybe; - identityLTE?: InputMaybe; - identityNEQ?: InputMaybe; - identityNOTIN?: InputMaybe>>; - identityNOTLIKE?: InputMaybe; - salt?: InputMaybe; - saltEQ?: InputMaybe; - saltGT?: InputMaybe; - saltGTE?: InputMaybe; - saltIN?: InputMaybe>>; - saltLIKE?: InputMaybe; - saltLT?: InputMaybe; - saltLTE?: InputMaybe; - saltNEQ?: InputMaybe; - saltNOTIN?: InputMaybe>>; - saltNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_MovableOrder = { + field: s1_eternum_MessageOrderField; +}; + +export enum s1_eternum_MessageOrderField { + Channel = "CHANNEL", + Content = "CONTENT", + Identity = "IDENTITY", + Salt = "SALT", + Timestamp = "TIMESTAMP", +} + +export type s1_eternum_MessageWhereInput = { + channel?: InputMaybe; + channelEQ?: InputMaybe; + channelGT?: InputMaybe; + channelGTE?: InputMaybe; + channelIN?: InputMaybe>>; + channelLIKE?: InputMaybe; + channelLT?: InputMaybe; + channelLTE?: InputMaybe; + channelNEQ?: InputMaybe; + channelNOTIN?: InputMaybe>>; + channelNOTLIKE?: InputMaybe; + content?: InputMaybe; + contentEQ?: InputMaybe; + contentGT?: InputMaybe; + contentGTE?: InputMaybe; + contentIN?: InputMaybe>>; + contentLIKE?: InputMaybe; + contentLT?: InputMaybe; + contentLTE?: InputMaybe; + contentNEQ?: InputMaybe; + contentNOTIN?: InputMaybe>>; + contentNOTLIKE?: InputMaybe; + identity?: InputMaybe; + identityEQ?: InputMaybe; + identityGT?: InputMaybe; + identityGTE?: InputMaybe; + identityIN?: InputMaybe>>; + identityLIKE?: InputMaybe; + identityLT?: InputMaybe; + identityLTE?: InputMaybe; + identityNEQ?: InputMaybe; + identityNOTIN?: InputMaybe>>; + identityNOTLIKE?: InputMaybe; + salt?: InputMaybe; + saltEQ?: InputMaybe; + saltGT?: InputMaybe; + saltGTE?: InputMaybe; + saltIN?: InputMaybe>>; + saltLIKE?: InputMaybe; + saltLT?: InputMaybe; + saltLTE?: InputMaybe; + saltNEQ?: InputMaybe; + saltNOTIN?: InputMaybe>>; + saltNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_MovableOrder = { direction: OrderDirection; - field: S0_Eternum_MovableOrderField; -}; - -export enum S0_Eternum_MovableOrderField { - Blocked = 'BLOCKED', - EntityId = 'ENTITY_ID', - IntermediateCoordX = 'INTERMEDIATE_COORD_X', - IntermediateCoordY = 'INTERMEDIATE_COORD_Y', - RoundTrip = 'ROUND_TRIP', - SecPerKm = 'SEC_PER_KM', - StartCoordX = 'START_COORD_X', - StartCoordY = 'START_COORD_Y' -} - -export type S0_Eternum_MovableWhereInput = { - blocked?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - intermediate_coord_x?: InputMaybe; - intermediate_coord_xEQ?: InputMaybe; - intermediate_coord_xGT?: InputMaybe; - intermediate_coord_xGTE?: InputMaybe; - intermediate_coord_xIN?: InputMaybe>>; - intermediate_coord_xLIKE?: InputMaybe; - intermediate_coord_xLT?: InputMaybe; - intermediate_coord_xLTE?: InputMaybe; - intermediate_coord_xNEQ?: InputMaybe; - intermediate_coord_xNOTIN?: InputMaybe>>; - intermediate_coord_xNOTLIKE?: InputMaybe; - intermediate_coord_y?: InputMaybe; - intermediate_coord_yEQ?: InputMaybe; - intermediate_coord_yGT?: InputMaybe; - intermediate_coord_yGTE?: InputMaybe; - intermediate_coord_yIN?: InputMaybe>>; - intermediate_coord_yLIKE?: InputMaybe; - intermediate_coord_yLT?: InputMaybe; - intermediate_coord_yLTE?: InputMaybe; - intermediate_coord_yNEQ?: InputMaybe; - intermediate_coord_yNOTIN?: InputMaybe>>; - intermediate_coord_yNOTLIKE?: InputMaybe; - round_trip?: InputMaybe; - sec_per_km?: InputMaybe; - sec_per_kmEQ?: InputMaybe; - sec_per_kmGT?: InputMaybe; - sec_per_kmGTE?: InputMaybe; - sec_per_kmIN?: InputMaybe>>; - sec_per_kmLIKE?: InputMaybe; - sec_per_kmLT?: InputMaybe; - sec_per_kmLTE?: InputMaybe; - sec_per_kmNEQ?: InputMaybe; - sec_per_kmNOTIN?: InputMaybe>>; - sec_per_kmNOTLIKE?: InputMaybe; - start_coord_x?: InputMaybe; - start_coord_xEQ?: InputMaybe; - start_coord_xGT?: InputMaybe; - start_coord_xGTE?: InputMaybe; - start_coord_xIN?: InputMaybe>>; - start_coord_xLIKE?: InputMaybe; - start_coord_xLT?: InputMaybe; - start_coord_xLTE?: InputMaybe; - start_coord_xNEQ?: InputMaybe; - start_coord_xNOTIN?: InputMaybe>>; - start_coord_xNOTLIKE?: InputMaybe; - start_coord_y?: InputMaybe; - start_coord_yEQ?: InputMaybe; - start_coord_yGT?: InputMaybe; - start_coord_yGTE?: InputMaybe; - start_coord_yIN?: InputMaybe>>; - start_coord_yLIKE?: InputMaybe; - start_coord_yLT?: InputMaybe; - start_coord_yLTE?: InputMaybe; - start_coord_yNEQ?: InputMaybe; - start_coord_yNOTIN?: InputMaybe>>; - start_coord_yNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_OrdersOrder = { + field: s1_eternum_MovableOrderField; +}; + +export enum s1_eternum_MovableOrderField { + Blocked = "BLOCKED", + EntityId = "ENTITY_ID", + IntermediateCoordX = "INTERMEDIATE_COORD_X", + IntermediateCoordY = "INTERMEDIATE_COORD_Y", + RoundTrip = "ROUND_TRIP", + SecPerKm = "SEC_PER_KM", + StartCoordX = "START_COORD_X", + StartCoordY = "START_COORD_Y", +} + +export type s1_eternum_MovableWhereInput = { + blocked?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + intermediate_coord_x?: InputMaybe; + intermediate_coord_xEQ?: InputMaybe; + intermediate_coord_xGT?: InputMaybe; + intermediate_coord_xGTE?: InputMaybe; + intermediate_coord_xIN?: InputMaybe>>; + intermediate_coord_xLIKE?: InputMaybe; + intermediate_coord_xLT?: InputMaybe; + intermediate_coord_xLTE?: InputMaybe; + intermediate_coord_xNEQ?: InputMaybe; + intermediate_coord_xNOTIN?: InputMaybe>>; + intermediate_coord_xNOTLIKE?: InputMaybe; + intermediate_coord_y?: InputMaybe; + intermediate_coord_yEQ?: InputMaybe; + intermediate_coord_yGT?: InputMaybe; + intermediate_coord_yGTE?: InputMaybe; + intermediate_coord_yIN?: InputMaybe>>; + intermediate_coord_yLIKE?: InputMaybe; + intermediate_coord_yLT?: InputMaybe; + intermediate_coord_yLTE?: InputMaybe; + intermediate_coord_yNEQ?: InputMaybe; + intermediate_coord_yNOTIN?: InputMaybe>>; + intermediate_coord_yNOTLIKE?: InputMaybe; + round_trip?: InputMaybe; + sec_per_km?: InputMaybe; + sec_per_kmEQ?: InputMaybe; + sec_per_kmGT?: InputMaybe; + sec_per_kmGTE?: InputMaybe; + sec_per_kmIN?: InputMaybe>>; + sec_per_kmLIKE?: InputMaybe; + sec_per_kmLT?: InputMaybe; + sec_per_kmLTE?: InputMaybe; + sec_per_kmNEQ?: InputMaybe; + sec_per_kmNOTIN?: InputMaybe>>; + sec_per_kmNOTLIKE?: InputMaybe; + start_coord_x?: InputMaybe; + start_coord_xEQ?: InputMaybe; + start_coord_xGT?: InputMaybe; + start_coord_xGTE?: InputMaybe; + start_coord_xIN?: InputMaybe>>; + start_coord_xLIKE?: InputMaybe; + start_coord_xLT?: InputMaybe; + start_coord_xLTE?: InputMaybe; + start_coord_xNEQ?: InputMaybe; + start_coord_xNOTIN?: InputMaybe>>; + start_coord_xNOTLIKE?: InputMaybe; + start_coord_y?: InputMaybe; + start_coord_yEQ?: InputMaybe; + start_coord_yGT?: InputMaybe; + start_coord_yGTE?: InputMaybe; + start_coord_yIN?: InputMaybe>>; + start_coord_yLIKE?: InputMaybe; + start_coord_yLT?: InputMaybe; + start_coord_yLTE?: InputMaybe; + start_coord_yNEQ?: InputMaybe; + start_coord_yNOTIN?: InputMaybe>>; + start_coord_yNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_OrdersOrder = { direction: OrderDirection; - field: S0_Eternum_OrdersOrderField; -}; - -export enum S0_Eternum_OrdersOrderField { - HyperstructureCount = 'HYPERSTRUCTURE_COUNT', - OrderId = 'ORDER_ID' -} - -export type S0_Eternum_OrdersWhereInput = { - hyperstructure_count?: InputMaybe; - hyperstructure_countEQ?: InputMaybe; - hyperstructure_countGT?: InputMaybe; - hyperstructure_countGTE?: InputMaybe; - hyperstructure_countIN?: InputMaybe>>; - hyperstructure_countLIKE?: InputMaybe; - hyperstructure_countLT?: InputMaybe; - hyperstructure_countLTE?: InputMaybe; - hyperstructure_countNEQ?: InputMaybe; - hyperstructure_countNOTIN?: InputMaybe>>; - hyperstructure_countNOTLIKE?: InputMaybe; - order_id?: InputMaybe; - order_idEQ?: InputMaybe; - order_idGT?: InputMaybe; - order_idGTE?: InputMaybe; - order_idIN?: InputMaybe>>; - order_idLIKE?: InputMaybe; - order_idLT?: InputMaybe; - order_idLTE?: InputMaybe; - order_idNEQ?: InputMaybe; - order_idNOTIN?: InputMaybe>>; - order_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_OwnedResourcesTrackerOrder = { + field: s1_eternum_OrdersOrderField; +}; + +export enum s1_eternum_OrdersOrderField { + HyperstructureCount = "HYPERSTRUCTURE_COUNT", + OrderId = "ORDER_ID", +} + +export type s1_eternum_OrdersWhereInput = { + hyperstructure_count?: InputMaybe; + hyperstructure_countEQ?: InputMaybe; + hyperstructure_countGT?: InputMaybe; + hyperstructure_countGTE?: InputMaybe; + hyperstructure_countIN?: InputMaybe>>; + hyperstructure_countLIKE?: InputMaybe; + hyperstructure_countLT?: InputMaybe; + hyperstructure_countLTE?: InputMaybe; + hyperstructure_countNEQ?: InputMaybe; + hyperstructure_countNOTIN?: InputMaybe>>; + hyperstructure_countNOTLIKE?: InputMaybe; + order_id?: InputMaybe; + order_idEQ?: InputMaybe; + order_idGT?: InputMaybe; + order_idGTE?: InputMaybe; + order_idIN?: InputMaybe>>; + order_idLIKE?: InputMaybe; + order_idLT?: InputMaybe; + order_idLTE?: InputMaybe; + order_idNEQ?: InputMaybe; + order_idNOTIN?: InputMaybe>>; + order_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_OwnedResourcesTrackerOrder = { direction: OrderDirection; - field: S0_Eternum_OwnedResourcesTrackerOrderField; -}; - -export enum S0_Eternum_OwnedResourcesTrackerOrderField { - EntityId = 'ENTITY_ID', - ResourceTypes = 'RESOURCE_TYPES' -} - -export type S0_Eternum_OwnedResourcesTrackerWhereInput = { - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - resource_types?: InputMaybe; - resource_typesEQ?: InputMaybe; - resource_typesGT?: InputMaybe; - resource_typesGTE?: InputMaybe; - resource_typesIN?: InputMaybe>>; - resource_typesLIKE?: InputMaybe; - resource_typesLT?: InputMaybe; - resource_typesLTE?: InputMaybe; - resource_typesNEQ?: InputMaybe; - resource_typesNOTIN?: InputMaybe>>; - resource_typesNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_OwnerOrder = { + field: s1_eternum_OwnedResourcesTrackerOrderField; +}; + +export enum s1_eternum_OwnedResourcesTrackerOrderField { + EntityId = "ENTITY_ID", + ResourceTypes = "RESOURCE_TYPES", +} + +export type s1_eternum_OwnedResourcesTrackerWhereInput = { + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + resource_types?: InputMaybe; + resource_typesEQ?: InputMaybe; + resource_typesGT?: InputMaybe; + resource_typesGTE?: InputMaybe; + resource_typesIN?: InputMaybe>>; + resource_typesLIKE?: InputMaybe; + resource_typesLT?: InputMaybe; + resource_typesLTE?: InputMaybe; + resource_typesNEQ?: InputMaybe; + resource_typesNOTIN?: InputMaybe>>; + resource_typesNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_OwnerOrder = { direction: OrderDirection; - field: S0_Eternum_OwnerOrderField; -}; - -export enum S0_Eternum_OwnerOrderField { - Address = 'ADDRESS', - EntityId = 'ENTITY_ID' -} - -export type S0_Eternum_OwnerWhereInput = { - address?: InputMaybe; - addressEQ?: InputMaybe; - addressGT?: InputMaybe; - addressGTE?: InputMaybe; - addressIN?: InputMaybe>>; - addressLIKE?: InputMaybe; - addressLT?: InputMaybe; - addressLTE?: InputMaybe; - addressNEQ?: InputMaybe; - addressNOTIN?: InputMaybe>>; - addressNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_PopulationConfigOrder = { + field: s1_eternum_OwnerOrderField; +}; + +export enum s1_eternum_OwnerOrderField { + Address = "ADDRESS", + EntityId = "ENTITY_ID", +} + +export type s1_eternum_OwnerWhereInput = { + address?: InputMaybe; + addressEQ?: InputMaybe; + addressGT?: InputMaybe; + addressGTE?: InputMaybe; + addressIN?: InputMaybe>>; + addressLIKE?: InputMaybe; + addressLT?: InputMaybe; + addressLTE?: InputMaybe; + addressNEQ?: InputMaybe; + addressNOTIN?: InputMaybe>>; + addressNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_PopulationConfigOrder = { direction: OrderDirection; - field: S0_Eternum_PopulationConfigOrderField; -}; - -export enum S0_Eternum_PopulationConfigOrderField { - BasePopulation = 'BASE_POPULATION', - ConfigId = 'CONFIG_ID' -} - -export type S0_Eternum_PopulationConfigWhereInput = { - base_population?: InputMaybe; - base_populationEQ?: InputMaybe; - base_populationGT?: InputMaybe; - base_populationGTE?: InputMaybe; - base_populationIN?: InputMaybe>>; - base_populationLIKE?: InputMaybe; - base_populationLT?: InputMaybe; - base_populationLTE?: InputMaybe; - base_populationNEQ?: InputMaybe; - base_populationNOTIN?: InputMaybe>>; - base_populationNOTLIKE?: InputMaybe; - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_PopulationOrder = { + field: s1_eternum_PopulationConfigOrderField; +}; + +export enum s1_eternum_PopulationConfigOrderField { + BasePopulation = "BASE_POPULATION", + ConfigId = "CONFIG_ID", +} + +export type s1_eternum_PopulationConfigWhereInput = { + base_population?: InputMaybe; + base_populationEQ?: InputMaybe; + base_populationGT?: InputMaybe; + base_populationGTE?: InputMaybe; + base_populationIN?: InputMaybe>>; + base_populationLIKE?: InputMaybe; + base_populationLT?: InputMaybe; + base_populationLTE?: InputMaybe; + base_populationNEQ?: InputMaybe; + base_populationNOTIN?: InputMaybe>>; + base_populationNOTLIKE?: InputMaybe; + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_PopulationOrder = { direction: OrderDirection; - field: S0_Eternum_PopulationOrderField; -}; - -export enum S0_Eternum_PopulationOrderField { - Capacity = 'CAPACITY', - EntityId = 'ENTITY_ID', - Population = 'POPULATION' -} - -export type S0_Eternum_PopulationWhereInput = { - capacity?: InputMaybe; - capacityEQ?: InputMaybe; - capacityGT?: InputMaybe; - capacityGTE?: InputMaybe; - capacityIN?: InputMaybe>>; - capacityLIKE?: InputMaybe; - capacityLT?: InputMaybe; - capacityLTE?: InputMaybe; - capacityNEQ?: InputMaybe; - capacityNOTIN?: InputMaybe>>; - capacityNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - population?: InputMaybe; - populationEQ?: InputMaybe; - populationGT?: InputMaybe; - populationGTE?: InputMaybe; - populationIN?: InputMaybe>>; - populationLIKE?: InputMaybe; - populationLT?: InputMaybe; - populationLTE?: InputMaybe; - populationNEQ?: InputMaybe; - populationNOTIN?: InputMaybe>>; - populationNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_PositionOrder = { + field: s1_eternum_PopulationOrderField; +}; + +export enum s1_eternum_PopulationOrderField { + Capacity = "CAPACITY", + EntityId = "ENTITY_ID", + Population = "POPULATION", +} + +export type s1_eternum_PopulationWhereInput = { + capacity?: InputMaybe; + capacityEQ?: InputMaybe; + capacityGT?: InputMaybe; + capacityGTE?: InputMaybe; + capacityIN?: InputMaybe>>; + capacityLIKE?: InputMaybe; + capacityLT?: InputMaybe; + capacityLTE?: InputMaybe; + capacityNEQ?: InputMaybe; + capacityNOTIN?: InputMaybe>>; + capacityNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + population?: InputMaybe; + populationEQ?: InputMaybe; + populationGT?: InputMaybe; + populationGTE?: InputMaybe; + populationIN?: InputMaybe>>; + populationLIKE?: InputMaybe; + populationLT?: InputMaybe; + populationLTE?: InputMaybe; + populationNEQ?: InputMaybe; + populationNOTIN?: InputMaybe>>; + populationNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_PositionOrder = { direction: OrderDirection; - field: S0_Eternum_PositionOrderField; -}; - -export enum S0_Eternum_PositionOrderField { - EntityId = 'ENTITY_ID', - X = 'X', - Y = 'Y' -} - -export type S0_Eternum_PositionWhereInput = { - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - x?: InputMaybe; - xEQ?: InputMaybe; - xGT?: InputMaybe; - xGTE?: InputMaybe; - xIN?: InputMaybe>>; - xLIKE?: InputMaybe; - xLT?: InputMaybe; - xLTE?: InputMaybe; - xNEQ?: InputMaybe; - xNOTIN?: InputMaybe>>; - xNOTLIKE?: InputMaybe; - y?: InputMaybe; - yEQ?: InputMaybe; - yGT?: InputMaybe; - yGTE?: InputMaybe; - yIN?: InputMaybe>>; - yLIKE?: InputMaybe; - yLT?: InputMaybe; - yLTE?: InputMaybe; - yNEQ?: InputMaybe; - yNOTIN?: InputMaybe>>; - yNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ProductionConfigOrder = { + field: s1_eternum_PositionOrderField; +}; + +export enum s1_eternum_PositionOrderField { + EntityId = "ENTITY_ID", + X = "X", + Y = "Y", +} + +export type s1_eternum_PositionWhereInput = { + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + x?: InputMaybe; + xEQ?: InputMaybe; + xGT?: InputMaybe; + xGTE?: InputMaybe; + xIN?: InputMaybe>>; + xLIKE?: InputMaybe; + xLT?: InputMaybe; + xLTE?: InputMaybe; + xNEQ?: InputMaybe; + xNOTIN?: InputMaybe>>; + xNOTLIKE?: InputMaybe; + y?: InputMaybe; + yEQ?: InputMaybe; + yGT?: InputMaybe; + yGTE?: InputMaybe; + yIN?: InputMaybe>>; + yLIKE?: InputMaybe; + yLT?: InputMaybe; + yLTE?: InputMaybe; + yNEQ?: InputMaybe; + yNOTIN?: InputMaybe>>; + yNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ProductionConfigOrder = { direction: OrderDirection; - field: S0_Eternum_ProductionConfigOrderField; -}; - -export enum S0_Eternum_ProductionConfigOrderField { - Amount = 'AMOUNT', - InputCount = 'INPUT_COUNT', - OutputCount = 'OUTPUT_COUNT', - ResourceType = 'RESOURCE_TYPE' -} - -export type S0_Eternum_ProductionConfigWhereInput = { - amount?: InputMaybe; - amountEQ?: InputMaybe; - amountGT?: InputMaybe; - amountGTE?: InputMaybe; - amountIN?: InputMaybe>>; - amountLIKE?: InputMaybe; - amountLT?: InputMaybe; - amountLTE?: InputMaybe; - amountNEQ?: InputMaybe; - amountNOTIN?: InputMaybe>>; - amountNOTLIKE?: InputMaybe; - input_count?: InputMaybe; - input_countEQ?: InputMaybe; - input_countGT?: InputMaybe; - input_countGTE?: InputMaybe; - input_countIN?: InputMaybe>>; - input_countLIKE?: InputMaybe; - input_countLT?: InputMaybe; - input_countLTE?: InputMaybe; - input_countNEQ?: InputMaybe; - input_countNOTIN?: InputMaybe>>; - input_countNOTLIKE?: InputMaybe; - output_count?: InputMaybe; - output_countEQ?: InputMaybe; - output_countGT?: InputMaybe; - output_countGTE?: InputMaybe; - output_countIN?: InputMaybe>>; - output_countLIKE?: InputMaybe; - output_countLT?: InputMaybe; - output_countLTE?: InputMaybe; - output_countNEQ?: InputMaybe; - output_countNOTIN?: InputMaybe>>; - output_countNOTLIKE?: InputMaybe; - resource_type?: InputMaybe; - resource_typeEQ?: InputMaybe; - resource_typeGT?: InputMaybe; - resource_typeGTE?: InputMaybe; - resource_typeIN?: InputMaybe>>; - resource_typeLIKE?: InputMaybe; - resource_typeLT?: InputMaybe; - resource_typeLTE?: InputMaybe; - resource_typeNEQ?: InputMaybe; - resource_typeNOTIN?: InputMaybe>>; - resource_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ProductionDeadlineOrder = { + field: s1_eternum_ProductionConfigOrderField; +}; + +export enum s1_eternum_ProductionConfigOrderField { + Amount = "AMOUNT", + InputCount = "INPUT_COUNT", + OutputCount = "OUTPUT_COUNT", + ResourceType = "RESOURCE_TYPE", +} + +export type s1_eternum_ProductionConfigWhereInput = { + amount?: InputMaybe; + amountEQ?: InputMaybe; + amountGT?: InputMaybe; + amountGTE?: InputMaybe; + amountIN?: InputMaybe>>; + amountLIKE?: InputMaybe; + amountLT?: InputMaybe; + amountLTE?: InputMaybe; + amountNEQ?: InputMaybe; + amountNOTIN?: InputMaybe>>; + amountNOTLIKE?: InputMaybe; + input_count?: InputMaybe; + input_countEQ?: InputMaybe; + input_countGT?: InputMaybe; + input_countGTE?: InputMaybe; + input_countIN?: InputMaybe>>; + input_countLIKE?: InputMaybe; + input_countLT?: InputMaybe; + input_countLTE?: InputMaybe; + input_countNEQ?: InputMaybe; + input_countNOTIN?: InputMaybe>>; + input_countNOTLIKE?: InputMaybe; + output_count?: InputMaybe; + output_countEQ?: InputMaybe; + output_countGT?: InputMaybe; + output_countGTE?: InputMaybe; + output_countIN?: InputMaybe>>; + output_countLIKE?: InputMaybe; + output_countLT?: InputMaybe; + output_countLTE?: InputMaybe; + output_countNEQ?: InputMaybe; + output_countNOTIN?: InputMaybe>>; + output_countNOTLIKE?: InputMaybe; + resource_type?: InputMaybe; + resource_typeEQ?: InputMaybe; + resource_typeGT?: InputMaybe; + resource_typeGTE?: InputMaybe; + resource_typeIN?: InputMaybe>>; + resource_typeLIKE?: InputMaybe; + resource_typeLT?: InputMaybe; + resource_typeLTE?: InputMaybe; + resource_typeNEQ?: InputMaybe; + resource_typeNOTIN?: InputMaybe>>; + resource_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ProductionDeadlineOrder = { direction: OrderDirection; - field: S0_Eternum_ProductionDeadlineOrderField; -}; - -export enum S0_Eternum_ProductionDeadlineOrderField { - DeadlineTick = 'DEADLINE_TICK', - EntityId = 'ENTITY_ID' -} - -export type S0_Eternum_ProductionDeadlineWhereInput = { - deadline_tick?: InputMaybe; - deadline_tickEQ?: InputMaybe; - deadline_tickGT?: InputMaybe; - deadline_tickGTE?: InputMaybe; - deadline_tickIN?: InputMaybe>>; - deadline_tickLIKE?: InputMaybe; - deadline_tickLT?: InputMaybe; - deadline_tickLTE?: InputMaybe; - deadline_tickNEQ?: InputMaybe; - deadline_tickNOTIN?: InputMaybe>>; - deadline_tickNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ProductionInputOrder = { + field: s1_eternum_ProductionDeadlineOrderField; +}; + +export enum s1_eternum_ProductionDeadlineOrderField { + DeadlineTick = "DEADLINE_TICK", + EntityId = "ENTITY_ID", +} + +export type s1_eternum_ProductionDeadlineWhereInput = { + deadline_tick?: InputMaybe; + deadline_tickEQ?: InputMaybe; + deadline_tickGT?: InputMaybe; + deadline_tickGTE?: InputMaybe; + deadline_tickIN?: InputMaybe>>; + deadline_tickLIKE?: InputMaybe; + deadline_tickLT?: InputMaybe; + deadline_tickLTE?: InputMaybe; + deadline_tickNEQ?: InputMaybe; + deadline_tickNOTIN?: InputMaybe>>; + deadline_tickNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ProductionInputOrder = { direction: OrderDirection; - field: S0_Eternum_ProductionInputOrderField; -}; - -export enum S0_Eternum_ProductionInputOrderField { - Index = 'INDEX', - InputResourceAmount = 'INPUT_RESOURCE_AMOUNT', - InputResourceType = 'INPUT_RESOURCE_TYPE', - OutputResourceType = 'OUTPUT_RESOURCE_TYPE' -} - -export type S0_Eternum_ProductionInputWhereInput = { - index?: InputMaybe; - indexEQ?: InputMaybe; - indexGT?: InputMaybe; - indexGTE?: InputMaybe; - indexIN?: InputMaybe>>; - indexLIKE?: InputMaybe; - indexLT?: InputMaybe; - indexLTE?: InputMaybe; - indexNEQ?: InputMaybe; - indexNOTIN?: InputMaybe>>; - indexNOTLIKE?: InputMaybe; - input_resource_amount?: InputMaybe; - input_resource_amountEQ?: InputMaybe; - input_resource_amountGT?: InputMaybe; - input_resource_amountGTE?: InputMaybe; - input_resource_amountIN?: InputMaybe>>; - input_resource_amountLIKE?: InputMaybe; - input_resource_amountLT?: InputMaybe; - input_resource_amountLTE?: InputMaybe; - input_resource_amountNEQ?: InputMaybe; - input_resource_amountNOTIN?: InputMaybe>>; - input_resource_amountNOTLIKE?: InputMaybe; - input_resource_type?: InputMaybe; - input_resource_typeEQ?: InputMaybe; - input_resource_typeGT?: InputMaybe; - input_resource_typeGTE?: InputMaybe; - input_resource_typeIN?: InputMaybe>>; - input_resource_typeLIKE?: InputMaybe; - input_resource_typeLT?: InputMaybe; - input_resource_typeLTE?: InputMaybe; - input_resource_typeNEQ?: InputMaybe; - input_resource_typeNOTIN?: InputMaybe>>; - input_resource_typeNOTLIKE?: InputMaybe; - output_resource_type?: InputMaybe; - output_resource_typeEQ?: InputMaybe; - output_resource_typeGT?: InputMaybe; - output_resource_typeGTE?: InputMaybe; - output_resource_typeIN?: InputMaybe>>; - output_resource_typeLIKE?: InputMaybe; - output_resource_typeLT?: InputMaybe; - output_resource_typeLTE?: InputMaybe; - output_resource_typeNEQ?: InputMaybe; - output_resource_typeNOTIN?: InputMaybe>>; - output_resource_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ProductionOrder = { + field: s1_eternum_ProductionInputOrderField; +}; + +export enum s1_eternum_ProductionInputOrderField { + Index = "INDEX", + InputResourceAmount = "INPUT_RESOURCE_AMOUNT", + InputResourceType = "INPUT_RESOURCE_TYPE", + OutputResourceType = "OUTPUT_RESOURCE_TYPE", +} + +export type s1_eternum_ProductionInputWhereInput = { + index?: InputMaybe; + indexEQ?: InputMaybe; + indexGT?: InputMaybe; + indexGTE?: InputMaybe; + indexIN?: InputMaybe>>; + indexLIKE?: InputMaybe; + indexLT?: InputMaybe; + indexLTE?: InputMaybe; + indexNEQ?: InputMaybe; + indexNOTIN?: InputMaybe>>; + indexNOTLIKE?: InputMaybe; + input_resource_amount?: InputMaybe; + input_resource_amountEQ?: InputMaybe; + input_resource_amountGT?: InputMaybe; + input_resource_amountGTE?: InputMaybe; + input_resource_amountIN?: InputMaybe>>; + input_resource_amountLIKE?: InputMaybe; + input_resource_amountLT?: InputMaybe; + input_resource_amountLTE?: InputMaybe; + input_resource_amountNEQ?: InputMaybe; + input_resource_amountNOTIN?: InputMaybe>>; + input_resource_amountNOTLIKE?: InputMaybe; + input_resource_type?: InputMaybe; + input_resource_typeEQ?: InputMaybe; + input_resource_typeGT?: InputMaybe; + input_resource_typeGTE?: InputMaybe; + input_resource_typeIN?: InputMaybe>>; + input_resource_typeLIKE?: InputMaybe; + input_resource_typeLT?: InputMaybe; + input_resource_typeLTE?: InputMaybe; + input_resource_typeNEQ?: InputMaybe; + input_resource_typeNOTIN?: InputMaybe>>; + input_resource_typeNOTLIKE?: InputMaybe; + output_resource_type?: InputMaybe; + output_resource_typeEQ?: InputMaybe; + output_resource_typeGT?: InputMaybe; + output_resource_typeGTE?: InputMaybe; + output_resource_typeIN?: InputMaybe>>; + output_resource_typeLIKE?: InputMaybe; + output_resource_typeLT?: InputMaybe; + output_resource_typeLTE?: InputMaybe; + output_resource_typeNEQ?: InputMaybe; + output_resource_typeNOTIN?: InputMaybe>>; + output_resource_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ProductionOrder = { direction: OrderDirection; - field: S0_Eternum_ProductionOrderField; + field: s1_eternum_ProductionOrderField; }; -export enum S0_Eternum_ProductionOrderField { +export enum s1_eternum_ProductionOrderField { BuildingCount = 'BUILDING_COUNT', ConsumptionRate = 'CONSUMPTION_RATE', EntityId = 'ENTITY_ID', - InputFinishTick = 'INPUT_FINISH_TICK', + InputFinishTick = 'LABOR_FINISH_TICK', LastUpdatedTick = 'LAST_UPDATED_TICK', ProductionRate = 'PRODUCTION_RATE', ResourceType = 'RESOURCE_TYPE' } -export type S0_Eternum_ProductionOutputOrder = { +export type s1_eternum_ProductionOutputOrder = { direction: OrderDirection; - field: S0_Eternum_ProductionOutputOrderField; -}; - -export enum S0_Eternum_ProductionOutputOrderField { - Index = 'INDEX', - InputResourceType = 'INPUT_RESOURCE_TYPE', - OutputResourceType = 'OUTPUT_RESOURCE_TYPE' -} - -export type S0_Eternum_ProductionOutputWhereInput = { - index?: InputMaybe; - indexEQ?: InputMaybe; - indexGT?: InputMaybe; - indexGTE?: InputMaybe; - indexIN?: InputMaybe>>; - indexLIKE?: InputMaybe; - indexLT?: InputMaybe; - indexLTE?: InputMaybe; - indexNEQ?: InputMaybe; - indexNOTIN?: InputMaybe>>; - indexNOTLIKE?: InputMaybe; - input_resource_type?: InputMaybe; - input_resource_typeEQ?: InputMaybe; - input_resource_typeGT?: InputMaybe; - input_resource_typeGTE?: InputMaybe; - input_resource_typeIN?: InputMaybe>>; - input_resource_typeLIKE?: InputMaybe; - input_resource_typeLT?: InputMaybe; - input_resource_typeLTE?: InputMaybe; - input_resource_typeNEQ?: InputMaybe; - input_resource_typeNOTIN?: InputMaybe>>; - input_resource_typeNOTLIKE?: InputMaybe; - output_resource_type?: InputMaybe; - output_resource_typeEQ?: InputMaybe; - output_resource_typeGT?: InputMaybe; - output_resource_typeGTE?: InputMaybe; - output_resource_typeIN?: InputMaybe>>; - output_resource_typeLIKE?: InputMaybe; - output_resource_typeLT?: InputMaybe; - output_resource_typeLTE?: InputMaybe; - output_resource_typeNEQ?: InputMaybe; - output_resource_typeNOTIN?: InputMaybe>>; - output_resource_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ProductionWhereInput = { + field: s1_eternum_ProductionOutputOrderField; +}; + +export enum s1_eternum_ProductionOutputOrderField { + Index = "INDEX", + InputResourceType = "INPUT_RESOURCE_TYPE", + OutputResourceType = "OUTPUT_RESOURCE_TYPE", +} + +export type s1_eternum_ProductionOutputWhereInput = { + index?: InputMaybe; + indexEQ?: InputMaybe; + indexGT?: InputMaybe; + indexGTE?: InputMaybe; + indexIN?: InputMaybe>>; + indexLIKE?: InputMaybe; + indexLT?: InputMaybe; + indexLTE?: InputMaybe; + indexNEQ?: InputMaybe; + indexNOTIN?: InputMaybe>>; + indexNOTLIKE?: InputMaybe; + input_resource_type?: InputMaybe; + input_resource_typeEQ?: InputMaybe; + input_resource_typeGT?: InputMaybe; + input_resource_typeGTE?: InputMaybe; + input_resource_typeIN?: InputMaybe>>; + input_resource_typeLIKE?: InputMaybe; + input_resource_typeLT?: InputMaybe; + input_resource_typeLTE?: InputMaybe; + input_resource_typeNEQ?: InputMaybe; + input_resource_typeNOTIN?: InputMaybe>>; + input_resource_typeNOTLIKE?: InputMaybe; + output_resource_type?: InputMaybe; + output_resource_typeEQ?: InputMaybe; + output_resource_typeGT?: InputMaybe; + output_resource_typeGTE?: InputMaybe; + output_resource_typeIN?: InputMaybe>>; + output_resource_typeLIKE?: InputMaybe; + output_resource_typeLT?: InputMaybe; + output_resource_typeLTE?: InputMaybe; + output_resource_typeNEQ?: InputMaybe; + output_resource_typeNOTIN?: InputMaybe>>; + output_resource_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ProductionWhereInput = { building_count?: InputMaybe; - building_countEQ?: InputMaybe; - building_countGT?: InputMaybe; - building_countGTE?: InputMaybe; - building_countIN?: InputMaybe>>; - building_countLIKE?: InputMaybe; - building_countLT?: InputMaybe; - building_countLTE?: InputMaybe; - building_countNEQ?: InputMaybe; - building_countNOTIN?: InputMaybe>>; - building_countNOTLIKE?: InputMaybe; - consumption_rate?: InputMaybe; - consumption_rateEQ?: InputMaybe; - consumption_rateGT?: InputMaybe; - consumption_rateGTE?: InputMaybe; - consumption_rateIN?: InputMaybe>>; - consumption_rateLIKE?: InputMaybe; - consumption_rateLT?: InputMaybe; - consumption_rateLTE?: InputMaybe; - consumption_rateNEQ?: InputMaybe; - consumption_rateNOTIN?: InputMaybe>>; - consumption_rateNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - input_finish_tick?: InputMaybe; - input_finish_tickEQ?: InputMaybe; - input_finish_tickGT?: InputMaybe; - input_finish_tickGTE?: InputMaybe; - input_finish_tickIN?: InputMaybe>>; - input_finish_tickLIKE?: InputMaybe; - input_finish_tickLT?: InputMaybe; - input_finish_tickLTE?: InputMaybe; - input_finish_tickNEQ?: InputMaybe; - input_finish_tickNOTIN?: InputMaybe>>; - input_finish_tickNOTLIKE?: InputMaybe; - last_updated_tick?: InputMaybe; - last_updated_tickEQ?: InputMaybe; - last_updated_tickGT?: InputMaybe; - last_updated_tickGTE?: InputMaybe; - last_updated_tickIN?: InputMaybe>>; - last_updated_tickLIKE?: InputMaybe; - last_updated_tickLT?: InputMaybe; - last_updated_tickLTE?: InputMaybe; - last_updated_tickNEQ?: InputMaybe; - last_updated_tickNOTIN?: InputMaybe>>; - last_updated_tickNOTLIKE?: InputMaybe; - production_rate?: InputMaybe; - production_rateEQ?: InputMaybe; - production_rateGT?: InputMaybe; - production_rateGTE?: InputMaybe; - production_rateIN?: InputMaybe>>; - production_rateLIKE?: InputMaybe; - production_rateLT?: InputMaybe; - production_rateLTE?: InputMaybe; - production_rateNEQ?: InputMaybe; - production_rateNOTIN?: InputMaybe>>; - production_rateNOTLIKE?: InputMaybe; - resource_type?: InputMaybe; - resource_typeEQ?: InputMaybe; - resource_typeGT?: InputMaybe; - resource_typeGTE?: InputMaybe; - resource_typeIN?: InputMaybe>>; - resource_typeLIKE?: InputMaybe; - resource_typeLT?: InputMaybe; - resource_typeLTE?: InputMaybe; - resource_typeNEQ?: InputMaybe; - resource_typeNOTIN?: InputMaybe>>; - resource_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ProgressOrder = { - direction: OrderDirection; - field: S0_Eternum_ProgressOrderField; -}; - -export enum S0_Eternum_ProgressOrderField { - Amount = 'AMOUNT', - HyperstructureEntityId = 'HYPERSTRUCTURE_ENTITY_ID', - ResourceType = 'RESOURCE_TYPE' -} - -export type S0_Eternum_ProgressWhereInput = { - amount?: InputMaybe; - amountEQ?: InputMaybe; - amountGT?: InputMaybe; - amountGTE?: InputMaybe; - amountIN?: InputMaybe>>; - amountLIKE?: InputMaybe; - amountLT?: InputMaybe; - amountLTE?: InputMaybe; - amountNEQ?: InputMaybe; - amountNOTIN?: InputMaybe>>; - amountNOTLIKE?: InputMaybe; - hyperstructure_entity_id?: InputMaybe; - hyperstructure_entity_idEQ?: InputMaybe; - hyperstructure_entity_idGT?: InputMaybe; - hyperstructure_entity_idGTE?: InputMaybe; - hyperstructure_entity_idIN?: InputMaybe>>; - hyperstructure_entity_idLIKE?: InputMaybe; - hyperstructure_entity_idLT?: InputMaybe; - hyperstructure_entity_idLTE?: InputMaybe; - hyperstructure_entity_idNEQ?: InputMaybe; - hyperstructure_entity_idNOTIN?: InputMaybe>>; - hyperstructure_entity_idNOTLIKE?: InputMaybe; - resource_type?: InputMaybe; - resource_typeEQ?: InputMaybe; - resource_typeGT?: InputMaybe; - resource_typeGTE?: InputMaybe; - resource_typeIN?: InputMaybe>>; - resource_typeLIKE?: InputMaybe; - resource_typeLT?: InputMaybe; - resource_typeLTE?: InputMaybe; - resource_typeNEQ?: InputMaybe; - resource_typeNOTIN?: InputMaybe>>; - resource_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ProtecteeOrder = { - direction: OrderDirection; - field: S0_Eternum_ProtecteeOrderField; -}; - -export enum S0_Eternum_ProtecteeOrderField { - ArmyId = 'ARMY_ID', - ProtecteeId = 'PROTECTEE_ID' -} - -export type S0_Eternum_ProtecteeWhereInput = { - army_id?: InputMaybe; - army_idEQ?: InputMaybe; - army_idGT?: InputMaybe; - army_idGTE?: InputMaybe; - army_idIN?: InputMaybe>>; - army_idLIKE?: InputMaybe; - army_idLT?: InputMaybe; - army_idLTE?: InputMaybe; - army_idNEQ?: InputMaybe; - army_idNOTIN?: InputMaybe>>; - army_idNOTLIKE?: InputMaybe; - protectee_id?: InputMaybe; - protectee_idEQ?: InputMaybe; - protectee_idGT?: InputMaybe; - protectee_idGTE?: InputMaybe; - protectee_idIN?: InputMaybe>>; - protectee_idLIKE?: InputMaybe; - protectee_idLT?: InputMaybe; - protectee_idLTE?: InputMaybe; - protectee_idNEQ?: InputMaybe; - protectee_idNOTIN?: InputMaybe>>; - protectee_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ProtectorOrder = { - direction: OrderDirection; - field: S0_Eternum_ProtectorOrderField; -}; - -export enum S0_Eternum_ProtectorOrderField { - ArmyId = 'ARMY_ID', - EntityId = 'ENTITY_ID' -} - -export type S0_Eternum_ProtectorWhereInput = { - army_id?: InputMaybe; - army_idEQ?: InputMaybe; - army_idGT?: InputMaybe; - army_idGTE?: InputMaybe; - army_idIN?: InputMaybe>>; - army_idLIKE?: InputMaybe; - army_idLT?: InputMaybe; - army_idLTE?: InputMaybe; - army_idNEQ?: InputMaybe; - army_idNOTIN?: InputMaybe>>; - army_idNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_QuantityOrder = { - direction: OrderDirection; - field: S0_Eternum_QuantityOrderField; -}; - -export enum S0_Eternum_QuantityOrderField { - EntityId = 'ENTITY_ID', - Value = 'VALUE' -} - -export type S0_Eternum_QuantityTrackerOrder = { - direction: OrderDirection; - field: S0_Eternum_QuantityTrackerOrderField; -}; - -export enum S0_Eternum_QuantityTrackerOrderField { - Count = 'COUNT', - EntityId = 'ENTITY_ID' -} - -export type S0_Eternum_QuantityTrackerWhereInput = { - count?: InputMaybe; - countEQ?: InputMaybe; - countGT?: InputMaybe; - countGTE?: InputMaybe; - countIN?: InputMaybe>>; - countLIKE?: InputMaybe; - countLT?: InputMaybe; - countLTE?: InputMaybe; - countNEQ?: InputMaybe; - countNOTIN?: InputMaybe>>; - countNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_QuantityWhereInput = { - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - value?: InputMaybe; - valueEQ?: InputMaybe; - valueGT?: InputMaybe; - valueGTE?: InputMaybe; - valueIN?: InputMaybe>>; - valueLIKE?: InputMaybe; - valueLT?: InputMaybe; - valueLTE?: InputMaybe; - valueNEQ?: InputMaybe; - valueNOTIN?: InputMaybe>>; - valueNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_QuestBonusOrder = { - direction: OrderDirection; - field: S0_Eternum_QuestBonusOrderField; -}; - -export enum S0_Eternum_QuestBonusOrderField { - Claimed = 'CLAIMED', - EntityId = 'ENTITY_ID', - ResourceType = 'RESOURCE_TYPE' -} - -export type S0_Eternum_QuestBonusWhereInput = { - claimed?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - resource_type?: InputMaybe; - resource_typeEQ?: InputMaybe; - resource_typeGT?: InputMaybe; - resource_typeGTE?: InputMaybe; - resource_typeIN?: InputMaybe>>; - resource_typeLIKE?: InputMaybe; - resource_typeLT?: InputMaybe; - resource_typeLTE?: InputMaybe; - resource_typeNEQ?: InputMaybe; - resource_typeNOTIN?: InputMaybe>>; - resource_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_QuestConfigOrder = { - direction: OrderDirection; - field: S0_Eternum_QuestConfigOrderField; -}; - -export enum S0_Eternum_QuestConfigOrderField { - ConfigId = 'CONFIG_ID', - ProductionMaterialMultiplier = 'PRODUCTION_MATERIAL_MULTIPLIER' -} - -export type S0_Eternum_QuestConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - production_material_multiplier?: InputMaybe; - production_material_multiplierEQ?: InputMaybe; - production_material_multiplierGT?: InputMaybe; - production_material_multiplierGTE?: InputMaybe; - production_material_multiplierIN?: InputMaybe>>; - production_material_multiplierLIKE?: InputMaybe; - production_material_multiplierLT?: InputMaybe; - production_material_multiplierLTE?: InputMaybe; - production_material_multiplierNEQ?: InputMaybe; - production_material_multiplierNOTIN?: InputMaybe>>; - production_material_multiplierNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_QuestOrder = { - direction: OrderDirection; - field: S0_Eternum_QuestOrderField; -}; - -export enum S0_Eternum_QuestOrderField { - Completed = 'COMPLETED', - ConfigId = 'CONFIG_ID', - EntityId = 'ENTITY_ID' -} - -export type S0_Eternum_QuestRewardConfigOrder = { - direction: OrderDirection; - field: S0_Eternum_QuestRewardConfigOrderField; -}; - -export enum S0_Eternum_QuestRewardConfigOrderField { - DetachedResourceCount = 'DETACHED_RESOURCE_COUNT', - DetachedResourceId = 'DETACHED_RESOURCE_ID', - QuestId = 'QUEST_ID' -} - -export type S0_Eternum_QuestRewardConfigWhereInput = { - detached_resource_count?: InputMaybe; - detached_resource_countEQ?: InputMaybe; - detached_resource_countGT?: InputMaybe; - detached_resource_countGTE?: InputMaybe; - detached_resource_countIN?: InputMaybe>>; - detached_resource_countLIKE?: InputMaybe; - detached_resource_countLT?: InputMaybe; - detached_resource_countLTE?: InputMaybe; - detached_resource_countNEQ?: InputMaybe; - detached_resource_countNOTIN?: InputMaybe>>; - detached_resource_countNOTLIKE?: InputMaybe; - detached_resource_id?: InputMaybe; - detached_resource_idEQ?: InputMaybe; - detached_resource_idGT?: InputMaybe; - detached_resource_idGTE?: InputMaybe; - detached_resource_idIN?: InputMaybe>>; - detached_resource_idLIKE?: InputMaybe; - detached_resource_idLT?: InputMaybe; - detached_resource_idLTE?: InputMaybe; - detached_resource_idNEQ?: InputMaybe; - detached_resource_idNOTIN?: InputMaybe>>; - detached_resource_idNOTLIKE?: InputMaybe; - quest_id?: InputMaybe; - quest_idEQ?: InputMaybe; - quest_idGT?: InputMaybe; - quest_idGTE?: InputMaybe; - quest_idIN?: InputMaybe>>; - quest_idLIKE?: InputMaybe; - quest_idLT?: InputMaybe; - quest_idLTE?: InputMaybe; - quest_idNEQ?: InputMaybe; - quest_idNOTIN?: InputMaybe>>; - quest_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_QuestWhereInput = { - completed?: InputMaybe; - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_RealmLevelConfigOrder = { - direction: OrderDirection; - field: S0_Eternum_RealmLevelConfigOrderField; -}; - -export enum S0_Eternum_RealmLevelConfigOrderField { - Level = 'LEVEL', - RequiredResourcesId = 'REQUIRED_RESOURCES_ID', - RequiredResourceCount = 'REQUIRED_RESOURCE_COUNT' -} - -export type S0_Eternum_RealmLevelConfigWhereInput = { - level?: InputMaybe; - levelEQ?: InputMaybe; - levelGT?: InputMaybe; - levelGTE?: InputMaybe; - levelIN?: InputMaybe>>; - levelLIKE?: InputMaybe; - levelLT?: InputMaybe; - levelLTE?: InputMaybe; - levelNEQ?: InputMaybe; - levelNOTIN?: InputMaybe>>; - levelNOTLIKE?: InputMaybe; - required_resource_count?: InputMaybe; - required_resource_countEQ?: InputMaybe; - required_resource_countGT?: InputMaybe; - required_resource_countGTE?: InputMaybe; - required_resource_countIN?: InputMaybe>>; - required_resource_countLIKE?: InputMaybe; - required_resource_countLT?: InputMaybe; - required_resource_countLTE?: InputMaybe; - required_resource_countNEQ?: InputMaybe; - required_resource_countNOTIN?: InputMaybe>>; - required_resource_countNOTLIKE?: InputMaybe; - required_resources_id?: InputMaybe; - required_resources_idEQ?: InputMaybe; - required_resources_idGT?: InputMaybe; - required_resources_idGTE?: InputMaybe; - required_resources_idIN?: InputMaybe>>; - required_resources_idLIKE?: InputMaybe; - required_resources_idLT?: InputMaybe; - required_resources_idLTE?: InputMaybe; - required_resources_idNEQ?: InputMaybe; - required_resources_idNOTIN?: InputMaybe>>; - required_resources_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_RealmMaxLevelConfigOrder = { - direction: OrderDirection; - field: S0_Eternum_RealmMaxLevelConfigOrderField; -}; - -export enum S0_Eternum_RealmMaxLevelConfigOrderField { - ConfigId = 'CONFIG_ID', - MaxLevel = 'MAX_LEVEL' -} - -export type S0_Eternum_RealmMaxLevelConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - max_level?: InputMaybe; - max_levelEQ?: InputMaybe; - max_levelGT?: InputMaybe; - max_levelGTE?: InputMaybe; - max_levelIN?: InputMaybe>>; - max_levelLIKE?: InputMaybe; - max_levelLT?: InputMaybe; - max_levelLTE?: InputMaybe; - max_levelNEQ?: InputMaybe; - max_levelNOTIN?: InputMaybe>>; - max_levelNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_RealmOrder = { - direction: OrderDirection; - field: S0_Eternum_RealmOrderField; -}; - -export enum S0_Eternum_RealmOrderField { - EntityId = 'ENTITY_ID', - HasWonder = 'HAS_WONDER', - Level = 'LEVEL', - Order = 'ORDER', - ProducedResources = 'PRODUCED_RESOURCES', - RealmId = 'REALM_ID', - SettlerAddress = 'SETTLER_ADDRESS' -} - -export type S0_Eternum_RealmWhereInput = { - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - has_wonder?: InputMaybe; - level?: InputMaybe; - levelEQ?: InputMaybe; - levelGT?: InputMaybe; - levelGTE?: InputMaybe; - levelIN?: InputMaybe>>; - levelLIKE?: InputMaybe; - levelLT?: InputMaybe; - levelLTE?: InputMaybe; - levelNEQ?: InputMaybe; - levelNOTIN?: InputMaybe>>; - levelNOTLIKE?: InputMaybe; - order?: InputMaybe; - orderEQ?: InputMaybe; - orderGT?: InputMaybe; - orderGTE?: InputMaybe; - orderIN?: InputMaybe>>; - orderLIKE?: InputMaybe; - orderLT?: InputMaybe; - orderLTE?: InputMaybe; - orderNEQ?: InputMaybe; - orderNOTIN?: InputMaybe>>; - orderNOTLIKE?: InputMaybe; - produced_resources?: InputMaybe; - produced_resourcesEQ?: InputMaybe; - produced_resourcesGT?: InputMaybe; - produced_resourcesGTE?: InputMaybe; - produced_resourcesIN?: InputMaybe>>; - produced_resourcesLIKE?: InputMaybe; - produced_resourcesLT?: InputMaybe; - produced_resourcesLTE?: InputMaybe; - produced_resourcesNEQ?: InputMaybe; - produced_resourcesNOTIN?: InputMaybe>>; - produced_resourcesNOTLIKE?: InputMaybe; - realm_id?: InputMaybe; - realm_idEQ?: InputMaybe; - realm_idGT?: InputMaybe; - realm_idGTE?: InputMaybe; - realm_idIN?: InputMaybe>>; - realm_idLIKE?: InputMaybe; - realm_idLT?: InputMaybe; - realm_idLTE?: InputMaybe; - realm_idNEQ?: InputMaybe; - realm_idNOTIN?: InputMaybe>>; - realm_idNOTLIKE?: InputMaybe; - settler_address?: InputMaybe; - settler_addressEQ?: InputMaybe; - settler_addressGT?: InputMaybe; - settler_addressGTE?: InputMaybe; - settler_addressIN?: InputMaybe>>; - settler_addressLIKE?: InputMaybe; - settler_addressLT?: InputMaybe; - settler_addressLTE?: InputMaybe; - settler_addressNEQ?: InputMaybe; - settler_addressNOTIN?: InputMaybe>>; - settler_addressNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ResourceAllowanceOrder = { - direction: OrderDirection; - field: S0_Eternum_ResourceAllowanceOrderField; -}; - -export enum S0_Eternum_ResourceAllowanceOrderField { - Amount = 'AMOUNT', - ApprovedEntityId = 'APPROVED_ENTITY_ID', - OwnerEntityId = 'OWNER_ENTITY_ID', - ResourceType = 'RESOURCE_TYPE' -} - -export type S0_Eternum_ResourceAllowanceWhereInput = { - amount?: InputMaybe; - amountEQ?: InputMaybe; - amountGT?: InputMaybe; - amountGTE?: InputMaybe; - amountIN?: InputMaybe>>; - amountLIKE?: InputMaybe; - amountLT?: InputMaybe; - amountLTE?: InputMaybe; - amountNEQ?: InputMaybe; - amountNOTIN?: InputMaybe>>; - amountNOTLIKE?: InputMaybe; - approved_entity_id?: InputMaybe; - approved_entity_idEQ?: InputMaybe; - approved_entity_idGT?: InputMaybe; - approved_entity_idGTE?: InputMaybe; - approved_entity_idIN?: InputMaybe>>; - approved_entity_idLIKE?: InputMaybe; - approved_entity_idLT?: InputMaybe; - approved_entity_idLTE?: InputMaybe; - approved_entity_idNEQ?: InputMaybe; - approved_entity_idNOTIN?: InputMaybe>>; - approved_entity_idNOTLIKE?: InputMaybe; - owner_entity_id?: InputMaybe; - owner_entity_idEQ?: InputMaybe; - owner_entity_idGT?: InputMaybe; - owner_entity_idGTE?: InputMaybe; - owner_entity_idIN?: InputMaybe>>; - owner_entity_idLIKE?: InputMaybe; - owner_entity_idLT?: InputMaybe; - owner_entity_idLTE?: InputMaybe; - owner_entity_idNEQ?: InputMaybe; - owner_entity_idNOTIN?: InputMaybe>>; - owner_entity_idNOTLIKE?: InputMaybe; - resource_type?: InputMaybe; - resource_typeEQ?: InputMaybe; - resource_typeGT?: InputMaybe; - resource_typeGTE?: InputMaybe; - resource_typeIN?: InputMaybe>>; - resource_typeLIKE?: InputMaybe; - resource_typeLT?: InputMaybe; - resource_typeLTE?: InputMaybe; - resource_typeNEQ?: InputMaybe; - resource_typeNOTIN?: InputMaybe>>; - resource_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ResourceBridgeConfigOrder = { - direction: OrderDirection; - field: S0_Eternum_ResourceBridgeConfigOrderField; -}; - -export enum S0_Eternum_ResourceBridgeConfigOrderField { - ConfigId = 'CONFIG_ID', - DepositPaused = 'DEPOSIT_PAUSED', - WithdrawPaused = 'WITHDRAW_PAUSED' -} - -export type S0_Eternum_ResourceBridgeConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - deposit_paused?: InputMaybe; - withdraw_paused?: InputMaybe; -}; - -export type S0_Eternum_ResourceBridgeFeeSplitConfigOrder = { - direction: OrderDirection; - field: S0_Eternum_ResourceBridgeFeeSplitConfigOrderField; -}; - -export enum S0_Eternum_ResourceBridgeFeeSplitConfigOrderField { - ClientFeeOnDptPercent = 'CLIENT_FEE_ON_DPT_PERCENT', - ClientFeeOnWtdrPercent = 'CLIENT_FEE_ON_WTDR_PERCENT', - ConfigId = 'CONFIG_ID', - MaxBankFeeDptPercent = 'MAX_BANK_FEE_DPT_PERCENT', - MaxBankFeeWtdrPercent = 'MAX_BANK_FEE_WTDR_PERCENT', - SeasonPoolFeeOnDptPercent = 'SEASON_POOL_FEE_ON_DPT_PERCENT', - SeasonPoolFeeOnWtdrPercent = 'SEASON_POOL_FEE_ON_WTDR_PERCENT', - SeasonPoolFeeRecipient = 'SEASON_POOL_FEE_RECIPIENT', - VelordsFeeOnDptPercent = 'VELORDS_FEE_ON_DPT_PERCENT', - VelordsFeeOnWtdrPercent = 'VELORDS_FEE_ON_WTDR_PERCENT', - VelordsFeeRecipient = 'VELORDS_FEE_RECIPIENT' -} - -export type S0_Eternum_ResourceBridgeFeeSplitConfigWhereInput = { - client_fee_on_dpt_percent?: InputMaybe; - client_fee_on_dpt_percentEQ?: InputMaybe; - client_fee_on_dpt_percentGT?: InputMaybe; - client_fee_on_dpt_percentGTE?: InputMaybe; - client_fee_on_dpt_percentIN?: InputMaybe>>; - client_fee_on_dpt_percentLIKE?: InputMaybe; - client_fee_on_dpt_percentLT?: InputMaybe; - client_fee_on_dpt_percentLTE?: InputMaybe; - client_fee_on_dpt_percentNEQ?: InputMaybe; - client_fee_on_dpt_percentNOTIN?: InputMaybe>>; - client_fee_on_dpt_percentNOTLIKE?: InputMaybe; - client_fee_on_wtdr_percent?: InputMaybe; - client_fee_on_wtdr_percentEQ?: InputMaybe; - client_fee_on_wtdr_percentGT?: InputMaybe; - client_fee_on_wtdr_percentGTE?: InputMaybe; - client_fee_on_wtdr_percentIN?: InputMaybe>>; - client_fee_on_wtdr_percentLIKE?: InputMaybe; - client_fee_on_wtdr_percentLT?: InputMaybe; - client_fee_on_wtdr_percentLTE?: InputMaybe; - client_fee_on_wtdr_percentNEQ?: InputMaybe; - client_fee_on_wtdr_percentNOTIN?: InputMaybe>>; - client_fee_on_wtdr_percentNOTLIKE?: InputMaybe; - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - max_bank_fee_dpt_percent?: InputMaybe; - max_bank_fee_dpt_percentEQ?: InputMaybe; - max_bank_fee_dpt_percentGT?: InputMaybe; - max_bank_fee_dpt_percentGTE?: InputMaybe; - max_bank_fee_dpt_percentIN?: InputMaybe>>; - max_bank_fee_dpt_percentLIKE?: InputMaybe; - max_bank_fee_dpt_percentLT?: InputMaybe; - max_bank_fee_dpt_percentLTE?: InputMaybe; - max_bank_fee_dpt_percentNEQ?: InputMaybe; - max_bank_fee_dpt_percentNOTIN?: InputMaybe>>; - max_bank_fee_dpt_percentNOTLIKE?: InputMaybe; - max_bank_fee_wtdr_percent?: InputMaybe; - max_bank_fee_wtdr_percentEQ?: InputMaybe; - max_bank_fee_wtdr_percentGT?: InputMaybe; - max_bank_fee_wtdr_percentGTE?: InputMaybe; - max_bank_fee_wtdr_percentIN?: InputMaybe>>; - max_bank_fee_wtdr_percentLIKE?: InputMaybe; - max_bank_fee_wtdr_percentLT?: InputMaybe; - max_bank_fee_wtdr_percentLTE?: InputMaybe; - max_bank_fee_wtdr_percentNEQ?: InputMaybe; - max_bank_fee_wtdr_percentNOTIN?: InputMaybe>>; - max_bank_fee_wtdr_percentNOTLIKE?: InputMaybe; - season_pool_fee_on_dpt_percent?: InputMaybe; - season_pool_fee_on_dpt_percentEQ?: InputMaybe; - season_pool_fee_on_dpt_percentGT?: InputMaybe; - season_pool_fee_on_dpt_percentGTE?: InputMaybe; - season_pool_fee_on_dpt_percentIN?: InputMaybe>>; - season_pool_fee_on_dpt_percentLIKE?: InputMaybe; - season_pool_fee_on_dpt_percentLT?: InputMaybe; - season_pool_fee_on_dpt_percentLTE?: InputMaybe; - season_pool_fee_on_dpt_percentNEQ?: InputMaybe; - season_pool_fee_on_dpt_percentNOTIN?: InputMaybe>>; - season_pool_fee_on_dpt_percentNOTLIKE?: InputMaybe; - season_pool_fee_on_wtdr_percent?: InputMaybe; - season_pool_fee_on_wtdr_percentEQ?: InputMaybe; - season_pool_fee_on_wtdr_percentGT?: InputMaybe; - season_pool_fee_on_wtdr_percentGTE?: InputMaybe; - season_pool_fee_on_wtdr_percentIN?: InputMaybe>>; - season_pool_fee_on_wtdr_percentLIKE?: InputMaybe; - season_pool_fee_on_wtdr_percentLT?: InputMaybe; - season_pool_fee_on_wtdr_percentLTE?: InputMaybe; - season_pool_fee_on_wtdr_percentNEQ?: InputMaybe; - season_pool_fee_on_wtdr_percentNOTIN?: InputMaybe>>; - season_pool_fee_on_wtdr_percentNOTLIKE?: InputMaybe; - season_pool_fee_recipient?: InputMaybe; - season_pool_fee_recipientEQ?: InputMaybe; - season_pool_fee_recipientGT?: InputMaybe; - season_pool_fee_recipientGTE?: InputMaybe; - season_pool_fee_recipientIN?: InputMaybe>>; - season_pool_fee_recipientLIKE?: InputMaybe; - season_pool_fee_recipientLT?: InputMaybe; - season_pool_fee_recipientLTE?: InputMaybe; - season_pool_fee_recipientNEQ?: InputMaybe; - season_pool_fee_recipientNOTIN?: InputMaybe>>; - season_pool_fee_recipientNOTLIKE?: InputMaybe; - velords_fee_on_dpt_percent?: InputMaybe; - velords_fee_on_dpt_percentEQ?: InputMaybe; - velords_fee_on_dpt_percentGT?: InputMaybe; - velords_fee_on_dpt_percentGTE?: InputMaybe; - velords_fee_on_dpt_percentIN?: InputMaybe>>; - velords_fee_on_dpt_percentLIKE?: InputMaybe; - velords_fee_on_dpt_percentLT?: InputMaybe; - velords_fee_on_dpt_percentLTE?: InputMaybe; - velords_fee_on_dpt_percentNEQ?: InputMaybe; - velords_fee_on_dpt_percentNOTIN?: InputMaybe>>; - velords_fee_on_dpt_percentNOTLIKE?: InputMaybe; - velords_fee_on_wtdr_percent?: InputMaybe; - velords_fee_on_wtdr_percentEQ?: InputMaybe; - velords_fee_on_wtdr_percentGT?: InputMaybe; - velords_fee_on_wtdr_percentGTE?: InputMaybe; - velords_fee_on_wtdr_percentIN?: InputMaybe>>; - velords_fee_on_wtdr_percentLIKE?: InputMaybe; - velords_fee_on_wtdr_percentLT?: InputMaybe; - velords_fee_on_wtdr_percentLTE?: InputMaybe; - velords_fee_on_wtdr_percentNEQ?: InputMaybe; - velords_fee_on_wtdr_percentNOTIN?: InputMaybe>>; - velords_fee_on_wtdr_percentNOTLIKE?: InputMaybe; - velords_fee_recipient?: InputMaybe; - velords_fee_recipientEQ?: InputMaybe; - velords_fee_recipientGT?: InputMaybe; - velords_fee_recipientGTE?: InputMaybe; - velords_fee_recipientIN?: InputMaybe>>; - velords_fee_recipientLIKE?: InputMaybe; - velords_fee_recipientLT?: InputMaybe; - velords_fee_recipientLTE?: InputMaybe; - velords_fee_recipientNEQ?: InputMaybe; - velords_fee_recipientNOTIN?: InputMaybe>>; - velords_fee_recipientNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ResourceBridgeWhitelistConfigOrder = { - direction: OrderDirection; - field: S0_Eternum_ResourceBridgeWhitelistConfigOrderField; -}; - -export enum S0_Eternum_ResourceBridgeWhitelistConfigOrderField { - ResourceType = 'RESOURCE_TYPE', - Token = 'TOKEN' -} - -export type S0_Eternum_ResourceBridgeWhitelistConfigWhereInput = { - resource_type?: InputMaybe; - resource_typeEQ?: InputMaybe; - resource_typeGT?: InputMaybe; - resource_typeGTE?: InputMaybe; - resource_typeIN?: InputMaybe>>; - resource_typeLIKE?: InputMaybe; - resource_typeLT?: InputMaybe; - resource_typeLTE?: InputMaybe; - resource_typeNEQ?: InputMaybe; - resource_typeNOTIN?: InputMaybe>>; - resource_typeNOTLIKE?: InputMaybe; - token?: InputMaybe; - tokenEQ?: InputMaybe; - tokenGT?: InputMaybe; - tokenGTE?: InputMaybe; - tokenIN?: InputMaybe>>; - tokenLIKE?: InputMaybe; - tokenLT?: InputMaybe; - tokenLTE?: InputMaybe; - tokenNEQ?: InputMaybe; - tokenNOTIN?: InputMaybe>>; - tokenNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ResourceCostOrder = { - direction: OrderDirection; - field: S0_Eternum_ResourceCostOrderField; -}; - -export enum S0_Eternum_ResourceCostOrderField { - Amount = 'AMOUNT', - EntityId = 'ENTITY_ID', - Index = 'INDEX', - ResourceType = 'RESOURCE_TYPE' -} - -export type S0_Eternum_ResourceCostWhereInput = { - amount?: InputMaybe; - amountEQ?: InputMaybe; - amountGT?: InputMaybe; - amountGTE?: InputMaybe; - amountIN?: InputMaybe>>; - amountLIKE?: InputMaybe; - amountLT?: InputMaybe; - amountLTE?: InputMaybe; - amountNEQ?: InputMaybe; - amountNOTIN?: InputMaybe>>; - amountNOTLIKE?: InputMaybe; + building_countEQ?: InputMaybe; + building_countGT?: InputMaybe; + building_countGTE?: InputMaybe; + building_countIN?: InputMaybe>>; + building_countLIKE?: InputMaybe; + building_countLT?: InputMaybe; + building_countLTE?: InputMaybe; + building_countNEQ?: InputMaybe; + building_countNOTIN?: InputMaybe>>; + building_countNOTLIKE?: InputMaybe; + consumption_rate?: InputMaybe; + consumption_rateEQ?: InputMaybe; + consumption_rateGT?: InputMaybe; + consumption_rateGTE?: InputMaybe; + consumption_rateIN?: InputMaybe>>; + consumption_rateLIKE?: InputMaybe; + consumption_rateLT?: InputMaybe; + consumption_rateLTE?: InputMaybe; + consumption_rateNEQ?: InputMaybe; + consumption_rateNOTIN?: InputMaybe>>; + consumption_rateNOTLIKE?: InputMaybe; entity_id?: InputMaybe; entity_idEQ?: InputMaybe; entity_idGT?: InputMaybe; @@ -5165,17 +4299,39 @@ export type S0_Eternum_ResourceCostWhereInput = { entity_idNEQ?: InputMaybe; entity_idNOTIN?: InputMaybe>>; entity_idNOTLIKE?: InputMaybe; - index?: InputMaybe; - indexEQ?: InputMaybe; - indexGT?: InputMaybe; - indexGTE?: InputMaybe; - indexIN?: InputMaybe>>; - indexLIKE?: InputMaybe; - indexLT?: InputMaybe; - indexLTE?: InputMaybe; - indexNEQ?: InputMaybe; - indexNOTIN?: InputMaybe>>; - indexNOTLIKE?: InputMaybe; + labor_finish_tick?: InputMaybe; + labor_finish_tickEQ?: InputMaybe; + labor_finish_tickGT?: InputMaybe; + labor_finish_tickGTE?: InputMaybe; + labor_finish_tickIN?: InputMaybe>>; + labor_finish_tickLIKE?: InputMaybe; + labor_finish_tickLT?: InputMaybe; + labor_finish_tickLTE?: InputMaybe; + labor_finish_tickNEQ?: InputMaybe; + labor_finish_tickNOTIN?: InputMaybe>>; + labor_finish_tickNOTLIKE?: InputMaybe; + last_updated_tick?: InputMaybe; + last_updated_tickEQ?: InputMaybe; + last_updated_tickGT?: InputMaybe; + last_updated_tickGTE?: InputMaybe; + last_updated_tickIN?: InputMaybe>>; + last_updated_tickLIKE?: InputMaybe; + last_updated_tickLT?: InputMaybe; + last_updated_tickLTE?: InputMaybe; + last_updated_tickNEQ?: InputMaybe; + last_updated_tickNOTIN?: InputMaybe>>; + last_updated_tickNOTLIKE?: InputMaybe; + production_rate?: InputMaybe; + production_rateEQ?: InputMaybe; + production_rateGT?: InputMaybe; + production_rateGTE?: InputMaybe; + production_rateIN?: InputMaybe>>; + production_rateLIKE?: InputMaybe; + production_rateLT?: InputMaybe; + production_rateLTE?: InputMaybe; + production_rateNEQ?: InputMaybe; + production_rateNOTIN?: InputMaybe>>; + production_rateNOTLIKE?: InputMaybe; resource_type?: InputMaybe; resource_typeEQ?: InputMaybe; resource_typeGT?: InputMaybe; @@ -5189,279 +4345,376 @@ export type S0_Eternum_ResourceCostWhereInput = { resource_typeNOTLIKE?: InputMaybe; }; -export type S0_Eternum_ResourceOrder = { +export type s1_eternum_ProgressOrder = { + direction: OrderDirection; + field: s1_eternum_ProgressOrderField; +}; + +export enum s1_eternum_ProgressOrderField { + Amount = "AMOUNT", + HyperstructureEntityId = "HYPERSTRUCTURE_ENTITY_ID", + ResourceType = "RESOURCE_TYPE", +} + +export type s1_eternum_ProgressWhereInput = { + amount?: InputMaybe; + amountEQ?: InputMaybe; + amountGT?: InputMaybe; + amountGTE?: InputMaybe; + amountIN?: InputMaybe>>; + amountLIKE?: InputMaybe; + amountLT?: InputMaybe; + amountLTE?: InputMaybe; + amountNEQ?: InputMaybe; + amountNOTIN?: InputMaybe>>; + amountNOTLIKE?: InputMaybe; + hyperstructure_entity_id?: InputMaybe; + hyperstructure_entity_idEQ?: InputMaybe; + hyperstructure_entity_idGT?: InputMaybe; + hyperstructure_entity_idGTE?: InputMaybe; + hyperstructure_entity_idIN?: InputMaybe>>; + hyperstructure_entity_idLIKE?: InputMaybe; + hyperstructure_entity_idLT?: InputMaybe; + hyperstructure_entity_idLTE?: InputMaybe; + hyperstructure_entity_idNEQ?: InputMaybe; + hyperstructure_entity_idNOTIN?: InputMaybe>>; + hyperstructure_entity_idNOTLIKE?: InputMaybe; + resource_type?: InputMaybe; + resource_typeEQ?: InputMaybe; + resource_typeGT?: InputMaybe; + resource_typeGTE?: InputMaybe; + resource_typeIN?: InputMaybe>>; + resource_typeLIKE?: InputMaybe; + resource_typeLT?: InputMaybe; + resource_typeLTE?: InputMaybe; + resource_typeNEQ?: InputMaybe; + resource_typeNOTIN?: InputMaybe>>; + resource_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ProtecteeOrder = { direction: OrderDirection; - field: S0_Eternum_ResourceOrderField; + field: s1_eternum_ProtecteeOrderField; +}; + +export enum s1_eternum_ProtecteeOrderField { + ArmyId = "ARMY_ID", + ProtecteeId = "PROTECTEE_ID", +} + +export type s1_eternum_ProtecteeWhereInput = { + army_id?: InputMaybe; + army_idEQ?: InputMaybe; + army_idGT?: InputMaybe; + army_idGTE?: InputMaybe; + army_idIN?: InputMaybe>>; + army_idLIKE?: InputMaybe; + army_idLT?: InputMaybe; + army_idLTE?: InputMaybe; + army_idNEQ?: InputMaybe; + army_idNOTIN?: InputMaybe>>; + army_idNOTLIKE?: InputMaybe; + protectee_id?: InputMaybe; + protectee_idEQ?: InputMaybe; + protectee_idGT?: InputMaybe; + protectee_idGTE?: InputMaybe; + protectee_idIN?: InputMaybe>>; + protectee_idLIKE?: InputMaybe; + protectee_idLT?: InputMaybe; + protectee_idLTE?: InputMaybe; + protectee_idNEQ?: InputMaybe; + protectee_idNOTIN?: InputMaybe>>; + protectee_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ProtectorOrder = { + direction: OrderDirection; + field: s1_eternum_ProtectorOrderField; +}; + +export enum s1_eternum_ProtectorOrderField { + ArmyId = "ARMY_ID", + EntityId = "ENTITY_ID", +} + +export type s1_eternum_ProtectorWhereInput = { + army_id?: InputMaybe; + army_idEQ?: InputMaybe; + army_idGT?: InputMaybe; + army_idGTE?: InputMaybe; + army_idIN?: InputMaybe>>; + army_idLIKE?: InputMaybe; + army_idLT?: InputMaybe; + army_idLTE?: InputMaybe; + army_idNEQ?: InputMaybe; + army_idNOTIN?: InputMaybe>>; + army_idNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_QuantityOrder = { + direction: OrderDirection; + field: s1_eternum_QuantityOrderField; }; -export enum S0_Eternum_ResourceOrderField { - Balance = 'BALANCE', - EntityId = 'ENTITY_ID', - ResourceType = 'RESOURCE_TYPE' +export enum s1_eternum_QuantityOrderField { + EntityId = "ENTITY_ID", + Value = "VALUE", } -export type S0_Eternum_ResourceTransferLockOrder = { +export type s1_eternum_QuantityTrackerOrder = { direction: OrderDirection; - field: S0_Eternum_ResourceTransferLockOrderField; + field: s1_eternum_QuantityTrackerOrderField; +}; + +export enum s1_eternum_QuantityTrackerOrderField { + Count = "COUNT", + EntityId = "ENTITY_ID", +} + +export type s1_eternum_QuantityTrackerWhereInput = { + count?: InputMaybe; + countEQ?: InputMaybe; + countGT?: InputMaybe; + countGTE?: InputMaybe; + countIN?: InputMaybe>>; + countLIKE?: InputMaybe; + countLT?: InputMaybe; + countLTE?: InputMaybe; + countNEQ?: InputMaybe; + countNOTIN?: InputMaybe>>; + countNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_QuantityWhereInput = { + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + value?: InputMaybe; + valueEQ?: InputMaybe; + valueGT?: InputMaybe; + valueGTE?: InputMaybe; + valueIN?: InputMaybe>>; + valueLIKE?: InputMaybe; + valueLT?: InputMaybe; + valueLTE?: InputMaybe; + valueNEQ?: InputMaybe; + valueNOTIN?: InputMaybe>>; + valueNOTLIKE?: InputMaybe; +}; + + +export type s1_eternum_QuestOrder = { + direction: OrderDirection; + field: s1_eternum_QuestOrderField; }; -export enum S0_Eternum_ResourceTransferLockOrderField { - EntityId = 'ENTITY_ID', - ReleaseAt = 'RELEASE_AT', - StartAt = 'START_AT' +export enum s1_eternum_QuestOrderField { + Completed = "COMPLETED", + ConfigId = "CONFIG_ID", + EntityId = "ENTITY_ID", } -export type S0_Eternum_ResourceTransferLockWhereInput = { - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - release_at?: InputMaybe; - release_atEQ?: InputMaybe; - release_atGT?: InputMaybe; - release_atGTE?: InputMaybe; - release_atIN?: InputMaybe>>; - release_atLIKE?: InputMaybe; - release_atLT?: InputMaybe; - release_atLTE?: InputMaybe; - release_atNEQ?: InputMaybe; - release_atNOTIN?: InputMaybe>>; - release_atNOTLIKE?: InputMaybe; - start_at?: InputMaybe; - start_atEQ?: InputMaybe; - start_atGT?: InputMaybe; - start_atGTE?: InputMaybe; - start_atIN?: InputMaybe>>; - start_atLIKE?: InputMaybe; - start_atLT?: InputMaybe; - start_atLTE?: InputMaybe; - start_atNEQ?: InputMaybe; - start_atNOTIN?: InputMaybe>>; - start_atNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_ResourceWhereInput = { - balance?: InputMaybe; - balanceEQ?: InputMaybe; - balanceGT?: InputMaybe; - balanceGTE?: InputMaybe; - balanceIN?: InputMaybe>>; - balanceLIKE?: InputMaybe; - balanceLT?: InputMaybe; - balanceLTE?: InputMaybe; - balanceNEQ?: InputMaybe; - balanceNOTIN?: InputMaybe>>; - balanceNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - resource_type?: InputMaybe; - resource_typeEQ?: InputMaybe; - resource_typeGT?: InputMaybe; - resource_typeGTE?: InputMaybe; - resource_typeIN?: InputMaybe>>; - resource_typeLIKE?: InputMaybe; - resource_typeLT?: InputMaybe; - resource_typeLTE?: InputMaybe; - resource_typeNEQ?: InputMaybe; - resource_typeNOTIN?: InputMaybe>>; - resource_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_SeasonAddressesConfigOrder = { +export type s1_eternum_QuestRewardConfigOrder = { direction: OrderDirection; - field: S0_Eternum_SeasonAddressesConfigOrderField; -}; - -export enum S0_Eternum_SeasonAddressesConfigOrderField { - ConfigId = 'CONFIG_ID', - LordsAddress = 'LORDS_ADDRESS', - RealmsAddress = 'REALMS_ADDRESS', - SeasonPassAddress = 'SEASON_PASS_ADDRESS' -} - -export type S0_Eternum_SeasonAddressesConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - lords_address?: InputMaybe; - lords_addressEQ?: InputMaybe; - lords_addressGT?: InputMaybe; - lords_addressGTE?: InputMaybe; - lords_addressIN?: InputMaybe>>; - lords_addressLIKE?: InputMaybe; - lords_addressLT?: InputMaybe; - lords_addressLTE?: InputMaybe; - lords_addressNEQ?: InputMaybe; - lords_addressNOTIN?: InputMaybe>>; - lords_addressNOTLIKE?: InputMaybe; - realms_address?: InputMaybe; - realms_addressEQ?: InputMaybe; - realms_addressGT?: InputMaybe; - realms_addressGTE?: InputMaybe; - realms_addressIN?: InputMaybe>>; - realms_addressLIKE?: InputMaybe; - realms_addressLT?: InputMaybe; - realms_addressLTE?: InputMaybe; - realms_addressNEQ?: InputMaybe; - realms_addressNOTIN?: InputMaybe>>; - realms_addressNOTLIKE?: InputMaybe; - season_pass_address?: InputMaybe; - season_pass_addressEQ?: InputMaybe; - season_pass_addressGT?: InputMaybe; - season_pass_addressGTE?: InputMaybe; - season_pass_addressIN?: InputMaybe>>; - season_pass_addressLIKE?: InputMaybe; - season_pass_addressLT?: InputMaybe; - season_pass_addressLTE?: InputMaybe; - season_pass_addressNEQ?: InputMaybe; - season_pass_addressNOTIN?: InputMaybe>>; - season_pass_addressNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_SeasonBridgeConfigOrder = { + field: s1_eternum_QuestRewardConfigOrderField; +}; + +export enum s1_eternum_QuestRewardConfigOrderField { + DetachedResourceCount = "DETACHED_RESOURCE_COUNT", + DetachedResourceId = "DETACHED_RESOURCE_ID", + QuestId = "QUEST_ID", +} + +export type s1_eternum_QuestRewardConfigWhereInput = { + detached_resource_count?: InputMaybe; + detached_resource_countEQ?: InputMaybe; + detached_resource_countGT?: InputMaybe; + detached_resource_countGTE?: InputMaybe; + detached_resource_countIN?: InputMaybe>>; + detached_resource_countLIKE?: InputMaybe; + detached_resource_countLT?: InputMaybe; + detached_resource_countLTE?: InputMaybe; + detached_resource_countNEQ?: InputMaybe; + detached_resource_countNOTIN?: InputMaybe>>; + detached_resource_countNOTLIKE?: InputMaybe; + detached_resource_id?: InputMaybe; + detached_resource_idEQ?: InputMaybe; + detached_resource_idGT?: InputMaybe; + detached_resource_idGTE?: InputMaybe; + detached_resource_idIN?: InputMaybe>>; + detached_resource_idLIKE?: InputMaybe; + detached_resource_idLT?: InputMaybe; + detached_resource_idLTE?: InputMaybe; + detached_resource_idNEQ?: InputMaybe; + detached_resource_idNOTIN?: InputMaybe>>; + detached_resource_idNOTLIKE?: InputMaybe; + quest_id?: InputMaybe; + quest_idEQ?: InputMaybe; + quest_idGT?: InputMaybe; + quest_idGTE?: InputMaybe; + quest_idIN?: InputMaybe>>; + quest_idLIKE?: InputMaybe; + quest_idLT?: InputMaybe; + quest_idLTE?: InputMaybe; + quest_idNEQ?: InputMaybe; + quest_idNOTIN?: InputMaybe>>; + quest_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_QuestWhereInput = { + completed?: InputMaybe; + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_RealmLevelConfigOrder = { direction: OrderDirection; - field: S0_Eternum_SeasonBridgeConfigOrderField; -}; - -export enum S0_Eternum_SeasonBridgeConfigOrderField { - CloseAfterEndSeconds = 'CLOSE_AFTER_END_SECONDS', - ConfigId = 'CONFIG_ID' -} - -export type S0_Eternum_SeasonBridgeConfigWhereInput = { - close_after_end_seconds?: InputMaybe; - close_after_end_secondsEQ?: InputMaybe; - close_after_end_secondsGT?: InputMaybe; - close_after_end_secondsGTE?: InputMaybe; - close_after_end_secondsIN?: InputMaybe>>; - close_after_end_secondsLIKE?: InputMaybe; - close_after_end_secondsLT?: InputMaybe; - close_after_end_secondsLTE?: InputMaybe; - close_after_end_secondsNEQ?: InputMaybe; - close_after_end_secondsNOTIN?: InputMaybe>>; - close_after_end_secondsNOTLIKE?: InputMaybe; - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_SeasonOrder = { + field: s1_eternum_RealmLevelConfigOrderField; +}; + +export enum s1_eternum_RealmLevelConfigOrderField { + Level = "LEVEL", + RequiredResourcesId = "REQUIRED_RESOURCES_ID", + RequiredResourceCount = "REQUIRED_RESOURCE_COUNT", +} + +export type s1_eternum_RealmLevelConfigWhereInput = { + level?: InputMaybe; + levelEQ?: InputMaybe; + levelGT?: InputMaybe; + levelGTE?: InputMaybe; + levelIN?: InputMaybe>>; + levelLIKE?: InputMaybe; + levelLT?: InputMaybe; + levelLTE?: InputMaybe; + levelNEQ?: InputMaybe; + levelNOTIN?: InputMaybe>>; + levelNOTLIKE?: InputMaybe; + required_resource_count?: InputMaybe; + required_resource_countEQ?: InputMaybe; + required_resource_countGT?: InputMaybe; + required_resource_countGTE?: InputMaybe; + required_resource_countIN?: InputMaybe>>; + required_resource_countLIKE?: InputMaybe; + required_resource_countLT?: InputMaybe; + required_resource_countLTE?: InputMaybe; + required_resource_countNEQ?: InputMaybe; + required_resource_countNOTIN?: InputMaybe>>; + required_resource_countNOTLIKE?: InputMaybe; + required_resources_id?: InputMaybe; + required_resources_idEQ?: InputMaybe; + required_resources_idGT?: InputMaybe; + required_resources_idGTE?: InputMaybe; + required_resources_idIN?: InputMaybe>>; + required_resources_idLIKE?: InputMaybe; + required_resources_idLT?: InputMaybe; + required_resources_idLTE?: InputMaybe; + required_resources_idNEQ?: InputMaybe; + required_resources_idNOTIN?: InputMaybe>>; + required_resources_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_RealmMaxLevelConfigOrder = { direction: OrderDirection; - field: S0_Eternum_SeasonOrderField; -}; - -export enum S0_Eternum_SeasonOrderField { - ConfigId = 'CONFIG_ID', - EndedAt = 'ENDED_AT', - IsOver = 'IS_OVER', - StartAt = 'START_AT' -} - -export type S0_Eternum_SeasonWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - ended_at?: InputMaybe; - ended_atEQ?: InputMaybe; - ended_atGT?: InputMaybe; - ended_atGTE?: InputMaybe; - ended_atIN?: InputMaybe>>; - ended_atLIKE?: InputMaybe; - ended_atLT?: InputMaybe; - ended_atLTE?: InputMaybe; - ended_atNEQ?: InputMaybe; - ended_atNOTIN?: InputMaybe>>; - ended_atNOTLIKE?: InputMaybe; - is_over?: InputMaybe; - start_at?: InputMaybe; - start_atEQ?: InputMaybe; - start_atGT?: InputMaybe; - start_atGTE?: InputMaybe; - start_atIN?: InputMaybe>>; - start_atLIKE?: InputMaybe; - start_atLT?: InputMaybe; - start_atLTE?: InputMaybe; - start_atNEQ?: InputMaybe; - start_atNOTIN?: InputMaybe>>; - start_atNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_SettleRealmDataOrder = { + field: s1_eternum_RealmMaxLevelConfigOrderField; +}; + +export enum s1_eternum_RealmMaxLevelConfigOrderField { + ConfigId = "CONFIG_ID", + MaxLevel = "MAX_LEVEL", +} + +export type s1_eternum_RealmMaxLevelConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + max_level?: InputMaybe; + max_levelEQ?: InputMaybe; + max_levelGT?: InputMaybe; + max_levelGTE?: InputMaybe; + max_levelIN?: InputMaybe>>; + max_levelLIKE?: InputMaybe; + max_levelLT?: InputMaybe; + max_levelLTE?: InputMaybe; + max_levelNEQ?: InputMaybe; + max_levelNOTIN?: InputMaybe>>; + max_levelNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_RealmOrder = { direction: OrderDirection; - field: S0_Eternum_SettleRealmDataOrderField; + field: s1_eternum_RealmOrderField; }; -export enum S0_Eternum_SettleRealmDataOrderField { - Cities = 'CITIES', - EntityId = 'ENTITY_ID', - EventId = 'EVENT_ID', - Harbors = 'HARBORS', - Id = 'ID', - Order = 'ORDER', - OwnerAddress = 'OWNER_ADDRESS', - OwnerName = 'OWNER_NAME', - ProducedResources = 'PRODUCED_RESOURCES', - RealmName = 'REALM_NAME', - Regions = 'REGIONS', - Rivers = 'RIVERS', - Timestamp = 'TIMESTAMP', - Wonder = 'WONDER', - X = 'X', - Y = 'Y' -} - -export type S0_Eternum_SettleRealmDataWhereInput = { - cities?: InputMaybe; - citiesEQ?: InputMaybe; - citiesGT?: InputMaybe; - citiesGTE?: InputMaybe; - citiesIN?: InputMaybe>>; - citiesLIKE?: InputMaybe; - citiesLT?: InputMaybe; - citiesLTE?: InputMaybe; - citiesNEQ?: InputMaybe; - citiesNOTIN?: InputMaybe>>; - citiesNOTLIKE?: InputMaybe; +export enum s1_eternum_RealmOrderField { + EntityId = "ENTITY_ID", + HasWonder = "HAS_WONDER", + Level = "LEVEL", + Order = "ORDER", + ProducedResources = "PRODUCED_RESOURCES", + RealmId = "REALM_ID", + SettlerAddress = "SETTLER_ADDRESS", +} + +export type s1_eternum_RealmWhereInput = { entity_id?: InputMaybe; entity_idEQ?: InputMaybe; entity_idGT?: InputMaybe; @@ -5473,29 +4726,18 @@ export type S0_Eternum_SettleRealmDataWhereInput = { entity_idNEQ?: InputMaybe; entity_idNOTIN?: InputMaybe>>; entity_idNOTLIKE?: InputMaybe; - event_id?: InputMaybe; - harbors?: InputMaybe; - harborsEQ?: InputMaybe; - harborsGT?: InputMaybe; - harborsGTE?: InputMaybe; - harborsIN?: InputMaybe>>; - harborsLIKE?: InputMaybe; - harborsLT?: InputMaybe; - harborsLTE?: InputMaybe; - harborsNEQ?: InputMaybe; - harborsNOTIN?: InputMaybe>>; - harborsNOTLIKE?: InputMaybe; - id?: InputMaybe; - idEQ?: InputMaybe; - idGT?: InputMaybe; - idGTE?: InputMaybe; - idIN?: InputMaybe>>; - idLIKE?: InputMaybe; - idLT?: InputMaybe; - idLTE?: InputMaybe; - idNEQ?: InputMaybe; - idNOTIN?: InputMaybe>>; - idNOTLIKE?: InputMaybe; + has_wonder?: InputMaybe; + level?: InputMaybe; + levelEQ?: InputMaybe; + levelGT?: InputMaybe; + levelGTE?: InputMaybe; + levelIN?: InputMaybe>>; + levelLIKE?: InputMaybe; + levelLT?: InputMaybe; + levelLTE?: InputMaybe; + levelNEQ?: InputMaybe; + levelNOTIN?: InputMaybe>>; + levelNOTLIKE?: InputMaybe; order?: InputMaybe; orderEQ?: InputMaybe; orderGT?: InputMaybe; @@ -5507,28 +4749,6 @@ export type S0_Eternum_SettleRealmDataWhereInput = { orderNEQ?: InputMaybe; orderNOTIN?: InputMaybe>>; orderNOTLIKE?: InputMaybe; - owner_address?: InputMaybe; - owner_addressEQ?: InputMaybe; - owner_addressGT?: InputMaybe; - owner_addressGTE?: InputMaybe; - owner_addressIN?: InputMaybe>>; - owner_addressLIKE?: InputMaybe; - owner_addressLT?: InputMaybe; - owner_addressLTE?: InputMaybe; - owner_addressNEQ?: InputMaybe; - owner_addressNOTIN?: InputMaybe>>; - owner_addressNOTLIKE?: InputMaybe; - owner_name?: InputMaybe; - owner_nameEQ?: InputMaybe; - owner_nameGT?: InputMaybe; - owner_nameGTE?: InputMaybe; - owner_nameIN?: InputMaybe>>; - owner_nameLIKE?: InputMaybe; - owner_nameLT?: InputMaybe; - owner_nameLTE?: InputMaybe; - owner_nameNEQ?: InputMaybe; - owner_nameNOTIN?: InputMaybe>>; - owner_nameNOTLIKE?: InputMaybe; produced_resources?: InputMaybe; produced_resourcesEQ?: InputMaybe; produced_resourcesGT?: InputMaybe; @@ -5540,1833 +4760,2926 @@ export type S0_Eternum_SettleRealmDataWhereInput = { produced_resourcesNEQ?: InputMaybe; produced_resourcesNOTIN?: InputMaybe>>; produced_resourcesNOTLIKE?: InputMaybe; - realm_name?: InputMaybe; - realm_nameEQ?: InputMaybe; - realm_nameGT?: InputMaybe; - realm_nameGTE?: InputMaybe; - realm_nameIN?: InputMaybe>>; - realm_nameLIKE?: InputMaybe; - realm_nameLT?: InputMaybe; - realm_nameLTE?: InputMaybe; - realm_nameNEQ?: InputMaybe; - realm_nameNOTIN?: InputMaybe>>; - realm_nameNOTLIKE?: InputMaybe; - regions?: InputMaybe; - regionsEQ?: InputMaybe; - regionsGT?: InputMaybe; - regionsGTE?: InputMaybe; - regionsIN?: InputMaybe>>; - regionsLIKE?: InputMaybe; - regionsLT?: InputMaybe; - regionsLTE?: InputMaybe; - regionsNEQ?: InputMaybe; - regionsNOTIN?: InputMaybe>>; - regionsNOTLIKE?: InputMaybe; - rivers?: InputMaybe; - riversEQ?: InputMaybe; - riversGT?: InputMaybe; - riversGTE?: InputMaybe; - riversIN?: InputMaybe>>; - riversLIKE?: InputMaybe; - riversLT?: InputMaybe; - riversLTE?: InputMaybe; - riversNEQ?: InputMaybe; - riversNOTIN?: InputMaybe>>; - riversNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; - wonder?: InputMaybe; - wonderEQ?: InputMaybe; - wonderGT?: InputMaybe; - wonderGTE?: InputMaybe; - wonderIN?: InputMaybe>>; - wonderLIKE?: InputMaybe; - wonderLT?: InputMaybe; - wonderLTE?: InputMaybe; - wonderNEQ?: InputMaybe; - wonderNOTIN?: InputMaybe>>; - wonderNOTLIKE?: InputMaybe; - x?: InputMaybe; - xEQ?: InputMaybe; - xGT?: InputMaybe; - xGTE?: InputMaybe; - xIN?: InputMaybe>>; - xLIKE?: InputMaybe; - xLT?: InputMaybe; - xLTE?: InputMaybe; - xNEQ?: InputMaybe; - xNOTIN?: InputMaybe>>; - xNOTLIKE?: InputMaybe; - y?: InputMaybe; - yEQ?: InputMaybe; - yGT?: InputMaybe; - yGTE?: InputMaybe; - yIN?: InputMaybe>>; - yLIKE?: InputMaybe; - yLT?: InputMaybe; - yLTE?: InputMaybe; - yNEQ?: InputMaybe; - yNOTIN?: InputMaybe>>; - yNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_SettlementConfigOrder = { - direction: OrderDirection; - field: S0_Eternum_SettlementConfigOrderField; -}; - -export enum S0_Eternum_SettlementConfigOrderField { - BaseDistance = 'BASE_DISTANCE', - Center = 'CENTER', - ConfigId = 'CONFIG_ID', - CurrentLayer = 'CURRENT_LAYER', - CurrentPointOnSide = 'CURRENT_POINT_ON_SIDE', - CurrentSide = 'CURRENT_SIDE', - MinFirstLayerDistance = 'MIN_FIRST_LAYER_DISTANCE', - PointsPlaced = 'POINTS_PLACED' -} - -export type S0_Eternum_SettlementConfigWhereInput = { - base_distance?: InputMaybe; - base_distanceEQ?: InputMaybe; - base_distanceGT?: InputMaybe; - base_distanceGTE?: InputMaybe; - base_distanceIN?: InputMaybe>>; - base_distanceLIKE?: InputMaybe; - base_distanceLT?: InputMaybe; - base_distanceLTE?: InputMaybe; - base_distanceNEQ?: InputMaybe; - base_distanceNOTIN?: InputMaybe>>; - base_distanceNOTLIKE?: InputMaybe; - center?: InputMaybe; - centerEQ?: InputMaybe; - centerGT?: InputMaybe; - centerGTE?: InputMaybe; - centerIN?: InputMaybe>>; - centerLIKE?: InputMaybe; - centerLT?: InputMaybe; - centerLTE?: InputMaybe; - centerNEQ?: InputMaybe; - centerNOTIN?: InputMaybe>>; - centerNOTLIKE?: InputMaybe; - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - current_layer?: InputMaybe; - current_layerEQ?: InputMaybe; - current_layerGT?: InputMaybe; - current_layerGTE?: InputMaybe; - current_layerIN?: InputMaybe>>; - current_layerLIKE?: InputMaybe; - current_layerLT?: InputMaybe; - current_layerLTE?: InputMaybe; - current_layerNEQ?: InputMaybe; - current_layerNOTIN?: InputMaybe>>; - current_layerNOTLIKE?: InputMaybe; - current_point_on_side?: InputMaybe; - current_point_on_sideEQ?: InputMaybe; - current_point_on_sideGT?: InputMaybe; - current_point_on_sideGTE?: InputMaybe; - current_point_on_sideIN?: InputMaybe>>; - current_point_on_sideLIKE?: InputMaybe; - current_point_on_sideLT?: InputMaybe; - current_point_on_sideLTE?: InputMaybe; - current_point_on_sideNEQ?: InputMaybe; - current_point_on_sideNOTIN?: InputMaybe>>; - current_point_on_sideNOTLIKE?: InputMaybe; - current_side?: InputMaybe; - current_sideEQ?: InputMaybe; - current_sideGT?: InputMaybe; - current_sideGTE?: InputMaybe; - current_sideIN?: InputMaybe>>; - current_sideLIKE?: InputMaybe; - current_sideLT?: InputMaybe; - current_sideLTE?: InputMaybe; - current_sideNEQ?: InputMaybe; - current_sideNOTIN?: InputMaybe>>; - current_sideNOTLIKE?: InputMaybe; - min_first_layer_distance?: InputMaybe; - min_first_layer_distanceEQ?: InputMaybe; - min_first_layer_distanceGT?: InputMaybe; - min_first_layer_distanceGTE?: InputMaybe; - min_first_layer_distanceIN?: InputMaybe>>; - min_first_layer_distanceLIKE?: InputMaybe; - min_first_layer_distanceLT?: InputMaybe; - min_first_layer_distanceLTE?: InputMaybe; - min_first_layer_distanceNEQ?: InputMaybe; - min_first_layer_distanceNOTIN?: InputMaybe>>; - min_first_layer_distanceNOTLIKE?: InputMaybe; - points_placed?: InputMaybe; - points_placedEQ?: InputMaybe; - points_placedGT?: InputMaybe; - points_placedGTE?: InputMaybe; - points_placedIN?: InputMaybe>>; - points_placedLIKE?: InputMaybe; - points_placedLT?: InputMaybe; - points_placedLTE?: InputMaybe; - points_placedNEQ?: InputMaybe; - points_placedNOTIN?: InputMaybe>>; - points_placedNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_SpeedConfigOrder = { - direction: OrderDirection; - field: S0_Eternum_SpeedConfigOrderField; -}; - -export enum S0_Eternum_SpeedConfigOrderField { - ConfigId = 'CONFIG_ID', - EntityType = 'ENTITY_TYPE', - SecPerKm = 'SEC_PER_KM', - SpeedConfigId = 'SPEED_CONFIG_ID' -} - -export type S0_Eternum_SpeedConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - entity_type?: InputMaybe; - entity_typeEQ?: InputMaybe; - entity_typeGT?: InputMaybe; - entity_typeGTE?: InputMaybe; - entity_typeIN?: InputMaybe>>; - entity_typeLIKE?: InputMaybe; - entity_typeLT?: InputMaybe; - entity_typeLTE?: InputMaybe; - entity_typeNEQ?: InputMaybe; - entity_typeNOTIN?: InputMaybe>>; - entity_typeNOTLIKE?: InputMaybe; - sec_per_km?: InputMaybe; - sec_per_kmEQ?: InputMaybe; - sec_per_kmGT?: InputMaybe; - sec_per_kmGTE?: InputMaybe; - sec_per_kmIN?: InputMaybe>>; - sec_per_kmLIKE?: InputMaybe; - sec_per_kmLT?: InputMaybe; - sec_per_kmLTE?: InputMaybe; - sec_per_kmNEQ?: InputMaybe; - sec_per_kmNOTIN?: InputMaybe>>; - sec_per_kmNOTLIKE?: InputMaybe; - speed_config_id?: InputMaybe; - speed_config_idEQ?: InputMaybe; - speed_config_idGT?: InputMaybe; - speed_config_idGTE?: InputMaybe; - speed_config_idIN?: InputMaybe>>; - speed_config_idLIKE?: InputMaybe; - speed_config_idLT?: InputMaybe; - speed_config_idLTE?: InputMaybe; - speed_config_idNEQ?: InputMaybe; - speed_config_idNOTIN?: InputMaybe>>; - speed_config_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_StaminaConfigOrder = { + realm_id?: InputMaybe; + realm_idEQ?: InputMaybe; + realm_idGT?: InputMaybe; + realm_idGTE?: InputMaybe; + realm_idIN?: InputMaybe>>; + realm_idLIKE?: InputMaybe; + realm_idLT?: InputMaybe; + realm_idLTE?: InputMaybe; + realm_idNEQ?: InputMaybe; + realm_idNOTIN?: InputMaybe>>; + realm_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ResourceAllowanceOrder = { direction: OrderDirection; - field: S0_Eternum_StaminaConfigOrderField; -}; - -export enum S0_Eternum_StaminaConfigOrderField { - ConfigId = 'CONFIG_ID', - MaxStamina = 'MAX_STAMINA', - UnitType = 'UNIT_TYPE' -} - -export type S0_Eternum_StaminaConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - max_stamina?: InputMaybe; - max_staminaEQ?: InputMaybe; - max_staminaGT?: InputMaybe; - max_staminaGTE?: InputMaybe; - max_staminaIN?: InputMaybe>>; - max_staminaLIKE?: InputMaybe; - max_staminaLT?: InputMaybe; - max_staminaLTE?: InputMaybe; - max_staminaNEQ?: InputMaybe; - max_staminaNOTIN?: InputMaybe>>; - max_staminaNOTLIKE?: InputMaybe; - unit_type?: InputMaybe; - unit_typeEQ?: InputMaybe; - unit_typeGT?: InputMaybe; - unit_typeGTE?: InputMaybe; - unit_typeIN?: InputMaybe>>; - unit_typeLIKE?: InputMaybe; - unit_typeLT?: InputMaybe; - unit_typeLTE?: InputMaybe; - unit_typeNEQ?: InputMaybe; - unit_typeNOTIN?: InputMaybe>>; - unit_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_StaminaOrder = { + field: s1_eternum_ResourceAllowanceOrderField; +}; + +export enum s1_eternum_ResourceAllowanceOrderField { + Amount = "AMOUNT", + ApprovedEntityId = "APPROVED_ENTITY_ID", + OwnerEntityId = "OWNER_ENTITY_ID", + ResourceType = "RESOURCE_TYPE", +} + +export type s1_eternum_ResourceAllowanceWhereInput = { + amount?: InputMaybe; + amountEQ?: InputMaybe; + amountGT?: InputMaybe; + amountGTE?: InputMaybe; + amountIN?: InputMaybe>>; + amountLIKE?: InputMaybe; + amountLT?: InputMaybe; + amountLTE?: InputMaybe; + amountNEQ?: InputMaybe; + amountNOTIN?: InputMaybe>>; + amountNOTLIKE?: InputMaybe; + approved_entity_id?: InputMaybe; + approved_entity_idEQ?: InputMaybe; + approved_entity_idGT?: InputMaybe; + approved_entity_idGTE?: InputMaybe; + approved_entity_idIN?: InputMaybe>>; + approved_entity_idLIKE?: InputMaybe; + approved_entity_idLT?: InputMaybe; + approved_entity_idLTE?: InputMaybe; + approved_entity_idNEQ?: InputMaybe; + approved_entity_idNOTIN?: InputMaybe>>; + approved_entity_idNOTLIKE?: InputMaybe; + owner_entity_id?: InputMaybe; + owner_entity_idEQ?: InputMaybe; + owner_entity_idGT?: InputMaybe; + owner_entity_idGTE?: InputMaybe; + owner_entity_idIN?: InputMaybe>>; + owner_entity_idLIKE?: InputMaybe; + owner_entity_idLT?: InputMaybe; + owner_entity_idLTE?: InputMaybe; + owner_entity_idNEQ?: InputMaybe; + owner_entity_idNOTIN?: InputMaybe>>; + owner_entity_idNOTLIKE?: InputMaybe; + resource_type?: InputMaybe; + resource_typeEQ?: InputMaybe; + resource_typeGT?: InputMaybe; + resource_typeGTE?: InputMaybe; + resource_typeIN?: InputMaybe>>; + resource_typeLIKE?: InputMaybe; + resource_typeLT?: InputMaybe; + resource_typeLTE?: InputMaybe; + resource_typeNEQ?: InputMaybe; + resource_typeNOTIN?: InputMaybe>>; + resource_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ResourceBridgeConfigOrder = { direction: OrderDirection; - field: S0_Eternum_StaminaOrderField; + field: s1_eternum_ResourceBridgeConfigOrderField; }; -export enum S0_Eternum_StaminaOrderField { - Amount = 'AMOUNT', - EntityId = 'ENTITY_ID', - LastRefillTick = 'LAST_REFILL_TICK' +export enum s1_eternum_ResourceBridgeConfigOrderField { + ConfigId = "CONFIG_ID", + DepositPaused = "DEPOSIT_PAUSED", + WithdrawPaused = "WITHDRAW_PAUSED", } -export type S0_Eternum_StaminaRefillConfigOrder = { +export type s1_eternum_ResourceBridgeConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + deposit_paused?: InputMaybe; + withdraw_paused?: InputMaybe; +}; + +export type s1_eternum_ResourceBridgeFeeSplitConfigOrder = { direction: OrderDirection; - field: S0_Eternum_StaminaRefillConfigOrderField; -}; - -export enum S0_Eternum_StaminaRefillConfigOrderField { - AmountPerTick = 'AMOUNT_PER_TICK', - ConfigId = 'CONFIG_ID', - StartBoostTickCount = 'START_BOOST_TICK_COUNT' -} - -export type S0_Eternum_StaminaRefillConfigWhereInput = { - amount_per_tick?: InputMaybe; - amount_per_tickEQ?: InputMaybe; - amount_per_tickGT?: InputMaybe; - amount_per_tickGTE?: InputMaybe; - amount_per_tickIN?: InputMaybe>>; - amount_per_tickLIKE?: InputMaybe; - amount_per_tickLT?: InputMaybe; - amount_per_tickLTE?: InputMaybe; - amount_per_tickNEQ?: InputMaybe; - amount_per_tickNOTIN?: InputMaybe>>; - amount_per_tickNOTLIKE?: InputMaybe; - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - start_boost_tick_count?: InputMaybe; - start_boost_tick_countEQ?: InputMaybe; - start_boost_tick_countGT?: InputMaybe; - start_boost_tick_countGTE?: InputMaybe; - start_boost_tick_countIN?: InputMaybe>>; - start_boost_tick_countLIKE?: InputMaybe; - start_boost_tick_countLT?: InputMaybe; - start_boost_tick_countLTE?: InputMaybe; - start_boost_tick_countNEQ?: InputMaybe; - start_boost_tick_countNOTIN?: InputMaybe>>; - start_boost_tick_countNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_StaminaWhereInput = { - amount?: InputMaybe; - amountEQ?: InputMaybe; - amountGT?: InputMaybe; - amountGTE?: InputMaybe; - amountIN?: InputMaybe>>; - amountLIKE?: InputMaybe; - amountLT?: InputMaybe; - amountLTE?: InputMaybe; - amountNEQ?: InputMaybe; - amountNOTIN?: InputMaybe>>; - amountNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - last_refill_tick?: InputMaybe; - last_refill_tickEQ?: InputMaybe; - last_refill_tickGT?: InputMaybe; - last_refill_tickGTE?: InputMaybe; - last_refill_tickIN?: InputMaybe>>; - last_refill_tickLIKE?: InputMaybe; - last_refill_tickLT?: InputMaybe; - last_refill_tickLTE?: InputMaybe; - last_refill_tickNEQ?: InputMaybe; - last_refill_tickNOTIN?: InputMaybe>>; - last_refill_tickNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_StatusOrder = { + field: s1_eternum_ResourceBridgeFeeSplitConfigOrderField; +}; + +export enum s1_eternum_ResourceBridgeFeeSplitConfigOrderField { + ClientFeeOnDptPercent = "CLIENT_FEE_ON_DPT_PERCENT", + ClientFeeOnWtdrPercent = "CLIENT_FEE_ON_WTDR_PERCENT", + ConfigId = "CONFIG_ID", + MaxBankFeeDptPercent = "MAX_BANK_FEE_DPT_PERCENT", + MaxBankFeeWtdrPercent = "MAX_BANK_FEE_WTDR_PERCENT", + SeasonPoolFeeOnDptPercent = "SEASON_POOL_FEE_ON_DPT_PERCENT", + SeasonPoolFeeOnWtdrPercent = "SEASON_POOL_FEE_ON_WTDR_PERCENT", + SeasonPoolFeeRecipient = "SEASON_POOL_FEE_RECIPIENT", + VelordsFeeOnDptPercent = "VELORDS_FEE_ON_DPT_PERCENT", + VelordsFeeOnWtdrPercent = "VELORDS_FEE_ON_WTDR_PERCENT", + VelordsFeeRecipient = "VELORDS_FEE_RECIPIENT", +} + +export type s1_eternum_ResourceBridgeFeeSplitConfigWhereInput = { + client_fee_on_dpt_percent?: InputMaybe; + client_fee_on_dpt_percentEQ?: InputMaybe; + client_fee_on_dpt_percentGT?: InputMaybe; + client_fee_on_dpt_percentGTE?: InputMaybe; + client_fee_on_dpt_percentIN?: InputMaybe>>; + client_fee_on_dpt_percentLIKE?: InputMaybe; + client_fee_on_dpt_percentLT?: InputMaybe; + client_fee_on_dpt_percentLTE?: InputMaybe; + client_fee_on_dpt_percentNEQ?: InputMaybe; + client_fee_on_dpt_percentNOTIN?: InputMaybe>>; + client_fee_on_dpt_percentNOTLIKE?: InputMaybe; + client_fee_on_wtdr_percent?: InputMaybe; + client_fee_on_wtdr_percentEQ?: InputMaybe; + client_fee_on_wtdr_percentGT?: InputMaybe; + client_fee_on_wtdr_percentGTE?: InputMaybe; + client_fee_on_wtdr_percentIN?: InputMaybe>>; + client_fee_on_wtdr_percentLIKE?: InputMaybe; + client_fee_on_wtdr_percentLT?: InputMaybe; + client_fee_on_wtdr_percentLTE?: InputMaybe; + client_fee_on_wtdr_percentNEQ?: InputMaybe; + client_fee_on_wtdr_percentNOTIN?: InputMaybe>>; + client_fee_on_wtdr_percentNOTLIKE?: InputMaybe; + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + max_bank_fee_dpt_percent?: InputMaybe; + max_bank_fee_dpt_percentEQ?: InputMaybe; + max_bank_fee_dpt_percentGT?: InputMaybe; + max_bank_fee_dpt_percentGTE?: InputMaybe; + max_bank_fee_dpt_percentIN?: InputMaybe>>; + max_bank_fee_dpt_percentLIKE?: InputMaybe; + max_bank_fee_dpt_percentLT?: InputMaybe; + max_bank_fee_dpt_percentLTE?: InputMaybe; + max_bank_fee_dpt_percentNEQ?: InputMaybe; + max_bank_fee_dpt_percentNOTIN?: InputMaybe>>; + max_bank_fee_dpt_percentNOTLIKE?: InputMaybe; + max_bank_fee_wtdr_percent?: InputMaybe; + max_bank_fee_wtdr_percentEQ?: InputMaybe; + max_bank_fee_wtdr_percentGT?: InputMaybe; + max_bank_fee_wtdr_percentGTE?: InputMaybe; + max_bank_fee_wtdr_percentIN?: InputMaybe>>; + max_bank_fee_wtdr_percentLIKE?: InputMaybe; + max_bank_fee_wtdr_percentLT?: InputMaybe; + max_bank_fee_wtdr_percentLTE?: InputMaybe; + max_bank_fee_wtdr_percentNEQ?: InputMaybe; + max_bank_fee_wtdr_percentNOTIN?: InputMaybe>>; + max_bank_fee_wtdr_percentNOTLIKE?: InputMaybe; + season_pool_fee_on_dpt_percent?: InputMaybe; + season_pool_fee_on_dpt_percentEQ?: InputMaybe; + season_pool_fee_on_dpt_percentGT?: InputMaybe; + season_pool_fee_on_dpt_percentGTE?: InputMaybe; + season_pool_fee_on_dpt_percentIN?: InputMaybe>>; + season_pool_fee_on_dpt_percentLIKE?: InputMaybe; + season_pool_fee_on_dpt_percentLT?: InputMaybe; + season_pool_fee_on_dpt_percentLTE?: InputMaybe; + season_pool_fee_on_dpt_percentNEQ?: InputMaybe; + season_pool_fee_on_dpt_percentNOTIN?: InputMaybe>>; + season_pool_fee_on_dpt_percentNOTLIKE?: InputMaybe; + season_pool_fee_on_wtdr_percent?: InputMaybe; + season_pool_fee_on_wtdr_percentEQ?: InputMaybe; + season_pool_fee_on_wtdr_percentGT?: InputMaybe; + season_pool_fee_on_wtdr_percentGTE?: InputMaybe; + season_pool_fee_on_wtdr_percentIN?: InputMaybe>>; + season_pool_fee_on_wtdr_percentLIKE?: InputMaybe; + season_pool_fee_on_wtdr_percentLT?: InputMaybe; + season_pool_fee_on_wtdr_percentLTE?: InputMaybe; + season_pool_fee_on_wtdr_percentNEQ?: InputMaybe; + season_pool_fee_on_wtdr_percentNOTIN?: InputMaybe>>; + season_pool_fee_on_wtdr_percentNOTLIKE?: InputMaybe; + season_pool_fee_recipient?: InputMaybe; + season_pool_fee_recipientEQ?: InputMaybe; + season_pool_fee_recipientGT?: InputMaybe; + season_pool_fee_recipientGTE?: InputMaybe; + season_pool_fee_recipientIN?: InputMaybe>>; + season_pool_fee_recipientLIKE?: InputMaybe; + season_pool_fee_recipientLT?: InputMaybe; + season_pool_fee_recipientLTE?: InputMaybe; + season_pool_fee_recipientNEQ?: InputMaybe; + season_pool_fee_recipientNOTIN?: InputMaybe>>; + season_pool_fee_recipientNOTLIKE?: InputMaybe; + velords_fee_on_dpt_percent?: InputMaybe; + velords_fee_on_dpt_percentEQ?: InputMaybe; + velords_fee_on_dpt_percentGT?: InputMaybe; + velords_fee_on_dpt_percentGTE?: InputMaybe; + velords_fee_on_dpt_percentIN?: InputMaybe>>; + velords_fee_on_dpt_percentLIKE?: InputMaybe; + velords_fee_on_dpt_percentLT?: InputMaybe; + velords_fee_on_dpt_percentLTE?: InputMaybe; + velords_fee_on_dpt_percentNEQ?: InputMaybe; + velords_fee_on_dpt_percentNOTIN?: InputMaybe>>; + velords_fee_on_dpt_percentNOTLIKE?: InputMaybe; + velords_fee_on_wtdr_percent?: InputMaybe; + velords_fee_on_wtdr_percentEQ?: InputMaybe; + velords_fee_on_wtdr_percentGT?: InputMaybe; + velords_fee_on_wtdr_percentGTE?: InputMaybe; + velords_fee_on_wtdr_percentIN?: InputMaybe>>; + velords_fee_on_wtdr_percentLIKE?: InputMaybe; + velords_fee_on_wtdr_percentLT?: InputMaybe; + velords_fee_on_wtdr_percentLTE?: InputMaybe; + velords_fee_on_wtdr_percentNEQ?: InputMaybe; + velords_fee_on_wtdr_percentNOTIN?: InputMaybe>>; + velords_fee_on_wtdr_percentNOTLIKE?: InputMaybe; + velords_fee_recipient?: InputMaybe; + velords_fee_recipientEQ?: InputMaybe; + velords_fee_recipientGT?: InputMaybe; + velords_fee_recipientGTE?: InputMaybe; + velords_fee_recipientIN?: InputMaybe>>; + velords_fee_recipientLIKE?: InputMaybe; + velords_fee_recipientLT?: InputMaybe; + velords_fee_recipientLTE?: InputMaybe; + velords_fee_recipientNEQ?: InputMaybe; + velords_fee_recipientNOTIN?: InputMaybe>>; + velords_fee_recipientNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ResourceBridgeWhitelistConfigOrder = { + direction: OrderDirection; + field: s1_eternum_ResourceBridgeWhitelistConfigOrderField; +}; + +export enum s1_eternum_ResourceBridgeWhitelistConfigOrderField { + ResourceType = "RESOURCE_TYPE", + Token = "TOKEN", +} + +export type s1_eternum_ResourceBridgeWhitelistConfigWhereInput = { + resource_type?: InputMaybe; + resource_typeEQ?: InputMaybe; + resource_typeGT?: InputMaybe; + resource_typeGTE?: InputMaybe; + resource_typeIN?: InputMaybe>>; + resource_typeLIKE?: InputMaybe; + resource_typeLT?: InputMaybe; + resource_typeLTE?: InputMaybe; + resource_typeNEQ?: InputMaybe; + resource_typeNOTIN?: InputMaybe>>; + resource_typeNOTLIKE?: InputMaybe; + token?: InputMaybe; + tokenEQ?: InputMaybe; + tokenGT?: InputMaybe; + tokenGTE?: InputMaybe; + tokenIN?: InputMaybe>>; + tokenLIKE?: InputMaybe; + tokenLT?: InputMaybe; + tokenLTE?: InputMaybe; + tokenNEQ?: InputMaybe; + tokenNOTIN?: InputMaybe>>; + tokenNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ResourceCostOrder = { direction: OrderDirection; - field: S0_Eternum_StatusOrderField; -}; - -export enum S0_Eternum_StatusOrderField { - TradeId = 'TRADE_ID', - Value = 'VALUE' -} - -export type S0_Eternum_StatusWhereInput = { - trade_id?: InputMaybe; - trade_idEQ?: InputMaybe; - trade_idGT?: InputMaybe; - trade_idGTE?: InputMaybe; - trade_idIN?: InputMaybe>>; - trade_idLIKE?: InputMaybe; - trade_idLT?: InputMaybe; - trade_idLTE?: InputMaybe; - trade_idNEQ?: InputMaybe; - trade_idNOTIN?: InputMaybe>>; - trade_idNOTLIKE?: InputMaybe; - value?: InputMaybe; - valueEQ?: InputMaybe; - valueGT?: InputMaybe; - valueGTE?: InputMaybe; - valueIN?: InputMaybe>>; - valueLIKE?: InputMaybe; - valueLT?: InputMaybe; - valueLTE?: InputMaybe; - valueNEQ?: InputMaybe; - valueNOTIN?: InputMaybe>>; - valueNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_StructureCountOrder = { + field: s1_eternum_ResourceCostOrderField; +}; + +export enum s1_eternum_ResourceCostOrderField { + Amount = "AMOUNT", + EntityId = "ENTITY_ID", + Index = "INDEX", + ResourceType = "RESOURCE_TYPE", +} + +export type s1_eternum_ResourceCostWhereInput = { + amount?: InputMaybe; + amountEQ?: InputMaybe; + amountGT?: InputMaybe; + amountGTE?: InputMaybe; + amountIN?: InputMaybe>>; + amountLIKE?: InputMaybe; + amountLT?: InputMaybe; + amountLTE?: InputMaybe; + amountNEQ?: InputMaybe; + amountNOTIN?: InputMaybe>>; + amountNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + index?: InputMaybe; + indexEQ?: InputMaybe; + indexGT?: InputMaybe; + indexGTE?: InputMaybe; + indexIN?: InputMaybe>>; + indexLIKE?: InputMaybe; + indexLT?: InputMaybe; + indexLTE?: InputMaybe; + indexNEQ?: InputMaybe; + indexNOTIN?: InputMaybe>>; + indexNOTLIKE?: InputMaybe; + resource_type?: InputMaybe; + resource_typeEQ?: InputMaybe; + resource_typeGT?: InputMaybe; + resource_typeGTE?: InputMaybe; + resource_typeIN?: InputMaybe>>; + resource_typeLIKE?: InputMaybe; + resource_typeLT?: InputMaybe; + resource_typeLTE?: InputMaybe; + resource_typeNEQ?: InputMaybe; + resource_typeNOTIN?: InputMaybe>>; + resource_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ResourceOrder = { direction: OrderDirection; - field: S0_Eternum_StructureCountOrderField; + field: s1_eternum_ResourceOrderField; }; -export enum S0_Eternum_StructureCountOrderField { - Coord = 'COORD', - Count = 'COUNT' +export enum s1_eternum_ResourceOrderField { + Balance = "BALANCE", + EntityId = "ENTITY_ID", + ResourceType = "RESOURCE_TYPE", } -export type S0_Eternum_StructureCountWhereInput = { - count?: InputMaybe; - countEQ?: InputMaybe; - countGT?: InputMaybe; - countGTE?: InputMaybe; - countIN?: InputMaybe>>; - countLIKE?: InputMaybe; - countLT?: InputMaybe; - countLTE?: InputMaybe; - countNEQ?: InputMaybe; - countNOTIN?: InputMaybe>>; - countNOTLIKE?: InputMaybe; +export type s1_eternum_ResourceTransferLockOrder = { + direction: OrderDirection; + field: s1_eternum_ResourceTransferLockOrderField; +}; + +export enum s1_eternum_ResourceTransferLockOrderField { + EntityId = "ENTITY_ID", + ReleaseAt = "RELEASE_AT", + StartAt = "START_AT", +} + +export type s1_eternum_ResourceTransferLockWhereInput = { + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + release_at?: InputMaybe; + release_atEQ?: InputMaybe; + release_atGT?: InputMaybe; + release_atGTE?: InputMaybe; + release_atIN?: InputMaybe>>; + release_atLIKE?: InputMaybe; + release_atLT?: InputMaybe; + release_atLTE?: InputMaybe; + release_atNEQ?: InputMaybe; + release_atNOTIN?: InputMaybe>>; + release_atNOTLIKE?: InputMaybe; + start_at?: InputMaybe; + start_atEQ?: InputMaybe; + start_atGT?: InputMaybe; + start_atGTE?: InputMaybe; + start_atIN?: InputMaybe>>; + start_atLIKE?: InputMaybe; + start_atLT?: InputMaybe; + start_atLTE?: InputMaybe; + start_atNEQ?: InputMaybe; + start_atNOTIN?: InputMaybe>>; + start_atNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_ResourceWhereInput = { + balance?: InputMaybe; + balanceEQ?: InputMaybe; + balanceGT?: InputMaybe; + balanceGTE?: InputMaybe; + balanceIN?: InputMaybe>>; + balanceLIKE?: InputMaybe; + balanceLT?: InputMaybe; + balanceLTE?: InputMaybe; + balanceNEQ?: InputMaybe; + balanceNOTIN?: InputMaybe>>; + balanceNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + resource_type?: InputMaybe; + resource_typeEQ?: InputMaybe; + resource_typeGT?: InputMaybe; + resource_typeGTE?: InputMaybe; + resource_typeIN?: InputMaybe>>; + resource_typeLIKE?: InputMaybe; + resource_typeLT?: InputMaybe; + resource_typeLTE?: InputMaybe; + resource_typeNEQ?: InputMaybe; + resource_typeNOTIN?: InputMaybe>>; + resource_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_SeasonAddressesConfigOrder = { + direction: OrderDirection; + field: s1_eternum_SeasonAddressesConfigOrderField; +}; + +export enum s1_eternum_SeasonAddressesConfigOrderField { + ConfigId = "CONFIG_ID", + LordsAddress = "LORDS_ADDRESS", + RealmsAddress = "REALMS_ADDRESS", + SeasonPassAddress = "SEASON_PASS_ADDRESS", +} + +export type s1_eternum_SeasonAddressesConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + lords_address?: InputMaybe; + lords_addressEQ?: InputMaybe; + lords_addressGT?: InputMaybe; + lords_addressGTE?: InputMaybe; + lords_addressIN?: InputMaybe>>; + lords_addressLIKE?: InputMaybe; + lords_addressLT?: InputMaybe; + lords_addressLTE?: InputMaybe; + lords_addressNEQ?: InputMaybe; + lords_addressNOTIN?: InputMaybe>>; + lords_addressNOTLIKE?: InputMaybe; + realms_address?: InputMaybe; + realms_addressEQ?: InputMaybe; + realms_addressGT?: InputMaybe; + realms_addressGTE?: InputMaybe; + realms_addressIN?: InputMaybe>>; + realms_addressLIKE?: InputMaybe; + realms_addressLT?: InputMaybe; + realms_addressLTE?: InputMaybe; + realms_addressNEQ?: InputMaybe; + realms_addressNOTIN?: InputMaybe>>; + realms_addressNOTLIKE?: InputMaybe; + season_pass_address?: InputMaybe; + season_pass_addressEQ?: InputMaybe; + season_pass_addressGT?: InputMaybe; + season_pass_addressGTE?: InputMaybe; + season_pass_addressIN?: InputMaybe>>; + season_pass_addressLIKE?: InputMaybe; + season_pass_addressLT?: InputMaybe; + season_pass_addressLTE?: InputMaybe; + season_pass_addressNEQ?: InputMaybe; + season_pass_addressNOTIN?: InputMaybe>>; + season_pass_addressNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_SeasonBridgeConfigOrder = { + direction: OrderDirection; + field: s1_eternum_SeasonBridgeConfigOrderField; +}; + +export enum s1_eternum_SeasonBridgeConfigOrderField { + CloseAfterEndSeconds = "CLOSE_AFTER_END_SECONDS", + ConfigId = "CONFIG_ID", +} + +export type s1_eternum_SeasonBridgeConfigWhereInput = { + close_after_end_seconds?: InputMaybe; + close_after_end_secondsEQ?: InputMaybe; + close_after_end_secondsGT?: InputMaybe; + close_after_end_secondsGTE?: InputMaybe; + close_after_end_secondsIN?: InputMaybe>>; + close_after_end_secondsLIKE?: InputMaybe; + close_after_end_secondsLT?: InputMaybe; + close_after_end_secondsLTE?: InputMaybe; + close_after_end_secondsNEQ?: InputMaybe; + close_after_end_secondsNOTIN?: InputMaybe>>; + close_after_end_secondsNOTLIKE?: InputMaybe; + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_SeasonOrder = { + direction: OrderDirection; + field: s1_eternum_SeasonOrderField; +}; + +export enum s1_eternum_SeasonOrderField { + ConfigId = "CONFIG_ID", + EndedAt = "ENDED_AT", + IsOver = "IS_OVER", + StartAt = "START_AT", +} + +export type s1_eternum_SeasonWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + ended_at?: InputMaybe; + ended_atEQ?: InputMaybe; + ended_atGT?: InputMaybe; + ended_atGTE?: InputMaybe; + ended_atIN?: InputMaybe>>; + ended_atLIKE?: InputMaybe; + ended_atLT?: InputMaybe; + ended_atLTE?: InputMaybe; + ended_atNEQ?: InputMaybe; + ended_atNOTIN?: InputMaybe>>; + ended_atNOTLIKE?: InputMaybe; + is_over?: InputMaybe; + start_at?: InputMaybe; + start_atEQ?: InputMaybe; + start_atGT?: InputMaybe; + start_atGTE?: InputMaybe; + start_atIN?: InputMaybe>>; + start_atLIKE?: InputMaybe; + start_atLT?: InputMaybe; + start_atLTE?: InputMaybe; + start_atNEQ?: InputMaybe; + start_atNOTIN?: InputMaybe>>; + start_atNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_SettleRealmDataOrder = { + direction: OrderDirection; + field: s1_eternum_SettleRealmDataOrderField; +}; + +export enum s1_eternum_SettleRealmDataOrderField { + Cities = "CITIES", + EntityId = "ENTITY_ID", + EventId = "EVENT_ID", + Harbors = "HARBORS", + Id = "ID", + Order = "ORDER", + OwnerAddress = "OWNER_ADDRESS", + OwnerName = "OWNER_NAME", + ProducedResources = "PRODUCED_RESOURCES", + RealmName = "REALM_NAME", + Regions = "REGIONS", + Rivers = "RIVERS", + Timestamp = "TIMESTAMP", + Wonder = "WONDER", + X = "X", + Y = "Y", +} + +export type s1_eternum_SettleRealmDataWhereInput = { + cities?: InputMaybe; + citiesEQ?: InputMaybe; + citiesGT?: InputMaybe; + citiesGTE?: InputMaybe; + citiesIN?: InputMaybe>>; + citiesLIKE?: InputMaybe; + citiesLT?: InputMaybe; + citiesLTE?: InputMaybe; + citiesNEQ?: InputMaybe; + citiesNOTIN?: InputMaybe>>; + citiesNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + event_id?: InputMaybe; + harbors?: InputMaybe; + harborsEQ?: InputMaybe; + harborsGT?: InputMaybe; + harborsGTE?: InputMaybe; + harborsIN?: InputMaybe>>; + harborsLIKE?: InputMaybe; + harborsLT?: InputMaybe; + harborsLTE?: InputMaybe; + harborsNEQ?: InputMaybe; + harborsNOTIN?: InputMaybe>>; + harborsNOTLIKE?: InputMaybe; + id?: InputMaybe; + idEQ?: InputMaybe; + idGT?: InputMaybe; + idGTE?: InputMaybe; + idIN?: InputMaybe>>; + idLIKE?: InputMaybe; + idLT?: InputMaybe; + idLTE?: InputMaybe; + idNEQ?: InputMaybe; + idNOTIN?: InputMaybe>>; + idNOTLIKE?: InputMaybe; + order?: InputMaybe; + orderEQ?: InputMaybe; + orderGT?: InputMaybe; + orderGTE?: InputMaybe; + orderIN?: InputMaybe>>; + orderLIKE?: InputMaybe; + orderLT?: InputMaybe; + orderLTE?: InputMaybe; + orderNEQ?: InputMaybe; + orderNOTIN?: InputMaybe>>; + orderNOTLIKE?: InputMaybe; + owner_address?: InputMaybe; + owner_addressEQ?: InputMaybe; + owner_addressGT?: InputMaybe; + owner_addressGTE?: InputMaybe; + owner_addressIN?: InputMaybe>>; + owner_addressLIKE?: InputMaybe; + owner_addressLT?: InputMaybe; + owner_addressLTE?: InputMaybe; + owner_addressNEQ?: InputMaybe; + owner_addressNOTIN?: InputMaybe>>; + owner_addressNOTLIKE?: InputMaybe; + owner_name?: InputMaybe; + owner_nameEQ?: InputMaybe; + owner_nameGT?: InputMaybe; + owner_nameGTE?: InputMaybe; + owner_nameIN?: InputMaybe>>; + owner_nameLIKE?: InputMaybe; + owner_nameLT?: InputMaybe; + owner_nameLTE?: InputMaybe; + owner_nameNEQ?: InputMaybe; + owner_nameNOTIN?: InputMaybe>>; + owner_nameNOTLIKE?: InputMaybe; + produced_resources?: InputMaybe; + produced_resourcesEQ?: InputMaybe; + produced_resourcesGT?: InputMaybe; + produced_resourcesGTE?: InputMaybe; + produced_resourcesIN?: InputMaybe>>; + produced_resourcesLIKE?: InputMaybe; + produced_resourcesLT?: InputMaybe; + produced_resourcesLTE?: InputMaybe; + produced_resourcesNEQ?: InputMaybe; + produced_resourcesNOTIN?: InputMaybe>>; + produced_resourcesNOTLIKE?: InputMaybe; + realm_name?: InputMaybe; + realm_nameEQ?: InputMaybe; + realm_nameGT?: InputMaybe; + realm_nameGTE?: InputMaybe; + realm_nameIN?: InputMaybe>>; + realm_nameLIKE?: InputMaybe; + realm_nameLT?: InputMaybe; + realm_nameLTE?: InputMaybe; + realm_nameNEQ?: InputMaybe; + realm_nameNOTIN?: InputMaybe>>; + realm_nameNOTLIKE?: InputMaybe; + regions?: InputMaybe; + regionsEQ?: InputMaybe; + regionsGT?: InputMaybe; + regionsGTE?: InputMaybe; + regionsIN?: InputMaybe>>; + regionsLIKE?: InputMaybe; + regionsLT?: InputMaybe; + regionsLTE?: InputMaybe; + regionsNEQ?: InputMaybe; + regionsNOTIN?: InputMaybe>>; + regionsNOTLIKE?: InputMaybe; + rivers?: InputMaybe; + riversEQ?: InputMaybe; + riversGT?: InputMaybe; + riversGTE?: InputMaybe; + riversIN?: InputMaybe>>; + riversLIKE?: InputMaybe; + riversLT?: InputMaybe; + riversLTE?: InputMaybe; + riversNEQ?: InputMaybe; + riversNOTIN?: InputMaybe>>; + riversNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; + wonder?: InputMaybe; + wonderEQ?: InputMaybe; + wonderGT?: InputMaybe; + wonderGTE?: InputMaybe; + wonderIN?: InputMaybe>>; + wonderLIKE?: InputMaybe; + wonderLT?: InputMaybe; + wonderLTE?: InputMaybe; + wonderNEQ?: InputMaybe; + wonderNOTIN?: InputMaybe>>; + wonderNOTLIKE?: InputMaybe; + x?: InputMaybe; + xEQ?: InputMaybe; + xGT?: InputMaybe; + xGTE?: InputMaybe; + xIN?: InputMaybe>>; + xLIKE?: InputMaybe; + xLT?: InputMaybe; + xLTE?: InputMaybe; + xNEQ?: InputMaybe; + xNOTIN?: InputMaybe>>; + xNOTLIKE?: InputMaybe; + y?: InputMaybe; + yEQ?: InputMaybe; + yGT?: InputMaybe; + yGTE?: InputMaybe; + yIN?: InputMaybe>>; + yLIKE?: InputMaybe; + yLT?: InputMaybe; + yLTE?: InputMaybe; + yNEQ?: InputMaybe; + yNOTIN?: InputMaybe>>; + yNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_SettlementConfigOrder = { + direction: OrderDirection; + field: s1_eternum_SettlementConfigOrderField; +}; + +export enum s1_eternum_SettlementConfigOrderField { + BaseDistance = "BASE_DISTANCE", + Center = "CENTER", + ConfigId = "CONFIG_ID", + CurrentLayer = "CURRENT_LAYER", + CurrentPointOnSide = "CURRENT_POINT_ON_SIDE", + CurrentSide = "CURRENT_SIDE", + MinFirstLayerDistance = "MIN_FIRST_LAYER_DISTANCE", + PointsPlaced = "POINTS_PLACED", +} + +export type s1_eternum_SettlementConfigWhereInput = { + base_distance?: InputMaybe; + base_distanceEQ?: InputMaybe; + base_distanceGT?: InputMaybe; + base_distanceGTE?: InputMaybe; + base_distanceIN?: InputMaybe>>; + base_distanceLIKE?: InputMaybe; + base_distanceLT?: InputMaybe; + base_distanceLTE?: InputMaybe; + base_distanceNEQ?: InputMaybe; + base_distanceNOTIN?: InputMaybe>>; + base_distanceNOTLIKE?: InputMaybe; + center?: InputMaybe; + centerEQ?: InputMaybe; + centerGT?: InputMaybe; + centerGTE?: InputMaybe; + centerIN?: InputMaybe>>; + centerLIKE?: InputMaybe; + centerLT?: InputMaybe; + centerLTE?: InputMaybe; + centerNEQ?: InputMaybe; + centerNOTIN?: InputMaybe>>; + centerNOTLIKE?: InputMaybe; + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + current_layer?: InputMaybe; + current_layerEQ?: InputMaybe; + current_layerGT?: InputMaybe; + current_layerGTE?: InputMaybe; + current_layerIN?: InputMaybe>>; + current_layerLIKE?: InputMaybe; + current_layerLT?: InputMaybe; + current_layerLTE?: InputMaybe; + current_layerNEQ?: InputMaybe; + current_layerNOTIN?: InputMaybe>>; + current_layerNOTLIKE?: InputMaybe; + current_point_on_side?: InputMaybe; + current_point_on_sideEQ?: InputMaybe; + current_point_on_sideGT?: InputMaybe; + current_point_on_sideGTE?: InputMaybe; + current_point_on_sideIN?: InputMaybe>>; + current_point_on_sideLIKE?: InputMaybe; + current_point_on_sideLT?: InputMaybe; + current_point_on_sideLTE?: InputMaybe; + current_point_on_sideNEQ?: InputMaybe; + current_point_on_sideNOTIN?: InputMaybe>>; + current_point_on_sideNOTLIKE?: InputMaybe; + current_side?: InputMaybe; + current_sideEQ?: InputMaybe; + current_sideGT?: InputMaybe; + current_sideGTE?: InputMaybe; + current_sideIN?: InputMaybe>>; + current_sideLIKE?: InputMaybe; + current_sideLT?: InputMaybe; + current_sideLTE?: InputMaybe; + current_sideNEQ?: InputMaybe; + current_sideNOTIN?: InputMaybe>>; + current_sideNOTLIKE?: InputMaybe; + min_first_layer_distance?: InputMaybe; + min_first_layer_distanceEQ?: InputMaybe; + min_first_layer_distanceGT?: InputMaybe; + min_first_layer_distanceGTE?: InputMaybe; + min_first_layer_distanceIN?: InputMaybe>>; + min_first_layer_distanceLIKE?: InputMaybe; + min_first_layer_distanceLT?: InputMaybe; + min_first_layer_distanceLTE?: InputMaybe; + min_first_layer_distanceNEQ?: InputMaybe; + min_first_layer_distanceNOTIN?: InputMaybe>>; + min_first_layer_distanceNOTLIKE?: InputMaybe; + points_placed?: InputMaybe; + points_placedEQ?: InputMaybe; + points_placedGT?: InputMaybe; + points_placedGTE?: InputMaybe; + points_placedIN?: InputMaybe>>; + points_placedLIKE?: InputMaybe; + points_placedLT?: InputMaybe; + points_placedLTE?: InputMaybe; + points_placedNEQ?: InputMaybe; + points_placedNOTIN?: InputMaybe>>; + points_placedNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_SpeedConfigOrder = { + direction: OrderDirection; + field: s1_eternum_SpeedConfigOrderField; +}; + +export enum s1_eternum_SpeedConfigOrderField { + ConfigId = "CONFIG_ID", + EntityType = "ENTITY_TYPE", + SecPerKm = "SEC_PER_KM", + SpeedConfigId = "SPEED_CONFIG_ID", +} + +export type s1_eternum_SpeedConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + entity_type?: InputMaybe; + entity_typeEQ?: InputMaybe; + entity_typeGT?: InputMaybe; + entity_typeGTE?: InputMaybe; + entity_typeIN?: InputMaybe>>; + entity_typeLIKE?: InputMaybe; + entity_typeLT?: InputMaybe; + entity_typeLTE?: InputMaybe; + entity_typeNEQ?: InputMaybe; + entity_typeNOTIN?: InputMaybe>>; + entity_typeNOTLIKE?: InputMaybe; + sec_per_km?: InputMaybe; + sec_per_kmEQ?: InputMaybe; + sec_per_kmGT?: InputMaybe; + sec_per_kmGTE?: InputMaybe; + sec_per_kmIN?: InputMaybe>>; + sec_per_kmLIKE?: InputMaybe; + sec_per_kmLT?: InputMaybe; + sec_per_kmLTE?: InputMaybe; + sec_per_kmNEQ?: InputMaybe; + sec_per_kmNOTIN?: InputMaybe>>; + sec_per_kmNOTLIKE?: InputMaybe; + speed_config_id?: InputMaybe; + speed_config_idEQ?: InputMaybe; + speed_config_idGT?: InputMaybe; + speed_config_idGTE?: InputMaybe; + speed_config_idIN?: InputMaybe>>; + speed_config_idLIKE?: InputMaybe; + speed_config_idLT?: InputMaybe; + speed_config_idLTE?: InputMaybe; + speed_config_idNEQ?: InputMaybe; + speed_config_idNOTIN?: InputMaybe>>; + speed_config_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_StaminaConfigOrder = { + direction: OrderDirection; + field: s1_eternum_StaminaConfigOrderField; +}; + +export enum s1_eternum_StaminaConfigOrderField { + ConfigId = "CONFIG_ID", + MaxStamina = "MAX_STAMINA", + UnitType = "UNIT_TYPE", +} + +export type s1_eternum_StaminaConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + max_stamina?: InputMaybe; + max_staminaEQ?: InputMaybe; + max_staminaGT?: InputMaybe; + max_staminaGTE?: InputMaybe; + max_staminaIN?: InputMaybe>>; + max_staminaLIKE?: InputMaybe; + max_staminaLT?: InputMaybe; + max_staminaLTE?: InputMaybe; + max_staminaNEQ?: InputMaybe; + max_staminaNOTIN?: InputMaybe>>; + max_staminaNOTLIKE?: InputMaybe; + unit_type?: InputMaybe; + unit_typeEQ?: InputMaybe; + unit_typeGT?: InputMaybe; + unit_typeGTE?: InputMaybe; + unit_typeIN?: InputMaybe>>; + unit_typeLIKE?: InputMaybe; + unit_typeLT?: InputMaybe; + unit_typeLTE?: InputMaybe; + unit_typeNEQ?: InputMaybe; + unit_typeNOTIN?: InputMaybe>>; + unit_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_StaminaOrder = { + direction: OrderDirection; + field: s1_eternum_StaminaOrderField; }; -export type S0_Eternum_StructureOrder = { +export enum s1_eternum_StaminaOrderField { + Amount = "AMOUNT", + EntityId = "ENTITY_ID", + LastRefillTick = "LAST_REFILL_TICK", +} + +export type s1_eternum_StaminaRefillConfigOrder = { direction: OrderDirection; - field: S0_Eternum_StructureOrderField; -}; - -export enum S0_Eternum_StructureOrderField { - Category = 'CATEGORY', - CreatedAt = 'CREATED_AT', - EntityId = 'ENTITY_ID' -} - -export type S0_Eternum_StructureWhereInput = { - category?: InputMaybe; - created_at?: InputMaybe; - created_atEQ?: InputMaybe; - created_atGT?: InputMaybe; - created_atGTE?: InputMaybe; - created_atIN?: InputMaybe>>; - created_atLIKE?: InputMaybe; - created_atLT?: InputMaybe; - created_atLTE?: InputMaybe; - created_atNEQ?: InputMaybe; - created_atNOTIN?: InputMaybe>>; - created_atNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; + field: s1_eternum_StaminaRefillConfigOrderField; +}; + +export enum s1_eternum_StaminaRefillConfigOrderField { + AmountPerTick = "AMOUNT_PER_TICK", + ConfigId = "CONFIG_ID", + StartBoostTickCount = "START_BOOST_TICK_COUNT", +} + +export type s1_eternum_StaminaRefillConfigWhereInput = { + amount_per_tick?: InputMaybe; + amount_per_tickEQ?: InputMaybe; + amount_per_tickGT?: InputMaybe; + amount_per_tickGTE?: InputMaybe; + amount_per_tickIN?: InputMaybe>>; + amount_per_tickLIKE?: InputMaybe; + amount_per_tickLT?: InputMaybe; + amount_per_tickLTE?: InputMaybe; + amount_per_tickNEQ?: InputMaybe; + amount_per_tickNOTIN?: InputMaybe>>; + amount_per_tickNOTLIKE?: InputMaybe; + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + start_boost_tick_count?: InputMaybe; + start_boost_tick_countEQ?: InputMaybe; + start_boost_tick_countGT?: InputMaybe; + start_boost_tick_countGTE?: InputMaybe; + start_boost_tick_countIN?: InputMaybe>>; + start_boost_tick_countLIKE?: InputMaybe; + start_boost_tick_countLT?: InputMaybe; + start_boost_tick_countLTE?: InputMaybe; + start_boost_tick_countNEQ?: InputMaybe; + start_boost_tick_countNOTIN?: InputMaybe>>; + start_boost_tick_countNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_StaminaWhereInput = { + amount?: InputMaybe; + amountEQ?: InputMaybe; + amountGT?: InputMaybe; + amountGTE?: InputMaybe; + amountIN?: InputMaybe>>; + amountLIKE?: InputMaybe; + amountLT?: InputMaybe; + amountLTE?: InputMaybe; + amountNEQ?: InputMaybe; + amountNOTIN?: InputMaybe>>; + amountNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + last_refill_tick?: InputMaybe; + last_refill_tickEQ?: InputMaybe; + last_refill_tickGT?: InputMaybe; + last_refill_tickGTE?: InputMaybe; + last_refill_tickIN?: InputMaybe>>; + last_refill_tickLIKE?: InputMaybe; + last_refill_tickLT?: InputMaybe; + last_refill_tickLTE?: InputMaybe; + last_refill_tickNEQ?: InputMaybe; + last_refill_tickNOTIN?: InputMaybe>>; + last_refill_tickNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_StatusOrder = { + direction: OrderDirection; + field: s1_eternum_StatusOrderField; +}; + +export enum s1_eternum_StatusOrderField { + TradeId = "TRADE_ID", + Value = "VALUE", +} + +export type s1_eternum_StatusWhereInput = { + trade_id?: InputMaybe; + trade_idEQ?: InputMaybe; + trade_idGT?: InputMaybe; + trade_idGTE?: InputMaybe; + trade_idIN?: InputMaybe>>; + trade_idLIKE?: InputMaybe; + trade_idLT?: InputMaybe; + trade_idLTE?: InputMaybe; + trade_idNEQ?: InputMaybe; + trade_idNOTIN?: InputMaybe>>; + trade_idNOTLIKE?: InputMaybe; + value?: InputMaybe; + valueEQ?: InputMaybe; + valueGT?: InputMaybe; + valueGTE?: InputMaybe; + valueIN?: InputMaybe>>; + valueLIKE?: InputMaybe; + valueLT?: InputMaybe; + valueLTE?: InputMaybe; + valueNEQ?: InputMaybe; + valueNOTIN?: InputMaybe>>; + valueNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_StructureCountOrder = { + direction: OrderDirection; + field: s1_eternum_StructureCountOrderField; }; -export type S0_Eternum_SwapEventOrder = { - direction: OrderDirection; - field: S0_Eternum_SwapEventOrderField; +export enum s1_eternum_StructureCountOrderField { + Coord = "COORD", + Count = "COUNT", +} + +export type s1_eternum_StructureCountWhereInput = { + count?: InputMaybe; + countEQ?: InputMaybe; + countGT?: InputMaybe; + countGTE?: InputMaybe; + countIN?: InputMaybe>>; + countLIKE?: InputMaybe; + countLT?: InputMaybe; + countLTE?: InputMaybe; + countNEQ?: InputMaybe; + countNOTIN?: InputMaybe>>; + countNOTLIKE?: InputMaybe; }; -export enum S0_Eternum_SwapEventOrderField { - BankEntityId = 'BANK_ENTITY_ID', - BankOwnerFees = 'BANK_OWNER_FEES', - Buy = 'BUY', - EntityId = 'ENTITY_ID', - Id = 'ID', - LordsAmount = 'LORDS_AMOUNT', - LpFees = 'LP_FEES', - ResourceAmount = 'RESOURCE_AMOUNT', - ResourcePrice = 'RESOURCE_PRICE', - ResourceType = 'RESOURCE_TYPE', - Timestamp = 'TIMESTAMP' -} - -export type S0_Eternum_SwapEventWhereInput = { - bank_entity_id?: InputMaybe; - bank_entity_idEQ?: InputMaybe; - bank_entity_idGT?: InputMaybe; - bank_entity_idGTE?: InputMaybe; - bank_entity_idIN?: InputMaybe>>; - bank_entity_idLIKE?: InputMaybe; - bank_entity_idLT?: InputMaybe; - bank_entity_idLTE?: InputMaybe; - bank_entity_idNEQ?: InputMaybe; - bank_entity_idNOTIN?: InputMaybe>>; - bank_entity_idNOTLIKE?: InputMaybe; - bank_owner_fees?: InputMaybe; - bank_owner_feesEQ?: InputMaybe; - bank_owner_feesGT?: InputMaybe; - bank_owner_feesGTE?: InputMaybe; - bank_owner_feesIN?: InputMaybe>>; - bank_owner_feesLIKE?: InputMaybe; - bank_owner_feesLT?: InputMaybe; - bank_owner_feesLTE?: InputMaybe; - bank_owner_feesNEQ?: InputMaybe; - bank_owner_feesNOTIN?: InputMaybe>>; - bank_owner_feesNOTLIKE?: InputMaybe; - buy?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - id?: InputMaybe; - idEQ?: InputMaybe; - idGT?: InputMaybe; - idGTE?: InputMaybe; - idIN?: InputMaybe>>; - idLIKE?: InputMaybe; - idLT?: InputMaybe; - idLTE?: InputMaybe; - idNEQ?: InputMaybe; - idNOTIN?: InputMaybe>>; - idNOTLIKE?: InputMaybe; - lords_amount?: InputMaybe; - lords_amountEQ?: InputMaybe; - lords_amountGT?: InputMaybe; - lords_amountGTE?: InputMaybe; - lords_amountIN?: InputMaybe>>; - lords_amountLIKE?: InputMaybe; - lords_amountLT?: InputMaybe; - lords_amountLTE?: InputMaybe; - lords_amountNEQ?: InputMaybe; - lords_amountNOTIN?: InputMaybe>>; - lords_amountNOTLIKE?: InputMaybe; - lp_fees?: InputMaybe; - lp_feesEQ?: InputMaybe; - lp_feesGT?: InputMaybe; - lp_feesGTE?: InputMaybe; - lp_feesIN?: InputMaybe>>; - lp_feesLIKE?: InputMaybe; - lp_feesLT?: InputMaybe; - lp_feesLTE?: InputMaybe; - lp_feesNEQ?: InputMaybe; - lp_feesNOTIN?: InputMaybe>>; - lp_feesNOTLIKE?: InputMaybe; - resource_amount?: InputMaybe; - resource_amountEQ?: InputMaybe; - resource_amountGT?: InputMaybe; - resource_amountGTE?: InputMaybe; - resource_amountIN?: InputMaybe>>; - resource_amountLIKE?: InputMaybe; - resource_amountLT?: InputMaybe; - resource_amountLTE?: InputMaybe; - resource_amountNEQ?: InputMaybe; - resource_amountNOTIN?: InputMaybe>>; - resource_amountNOTLIKE?: InputMaybe; - resource_price?: InputMaybe; - resource_priceEQ?: InputMaybe; - resource_priceGT?: InputMaybe; - resource_priceGTE?: InputMaybe; - resource_priceIN?: InputMaybe>>; - resource_priceLIKE?: InputMaybe; - resource_priceLT?: InputMaybe; - resource_priceLTE?: InputMaybe; - resource_priceNEQ?: InputMaybe; - resource_priceNOTIN?: InputMaybe>>; - resource_priceNOTLIKE?: InputMaybe; - resource_type?: InputMaybe; - resource_typeEQ?: InputMaybe; - resource_typeGT?: InputMaybe; - resource_typeGTE?: InputMaybe; - resource_typeIN?: InputMaybe>>; - resource_typeLIKE?: InputMaybe; - resource_typeLT?: InputMaybe; - resource_typeLTE?: InputMaybe; - resource_typeNEQ?: InputMaybe; - resource_typeNOTIN?: InputMaybe>>; - resource_typeNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_TickConfigOrder = { +export type s1_eternum_StructureOrder = { direction: OrderDirection; - field: S0_Eternum_TickConfigOrderField; -}; - -export enum S0_Eternum_TickConfigOrderField { - ConfigId = 'CONFIG_ID', - TickId = 'TICK_ID', - TickIntervalInSeconds = 'TICK_INTERVAL_IN_SECONDS' -} - -export type S0_Eternum_TickConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - tick_id?: InputMaybe; - tick_idEQ?: InputMaybe; - tick_idGT?: InputMaybe; - tick_idGTE?: InputMaybe; - tick_idIN?: InputMaybe>>; - tick_idLIKE?: InputMaybe; - tick_idLT?: InputMaybe; - tick_idLTE?: InputMaybe; - tick_idNEQ?: InputMaybe; - tick_idNOTIN?: InputMaybe>>; - tick_idNOTLIKE?: InputMaybe; - tick_interval_in_seconds?: InputMaybe; - tick_interval_in_secondsEQ?: InputMaybe; - tick_interval_in_secondsGT?: InputMaybe; - tick_interval_in_secondsGTE?: InputMaybe; - tick_interval_in_secondsIN?: InputMaybe>>; - tick_interval_in_secondsLIKE?: InputMaybe; - tick_interval_in_secondsLT?: InputMaybe; - tick_interval_in_secondsLTE?: InputMaybe; - tick_interval_in_secondsNEQ?: InputMaybe; - tick_interval_in_secondsNOTIN?: InputMaybe>>; - tick_interval_in_secondsNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_TileOrder = { + field: s1_eternum_StructureOrderField; +}; + +export enum s1_eternum_StructureOrderField { + Category = "CATEGORY", + CreatedAt = "CREATED_AT", + EntityId = "ENTITY_ID", +} + +export type s1_eternum_StructureWhereInput = { + category?: InputMaybe; + created_at?: InputMaybe; + created_atEQ?: InputMaybe; + created_atGT?: InputMaybe; + created_atGTE?: InputMaybe; + created_atIN?: InputMaybe>>; + created_atLIKE?: InputMaybe; + created_atLT?: InputMaybe; + created_atLTE?: InputMaybe; + created_atNEQ?: InputMaybe; + created_atNOTIN?: InputMaybe>>; + created_atNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_SwapEventOrder = { direction: OrderDirection; - field: S0_Eternum_TileOrderField; -}; - -export enum S0_Eternum_TileOrderField { - Biome = 'BIOME', - Col = 'COL', - ExploredAt = 'EXPLORED_AT', - ExploredById = 'EXPLORED_BY_ID', - Row = 'ROW' -} - -export type S0_Eternum_TileWhereInput = { - biome?: InputMaybe; - col?: InputMaybe; - colEQ?: InputMaybe; - colGT?: InputMaybe; - colGTE?: InputMaybe; - colIN?: InputMaybe>>; - colLIKE?: InputMaybe; - colLT?: InputMaybe; - colLTE?: InputMaybe; - colNEQ?: InputMaybe; - colNOTIN?: InputMaybe>>; - colNOTLIKE?: InputMaybe; - explored_at?: InputMaybe; - explored_atEQ?: InputMaybe; - explored_atGT?: InputMaybe; - explored_atGTE?: InputMaybe; - explored_atIN?: InputMaybe>>; - explored_atLIKE?: InputMaybe; - explored_atLT?: InputMaybe; - explored_atLTE?: InputMaybe; - explored_atNEQ?: InputMaybe; - explored_atNOTIN?: InputMaybe>>; - explored_atNOTLIKE?: InputMaybe; - explored_by_id?: InputMaybe; - explored_by_idEQ?: InputMaybe; - explored_by_idGT?: InputMaybe; - explored_by_idGTE?: InputMaybe; - explored_by_idIN?: InputMaybe>>; - explored_by_idLIKE?: InputMaybe; - explored_by_idLT?: InputMaybe; - explored_by_idLTE?: InputMaybe; - explored_by_idNEQ?: InputMaybe; - explored_by_idNOTIN?: InputMaybe>>; - explored_by_idNOTLIKE?: InputMaybe; - row?: InputMaybe; - rowEQ?: InputMaybe; - rowGT?: InputMaybe; - rowGTE?: InputMaybe; - rowIN?: InputMaybe>>; - rowLIKE?: InputMaybe; - rowLT?: InputMaybe; - rowLTE?: InputMaybe; - rowNEQ?: InputMaybe; - rowNOTIN?: InputMaybe>>; - rowNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_TradeOrder = { + field: s1_eternum_SwapEventOrderField; +}; + +export enum s1_eternum_SwapEventOrderField { + BankEntityId = "BANK_ENTITY_ID", + BankOwnerFees = "BANK_OWNER_FEES", + Buy = "BUY", + EntityId = "ENTITY_ID", + Id = "ID", + LordsAmount = "LORDS_AMOUNT", + LpFees = "LP_FEES", + ResourceAmount = "RESOURCE_AMOUNT", + ResourcePrice = "RESOURCE_PRICE", + ResourceType = "RESOURCE_TYPE", + Timestamp = "TIMESTAMP", +} + +export type s1_eternum_SwapEventWhereInput = { + bank_entity_id?: InputMaybe; + bank_entity_idEQ?: InputMaybe; + bank_entity_idGT?: InputMaybe; + bank_entity_idGTE?: InputMaybe; + bank_entity_idIN?: InputMaybe>>; + bank_entity_idLIKE?: InputMaybe; + bank_entity_idLT?: InputMaybe; + bank_entity_idLTE?: InputMaybe; + bank_entity_idNEQ?: InputMaybe; + bank_entity_idNOTIN?: InputMaybe>>; + bank_entity_idNOTLIKE?: InputMaybe; + bank_owner_fees?: InputMaybe; + bank_owner_feesEQ?: InputMaybe; + bank_owner_feesGT?: InputMaybe; + bank_owner_feesGTE?: InputMaybe; + bank_owner_feesIN?: InputMaybe>>; + bank_owner_feesLIKE?: InputMaybe; + bank_owner_feesLT?: InputMaybe; + bank_owner_feesLTE?: InputMaybe; + bank_owner_feesNEQ?: InputMaybe; + bank_owner_feesNOTIN?: InputMaybe>>; + bank_owner_feesNOTLIKE?: InputMaybe; + buy?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + id?: InputMaybe; + idEQ?: InputMaybe; + idGT?: InputMaybe; + idGTE?: InputMaybe; + idIN?: InputMaybe>>; + idLIKE?: InputMaybe; + idLT?: InputMaybe; + idLTE?: InputMaybe; + idNEQ?: InputMaybe; + idNOTIN?: InputMaybe>>; + idNOTLIKE?: InputMaybe; + lords_amount?: InputMaybe; + lords_amountEQ?: InputMaybe; + lords_amountGT?: InputMaybe; + lords_amountGTE?: InputMaybe; + lords_amountIN?: InputMaybe>>; + lords_amountLIKE?: InputMaybe; + lords_amountLT?: InputMaybe; + lords_amountLTE?: InputMaybe; + lords_amountNEQ?: InputMaybe; + lords_amountNOTIN?: InputMaybe>>; + lords_amountNOTLIKE?: InputMaybe; + lp_fees?: InputMaybe; + lp_feesEQ?: InputMaybe; + lp_feesGT?: InputMaybe; + lp_feesGTE?: InputMaybe; + lp_feesIN?: InputMaybe>>; + lp_feesLIKE?: InputMaybe; + lp_feesLT?: InputMaybe; + lp_feesLTE?: InputMaybe; + lp_feesNEQ?: InputMaybe; + lp_feesNOTIN?: InputMaybe>>; + lp_feesNOTLIKE?: InputMaybe; + resource_amount?: InputMaybe; + resource_amountEQ?: InputMaybe; + resource_amountGT?: InputMaybe; + resource_amountGTE?: InputMaybe; + resource_amountIN?: InputMaybe>>; + resource_amountLIKE?: InputMaybe; + resource_amountLT?: InputMaybe; + resource_amountLTE?: InputMaybe; + resource_amountNEQ?: InputMaybe; + resource_amountNOTIN?: InputMaybe>>; + resource_amountNOTLIKE?: InputMaybe; + resource_price?: InputMaybe; + resource_priceEQ?: InputMaybe; + resource_priceGT?: InputMaybe; + resource_priceGTE?: InputMaybe; + resource_priceIN?: InputMaybe>>; + resource_priceLIKE?: InputMaybe; + resource_priceLT?: InputMaybe; + resource_priceLTE?: InputMaybe; + resource_priceNEQ?: InputMaybe; + resource_priceNOTIN?: InputMaybe>>; + resource_priceNOTLIKE?: InputMaybe; + resource_type?: InputMaybe; + resource_typeEQ?: InputMaybe; + resource_typeGT?: InputMaybe; + resource_typeGTE?: InputMaybe; + resource_typeIN?: InputMaybe>>; + resource_typeLIKE?: InputMaybe; + resource_typeLT?: InputMaybe; + resource_typeLTE?: InputMaybe; + resource_typeNEQ?: InputMaybe; + resource_typeNOTIN?: InputMaybe>>; + resource_typeNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_TickConfigOrder = { direction: OrderDirection; - field: S0_Eternum_TradeOrderField; -}; - -export enum S0_Eternum_TradeOrderField { - ExpiresAt = 'EXPIRES_AT', - MakerGivesResourcesHash = 'MAKER_GIVES_RESOURCES_HASH', - MakerGivesResourcesId = 'MAKER_GIVES_RESOURCES_ID', - MakerGivesResourcesOriginId = 'MAKER_GIVES_RESOURCES_ORIGIN_ID', - MakerGivesResourcesWeight = 'MAKER_GIVES_RESOURCES_WEIGHT', - MakerId = 'MAKER_ID', - TakerGivesResourcesHash = 'TAKER_GIVES_RESOURCES_HASH', - TakerGivesResourcesId = 'TAKER_GIVES_RESOURCES_ID', - TakerGivesResourcesOriginId = 'TAKER_GIVES_RESOURCES_ORIGIN_ID', - TakerGivesResourcesWeight = 'TAKER_GIVES_RESOURCES_WEIGHT', - TakerId = 'TAKER_ID', - TradeId = 'TRADE_ID' -} - -export type S0_Eternum_TradeWhereInput = { - expires_at?: InputMaybe; - expires_atEQ?: InputMaybe; - expires_atGT?: InputMaybe; - expires_atGTE?: InputMaybe; - expires_atIN?: InputMaybe>>; - expires_atLIKE?: InputMaybe; - expires_atLT?: InputMaybe; - expires_atLTE?: InputMaybe; - expires_atNEQ?: InputMaybe; - expires_atNOTIN?: InputMaybe>>; - expires_atNOTLIKE?: InputMaybe; - maker_gives_resources_hash?: InputMaybe; - maker_gives_resources_hashEQ?: InputMaybe; - maker_gives_resources_hashGT?: InputMaybe; - maker_gives_resources_hashGTE?: InputMaybe; - maker_gives_resources_hashIN?: InputMaybe>>; - maker_gives_resources_hashLIKE?: InputMaybe; - maker_gives_resources_hashLT?: InputMaybe; - maker_gives_resources_hashLTE?: InputMaybe; - maker_gives_resources_hashNEQ?: InputMaybe; - maker_gives_resources_hashNOTIN?: InputMaybe>>; - maker_gives_resources_hashNOTLIKE?: InputMaybe; - maker_gives_resources_id?: InputMaybe; - maker_gives_resources_idEQ?: InputMaybe; - maker_gives_resources_idGT?: InputMaybe; - maker_gives_resources_idGTE?: InputMaybe; - maker_gives_resources_idIN?: InputMaybe>>; - maker_gives_resources_idLIKE?: InputMaybe; - maker_gives_resources_idLT?: InputMaybe; - maker_gives_resources_idLTE?: InputMaybe; - maker_gives_resources_idNEQ?: InputMaybe; - maker_gives_resources_idNOTIN?: InputMaybe>>; - maker_gives_resources_idNOTLIKE?: InputMaybe; - maker_gives_resources_origin_id?: InputMaybe; - maker_gives_resources_origin_idEQ?: InputMaybe; - maker_gives_resources_origin_idGT?: InputMaybe; - maker_gives_resources_origin_idGTE?: InputMaybe; - maker_gives_resources_origin_idIN?: InputMaybe>>; - maker_gives_resources_origin_idLIKE?: InputMaybe; - maker_gives_resources_origin_idLT?: InputMaybe; - maker_gives_resources_origin_idLTE?: InputMaybe; - maker_gives_resources_origin_idNEQ?: InputMaybe; - maker_gives_resources_origin_idNOTIN?: InputMaybe>>; - maker_gives_resources_origin_idNOTLIKE?: InputMaybe; - maker_gives_resources_weight?: InputMaybe; - maker_gives_resources_weightEQ?: InputMaybe; - maker_gives_resources_weightGT?: InputMaybe; - maker_gives_resources_weightGTE?: InputMaybe; - maker_gives_resources_weightIN?: InputMaybe>>; - maker_gives_resources_weightLIKE?: InputMaybe; - maker_gives_resources_weightLT?: InputMaybe; - maker_gives_resources_weightLTE?: InputMaybe; - maker_gives_resources_weightNEQ?: InputMaybe; - maker_gives_resources_weightNOTIN?: InputMaybe>>; - maker_gives_resources_weightNOTLIKE?: InputMaybe; - maker_id?: InputMaybe; - maker_idEQ?: InputMaybe; - maker_idGT?: InputMaybe; - maker_idGTE?: InputMaybe; - maker_idIN?: InputMaybe>>; - maker_idLIKE?: InputMaybe; - maker_idLT?: InputMaybe; - maker_idLTE?: InputMaybe; - maker_idNEQ?: InputMaybe; - maker_idNOTIN?: InputMaybe>>; - maker_idNOTLIKE?: InputMaybe; - taker_gives_resources_hash?: InputMaybe; - taker_gives_resources_hashEQ?: InputMaybe; - taker_gives_resources_hashGT?: InputMaybe; - taker_gives_resources_hashGTE?: InputMaybe; - taker_gives_resources_hashIN?: InputMaybe>>; - taker_gives_resources_hashLIKE?: InputMaybe; - taker_gives_resources_hashLT?: InputMaybe; - taker_gives_resources_hashLTE?: InputMaybe; - taker_gives_resources_hashNEQ?: InputMaybe; - taker_gives_resources_hashNOTIN?: InputMaybe>>; - taker_gives_resources_hashNOTLIKE?: InputMaybe; - taker_gives_resources_id?: InputMaybe; - taker_gives_resources_idEQ?: InputMaybe; - taker_gives_resources_idGT?: InputMaybe; - taker_gives_resources_idGTE?: InputMaybe; - taker_gives_resources_idIN?: InputMaybe>>; - taker_gives_resources_idLIKE?: InputMaybe; - taker_gives_resources_idLT?: InputMaybe; - taker_gives_resources_idLTE?: InputMaybe; - taker_gives_resources_idNEQ?: InputMaybe; - taker_gives_resources_idNOTIN?: InputMaybe>>; - taker_gives_resources_idNOTLIKE?: InputMaybe; - taker_gives_resources_origin_id?: InputMaybe; - taker_gives_resources_origin_idEQ?: InputMaybe; - taker_gives_resources_origin_idGT?: InputMaybe; - taker_gives_resources_origin_idGTE?: InputMaybe; - taker_gives_resources_origin_idIN?: InputMaybe>>; - taker_gives_resources_origin_idLIKE?: InputMaybe; - taker_gives_resources_origin_idLT?: InputMaybe; - taker_gives_resources_origin_idLTE?: InputMaybe; - taker_gives_resources_origin_idNEQ?: InputMaybe; - taker_gives_resources_origin_idNOTIN?: InputMaybe>>; - taker_gives_resources_origin_idNOTLIKE?: InputMaybe; - taker_gives_resources_weight?: InputMaybe; - taker_gives_resources_weightEQ?: InputMaybe; - taker_gives_resources_weightGT?: InputMaybe; - taker_gives_resources_weightGTE?: InputMaybe; - taker_gives_resources_weightIN?: InputMaybe>>; - taker_gives_resources_weightLIKE?: InputMaybe; - taker_gives_resources_weightLT?: InputMaybe; - taker_gives_resources_weightLTE?: InputMaybe; - taker_gives_resources_weightNEQ?: InputMaybe; - taker_gives_resources_weightNOTIN?: InputMaybe>>; - taker_gives_resources_weightNOTLIKE?: InputMaybe; - taker_id?: InputMaybe; - taker_idEQ?: InputMaybe; - taker_idGT?: InputMaybe; - taker_idGTE?: InputMaybe; - taker_idIN?: InputMaybe>>; - taker_idLIKE?: InputMaybe; - taker_idLT?: InputMaybe; - taker_idLTE?: InputMaybe; - taker_idNEQ?: InputMaybe; - taker_idNOTIN?: InputMaybe>>; - taker_idNOTLIKE?: InputMaybe; - trade_id?: InputMaybe; - trade_idEQ?: InputMaybe; - trade_idGT?: InputMaybe; - trade_idGTE?: InputMaybe; - trade_idIN?: InputMaybe>>; - trade_idLIKE?: InputMaybe; - trade_idLT?: InputMaybe; - trade_idLTE?: InputMaybe; - trade_idNEQ?: InputMaybe; - trade_idNOTIN?: InputMaybe>>; - trade_idNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_TransferOrder = { + field: s1_eternum_TickConfigOrderField; +}; + +export enum s1_eternum_TickConfigOrderField { + ConfigId = "CONFIG_ID", + TickId = "TICK_ID", + TickIntervalInSeconds = "TICK_INTERVAL_IN_SECONDS", +} + +export type s1_eternum_TickConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + tick_id?: InputMaybe; + tick_idEQ?: InputMaybe; + tick_idGT?: InputMaybe; + tick_idGTE?: InputMaybe; + tick_idIN?: InputMaybe>>; + tick_idLIKE?: InputMaybe; + tick_idLT?: InputMaybe; + tick_idLTE?: InputMaybe; + tick_idNEQ?: InputMaybe; + tick_idNOTIN?: InputMaybe>>; + tick_idNOTLIKE?: InputMaybe; + tick_interval_in_seconds?: InputMaybe; + tick_interval_in_secondsEQ?: InputMaybe; + tick_interval_in_secondsGT?: InputMaybe; + tick_interval_in_secondsGTE?: InputMaybe; + tick_interval_in_secondsIN?: InputMaybe>>; + tick_interval_in_secondsLIKE?: InputMaybe; + tick_interval_in_secondsLT?: InputMaybe; + tick_interval_in_secondsLTE?: InputMaybe; + tick_interval_in_secondsNEQ?: InputMaybe; + tick_interval_in_secondsNOTIN?: InputMaybe>>; + tick_interval_in_secondsNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_TileOrder = { direction: OrderDirection; - field: S0_Eternum_TransferOrderField; -}; - -export enum S0_Eternum_TransferOrderField { - RecipientEntityId = 'RECIPIENT_ENTITY_ID', - Resources = 'RESOURCES', - SenderEntityId = 'SENDER_ENTITY_ID', - SendingRealmId = 'SENDING_REALM_ID', - Timestamp = 'TIMESTAMP' -} - -export type S0_Eternum_TransferWhereInput = { - recipient_entity_id?: InputMaybe; - recipient_entity_idEQ?: InputMaybe; - recipient_entity_idGT?: InputMaybe; - recipient_entity_idGTE?: InputMaybe; - recipient_entity_idIN?: InputMaybe>>; - recipient_entity_idLIKE?: InputMaybe; - recipient_entity_idLT?: InputMaybe; - recipient_entity_idLTE?: InputMaybe; - recipient_entity_idNEQ?: InputMaybe; - recipient_entity_idNOTIN?: InputMaybe>>; - recipient_entity_idNOTLIKE?: InputMaybe; - sender_entity_id?: InputMaybe; - sender_entity_idEQ?: InputMaybe; - sender_entity_idGT?: InputMaybe; - sender_entity_idGTE?: InputMaybe; - sender_entity_idIN?: InputMaybe>>; - sender_entity_idLIKE?: InputMaybe; - sender_entity_idLT?: InputMaybe; - sender_entity_idLTE?: InputMaybe; - sender_entity_idNEQ?: InputMaybe; - sender_entity_idNOTIN?: InputMaybe>>; - sender_entity_idNOTLIKE?: InputMaybe; - sending_realm_id?: InputMaybe; - sending_realm_idEQ?: InputMaybe; - sending_realm_idGT?: InputMaybe; - sending_realm_idGTE?: InputMaybe; - sending_realm_idIN?: InputMaybe>>; - sending_realm_idLIKE?: InputMaybe; - sending_realm_idLT?: InputMaybe; - sending_realm_idLTE?: InputMaybe; - sending_realm_idNEQ?: InputMaybe; - sending_realm_idNOTIN?: InputMaybe>>; - sending_realm_idNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_TravelFoodCostConfigOrder = { + field: s1_eternum_TileOrderField; +}; + +export enum s1_eternum_TileOrderField { + Biome = "BIOME", + Col = "COL", + ExploredAt = "EXPLORED_AT", + ExploredById = "EXPLORED_BY_ID", + Row = "ROW", +} + +export type s1_eternum_TileWhereInput = { + biome?: InputMaybe; + col?: InputMaybe; + colEQ?: InputMaybe; + colGT?: InputMaybe; + colGTE?: InputMaybe; + colIN?: InputMaybe>>; + colLIKE?: InputMaybe; + colLT?: InputMaybe; + colLTE?: InputMaybe; + colNEQ?: InputMaybe; + colNOTIN?: InputMaybe>>; + colNOTLIKE?: InputMaybe; + explored_at?: InputMaybe; + explored_atEQ?: InputMaybe; + explored_atGT?: InputMaybe; + explored_atGTE?: InputMaybe; + explored_atIN?: InputMaybe>>; + explored_atLIKE?: InputMaybe; + explored_atLT?: InputMaybe; + explored_atLTE?: InputMaybe; + explored_atNEQ?: InputMaybe; + explored_atNOTIN?: InputMaybe>>; + explored_atNOTLIKE?: InputMaybe; + explored_by_id?: InputMaybe; + explored_by_idEQ?: InputMaybe; + explored_by_idGT?: InputMaybe; + explored_by_idGTE?: InputMaybe; + explored_by_idIN?: InputMaybe>>; + explored_by_idLIKE?: InputMaybe; + explored_by_idLT?: InputMaybe; + explored_by_idLTE?: InputMaybe; + explored_by_idNEQ?: InputMaybe; + explored_by_idNOTIN?: InputMaybe>>; + explored_by_idNOTLIKE?: InputMaybe; + row?: InputMaybe; + rowEQ?: InputMaybe; + rowGT?: InputMaybe; + rowGTE?: InputMaybe; + rowIN?: InputMaybe>>; + rowLIKE?: InputMaybe; + rowLT?: InputMaybe; + rowLTE?: InputMaybe; + rowNEQ?: InputMaybe; + rowNOTIN?: InputMaybe>>; + rowNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_TradeOrder = { direction: OrderDirection; - field: S0_Eternum_TravelFoodCostConfigOrderField; -}; - -export enum S0_Eternum_TravelFoodCostConfigOrderField { - ConfigId = 'CONFIG_ID', - ExploreFishBurnAmount = 'EXPLORE_FISH_BURN_AMOUNT', - ExploreWheatBurnAmount = 'EXPLORE_WHEAT_BURN_AMOUNT', - TravelFishBurnAmount = 'TRAVEL_FISH_BURN_AMOUNT', - TravelWheatBurnAmount = 'TRAVEL_WHEAT_BURN_AMOUNT', - UnitType = 'UNIT_TYPE' -} - -export type S0_Eternum_TravelFoodCostConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - explore_fish_burn_amount?: InputMaybe; - explore_fish_burn_amountEQ?: InputMaybe; - explore_fish_burn_amountGT?: InputMaybe; - explore_fish_burn_amountGTE?: InputMaybe; - explore_fish_burn_amountIN?: InputMaybe>>; - explore_fish_burn_amountLIKE?: InputMaybe; - explore_fish_burn_amountLT?: InputMaybe; - explore_fish_burn_amountLTE?: InputMaybe; - explore_fish_burn_amountNEQ?: InputMaybe; - explore_fish_burn_amountNOTIN?: InputMaybe>>; - explore_fish_burn_amountNOTLIKE?: InputMaybe; - explore_wheat_burn_amount?: InputMaybe; - explore_wheat_burn_amountEQ?: InputMaybe; - explore_wheat_burn_amountGT?: InputMaybe; - explore_wheat_burn_amountGTE?: InputMaybe; - explore_wheat_burn_amountIN?: InputMaybe>>; - explore_wheat_burn_amountLIKE?: InputMaybe; - explore_wheat_burn_amountLT?: InputMaybe; - explore_wheat_burn_amountLTE?: InputMaybe; - explore_wheat_burn_amountNEQ?: InputMaybe; - explore_wheat_burn_amountNOTIN?: InputMaybe>>; - explore_wheat_burn_amountNOTLIKE?: InputMaybe; - travel_fish_burn_amount?: InputMaybe; - travel_fish_burn_amountEQ?: InputMaybe; - travel_fish_burn_amountGT?: InputMaybe; - travel_fish_burn_amountGTE?: InputMaybe; - travel_fish_burn_amountIN?: InputMaybe>>; - travel_fish_burn_amountLIKE?: InputMaybe; - travel_fish_burn_amountLT?: InputMaybe; - travel_fish_burn_amountLTE?: InputMaybe; - travel_fish_burn_amountNEQ?: InputMaybe; - travel_fish_burn_amountNOTIN?: InputMaybe>>; - travel_fish_burn_amountNOTLIKE?: InputMaybe; - travel_wheat_burn_amount?: InputMaybe; - travel_wheat_burn_amountEQ?: InputMaybe; - travel_wheat_burn_amountGT?: InputMaybe; - travel_wheat_burn_amountGTE?: InputMaybe; - travel_wheat_burn_amountIN?: InputMaybe>>; - travel_wheat_burn_amountLIKE?: InputMaybe; - travel_wheat_burn_amountLT?: InputMaybe; - travel_wheat_burn_amountLTE?: InputMaybe; - travel_wheat_burn_amountNEQ?: InputMaybe; - travel_wheat_burn_amountNOTIN?: InputMaybe>>; - travel_wheat_burn_amountNOTLIKE?: InputMaybe; - unit_type?: InputMaybe; - unit_typeEQ?: InputMaybe; - unit_typeGT?: InputMaybe; - unit_typeGTE?: InputMaybe; - unit_typeIN?: InputMaybe>>; - unit_typeLIKE?: InputMaybe; - unit_typeLT?: InputMaybe; - unit_typeLTE?: InputMaybe; - unit_typeNEQ?: InputMaybe; - unit_typeNOTIN?: InputMaybe>>; - unit_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_TravelOrder = { + field: s1_eternum_TradeOrderField; +}; + +export enum s1_eternum_TradeOrderField { + ExpiresAt = "EXPIRES_AT", + MakerGivesResourcesHash = "MAKER_GIVES_RESOURCES_HASH", + MakerGivesResourcesId = "MAKER_GIVES_RESOURCES_ID", + MakerGivesResourcesOriginId = "MAKER_GIVES_RESOURCES_ORIGIN_ID", + MakerGivesResourcesWeight = "MAKER_GIVES_RESOURCES_WEIGHT", + MakerId = "MAKER_ID", + TakerGivesResourcesHash = "TAKER_GIVES_RESOURCES_HASH", + TakerGivesResourcesId = "TAKER_GIVES_RESOURCES_ID", + TakerGivesResourcesOriginId = "TAKER_GIVES_RESOURCES_ORIGIN_ID", + TakerGivesResourcesWeight = "TAKER_GIVES_RESOURCES_WEIGHT", + TakerId = "TAKER_ID", + TradeId = "TRADE_ID", +} + +export type s1_eternum_TradeWhereInput = { + expires_at?: InputMaybe; + expires_atEQ?: InputMaybe; + expires_atGT?: InputMaybe; + expires_atGTE?: InputMaybe; + expires_atIN?: InputMaybe>>; + expires_atLIKE?: InputMaybe; + expires_atLT?: InputMaybe; + expires_atLTE?: InputMaybe; + expires_atNEQ?: InputMaybe; + expires_atNOTIN?: InputMaybe>>; + expires_atNOTLIKE?: InputMaybe; + maker_gives_resources_hash?: InputMaybe; + maker_gives_resources_hashEQ?: InputMaybe; + maker_gives_resources_hashGT?: InputMaybe; + maker_gives_resources_hashGTE?: InputMaybe; + maker_gives_resources_hashIN?: InputMaybe>>; + maker_gives_resources_hashLIKE?: InputMaybe; + maker_gives_resources_hashLT?: InputMaybe; + maker_gives_resources_hashLTE?: InputMaybe; + maker_gives_resources_hashNEQ?: InputMaybe; + maker_gives_resources_hashNOTIN?: InputMaybe>>; + maker_gives_resources_hashNOTLIKE?: InputMaybe; + maker_gives_resources_id?: InputMaybe; + maker_gives_resources_idEQ?: InputMaybe; + maker_gives_resources_idGT?: InputMaybe; + maker_gives_resources_idGTE?: InputMaybe; + maker_gives_resources_idIN?: InputMaybe>>; + maker_gives_resources_idLIKE?: InputMaybe; + maker_gives_resources_idLT?: InputMaybe; + maker_gives_resources_idLTE?: InputMaybe; + maker_gives_resources_idNEQ?: InputMaybe; + maker_gives_resources_idNOTIN?: InputMaybe>>; + maker_gives_resources_idNOTLIKE?: InputMaybe; + maker_gives_resources_origin_id?: InputMaybe; + maker_gives_resources_origin_idEQ?: InputMaybe; + maker_gives_resources_origin_idGT?: InputMaybe; + maker_gives_resources_origin_idGTE?: InputMaybe; + maker_gives_resources_origin_idIN?: InputMaybe>>; + maker_gives_resources_origin_idLIKE?: InputMaybe; + maker_gives_resources_origin_idLT?: InputMaybe; + maker_gives_resources_origin_idLTE?: InputMaybe; + maker_gives_resources_origin_idNEQ?: InputMaybe; + maker_gives_resources_origin_idNOTIN?: InputMaybe>>; + maker_gives_resources_origin_idNOTLIKE?: InputMaybe; + maker_gives_resources_weight?: InputMaybe; + maker_gives_resources_weightEQ?: InputMaybe; + maker_gives_resources_weightGT?: InputMaybe; + maker_gives_resources_weightGTE?: InputMaybe; + maker_gives_resources_weightIN?: InputMaybe>>; + maker_gives_resources_weightLIKE?: InputMaybe; + maker_gives_resources_weightLT?: InputMaybe; + maker_gives_resources_weightLTE?: InputMaybe; + maker_gives_resources_weightNEQ?: InputMaybe; + maker_gives_resources_weightNOTIN?: InputMaybe>>; + maker_gives_resources_weightNOTLIKE?: InputMaybe; + maker_id?: InputMaybe; + maker_idEQ?: InputMaybe; + maker_idGT?: InputMaybe; + maker_idGTE?: InputMaybe; + maker_idIN?: InputMaybe>>; + maker_idLIKE?: InputMaybe; + maker_idLT?: InputMaybe; + maker_idLTE?: InputMaybe; + maker_idNEQ?: InputMaybe; + maker_idNOTIN?: InputMaybe>>; + maker_idNOTLIKE?: InputMaybe; + taker_gives_resources_hash?: InputMaybe; + taker_gives_resources_hashEQ?: InputMaybe; + taker_gives_resources_hashGT?: InputMaybe; + taker_gives_resources_hashGTE?: InputMaybe; + taker_gives_resources_hashIN?: InputMaybe>>; + taker_gives_resources_hashLIKE?: InputMaybe; + taker_gives_resources_hashLT?: InputMaybe; + taker_gives_resources_hashLTE?: InputMaybe; + taker_gives_resources_hashNEQ?: InputMaybe; + taker_gives_resources_hashNOTIN?: InputMaybe>>; + taker_gives_resources_hashNOTLIKE?: InputMaybe; + taker_gives_resources_id?: InputMaybe; + taker_gives_resources_idEQ?: InputMaybe; + taker_gives_resources_idGT?: InputMaybe; + taker_gives_resources_idGTE?: InputMaybe; + taker_gives_resources_idIN?: InputMaybe>>; + taker_gives_resources_idLIKE?: InputMaybe; + taker_gives_resources_idLT?: InputMaybe; + taker_gives_resources_idLTE?: InputMaybe; + taker_gives_resources_idNEQ?: InputMaybe; + taker_gives_resources_idNOTIN?: InputMaybe>>; + taker_gives_resources_idNOTLIKE?: InputMaybe; + taker_gives_resources_origin_id?: InputMaybe; + taker_gives_resources_origin_idEQ?: InputMaybe; + taker_gives_resources_origin_idGT?: InputMaybe; + taker_gives_resources_origin_idGTE?: InputMaybe; + taker_gives_resources_origin_idIN?: InputMaybe>>; + taker_gives_resources_origin_idLIKE?: InputMaybe; + taker_gives_resources_origin_idLT?: InputMaybe; + taker_gives_resources_origin_idLTE?: InputMaybe; + taker_gives_resources_origin_idNEQ?: InputMaybe; + taker_gives_resources_origin_idNOTIN?: InputMaybe>>; + taker_gives_resources_origin_idNOTLIKE?: InputMaybe; + taker_gives_resources_weight?: InputMaybe; + taker_gives_resources_weightEQ?: InputMaybe; + taker_gives_resources_weightGT?: InputMaybe; + taker_gives_resources_weightGTE?: InputMaybe; + taker_gives_resources_weightIN?: InputMaybe>>; + taker_gives_resources_weightLIKE?: InputMaybe; + taker_gives_resources_weightLT?: InputMaybe; + taker_gives_resources_weightLTE?: InputMaybe; + taker_gives_resources_weightNEQ?: InputMaybe; + taker_gives_resources_weightNOTIN?: InputMaybe>>; + taker_gives_resources_weightNOTLIKE?: InputMaybe; + taker_id?: InputMaybe; + taker_idEQ?: InputMaybe; + taker_idGT?: InputMaybe; + taker_idGTE?: InputMaybe; + taker_idIN?: InputMaybe>>; + taker_idLIKE?: InputMaybe; + taker_idLT?: InputMaybe; + taker_idLTE?: InputMaybe; + taker_idNEQ?: InputMaybe; + taker_idNOTIN?: InputMaybe>>; + taker_idNOTLIKE?: InputMaybe; + trade_id?: InputMaybe; + trade_idEQ?: InputMaybe; + trade_idGT?: InputMaybe; + trade_idGTE?: InputMaybe; + trade_idIN?: InputMaybe>>; + trade_idLIKE?: InputMaybe; + trade_idLT?: InputMaybe; + trade_idLTE?: InputMaybe; + trade_idNEQ?: InputMaybe; + trade_idNOTIN?: InputMaybe>>; + trade_idNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_TransferOrder = { direction: OrderDirection; - field: S0_Eternum_TravelOrderField; + field: s1_eternum_TransferOrderField; +}; + +export enum s1_eternum_TransferOrderField { + RecipientEntityId = "RECIPIENT_ENTITY_ID", + Resources = "RESOURCES", + SenderEntityId = "SENDER_ENTITY_ID", + SendingRealmId = "SENDING_REALM_ID", + Timestamp = "TIMESTAMP", +} + +export type s1_eternum_TransferWhereInput = { + recipient_entity_id?: InputMaybe; + recipient_entity_idEQ?: InputMaybe; + recipient_entity_idGT?: InputMaybe; + recipient_entity_idGTE?: InputMaybe; + recipient_entity_idIN?: InputMaybe>>; + recipient_entity_idLIKE?: InputMaybe; + recipient_entity_idLT?: InputMaybe; + recipient_entity_idLTE?: InputMaybe; + recipient_entity_idNEQ?: InputMaybe; + recipient_entity_idNOTIN?: InputMaybe>>; + recipient_entity_idNOTLIKE?: InputMaybe; + sender_entity_id?: InputMaybe; + sender_entity_idEQ?: InputMaybe; + sender_entity_idGT?: InputMaybe; + sender_entity_idGTE?: InputMaybe; + sender_entity_idIN?: InputMaybe>>; + sender_entity_idLIKE?: InputMaybe; + sender_entity_idLT?: InputMaybe; + sender_entity_idLTE?: InputMaybe; + sender_entity_idNEQ?: InputMaybe; + sender_entity_idNOTIN?: InputMaybe>>; + sender_entity_idNOTLIKE?: InputMaybe; + sending_realm_id?: InputMaybe; + sending_realm_idEQ?: InputMaybe; + sending_realm_idGT?: InputMaybe; + sending_realm_idGTE?: InputMaybe; + sending_realm_idIN?: InputMaybe>>; + sending_realm_idLIKE?: InputMaybe; + sending_realm_idLT?: InputMaybe; + sending_realm_idLTE?: InputMaybe; + sending_realm_idNEQ?: InputMaybe; + sending_realm_idNOTIN?: InputMaybe>>; + sending_realm_idNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_TravelFoodCostConfigOrder = { + direction: OrderDirection; + field: s1_eternum_TravelFoodCostConfigOrderField; +}; + +export enum s1_eternum_TravelFoodCostConfigOrderField { + ConfigId = "CONFIG_ID", + ExploreFishBurnAmount = "EXPLORE_FISH_BURN_AMOUNT", + ExploreWheatBurnAmount = "EXPLORE_WHEAT_BURN_AMOUNT", + TravelFishBurnAmount = "TRAVEL_FISH_BURN_AMOUNT", + TravelWheatBurnAmount = "TRAVEL_WHEAT_BURN_AMOUNT", + UnitType = "UNIT_TYPE", +} + +export type s1_eternum_TravelFoodCostConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + explore_fish_burn_amount?: InputMaybe; + explore_fish_burn_amountEQ?: InputMaybe; + explore_fish_burn_amountGT?: InputMaybe; + explore_fish_burn_amountGTE?: InputMaybe; + explore_fish_burn_amountIN?: InputMaybe>>; + explore_fish_burn_amountLIKE?: InputMaybe; + explore_fish_burn_amountLT?: InputMaybe; + explore_fish_burn_amountLTE?: InputMaybe; + explore_fish_burn_amountNEQ?: InputMaybe; + explore_fish_burn_amountNOTIN?: InputMaybe>>; + explore_fish_burn_amountNOTLIKE?: InputMaybe; + explore_wheat_burn_amount?: InputMaybe; + explore_wheat_burn_amountEQ?: InputMaybe; + explore_wheat_burn_amountGT?: InputMaybe; + explore_wheat_burn_amountGTE?: InputMaybe; + explore_wheat_burn_amountIN?: InputMaybe>>; + explore_wheat_burn_amountLIKE?: InputMaybe; + explore_wheat_burn_amountLT?: InputMaybe; + explore_wheat_burn_amountLTE?: InputMaybe; + explore_wheat_burn_amountNEQ?: InputMaybe; + explore_wheat_burn_amountNOTIN?: InputMaybe>>; + explore_wheat_burn_amountNOTLIKE?: InputMaybe; + travel_fish_burn_amount?: InputMaybe; + travel_fish_burn_amountEQ?: InputMaybe; + travel_fish_burn_amountGT?: InputMaybe; + travel_fish_burn_amountGTE?: InputMaybe; + travel_fish_burn_amountIN?: InputMaybe>>; + travel_fish_burn_amountLIKE?: InputMaybe; + travel_fish_burn_amountLT?: InputMaybe; + travel_fish_burn_amountLTE?: InputMaybe; + travel_fish_burn_amountNEQ?: InputMaybe; + travel_fish_burn_amountNOTIN?: InputMaybe>>; + travel_fish_burn_amountNOTLIKE?: InputMaybe; + travel_wheat_burn_amount?: InputMaybe; + travel_wheat_burn_amountEQ?: InputMaybe; + travel_wheat_burn_amountGT?: InputMaybe; + travel_wheat_burn_amountGTE?: InputMaybe; + travel_wheat_burn_amountIN?: InputMaybe>>; + travel_wheat_burn_amountLIKE?: InputMaybe; + travel_wheat_burn_amountLT?: InputMaybe; + travel_wheat_burn_amountLTE?: InputMaybe; + travel_wheat_burn_amountNEQ?: InputMaybe; + travel_wheat_burn_amountNOTIN?: InputMaybe>>; + travel_wheat_burn_amountNOTLIKE?: InputMaybe; + unit_type?: InputMaybe; + unit_typeEQ?: InputMaybe; + unit_typeGT?: InputMaybe; + unit_typeGTE?: InputMaybe; + unit_typeIN?: InputMaybe>>; + unit_typeLIKE?: InputMaybe; + unit_typeLT?: InputMaybe; + unit_typeLTE?: InputMaybe; + unit_typeNEQ?: InputMaybe; + unit_typeNOTIN?: InputMaybe>>; + unit_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_TravelOrder = { + direction: OrderDirection; + field: s1_eternum_TravelOrderField; }; -export enum S0_Eternum_TravelOrderField { - DestinationCoordX = 'DESTINATION_COORD_X', - DestinationCoordY = 'DESTINATION_COORD_Y', - EntityId = 'ENTITY_ID', - Owner = 'OWNER', - Timestamp = 'TIMESTAMP', - TravelPath = 'TRAVEL_PATH', - TravelTime = 'TRAVEL_TIME' +export enum s1_eternum_TravelOrderField { + DestinationCoordX = "DESTINATION_COORD_X", + DestinationCoordY = "DESTINATION_COORD_Y", + EntityId = "ENTITY_ID", + Owner = "OWNER", + Timestamp = "TIMESTAMP", + TravelPath = "TRAVEL_PATH", + TravelTime = "TRAVEL_TIME", } -export type S0_Eternum_TravelStaminaCostConfigOrder = { +export type s1_eternum_TravelStaminaCostConfigOrder = { direction: OrderDirection; - field: S0_Eternum_TravelStaminaCostConfigOrderField; -}; - -export enum S0_Eternum_TravelStaminaCostConfigOrderField { - ConfigId = 'CONFIG_ID', - Cost = 'COST', - TravelType = 'TRAVEL_TYPE' -} - -export type S0_Eternum_TravelStaminaCostConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - cost?: InputMaybe; - costEQ?: InputMaybe; - costGT?: InputMaybe; - costGTE?: InputMaybe; - costIN?: InputMaybe>>; - costLIKE?: InputMaybe; - costLT?: InputMaybe; - costLTE?: InputMaybe; - costNEQ?: InputMaybe; - costNOTIN?: InputMaybe>>; - costNOTLIKE?: InputMaybe; - travel_type?: InputMaybe; - travel_typeEQ?: InputMaybe; - travel_typeGT?: InputMaybe; - travel_typeGTE?: InputMaybe; - travel_typeIN?: InputMaybe>>; - travel_typeLIKE?: InputMaybe; - travel_typeLT?: InputMaybe; - travel_typeLTE?: InputMaybe; - travel_typeNEQ?: InputMaybe; - travel_typeNOTIN?: InputMaybe>>; - travel_typeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_TravelWhereInput = { - destination_coord_x?: InputMaybe; - destination_coord_xEQ?: InputMaybe; - destination_coord_xGT?: InputMaybe; - destination_coord_xGTE?: InputMaybe; - destination_coord_xIN?: InputMaybe>>; - destination_coord_xLIKE?: InputMaybe; - destination_coord_xLT?: InputMaybe; - destination_coord_xLTE?: InputMaybe; - destination_coord_xNEQ?: InputMaybe; - destination_coord_xNOTIN?: InputMaybe>>; - destination_coord_xNOTLIKE?: InputMaybe; - destination_coord_y?: InputMaybe; - destination_coord_yEQ?: InputMaybe; - destination_coord_yGT?: InputMaybe; - destination_coord_yGTE?: InputMaybe; - destination_coord_yIN?: InputMaybe>>; - destination_coord_yLIKE?: InputMaybe; - destination_coord_yLT?: InputMaybe; - destination_coord_yLTE?: InputMaybe; - destination_coord_yNEQ?: InputMaybe; - destination_coord_yNOTIN?: InputMaybe>>; - destination_coord_yNOTLIKE?: InputMaybe; - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - owner?: InputMaybe; - ownerEQ?: InputMaybe; - ownerGT?: InputMaybe; - ownerGTE?: InputMaybe; - ownerIN?: InputMaybe>>; - ownerLIKE?: InputMaybe; - ownerLT?: InputMaybe; - ownerLTE?: InputMaybe; - ownerNEQ?: InputMaybe; - ownerNOTIN?: InputMaybe>>; - ownerNOTLIKE?: InputMaybe; - timestamp?: InputMaybe; - timestampEQ?: InputMaybe; - timestampGT?: InputMaybe; - timestampGTE?: InputMaybe; - timestampIN?: InputMaybe>>; - timestampLIKE?: InputMaybe; - timestampLT?: InputMaybe; - timestampLTE?: InputMaybe; - timestampNEQ?: InputMaybe; - timestampNOTIN?: InputMaybe>>; - timestampNOTLIKE?: InputMaybe; - travel_time?: InputMaybe; - travel_timeEQ?: InputMaybe; - travel_timeGT?: InputMaybe; - travel_timeGTE?: InputMaybe; - travel_timeIN?: InputMaybe>>; - travel_timeLIKE?: InputMaybe; - travel_timeLT?: InputMaybe; - travel_timeLTE?: InputMaybe; - travel_timeNEQ?: InputMaybe; - travel_timeNOTIN?: InputMaybe>>; - travel_timeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_TroopConfigOrder = { + field: s1_eternum_TravelStaminaCostConfigOrderField; +}; + +export enum s1_eternum_TravelStaminaCostConfigOrderField { + ConfigId = "CONFIG_ID", + Cost = "COST", + TravelType = "TRAVEL_TYPE", +} + +export type s1_eternum_TravelStaminaCostConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + cost?: InputMaybe; + costEQ?: InputMaybe; + costGT?: InputMaybe; + costGTE?: InputMaybe; + costIN?: InputMaybe>>; + costLIKE?: InputMaybe; + costLT?: InputMaybe; + costLTE?: InputMaybe; + costNEQ?: InputMaybe; + costNOTIN?: InputMaybe>>; + costNOTLIKE?: InputMaybe; + travel_type?: InputMaybe; + travel_typeEQ?: InputMaybe; + travel_typeGT?: InputMaybe; + travel_typeGTE?: InputMaybe; + travel_typeIN?: InputMaybe>>; + travel_typeLIKE?: InputMaybe; + travel_typeLT?: InputMaybe; + travel_typeLTE?: InputMaybe; + travel_typeNEQ?: InputMaybe; + travel_typeNOTIN?: InputMaybe>>; + travel_typeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_TravelWhereInput = { + destination_coord_x?: InputMaybe; + destination_coord_xEQ?: InputMaybe; + destination_coord_xGT?: InputMaybe; + destination_coord_xGTE?: InputMaybe; + destination_coord_xIN?: InputMaybe>>; + destination_coord_xLIKE?: InputMaybe; + destination_coord_xLT?: InputMaybe; + destination_coord_xLTE?: InputMaybe; + destination_coord_xNEQ?: InputMaybe; + destination_coord_xNOTIN?: InputMaybe>>; + destination_coord_xNOTLIKE?: InputMaybe; + destination_coord_y?: InputMaybe; + destination_coord_yEQ?: InputMaybe; + destination_coord_yGT?: InputMaybe; + destination_coord_yGTE?: InputMaybe; + destination_coord_yIN?: InputMaybe>>; + destination_coord_yLIKE?: InputMaybe; + destination_coord_yLT?: InputMaybe; + destination_coord_yLTE?: InputMaybe; + destination_coord_yNEQ?: InputMaybe; + destination_coord_yNOTIN?: InputMaybe>>; + destination_coord_yNOTLIKE?: InputMaybe; + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + owner?: InputMaybe; + ownerEQ?: InputMaybe; + ownerGT?: InputMaybe; + ownerGTE?: InputMaybe; + ownerIN?: InputMaybe>>; + ownerLIKE?: InputMaybe; + ownerLT?: InputMaybe; + ownerLTE?: InputMaybe; + ownerNEQ?: InputMaybe; + ownerNOTIN?: InputMaybe>>; + ownerNOTLIKE?: InputMaybe; + timestamp?: InputMaybe; + timestampEQ?: InputMaybe; + timestampGT?: InputMaybe; + timestampGTE?: InputMaybe; + timestampIN?: InputMaybe>>; + timestampLIKE?: InputMaybe; + timestampLT?: InputMaybe; + timestampLTE?: InputMaybe; + timestampNEQ?: InputMaybe; + timestampNOTIN?: InputMaybe>>; + timestampNOTLIKE?: InputMaybe; + travel_time?: InputMaybe; + travel_timeEQ?: InputMaybe; + travel_timeGT?: InputMaybe; + travel_timeGTE?: InputMaybe; + travel_timeIN?: InputMaybe>>; + travel_timeLIKE?: InputMaybe; + travel_timeLT?: InputMaybe; + travel_timeLTE?: InputMaybe; + travel_timeNEQ?: InputMaybe; + travel_timeNOTIN?: InputMaybe>>; + travel_timeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_TroopConfigOrder = { direction: OrderDirection; - field: S0_Eternum_TroopConfigOrderField; -}; - -export enum S0_Eternum_TroopConfigOrderField { - AdvantagePercent = 'ADVANTAGE_PERCENT', - ArmyExtraPerBuilding = 'ARMY_EXTRA_PER_BUILDING', - ArmyFreePerStructure = 'ARMY_FREE_PER_STRUCTURE', - ArmyMaxPerStructure = 'ARMY_MAX_PER_STRUCTURE', - BattleLeaveSlashDenom = 'BATTLE_LEAVE_SLASH_DENOM', - BattleLeaveSlashNum = 'BATTLE_LEAVE_SLASH_NUM', - BattleMaxTimeSeconds = 'BATTLE_MAX_TIME_SECONDS', - BattleTimeScale = 'BATTLE_TIME_SCALE', - ConfigId = 'CONFIG_ID', - CrossbowmanStrength = 'CROSSBOWMAN_STRENGTH', - DisadvantagePercent = 'DISADVANTAGE_PERCENT', - Health = 'HEALTH', - KnightStrength = 'KNIGHT_STRENGTH', - MaxTroopCount = 'MAX_TROOP_COUNT', - PaladinStrength = 'PALADIN_STRENGTH', - PillageHealthDivisor = 'PILLAGE_HEALTH_DIVISOR' -} - -export type S0_Eternum_TroopConfigWhereInput = { - advantage_percent?: InputMaybe; - advantage_percentEQ?: InputMaybe; - advantage_percentGT?: InputMaybe; - advantage_percentGTE?: InputMaybe; - advantage_percentIN?: InputMaybe>>; - advantage_percentLIKE?: InputMaybe; - advantage_percentLT?: InputMaybe; - advantage_percentLTE?: InputMaybe; - advantage_percentNEQ?: InputMaybe; - advantage_percentNOTIN?: InputMaybe>>; - advantage_percentNOTLIKE?: InputMaybe; - army_extra_per_building?: InputMaybe; - army_extra_per_buildingEQ?: InputMaybe; - army_extra_per_buildingGT?: InputMaybe; - army_extra_per_buildingGTE?: InputMaybe; - army_extra_per_buildingIN?: InputMaybe>>; - army_extra_per_buildingLIKE?: InputMaybe; - army_extra_per_buildingLT?: InputMaybe; - army_extra_per_buildingLTE?: InputMaybe; - army_extra_per_buildingNEQ?: InputMaybe; - army_extra_per_buildingNOTIN?: InputMaybe>>; - army_extra_per_buildingNOTLIKE?: InputMaybe; - army_free_per_structure?: InputMaybe; - army_free_per_structureEQ?: InputMaybe; - army_free_per_structureGT?: InputMaybe; - army_free_per_structureGTE?: InputMaybe; - army_free_per_structureIN?: InputMaybe>>; - army_free_per_structureLIKE?: InputMaybe; - army_free_per_structureLT?: InputMaybe; - army_free_per_structureLTE?: InputMaybe; - army_free_per_structureNEQ?: InputMaybe; - army_free_per_structureNOTIN?: InputMaybe>>; - army_free_per_structureNOTLIKE?: InputMaybe; - army_max_per_structure?: InputMaybe; - army_max_per_structureEQ?: InputMaybe; - army_max_per_structureGT?: InputMaybe; - army_max_per_structureGTE?: InputMaybe; - army_max_per_structureIN?: InputMaybe>>; - army_max_per_structureLIKE?: InputMaybe; - army_max_per_structureLT?: InputMaybe; - army_max_per_structureLTE?: InputMaybe; - army_max_per_structureNEQ?: InputMaybe; - army_max_per_structureNOTIN?: InputMaybe>>; - army_max_per_structureNOTLIKE?: InputMaybe; - battle_leave_slash_denom?: InputMaybe; - battle_leave_slash_denomEQ?: InputMaybe; - battle_leave_slash_denomGT?: InputMaybe; - battle_leave_slash_denomGTE?: InputMaybe; - battle_leave_slash_denomIN?: InputMaybe>>; - battle_leave_slash_denomLIKE?: InputMaybe; - battle_leave_slash_denomLT?: InputMaybe; - battle_leave_slash_denomLTE?: InputMaybe; - battle_leave_slash_denomNEQ?: InputMaybe; - battle_leave_slash_denomNOTIN?: InputMaybe>>; - battle_leave_slash_denomNOTLIKE?: InputMaybe; - battle_leave_slash_num?: InputMaybe; - battle_leave_slash_numEQ?: InputMaybe; - battle_leave_slash_numGT?: InputMaybe; - battle_leave_slash_numGTE?: InputMaybe; - battle_leave_slash_numIN?: InputMaybe>>; - battle_leave_slash_numLIKE?: InputMaybe; - battle_leave_slash_numLT?: InputMaybe; - battle_leave_slash_numLTE?: InputMaybe; - battle_leave_slash_numNEQ?: InputMaybe; - battle_leave_slash_numNOTIN?: InputMaybe>>; - battle_leave_slash_numNOTLIKE?: InputMaybe; - battle_max_time_seconds?: InputMaybe; - battle_max_time_secondsEQ?: InputMaybe; - battle_max_time_secondsGT?: InputMaybe; - battle_max_time_secondsGTE?: InputMaybe; - battle_max_time_secondsIN?: InputMaybe>>; - battle_max_time_secondsLIKE?: InputMaybe; - battle_max_time_secondsLT?: InputMaybe; - battle_max_time_secondsLTE?: InputMaybe; - battle_max_time_secondsNEQ?: InputMaybe; - battle_max_time_secondsNOTIN?: InputMaybe>>; - battle_max_time_secondsNOTLIKE?: InputMaybe; - battle_time_scale?: InputMaybe; - battle_time_scaleEQ?: InputMaybe; - battle_time_scaleGT?: InputMaybe; - battle_time_scaleGTE?: InputMaybe; - battle_time_scaleIN?: InputMaybe>>; - battle_time_scaleLIKE?: InputMaybe; - battle_time_scaleLT?: InputMaybe; - battle_time_scaleLTE?: InputMaybe; - battle_time_scaleNEQ?: InputMaybe; - battle_time_scaleNOTIN?: InputMaybe>>; - battle_time_scaleNOTLIKE?: InputMaybe; - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - crossbowman_strength?: InputMaybe; - crossbowman_strengthEQ?: InputMaybe; - crossbowman_strengthGT?: InputMaybe; - crossbowman_strengthGTE?: InputMaybe; - crossbowman_strengthIN?: InputMaybe>>; - crossbowman_strengthLIKE?: InputMaybe; - crossbowman_strengthLT?: InputMaybe; - crossbowman_strengthLTE?: InputMaybe; - crossbowman_strengthNEQ?: InputMaybe; - crossbowman_strengthNOTIN?: InputMaybe>>; - crossbowman_strengthNOTLIKE?: InputMaybe; - disadvantage_percent?: InputMaybe; - disadvantage_percentEQ?: InputMaybe; - disadvantage_percentGT?: InputMaybe; - disadvantage_percentGTE?: InputMaybe; - disadvantage_percentIN?: InputMaybe>>; - disadvantage_percentLIKE?: InputMaybe; - disadvantage_percentLT?: InputMaybe; - disadvantage_percentLTE?: InputMaybe; - disadvantage_percentNEQ?: InputMaybe; - disadvantage_percentNOTIN?: InputMaybe>>; - disadvantage_percentNOTLIKE?: InputMaybe; - health?: InputMaybe; - healthEQ?: InputMaybe; - healthGT?: InputMaybe; - healthGTE?: InputMaybe; - healthIN?: InputMaybe>>; - healthLIKE?: InputMaybe; - healthLT?: InputMaybe; - healthLTE?: InputMaybe; - healthNEQ?: InputMaybe; - healthNOTIN?: InputMaybe>>; - healthNOTLIKE?: InputMaybe; - knight_strength?: InputMaybe; - knight_strengthEQ?: InputMaybe; - knight_strengthGT?: InputMaybe; - knight_strengthGTE?: InputMaybe; - knight_strengthIN?: InputMaybe>>; - knight_strengthLIKE?: InputMaybe; - knight_strengthLT?: InputMaybe; - knight_strengthLTE?: InputMaybe; - knight_strengthNEQ?: InputMaybe; - knight_strengthNOTIN?: InputMaybe>>; - knight_strengthNOTLIKE?: InputMaybe; - max_troop_count?: InputMaybe; - max_troop_countEQ?: InputMaybe; - max_troop_countGT?: InputMaybe; - max_troop_countGTE?: InputMaybe; - max_troop_countIN?: InputMaybe>>; - max_troop_countLIKE?: InputMaybe; - max_troop_countLT?: InputMaybe; - max_troop_countLTE?: InputMaybe; - max_troop_countNEQ?: InputMaybe; - max_troop_countNOTIN?: InputMaybe>>; - max_troop_countNOTLIKE?: InputMaybe; - paladin_strength?: InputMaybe; - paladin_strengthEQ?: InputMaybe; - paladin_strengthGT?: InputMaybe; - paladin_strengthGTE?: InputMaybe; - paladin_strengthIN?: InputMaybe>>; - paladin_strengthLIKE?: InputMaybe; - paladin_strengthLT?: InputMaybe; - paladin_strengthLTE?: InputMaybe; - paladin_strengthNEQ?: InputMaybe; - paladin_strengthNOTIN?: InputMaybe>>; - paladin_strengthNOTLIKE?: InputMaybe; - pillage_health_divisor?: InputMaybe; - pillage_health_divisorEQ?: InputMaybe; - pillage_health_divisorGT?: InputMaybe; - pillage_health_divisorGTE?: InputMaybe; - pillage_health_divisorIN?: InputMaybe>>; - pillage_health_divisorLIKE?: InputMaybe; - pillage_health_divisorLT?: InputMaybe; - pillage_health_divisorLTE?: InputMaybe; - pillage_health_divisorNEQ?: InputMaybe; - pillage_health_divisorNOTIN?: InputMaybe>>; - pillage_health_divisorNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_TrophyCreationOrder = { + field: s1_eternum_TroopConfigOrderField; +}; + +export enum s1_eternum_TroopConfigOrderField { + AdvantagePercent = "ADVANTAGE_PERCENT", + ArmyExtraPerBuilding = "ARMY_EXTRA_PER_BUILDING", + ArmyFreePerStructure = "ARMY_FREE_PER_STRUCTURE", + ArmyMaxPerStructure = "ARMY_MAX_PER_STRUCTURE", + BattleLeaveSlashDenom = "BATTLE_LEAVE_SLASH_DENOM", + BattleLeaveSlashNum = "BATTLE_LEAVE_SLASH_NUM", + BattleMaxTimeSeconds = "BATTLE_MAX_TIME_SECONDS", + BattleTimeScale = "BATTLE_TIME_SCALE", + ConfigId = "CONFIG_ID", + CrossbowmanStrength = "CROSSBOWMAN_STRENGTH", + DisadvantagePercent = "DISADVANTAGE_PERCENT", + Health = "HEALTH", + KnightStrength = "KNIGHT_STRENGTH", + MaxTroopCount = "MAX_TROOP_COUNT", + PaladinStrength = "PALADIN_STRENGTH", + PillageHealthDivisor = "PILLAGE_HEALTH_DIVISOR", +} + +export type s1_eternum_TroopConfigWhereInput = { + advantage_percent?: InputMaybe; + advantage_percentEQ?: InputMaybe; + advantage_percentGT?: InputMaybe; + advantage_percentGTE?: InputMaybe; + advantage_percentIN?: InputMaybe>>; + advantage_percentLIKE?: InputMaybe; + advantage_percentLT?: InputMaybe; + advantage_percentLTE?: InputMaybe; + advantage_percentNEQ?: InputMaybe; + advantage_percentNOTIN?: InputMaybe>>; + advantage_percentNOTLIKE?: InputMaybe; + army_extra_per_building?: InputMaybe; + army_extra_per_buildingEQ?: InputMaybe; + army_extra_per_buildingGT?: InputMaybe; + army_extra_per_buildingGTE?: InputMaybe; + army_extra_per_buildingIN?: InputMaybe>>; + army_extra_per_buildingLIKE?: InputMaybe; + army_extra_per_buildingLT?: InputMaybe; + army_extra_per_buildingLTE?: InputMaybe; + army_extra_per_buildingNEQ?: InputMaybe; + army_extra_per_buildingNOTIN?: InputMaybe>>; + army_extra_per_buildingNOTLIKE?: InputMaybe; + army_free_per_structure?: InputMaybe; + army_free_per_structureEQ?: InputMaybe; + army_free_per_structureGT?: InputMaybe; + army_free_per_structureGTE?: InputMaybe; + army_free_per_structureIN?: InputMaybe>>; + army_free_per_structureLIKE?: InputMaybe; + army_free_per_structureLT?: InputMaybe; + army_free_per_structureLTE?: InputMaybe; + army_free_per_structureNEQ?: InputMaybe; + army_free_per_structureNOTIN?: InputMaybe>>; + army_free_per_structureNOTLIKE?: InputMaybe; + army_max_per_structure?: InputMaybe; + army_max_per_structureEQ?: InputMaybe; + army_max_per_structureGT?: InputMaybe; + army_max_per_structureGTE?: InputMaybe; + army_max_per_structureIN?: InputMaybe>>; + army_max_per_structureLIKE?: InputMaybe; + army_max_per_structureLT?: InputMaybe; + army_max_per_structureLTE?: InputMaybe; + army_max_per_structureNEQ?: InputMaybe; + army_max_per_structureNOTIN?: InputMaybe>>; + army_max_per_structureNOTLIKE?: InputMaybe; + battle_leave_slash_denom?: InputMaybe; + battle_leave_slash_denomEQ?: InputMaybe; + battle_leave_slash_denomGT?: InputMaybe; + battle_leave_slash_denomGTE?: InputMaybe; + battle_leave_slash_denomIN?: InputMaybe>>; + battle_leave_slash_denomLIKE?: InputMaybe; + battle_leave_slash_denomLT?: InputMaybe; + battle_leave_slash_denomLTE?: InputMaybe; + battle_leave_slash_denomNEQ?: InputMaybe; + battle_leave_slash_denomNOTIN?: InputMaybe>>; + battle_leave_slash_denomNOTLIKE?: InputMaybe; + battle_leave_slash_num?: InputMaybe; + battle_leave_slash_numEQ?: InputMaybe; + battle_leave_slash_numGT?: InputMaybe; + battle_leave_slash_numGTE?: InputMaybe; + battle_leave_slash_numIN?: InputMaybe>>; + battle_leave_slash_numLIKE?: InputMaybe; + battle_leave_slash_numLT?: InputMaybe; + battle_leave_slash_numLTE?: InputMaybe; + battle_leave_slash_numNEQ?: InputMaybe; + battle_leave_slash_numNOTIN?: InputMaybe>>; + battle_leave_slash_numNOTLIKE?: InputMaybe; + battle_max_time_seconds?: InputMaybe; + battle_max_time_secondsEQ?: InputMaybe; + battle_max_time_secondsGT?: InputMaybe; + battle_max_time_secondsGTE?: InputMaybe; + battle_max_time_secondsIN?: InputMaybe>>; + battle_max_time_secondsLIKE?: InputMaybe; + battle_max_time_secondsLT?: InputMaybe; + battle_max_time_secondsLTE?: InputMaybe; + battle_max_time_secondsNEQ?: InputMaybe; + battle_max_time_secondsNOTIN?: InputMaybe>>; + battle_max_time_secondsNOTLIKE?: InputMaybe; + battle_time_scale?: InputMaybe; + battle_time_scaleEQ?: InputMaybe; + battle_time_scaleGT?: InputMaybe; + battle_time_scaleGTE?: InputMaybe; + battle_time_scaleIN?: InputMaybe>>; + battle_time_scaleLIKE?: InputMaybe; + battle_time_scaleLT?: InputMaybe; + battle_time_scaleLTE?: InputMaybe; + battle_time_scaleNEQ?: InputMaybe; + battle_time_scaleNOTIN?: InputMaybe>>; + battle_time_scaleNOTLIKE?: InputMaybe; + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + crossbowman_strength?: InputMaybe; + crossbowman_strengthEQ?: InputMaybe; + crossbowman_strengthGT?: InputMaybe; + crossbowman_strengthGTE?: InputMaybe; + crossbowman_strengthIN?: InputMaybe>>; + crossbowman_strengthLIKE?: InputMaybe; + crossbowman_strengthLT?: InputMaybe; + crossbowman_strengthLTE?: InputMaybe; + crossbowman_strengthNEQ?: InputMaybe; + crossbowman_strengthNOTIN?: InputMaybe>>; + crossbowman_strengthNOTLIKE?: InputMaybe; + disadvantage_percent?: InputMaybe; + disadvantage_percentEQ?: InputMaybe; + disadvantage_percentGT?: InputMaybe; + disadvantage_percentGTE?: InputMaybe; + disadvantage_percentIN?: InputMaybe>>; + disadvantage_percentLIKE?: InputMaybe; + disadvantage_percentLT?: InputMaybe; + disadvantage_percentLTE?: InputMaybe; + disadvantage_percentNEQ?: InputMaybe; + disadvantage_percentNOTIN?: InputMaybe>>; + disadvantage_percentNOTLIKE?: InputMaybe; + health?: InputMaybe; + healthEQ?: InputMaybe; + healthGT?: InputMaybe; + healthGTE?: InputMaybe; + healthIN?: InputMaybe>>; + healthLIKE?: InputMaybe; + healthLT?: InputMaybe; + healthLTE?: InputMaybe; + healthNEQ?: InputMaybe; + healthNOTIN?: InputMaybe>>; + healthNOTLIKE?: InputMaybe; + knight_strength?: InputMaybe; + knight_strengthEQ?: InputMaybe; + knight_strengthGT?: InputMaybe; + knight_strengthGTE?: InputMaybe; + knight_strengthIN?: InputMaybe>>; + knight_strengthLIKE?: InputMaybe; + knight_strengthLT?: InputMaybe; + knight_strengthLTE?: InputMaybe; + knight_strengthNEQ?: InputMaybe; + knight_strengthNOTIN?: InputMaybe>>; + knight_strengthNOTLIKE?: InputMaybe; + max_troop_count?: InputMaybe; + max_troop_countEQ?: InputMaybe; + max_troop_countGT?: InputMaybe; + max_troop_countGTE?: InputMaybe; + max_troop_countIN?: InputMaybe>>; + max_troop_countLIKE?: InputMaybe; + max_troop_countLT?: InputMaybe; + max_troop_countLTE?: InputMaybe; + max_troop_countNEQ?: InputMaybe; + max_troop_countNOTIN?: InputMaybe>>; + max_troop_countNOTLIKE?: InputMaybe; + paladin_strength?: InputMaybe; + paladin_strengthEQ?: InputMaybe; + paladin_strengthGT?: InputMaybe; + paladin_strengthGTE?: InputMaybe; + paladin_strengthIN?: InputMaybe>>; + paladin_strengthLIKE?: InputMaybe; + paladin_strengthLT?: InputMaybe; + paladin_strengthLTE?: InputMaybe; + paladin_strengthNEQ?: InputMaybe; + paladin_strengthNOTIN?: InputMaybe>>; + paladin_strengthNOTLIKE?: InputMaybe; + pillage_health_divisor?: InputMaybe; + pillage_health_divisorEQ?: InputMaybe; + pillage_health_divisorGT?: InputMaybe; + pillage_health_divisorGTE?: InputMaybe; + pillage_health_divisorIN?: InputMaybe>>; + pillage_health_divisorLIKE?: InputMaybe; + pillage_health_divisorLT?: InputMaybe; + pillage_health_divisorLTE?: InputMaybe; + pillage_health_divisorNEQ?: InputMaybe; + pillage_health_divisorNOTIN?: InputMaybe>>; + pillage_health_divisorNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_TrophyCreationOrder = { direction: OrderDirection; - field: S0_Eternum_TrophyCreationOrderField; -}; - -export enum S0_Eternum_TrophyCreationOrderField { - Data = 'DATA', - Description = 'DESCRIPTION', - End = 'END', - Group = 'GROUP', - Hidden = 'HIDDEN', - Icon = 'ICON', - Id = 'ID', - Index = 'INDEX', - Points = 'POINTS', - Start = 'START', - Tasks = 'TASKS', - Title = 'TITLE' -} - -export type S0_Eternum_TrophyCreationWhereInput = { - data?: InputMaybe; - dataEQ?: InputMaybe; - dataGT?: InputMaybe; - dataGTE?: InputMaybe; - dataIN?: InputMaybe>>; - dataLIKE?: InputMaybe; - dataLT?: InputMaybe; - dataLTE?: InputMaybe; - dataNEQ?: InputMaybe; - dataNOTIN?: InputMaybe>>; - dataNOTLIKE?: InputMaybe; - description?: InputMaybe; - descriptionEQ?: InputMaybe; - descriptionGT?: InputMaybe; - descriptionGTE?: InputMaybe; - descriptionIN?: InputMaybe>>; - descriptionLIKE?: InputMaybe; - descriptionLT?: InputMaybe; - descriptionLTE?: InputMaybe; - descriptionNEQ?: InputMaybe; - descriptionNOTIN?: InputMaybe>>; - descriptionNOTLIKE?: InputMaybe; - end?: InputMaybe; - endEQ?: InputMaybe; - endGT?: InputMaybe; - endGTE?: InputMaybe; - endIN?: InputMaybe>>; - endLIKE?: InputMaybe; - endLT?: InputMaybe; - endLTE?: InputMaybe; - endNEQ?: InputMaybe; - endNOTIN?: InputMaybe>>; - endNOTLIKE?: InputMaybe; - group?: InputMaybe; - groupEQ?: InputMaybe; - groupGT?: InputMaybe; - groupGTE?: InputMaybe; - groupIN?: InputMaybe>>; - groupLIKE?: InputMaybe; - groupLT?: InputMaybe; - groupLTE?: InputMaybe; - groupNEQ?: InputMaybe; - groupNOTIN?: InputMaybe>>; - groupNOTLIKE?: InputMaybe; - hidden?: InputMaybe; - icon?: InputMaybe; - iconEQ?: InputMaybe; - iconGT?: InputMaybe; - iconGTE?: InputMaybe; - iconIN?: InputMaybe>>; - iconLIKE?: InputMaybe; - iconLT?: InputMaybe; - iconLTE?: InputMaybe; - iconNEQ?: InputMaybe; - iconNOTIN?: InputMaybe>>; - iconNOTLIKE?: InputMaybe; - id?: InputMaybe; - idEQ?: InputMaybe; - idGT?: InputMaybe; - idGTE?: InputMaybe; - idIN?: InputMaybe>>; - idLIKE?: InputMaybe; - idLT?: InputMaybe; - idLTE?: InputMaybe; - idNEQ?: InputMaybe; - idNOTIN?: InputMaybe>>; - idNOTLIKE?: InputMaybe; - index?: InputMaybe; - indexEQ?: InputMaybe; - indexGT?: InputMaybe; - indexGTE?: InputMaybe; - indexIN?: InputMaybe>>; - indexLIKE?: InputMaybe; - indexLT?: InputMaybe; - indexLTE?: InputMaybe; - indexNEQ?: InputMaybe; - indexNOTIN?: InputMaybe>>; - indexNOTLIKE?: InputMaybe; - points?: InputMaybe; - pointsEQ?: InputMaybe; - pointsGT?: InputMaybe; - pointsGTE?: InputMaybe; - pointsIN?: InputMaybe>>; - pointsLIKE?: InputMaybe; - pointsLT?: InputMaybe; - pointsLTE?: InputMaybe; - pointsNEQ?: InputMaybe; - pointsNOTIN?: InputMaybe>>; - pointsNOTLIKE?: InputMaybe; - start?: InputMaybe; - startEQ?: InputMaybe; - startGT?: InputMaybe; - startGTE?: InputMaybe; - startIN?: InputMaybe>>; - startLIKE?: InputMaybe; - startLT?: InputMaybe; - startLTE?: InputMaybe; - startNEQ?: InputMaybe; - startNOTIN?: InputMaybe>>; - startNOTLIKE?: InputMaybe; - title?: InputMaybe; - titleEQ?: InputMaybe; - titleGT?: InputMaybe; - titleGTE?: InputMaybe; - titleIN?: InputMaybe>>; - titleLIKE?: InputMaybe; - titleLT?: InputMaybe; - titleLTE?: InputMaybe; - titleNEQ?: InputMaybe; - titleNOTIN?: InputMaybe>>; - titleNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_TrophyProgressionOrder = { + field: s1_eternum_TrophyCreationOrderField; +}; + +export enum s1_eternum_TrophyCreationOrderField { + Data = "DATA", + Description = "DESCRIPTION", + End = "END", + Group = "GROUP", + Hidden = "HIDDEN", + Icon = "ICON", + Id = "ID", + Index = "INDEX", + Points = "POINTS", + Start = "START", + Tasks = "TASKS", + Title = "TITLE", +} + +export type s1_eternum_TrophyCreationWhereInput = { + data?: InputMaybe; + dataEQ?: InputMaybe; + dataGT?: InputMaybe; + dataGTE?: InputMaybe; + dataIN?: InputMaybe>>; + dataLIKE?: InputMaybe; + dataLT?: InputMaybe; + dataLTE?: InputMaybe; + dataNEQ?: InputMaybe; + dataNOTIN?: InputMaybe>>; + dataNOTLIKE?: InputMaybe; + description?: InputMaybe; + descriptionEQ?: InputMaybe; + descriptionGT?: InputMaybe; + descriptionGTE?: InputMaybe; + descriptionIN?: InputMaybe>>; + descriptionLIKE?: InputMaybe; + descriptionLT?: InputMaybe; + descriptionLTE?: InputMaybe; + descriptionNEQ?: InputMaybe; + descriptionNOTIN?: InputMaybe>>; + descriptionNOTLIKE?: InputMaybe; + end?: InputMaybe; + endEQ?: InputMaybe; + endGT?: InputMaybe; + endGTE?: InputMaybe; + endIN?: InputMaybe>>; + endLIKE?: InputMaybe; + endLT?: InputMaybe; + endLTE?: InputMaybe; + endNEQ?: InputMaybe; + endNOTIN?: InputMaybe>>; + endNOTLIKE?: InputMaybe; + group?: InputMaybe; + groupEQ?: InputMaybe; + groupGT?: InputMaybe; + groupGTE?: InputMaybe; + groupIN?: InputMaybe>>; + groupLIKE?: InputMaybe; + groupLT?: InputMaybe; + groupLTE?: InputMaybe; + groupNEQ?: InputMaybe; + groupNOTIN?: InputMaybe>>; + groupNOTLIKE?: InputMaybe; + hidden?: InputMaybe; + icon?: InputMaybe; + iconEQ?: InputMaybe; + iconGT?: InputMaybe; + iconGTE?: InputMaybe; + iconIN?: InputMaybe>>; + iconLIKE?: InputMaybe; + iconLT?: InputMaybe; + iconLTE?: InputMaybe; + iconNEQ?: InputMaybe; + iconNOTIN?: InputMaybe>>; + iconNOTLIKE?: InputMaybe; + id?: InputMaybe; + idEQ?: InputMaybe; + idGT?: InputMaybe; + idGTE?: InputMaybe; + idIN?: InputMaybe>>; + idLIKE?: InputMaybe; + idLT?: InputMaybe; + idLTE?: InputMaybe; + idNEQ?: InputMaybe; + idNOTIN?: InputMaybe>>; + idNOTLIKE?: InputMaybe; + index?: InputMaybe; + indexEQ?: InputMaybe; + indexGT?: InputMaybe; + indexGTE?: InputMaybe; + indexIN?: InputMaybe>>; + indexLIKE?: InputMaybe; + indexLT?: InputMaybe; + indexLTE?: InputMaybe; + indexNEQ?: InputMaybe; + indexNOTIN?: InputMaybe>>; + indexNOTLIKE?: InputMaybe; + points?: InputMaybe; + pointsEQ?: InputMaybe; + pointsGT?: InputMaybe; + pointsGTE?: InputMaybe; + pointsIN?: InputMaybe>>; + pointsLIKE?: InputMaybe; + pointsLT?: InputMaybe; + pointsLTE?: InputMaybe; + pointsNEQ?: InputMaybe; + pointsNOTIN?: InputMaybe>>; + pointsNOTLIKE?: InputMaybe; + start?: InputMaybe; + startEQ?: InputMaybe; + startGT?: InputMaybe; + startGTE?: InputMaybe; + startIN?: InputMaybe>>; + startLIKE?: InputMaybe; + startLT?: InputMaybe; + startLTE?: InputMaybe; + startNEQ?: InputMaybe; + startNOTIN?: InputMaybe>>; + startNOTLIKE?: InputMaybe; + title?: InputMaybe; + titleEQ?: InputMaybe; + titleGT?: InputMaybe; + titleGTE?: InputMaybe; + titleIN?: InputMaybe>>; + titleLIKE?: InputMaybe; + titleLT?: InputMaybe; + titleLTE?: InputMaybe; + titleNEQ?: InputMaybe; + titleNOTIN?: InputMaybe>>; + titleNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_TrophyProgressionOrder = { direction: OrderDirection; - field: S0_Eternum_TrophyProgressionOrderField; -}; - -export enum S0_Eternum_TrophyProgressionOrderField { - Count = 'COUNT', - PlayerId = 'PLAYER_ID', - TaskId = 'TASK_ID', - Time = 'TIME' -} - -export type S0_Eternum_TrophyProgressionWhereInput = { - count?: InputMaybe; - countEQ?: InputMaybe; - countGT?: InputMaybe; - countGTE?: InputMaybe; - countIN?: InputMaybe>>; - countLIKE?: InputMaybe; - countLT?: InputMaybe; - countLTE?: InputMaybe; - countNEQ?: InputMaybe; - countNOTIN?: InputMaybe>>; - countNOTLIKE?: InputMaybe; - player_id?: InputMaybe; - player_idEQ?: InputMaybe; - player_idGT?: InputMaybe; - player_idGTE?: InputMaybe; - player_idIN?: InputMaybe>>; - player_idLIKE?: InputMaybe; - player_idLT?: InputMaybe; - player_idLTE?: InputMaybe; - player_idNEQ?: InputMaybe; - player_idNOTIN?: InputMaybe>>; - player_idNOTLIKE?: InputMaybe; - task_id?: InputMaybe; - task_idEQ?: InputMaybe; - task_idGT?: InputMaybe; - task_idGTE?: InputMaybe; - task_idIN?: InputMaybe>>; - task_idLIKE?: InputMaybe; - task_idLT?: InputMaybe; - task_idLTE?: InputMaybe; - task_idNEQ?: InputMaybe; - task_idNOTIN?: InputMaybe>>; - task_idNOTLIKE?: InputMaybe; - time?: InputMaybe; - timeEQ?: InputMaybe; - timeGT?: InputMaybe; - timeGTE?: InputMaybe; - timeIN?: InputMaybe>>; - timeLIKE?: InputMaybe; - timeLT?: InputMaybe; - timeLTE?: InputMaybe; - timeNEQ?: InputMaybe; - timeNOTIN?: InputMaybe>>; - timeNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_VrfConfigOrder = { + field: s1_eternum_TrophyProgressionOrderField; +}; + +export enum s1_eternum_TrophyProgressionOrderField { + Count = "COUNT", + PlayerId = "PLAYER_ID", + TaskId = "TASK_ID", + Time = "TIME", +} + +export type s1_eternum_TrophyProgressionWhereInput = { + count?: InputMaybe; + countEQ?: InputMaybe; + countGT?: InputMaybe; + countGTE?: InputMaybe; + countIN?: InputMaybe>>; + countLIKE?: InputMaybe; + countLT?: InputMaybe; + countLTE?: InputMaybe; + countNEQ?: InputMaybe; + countNOTIN?: InputMaybe>>; + countNOTLIKE?: InputMaybe; + player_id?: InputMaybe; + player_idEQ?: InputMaybe; + player_idGT?: InputMaybe; + player_idGTE?: InputMaybe; + player_idIN?: InputMaybe>>; + player_idLIKE?: InputMaybe; + player_idLT?: InputMaybe; + player_idLTE?: InputMaybe; + player_idNEQ?: InputMaybe; + player_idNOTIN?: InputMaybe>>; + player_idNOTLIKE?: InputMaybe; + task_id?: InputMaybe; + task_idEQ?: InputMaybe; + task_idGT?: InputMaybe; + task_idGTE?: InputMaybe; + task_idIN?: InputMaybe>>; + task_idLIKE?: InputMaybe; + task_idLT?: InputMaybe; + task_idLTE?: InputMaybe; + task_idNEQ?: InputMaybe; + task_idNOTIN?: InputMaybe>>; + task_idNOTLIKE?: InputMaybe; + time?: InputMaybe; + timeEQ?: InputMaybe; + timeGT?: InputMaybe; + timeGTE?: InputMaybe; + timeIN?: InputMaybe>>; + timeLIKE?: InputMaybe; + timeLT?: InputMaybe; + timeLTE?: InputMaybe; + timeNEQ?: InputMaybe; + timeNOTIN?: InputMaybe>>; + timeNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_VrfConfigOrder = { direction: OrderDirection; - field: S0_Eternum_VrfConfigOrderField; -}; - -export enum S0_Eternum_VrfConfigOrderField { - ConfigId = 'CONFIG_ID', - VrfProviderAddress = 'VRF_PROVIDER_ADDRESS' -} - -export type S0_Eternum_VrfConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - vrf_provider_address?: InputMaybe; - vrf_provider_addressEQ?: InputMaybe; - vrf_provider_addressGT?: InputMaybe; - vrf_provider_addressGTE?: InputMaybe; - vrf_provider_addressIN?: InputMaybe>>; - vrf_provider_addressLIKE?: InputMaybe; - vrf_provider_addressLT?: InputMaybe; - vrf_provider_addressLTE?: InputMaybe; - vrf_provider_addressNEQ?: InputMaybe; - vrf_provider_addressNOTIN?: InputMaybe>>; - vrf_provider_addressNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_WeightConfigOrder = { + field: s1_eternum_VrfConfigOrderField; +}; + +export enum s1_eternum_VrfConfigOrderField { + ConfigId = "CONFIG_ID", + VrfProviderAddress = "VRF_PROVIDER_ADDRESS", +} + +export type s1_eternum_VrfConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + vrf_provider_address?: InputMaybe; + vrf_provider_addressEQ?: InputMaybe; + vrf_provider_addressGT?: InputMaybe; + vrf_provider_addressGTE?: InputMaybe; + vrf_provider_addressIN?: InputMaybe>>; + vrf_provider_addressLIKE?: InputMaybe; + vrf_provider_addressLT?: InputMaybe; + vrf_provider_addressLTE?: InputMaybe; + vrf_provider_addressNEQ?: InputMaybe; + vrf_provider_addressNOTIN?: InputMaybe>>; + vrf_provider_addressNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_WeightConfigOrder = { direction: OrderDirection; - field: S0_Eternum_WeightConfigOrderField; -}; - -export enum S0_Eternum_WeightConfigOrderField { - ConfigId = 'CONFIG_ID', - EntityType = 'ENTITY_TYPE', - WeightConfigId = 'WEIGHT_CONFIG_ID', - WeightGram = 'WEIGHT_GRAM' -} - -export type S0_Eternum_WeightConfigWhereInput = { - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - entity_type?: InputMaybe; - entity_typeEQ?: InputMaybe; - entity_typeGT?: InputMaybe; - entity_typeGTE?: InputMaybe; - entity_typeIN?: InputMaybe>>; - entity_typeLIKE?: InputMaybe; - entity_typeLT?: InputMaybe; - entity_typeLTE?: InputMaybe; - entity_typeNEQ?: InputMaybe; - entity_typeNOTIN?: InputMaybe>>; - entity_typeNOTLIKE?: InputMaybe; - weight_config_id?: InputMaybe; - weight_config_idEQ?: InputMaybe; - weight_config_idGT?: InputMaybe; - weight_config_idGTE?: InputMaybe; - weight_config_idIN?: InputMaybe>>; - weight_config_idLIKE?: InputMaybe; - weight_config_idLT?: InputMaybe; - weight_config_idLTE?: InputMaybe; - weight_config_idNEQ?: InputMaybe; - weight_config_idNOTIN?: InputMaybe>>; - weight_config_idNOTLIKE?: InputMaybe; - weight_gram?: InputMaybe; - weight_gramEQ?: InputMaybe; - weight_gramGT?: InputMaybe; - weight_gramGTE?: InputMaybe; - weight_gramIN?: InputMaybe>>; - weight_gramLIKE?: InputMaybe; - weight_gramLT?: InputMaybe; - weight_gramLTE?: InputMaybe; - weight_gramNEQ?: InputMaybe; - weight_gramNOTIN?: InputMaybe>>; - weight_gramNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_WeightOrder = { + field: s1_eternum_WeightConfigOrderField; +}; + +export enum s1_eternum_WeightConfigOrderField { + ConfigId = "CONFIG_ID", + EntityType = "ENTITY_TYPE", + WeightConfigId = "WEIGHT_CONFIG_ID", + WeightGram = "WEIGHT_GRAM", +} + +export type s1_eternum_WeightConfigWhereInput = { + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + entity_type?: InputMaybe; + entity_typeEQ?: InputMaybe; + entity_typeGT?: InputMaybe; + entity_typeGTE?: InputMaybe; + entity_typeIN?: InputMaybe>>; + entity_typeLIKE?: InputMaybe; + entity_typeLT?: InputMaybe; + entity_typeLTE?: InputMaybe; + entity_typeNEQ?: InputMaybe; + entity_typeNOTIN?: InputMaybe>>; + entity_typeNOTLIKE?: InputMaybe; + weight_config_id?: InputMaybe; + weight_config_idEQ?: InputMaybe; + weight_config_idGT?: InputMaybe; + weight_config_idGTE?: InputMaybe; + weight_config_idIN?: InputMaybe>>; + weight_config_idLIKE?: InputMaybe; + weight_config_idLT?: InputMaybe; + weight_config_idLTE?: InputMaybe; + weight_config_idNEQ?: InputMaybe; + weight_config_idNOTIN?: InputMaybe>>; + weight_config_idNOTLIKE?: InputMaybe; + weight_gram?: InputMaybe; + weight_gramEQ?: InputMaybe; + weight_gramGT?: InputMaybe; + weight_gramGTE?: InputMaybe; + weight_gramIN?: InputMaybe>>; + weight_gramLIKE?: InputMaybe; + weight_gramLT?: InputMaybe; + weight_gramLTE?: InputMaybe; + weight_gramNEQ?: InputMaybe; + weight_gramNOTIN?: InputMaybe>>; + weight_gramNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_WeightOrder = { direction: OrderDirection; - field: S0_Eternum_WeightOrderField; -}; - -export enum S0_Eternum_WeightOrderField { - EntityId = 'ENTITY_ID', - Value = 'VALUE' -} - -export type S0_Eternum_WeightWhereInput = { - entity_id?: InputMaybe; - entity_idEQ?: InputMaybe; - entity_idGT?: InputMaybe; - entity_idGTE?: InputMaybe; - entity_idIN?: InputMaybe>>; - entity_idLIKE?: InputMaybe; - entity_idLT?: InputMaybe; - entity_idLTE?: InputMaybe; - entity_idNEQ?: InputMaybe; - entity_idNOTIN?: InputMaybe>>; - entity_idNOTLIKE?: InputMaybe; - value?: InputMaybe; - valueEQ?: InputMaybe; - valueGT?: InputMaybe; - valueGTE?: InputMaybe; - valueIN?: InputMaybe>>; - valueLIKE?: InputMaybe; - valueLT?: InputMaybe; - valueLTE?: InputMaybe; - valueNEQ?: InputMaybe; - valueNOTIN?: InputMaybe>>; - valueNOTLIKE?: InputMaybe; -}; - -export type S0_Eternum_WorldConfigOrder = { + field: s1_eternum_WeightOrderField; +}; + +export enum s1_eternum_WeightOrderField { + EntityId = "ENTITY_ID", + Value = "VALUE", +} + +export type s1_eternum_WeightWhereInput = { + entity_id?: InputMaybe; + entity_idEQ?: InputMaybe; + entity_idGT?: InputMaybe; + entity_idGTE?: InputMaybe; + entity_idIN?: InputMaybe>>; + entity_idLIKE?: InputMaybe; + entity_idLT?: InputMaybe; + entity_idLTE?: InputMaybe; + entity_idNEQ?: InputMaybe; + entity_idNOTIN?: InputMaybe>>; + entity_idNOTLIKE?: InputMaybe; + value?: InputMaybe; + valueEQ?: InputMaybe; + valueGT?: InputMaybe; + valueGTE?: InputMaybe; + valueIN?: InputMaybe>>; + valueLIKE?: InputMaybe; + valueLT?: InputMaybe; + valueLTE?: InputMaybe; + valueNEQ?: InputMaybe; + valueNOTIN?: InputMaybe>>; + valueNOTLIKE?: InputMaybe; +}; + +export type s1_eternum_WorldConfigOrder = { direction: OrderDirection; - field: S0_Eternum_WorldConfigOrderField; -}; - -export enum S0_Eternum_WorldConfigOrderField { - AdminAddress = 'ADMIN_ADDRESS', - ConfigId = 'CONFIG_ID', - RealmL2Contract = 'REALM_L2_CONTRACT' -} - -export type S0_Eternum_WorldConfigWhereInput = { - admin_address?: InputMaybe; - admin_addressEQ?: InputMaybe; - admin_addressGT?: InputMaybe; - admin_addressGTE?: InputMaybe; - admin_addressIN?: InputMaybe>>; - admin_addressLIKE?: InputMaybe; - admin_addressLT?: InputMaybe; - admin_addressLTE?: InputMaybe; - admin_addressNEQ?: InputMaybe; - admin_addressNOTIN?: InputMaybe>>; - admin_addressNOTLIKE?: InputMaybe; - config_id?: InputMaybe; - config_idEQ?: InputMaybe; - config_idGT?: InputMaybe; - config_idGTE?: InputMaybe; - config_idIN?: InputMaybe>>; - config_idLIKE?: InputMaybe; - config_idLT?: InputMaybe; - config_idLTE?: InputMaybe; - config_idNEQ?: InputMaybe; - config_idNOTIN?: InputMaybe>>; - config_idNOTLIKE?: InputMaybe; - realm_l2_contract?: InputMaybe; - realm_l2_contractEQ?: InputMaybe; - realm_l2_contractGT?: InputMaybe; - realm_l2_contractGTE?: InputMaybe; - realm_l2_contractIN?: InputMaybe>>; - realm_l2_contractLIKE?: InputMaybe; - realm_l2_contractLT?: InputMaybe; - realm_l2_contractLTE?: InputMaybe; - realm_l2_contractNEQ?: InputMaybe; - realm_l2_contractNOTIN?: InputMaybe>>; - realm_l2_contractNOTLIKE?: InputMaybe; + field: s1_eternum_WorldConfigOrderField; +}; + +export enum s1_eternum_WorldConfigOrderField { + AdminAddress = "ADMIN_ADDRESS", + ConfigId = "CONFIG_ID", + RealmL2Contract = "REALM_L2_CONTRACT", +} + +export type s1_eternum_WorldConfigWhereInput = { + admin_address?: InputMaybe; + admin_addressEQ?: InputMaybe; + admin_addressGT?: InputMaybe; + admin_addressGTE?: InputMaybe; + admin_addressIN?: InputMaybe>>; + admin_addressLIKE?: InputMaybe; + admin_addressLT?: InputMaybe; + admin_addressLTE?: InputMaybe; + admin_addressNEQ?: InputMaybe; + admin_addressNOTIN?: InputMaybe>>; + admin_addressNOTLIKE?: InputMaybe; + config_id?: InputMaybe; + config_idEQ?: InputMaybe; + config_idGT?: InputMaybe; + config_idGTE?: InputMaybe; + config_idIN?: InputMaybe>>; + config_idLIKE?: InputMaybe; + config_idLT?: InputMaybe; + config_idLTE?: InputMaybe; + config_idNEQ?: InputMaybe; + config_idNOTIN?: InputMaybe>>; + config_idNOTLIKE?: InputMaybe; + realm_l2_contract?: InputMaybe; + realm_l2_contractEQ?: InputMaybe; + realm_l2_contractGT?: InputMaybe; + realm_l2_contractGTE?: InputMaybe; + realm_l2_contractIN?: InputMaybe>>; + realm_l2_contractLIKE?: InputMaybe; + realm_l2_contractLT?: InputMaybe; + realm_l2_contractLTE?: InputMaybe; + realm_l2_contractNEQ?: InputMaybe; + realm_l2_contractNOTIN?: InputMaybe>>; + realm_l2_contractNOTLIKE?: InputMaybe; }; export type GetCapacitySpeedConfigQueryVariables = Exact<{ - category: Scalars['Enum']['input']; - entityType: Scalars['u32']['input']; + category: Scalars["Enum"]["input"]; + entityType: Scalars["u32"]["input"]; }>; - -export type GetCapacitySpeedConfigQuery = { __typename?: 'World__Query', s0EternumCapacityConfigModels?: { __typename?: 's0_eternum_CapacityConfigConnection', edges?: Array<{ __typename?: 's0_eternum_CapacityConfigEdge', node?: { __typename?: 's0_eternum_CapacityConfig', weight_gram?: any | null } | null } | null> | null } | null, s0EternumSpeedConfigModels?: { __typename?: 's0_eternum_SpeedConfigConnection', edges?: Array<{ __typename?: 's0_eternum_SpeedConfigEdge', node?: { __typename?: 's0_eternum_SpeedConfig', sec_per_km?: any | null } | null } | null> | null } | null }; +export type GetCapacitySpeedConfigQuery = { + __typename?: "World__Query"; + s0EternumCapacityConfigModels?: { + __typename?: "s1_eternum_CapacityConfigConnection"; + edges?: Array<{ + __typename?: "s1_eternum_CapacityConfigEdge"; + node?: { __typename?: "s1_eternum_CapacityConfig"; weight_gram?: any | null } | null; + } | null> | null; + } | null; + s0EternumSpeedConfigModels?: { + __typename?: "s1_eternum_SpeedConfigConnection"; + edges?: Array<{ + __typename?: "s1_eternum_SpeedConfigEdge"; + node?: { __typename?: "s1_eternum_SpeedConfig"; sec_per_km?: any | null } | null; + } | null> | null; + } | null; +}; export type GetEternumOwnerRealmIdsQueryVariables = Exact<{ - accountAddress: Scalars['ContractAddress']['input']; + accountAddress: Scalars["ContractAddress"]["input"]; }>; - -export type GetEternumOwnerRealmIdsQuery = { __typename?: 'World__Query', s0EternumOwnerModels?: { __typename?: 's0_eternum_OwnerConnection', edges?: Array<{ __typename?: 's0_eternum_OwnerEdge', node?: { __typename?: 's0_eternum_Owner', address?: any | null, entity_id?: any | null, entity?: { __typename?: 'World__Entity', models?: Array<{ __typename: 's0_eternum_AcceptOrder' } | { __typename: 's0_eternum_AcceptPartialOrder' } | { __typename: 's0_eternum_AddressName' } | { __typename: 's0_eternum_Army' } | { __typename: 's0_eternum_ArrivalTime' } | { __typename: 's0_eternum_Bank' } | { __typename: 's0_eternum_BankConfig' } | { __typename: 's0_eternum_Battle' } | { __typename: 's0_eternum_BattleClaimData' } | { __typename: 's0_eternum_BattleConfig' } | { __typename: 's0_eternum_BattleJoinData' } | { __typename: 's0_eternum_BattleLeaveData' } | { __typename: 's0_eternum_BattlePillageData' } | { __typename: 's0_eternum_BattleStartData' } | { __typename: 's0_eternum_Building' } | { __typename: 's0_eternum_BuildingCategoryPopConfig' } | { __typename: 's0_eternum_BuildingConfig' } | { __typename: 's0_eternum_BuildingGeneralConfig' } | { __typename: 's0_eternum_BuildingQuantityv2' } | { __typename: 's0_eternum_BurnDonkey' } | { __typename: 's0_eternum_CancelOrder' } | { __typename: 's0_eternum_CapacityCategory' } | { __typename: 's0_eternum_CapacityConfig' } | { __typename: 's0_eternum_Contribution' } | { __typename: 's0_eternum_CreateGuild' } | { __typename: 's0_eternum_CreateOrder' } | { __typename: 's0_eternum_DetachedResource' } | { __typename: 's0_eternum_EntityName' } | { __typename: 's0_eternum_EntityOwner' } | { __typename: 's0_eternum_Epoch' } | { __typename: 's0_eternum_FragmentMineDiscovered' } | { __typename: 's0_eternum_GameEnded' } | { __typename: 's0_eternum_Guild' } | { __typename: 's0_eternum_GuildMember' } | { __typename: 's0_eternum_GuildWhitelist' } | { __typename: 's0_eternum_Health' } | { __typename: 's0_eternum_Hyperstructure' } | { __typename: 's0_eternum_HyperstructureCoOwnersChange' } | { __typename: 's0_eternum_HyperstructureConfig' } | { __typename: 's0_eternum_HyperstructureContribution' } | { __typename: 's0_eternum_HyperstructureFinished' } | { __typename: 's0_eternum_HyperstructureResourceConfig' } | { __typename: 's0_eternum_HyperstructureStarted' } | { __typename: 's0_eternum_JoinGuild' } | { __typename: 's0_eternum_Leaderboard' } | { __typename: 's0_eternum_LeaderboardEntry' } | { __typename: 's0_eternum_LeaderboardRegisterContribution' } | { __typename: 's0_eternum_LeaderboardRegisterShare' } | { __typename: 's0_eternum_LeaderboardRegistered' } | { __typename: 's0_eternum_LeaderboardRewardClaimed' } | { __typename: 's0_eternum_LevelingConfig' } | { __typename: 's0_eternum_Liquidity' } | { __typename: 's0_eternum_LiquidityEvent' } | { __typename: 's0_eternum_MapConfig' } | { __typename: 's0_eternum_MapExplored' } | { __typename: 's0_eternum_Market' } | { __typename: 's0_eternum_MercenariesConfig' } | { __typename: 's0_eternum_Message' } | { __typename: 's0_eternum_Movable' } | { __typename: 's0_eternum_Orders' } | { __typename: 's0_eternum_OwnedResourcesTracker' } | { __typename: 's0_eternum_Owner' } | { __typename: 's0_eternum_Population' } | { __typename: 's0_eternum_PopulationConfig' } | { __typename: 's0_eternum_Position' } | { __typename: 's0_eternum_Production' } | { __typename: 's0_eternum_ProductionConfig' } | { __typename: 's0_eternum_ProductionDeadline' } | { __typename: 's0_eternum_ProductionInput' } | { __typename: 's0_eternum_ProductionOutput' } | { __typename: 's0_eternum_Progress' } | { __typename: 's0_eternum_Protectee' } | { __typename: 's0_eternum_Protector' } | { __typename: 's0_eternum_Quantity' } | { __typename: 's0_eternum_QuantityTracker' } | { __typename: 's0_eternum_Quest' } | { __typename: 's0_eternum_QuestBonus' } | { __typename: 's0_eternum_QuestConfig' } | { __typename: 's0_eternum_QuestRewardConfig' } | { __typename: 's0_eternum_Realm', realm_id?: any | null } | { __typename: 's0_eternum_RealmLevelConfig' } | { __typename: 's0_eternum_RealmMaxLevelConfig' } | { __typename: 's0_eternum_Resource' } | { __typename: 's0_eternum_ResourceAllowance' } | { __typename: 's0_eternum_ResourceBridgeConfig' } | { __typename: 's0_eternum_ResourceBridgeFeeSplitConfig' } | { __typename: 's0_eternum_ResourceBridgeWhitelistConfig' } | { __typename: 's0_eternum_ResourceCost' } | { __typename: 's0_eternum_ResourceTransferLock' } | { __typename: 's0_eternum_Season' } | { __typename: 's0_eternum_SeasonAddressesConfig' } | { __typename: 's0_eternum_SeasonBridgeConfig' } | { __typename: 's0_eternum_SettleRealmData' } | { __typename: 's0_eternum_SettlementConfig' } | { __typename: 's0_eternum_SpeedConfig' } | { __typename: 's0_eternum_Stamina' } | { __typename: 's0_eternum_StaminaConfig' } | { __typename: 's0_eternum_StaminaRefillConfig' } | { __typename: 's0_eternum_Status' } | { __typename: 's0_eternum_Structure' } | { __typename: 's0_eternum_StructureCount' } | { __typename: 's0_eternum_SwapEvent' } | { __typename: 's0_eternum_TickConfig' } | { __typename: 's0_eternum_Tile' } | { __typename: 's0_eternum_Trade' } | { __typename: 's0_eternum_Transfer' } | { __typename: 's0_eternum_Travel' } | { __typename: 's0_eternum_TravelFoodCostConfig' } | { __typename: 's0_eternum_TravelStaminaCostConfig' } | { __typename: 's0_eternum_TroopConfig' } | { __typename: 's0_eternum_TrophyCreation' } | { __typename: 's0_eternum_TrophyProgression' } | { __typename: 's0_eternum_VRFConfig' } | { __typename: 's0_eternum_Weight' } | { __typename: 's0_eternum_WeightConfig' } | { __typename: 's0_eternum_WorldConfig' } | null> | null } | null } | null } | null> | null } | null }; +export type GetEternumOwnerRealmIdsQuery = { + __typename?: "World__Query"; + s0EternumOwnerModels?: { + __typename?: "s1_eternum_OwnerConnection"; + edges?: Array<{ + __typename?: "s1_eternum_OwnerEdge"; + node?: { + __typename?: "s1_eternum_Owner"; + address?: any | null; + entity_id?: any | null; + entity?: { + __typename?: "World__Entity"; + models?: Array< + | { __typename: "s1_eternum_AcceptOrder" } + | { __typename: "s1_eternum_AcceptPartialOrder" } + | { __typename: "s1_eternum_AddressName" } + | { __typename: "s1_eternum_Army" } + | { __typename: "s1_eternum_ArrivalTime" } + | { __typename: "s1_eternum_Bank" } + | { __typename: "s1_eternum_BankConfig" } + | { __typename: "s1_eternum_Battle" } + | { __typename: "s1_eternum_BattleClaimData" } + | { __typename: "s1_eternum_BattleConfig" } + | { __typename: "s1_eternum_BattleJoinData" } + | { __typename: "s1_eternum_BattleLeaveData" } + | { __typename: "s1_eternum_BattlePillageData" } + | { __typename: "s1_eternum_BattleStartData" } + | { __typename: "s1_eternum_Building" } + | { __typename: "s1_eternum_BuildingCategoryPopConfig" } + | { __typename: "s1_eternum_BuildingConfig" } + | { __typename: "s1_eternum_BuildingGeneralConfig" } + | { __typename: "s1_eternum_BuildingQuantityv2" } + | { __typename: "s1_eternum_BurnDonkey" } + | { __typename: "s1_eternum_CancelOrder" } + | { __typename: "s1_eternum_CapacityCategory" } + | { __typename: "s1_eternum_CapacityConfig" } + | { __typename: "s1_eternum_Contribution" } + | { __typename: "s1_eternum_CreateGuild" } + | { __typename: "s1_eternum_CreateOrder" } + | { __typename: "s1_eternum_DetachedResource" } + | { __typename: "s1_eternum_EntityName" } + | { __typename: "s1_eternum_EntityOwner" } + | { __typename: "s1_eternum_Epoch" } + | { __typename: "s1_eternum_FragmentMineDiscovered" } + | { __typename: "s1_eternum_GameEnded" } + | { __typename: "s1_eternum_Guild" } + | { __typename: "s1_eternum_GuildMember" } + | { __typename: "s1_eternum_GuildWhitelist" } + | { __typename: "s1_eternum_Health" } + | { __typename: "s1_eternum_Hyperstructure" } + | { __typename: "s1_eternum_HyperstructureCoOwnersChange" } + | { __typename: "s1_eternum_HyperstructureConfig" } + | { __typename: "s1_eternum_HyperstructureContribution" } + | { __typename: "s1_eternum_HyperstructureFinished" } + | { __typename: "s1_eternum_HyperstructureResourceConfig" } + | { __typename: "s1_eternum_HyperstructureStarted" } + | { __typename: "s1_eternum_JoinGuild" } + | { __typename: "s1_eternum_Leaderboard" } + | { __typename: "s1_eternum_LeaderboardEntry" } + | { __typename: "s1_eternum_LeaderboardRegisterContribution" } + | { __typename: "s1_eternum_LeaderboardRegisterShare" } + | { __typename: "s1_eternum_LeaderboardRegistered" } + | { __typename: "s1_eternum_LeaderboardRewardClaimed" } + | { __typename: "s1_eternum_LevelingConfig" } + | { __typename: "s1_eternum_Liquidity" } + | { __typename: "s1_eternum_LiquidityEvent" } + | { __typename: "s1_eternum_MapConfig" } + | { __typename: "s1_eternum_MapExplored" } + | { __typename: "s1_eternum_Market" } + | { __typename: "s1_eternum_MercenariesConfig" } + | { __typename: "s1_eternum_Message" } + | { __typename: "s1_eternum_Movable" } + | { __typename: "s1_eternum_Orders" } + | { __typename: "s1_eternum_OwnedResourcesTracker" } + | { __typename: "s1_eternum_Owner" } + | { __typename: "s1_eternum_Population" } + | { __typename: "s1_eternum_PopulationConfig" } + | { __typename: "s1_eternum_Position" } + | { __typename: "s1_eternum_Production" } + | { __typename: "s1_eternum_ProductionConfig" } + | { __typename: "s1_eternum_ProductionDeadline" } + | { __typename: "s1_eternum_ProductionInput" } + | { __typename: "s1_eternum_ProductionOutput" } + | { __typename: "s1_eternum_Progress" } + | { __typename: "s1_eternum_Protectee" } + | { __typename: "s1_eternum_Protector" } + | { __typename: "s1_eternum_Quantity" } + | { __typename: "s1_eternum_QuantityTracker" } + | { __typename: "s1_eternum_Quest" } + | { __typename: "s1_eternum_QuestConfig" } + | { __typename: "s1_eternum_QuestRewardConfig" } + | { __typename: "s1_eternum_Realm"; realm_id?: any | null } + | { __typename: "s1_eternum_RealmLevelConfig" } + | { __typename: "s1_eternum_RealmMaxLevelConfig" } + | { __typename: "s1_eternum_Resource" } + | { __typename: "s1_eternum_ResourceAllowance" } + | { __typename: "s1_eternum_ResourceBridgeConfig" } + | { __typename: "s1_eternum_ResourceBridgeFeeSplitConfig" } + | { __typename: "s1_eternum_ResourceBridgeWhitelistConfig" } + | { __typename: "s1_eternum_ResourceCost" } + | { __typename: "s1_eternum_ResourceTransferLock" } + | { __typename: "s1_eternum_Season" } + | { __typename: "s1_eternum_SeasonAddressesConfig" } + | { __typename: "s1_eternum_SeasonBridgeConfig" } + | { __typename: "s1_eternum_SettleRealmData" } + | { __typename: "s1_eternum_SettlementConfig" } + | { __typename: "s1_eternum_SpeedConfig" } + | { __typename: "s1_eternum_Stamina" } + | { __typename: "s1_eternum_StaminaConfig" } + | { __typename: "s1_eternum_StaminaRefillConfig" } + | { __typename: "s1_eternum_Status" } + | { __typename: "s1_eternum_Structure" } + | { __typename: "s1_eternum_StructureCount" } + | { __typename: "s1_eternum_SwapEvent" } + | { __typename: "s1_eternum_TickConfig" } + | { __typename: "s1_eternum_Tile" } + | { __typename: "s1_eternum_Trade" } + | { __typename: "s1_eternum_Transfer" } + | { __typename: "s1_eternum_Travel" } + | { __typename: "s1_eternum_TravelFoodCostConfig" } + | { __typename: "s1_eternum_TravelStaminaCostConfig" } + | { __typename: "s1_eternum_TroopConfig" } + | { __typename: "s1_eternum_TrophyCreation" } + | { __typename: "s1_eternum_TrophyProgression" } + | { __typename: "s1_eternum_VRFConfig" } + | { __typename: "s1_eternum_Weight" } + | { __typename: "s1_eternum_WeightConfig" } + | { __typename: "s1_eternum_WorldConfig" } + | null + > | null; + } | null; + } | null; + } | null> | null; + } | null; +}; export type GetEternumEntityOwnerQueryVariables = Exact<{ - entityOwnerIds: Array | Scalars['u32']['input']; + entityOwnerIds: Array | Scalars["u32"]["input"]; }>; - -export type GetEternumEntityOwnerQuery = { __typename?: 'World__Query', s0EternumEntityOwnerModels?: { __typename?: 's0_eternum_EntityOwnerConnection', edges?: Array<{ __typename?: 's0_eternum_EntityOwnerEdge', node?: { __typename?: 's0_eternum_EntityOwner', entity_id?: any | null, entity_owner_id?: any | null, entity?: { __typename?: 'World__Entity', models?: Array<{ __typename: 's0_eternum_AcceptOrder' } | { __typename: 's0_eternum_AcceptPartialOrder' } | { __typename: 's0_eternum_AddressName' } | { __typename: 's0_eternum_Army' } | { __typename: 's0_eternum_ArrivalTime', arrives_at?: any | null } | { __typename: 's0_eternum_Bank' } | { __typename: 's0_eternum_BankConfig' } | { __typename: 's0_eternum_Battle' } | { __typename: 's0_eternum_BattleClaimData' } | { __typename: 's0_eternum_BattleConfig' } | { __typename: 's0_eternum_BattleJoinData' } | { __typename: 's0_eternum_BattleLeaveData' } | { __typename: 's0_eternum_BattlePillageData' } | { __typename: 's0_eternum_BattleStartData' } | { __typename: 's0_eternum_Building' } | { __typename: 's0_eternum_BuildingCategoryPopConfig' } | { __typename: 's0_eternum_BuildingConfig' } | { __typename: 's0_eternum_BuildingGeneralConfig' } | { __typename: 's0_eternum_BuildingQuantityv2' } | { __typename: 's0_eternum_BurnDonkey' } | { __typename: 's0_eternum_CancelOrder' } | { __typename: 's0_eternum_CapacityCategory' } | { __typename: 's0_eternum_CapacityConfig' } | { __typename: 's0_eternum_Contribution' } | { __typename: 's0_eternum_CreateGuild' } | { __typename: 's0_eternum_CreateOrder' } | { __typename: 's0_eternum_DetachedResource' } | { __typename: 's0_eternum_EntityName' } | { __typename: 's0_eternum_EntityOwner' } | { __typename: 's0_eternum_Epoch' } | { __typename: 's0_eternum_FragmentMineDiscovered' } | { __typename: 's0_eternum_GameEnded' } | { __typename: 's0_eternum_Guild' } | { __typename: 's0_eternum_GuildMember' } | { __typename: 's0_eternum_GuildWhitelist' } | { __typename: 's0_eternum_Health' } | { __typename: 's0_eternum_Hyperstructure' } | { __typename: 's0_eternum_HyperstructureCoOwnersChange' } | { __typename: 's0_eternum_HyperstructureConfig' } | { __typename: 's0_eternum_HyperstructureContribution' } | { __typename: 's0_eternum_HyperstructureFinished' } | { __typename: 's0_eternum_HyperstructureResourceConfig' } | { __typename: 's0_eternum_HyperstructureStarted' } | { __typename: 's0_eternum_JoinGuild' } | { __typename: 's0_eternum_Leaderboard' } | { __typename: 's0_eternum_LeaderboardEntry' } | { __typename: 's0_eternum_LeaderboardRegisterContribution' } | { __typename: 's0_eternum_LeaderboardRegisterShare' } | { __typename: 's0_eternum_LeaderboardRegistered' } | { __typename: 's0_eternum_LeaderboardRewardClaimed' } | { __typename: 's0_eternum_LevelingConfig' } | { __typename: 's0_eternum_Liquidity' } | { __typename: 's0_eternum_LiquidityEvent' } | { __typename: 's0_eternum_MapConfig' } | { __typename: 's0_eternum_MapExplored' } | { __typename: 's0_eternum_Market' } | { __typename: 's0_eternum_MercenariesConfig' } | { __typename: 's0_eternum_Message' } | { __typename: 's0_eternum_Movable' } | { __typename: 's0_eternum_Orders' } | { __typename: 's0_eternum_OwnedResourcesTracker', resource_types?: any | null } | { __typename: 's0_eternum_Owner' } | { __typename: 's0_eternum_Population' } | { __typename: 's0_eternum_PopulationConfig' } | { __typename: 's0_eternum_Position', x?: any | null, y?: any | null } | { __typename: 's0_eternum_Production' } | { __typename: 's0_eternum_ProductionConfig' } | { __typename: 's0_eternum_ProductionDeadline' } | { __typename: 's0_eternum_ProductionInput' } | { __typename: 's0_eternum_ProductionOutput' } | { __typename: 's0_eternum_Progress' } | { __typename: 's0_eternum_Protectee' } | { __typename: 's0_eternum_Protector' } | { __typename: 's0_eternum_Quantity' } | { __typename: 's0_eternum_QuantityTracker' } | { __typename: 's0_eternum_Quest' } | { __typename: 's0_eternum_QuestBonus' } | { __typename: 's0_eternum_QuestConfig' } | { __typename: 's0_eternum_QuestRewardConfig' } | { __typename: 's0_eternum_Realm' } | { __typename: 's0_eternum_RealmLevelConfig' } | { __typename: 's0_eternum_RealmMaxLevelConfig' } | { __typename: 's0_eternum_Resource' } | { __typename: 's0_eternum_ResourceAllowance' } | { __typename: 's0_eternum_ResourceBridgeConfig' } | { __typename: 's0_eternum_ResourceBridgeFeeSplitConfig' } | { __typename: 's0_eternum_ResourceBridgeWhitelistConfig' } | { __typename: 's0_eternum_ResourceCost' } | { __typename: 's0_eternum_ResourceTransferLock' } | { __typename: 's0_eternum_Season' } | { __typename: 's0_eternum_SeasonAddressesConfig' } | { __typename: 's0_eternum_SeasonBridgeConfig' } | { __typename: 's0_eternum_SettleRealmData' } | { __typename: 's0_eternum_SettlementConfig' } | { __typename: 's0_eternum_SpeedConfig' } | { __typename: 's0_eternum_Stamina' } | { __typename: 's0_eternum_StaminaConfig' } | { __typename: 's0_eternum_StaminaRefillConfig' } | { __typename: 's0_eternum_Status' } | { __typename: 's0_eternum_Structure' } | { __typename: 's0_eternum_StructureCount' } | { __typename: 's0_eternum_SwapEvent' } | { __typename: 's0_eternum_TickConfig' } | { __typename: 's0_eternum_Tile' } | { __typename: 's0_eternum_Trade' } | { __typename: 's0_eternum_Transfer' } | { __typename: 's0_eternum_Travel' } | { __typename: 's0_eternum_TravelFoodCostConfig' } | { __typename: 's0_eternum_TravelStaminaCostConfig' } | { __typename: 's0_eternum_TroopConfig' } | { __typename: 's0_eternum_TrophyCreation' } | { __typename: 's0_eternum_TrophyProgression' } | { __typename: 's0_eternum_VRFConfig' } | { __typename: 's0_eternum_Weight', value?: any | null } | { __typename: 's0_eternum_WeightConfig' } | { __typename: 's0_eternum_WorldConfig' } | null> | null } | null } | null } | null> | null } | null }; +export type GetEternumEntityOwnerQuery = { + __typename?: "World__Query"; + s0EternumEntityOwnerModels?: { + __typename?: "s1_eternum_EntityOwnerConnection"; + edges?: Array<{ + __typename?: "s1_eternum_EntityOwnerEdge"; + node?: { + __typename?: "s1_eternum_EntityOwner"; + entity_id?: any | null; + entity_owner_id?: any | null; + entity?: { + __typename?: "World__Entity"; + models?: Array< + | { __typename: "s1_eternum_AcceptOrder" } + | { __typename: "s1_eternum_AcceptPartialOrder" } + | { __typename: "s1_eternum_AddressName" } + | { __typename: "s1_eternum_Army" } + | { __typename: "s1_eternum_ArrivalTime"; arrives_at?: any | null } + | { __typename: "s1_eternum_Bank" } + | { __typename: "s1_eternum_BankConfig" } + | { __typename: "s1_eternum_Battle" } + | { __typename: "s1_eternum_BattleClaimData" } + | { __typename: "s1_eternum_BattleConfig" } + | { __typename: "s1_eternum_BattleJoinData" } + | { __typename: "s1_eternum_BattleLeaveData" } + | { __typename: "s1_eternum_BattlePillageData" } + | { __typename: "s1_eternum_BattleStartData" } + | { __typename: "s1_eternum_Building" } + | { __typename: "s1_eternum_BuildingCategoryPopConfig" } + | { __typename: "s1_eternum_BuildingConfig" } + | { __typename: "s1_eternum_BuildingGeneralConfig" } + | { __typename: "s1_eternum_BuildingQuantityv2" } + | { __typename: "s1_eternum_BurnDonkey" } + | { __typename: "s1_eternum_CancelOrder" } + | { __typename: "s1_eternum_CapacityCategory" } + | { __typename: "s1_eternum_CapacityConfig" } + | { __typename: "s1_eternum_Contribution" } + | { __typename: "s1_eternum_CreateGuild" } + | { __typename: "s1_eternum_CreateOrder" } + | { __typename: "s1_eternum_DetachedResource" } + | { __typename: "s1_eternum_EntityName" } + | { __typename: "s1_eternum_EntityOwner" } + | { __typename: "s1_eternum_Epoch" } + | { __typename: "s1_eternum_FragmentMineDiscovered" } + | { __typename: "s1_eternum_GameEnded" } + | { __typename: "s1_eternum_Guild" } + | { __typename: "s1_eternum_GuildMember" } + | { __typename: "s1_eternum_GuildWhitelist" } + | { __typename: "s1_eternum_Health" } + | { __typename: "s1_eternum_Hyperstructure" } + | { __typename: "s1_eternum_HyperstructureCoOwnersChange" } + | { __typename: "s1_eternum_HyperstructureConfig" } + | { __typename: "s1_eternum_HyperstructureContribution" } + | { __typename: "s1_eternum_HyperstructureFinished" } + | { __typename: "s1_eternum_HyperstructureResourceConfig" } + | { __typename: "s1_eternum_HyperstructureStarted" } + | { __typename: "s1_eternum_JoinGuild" } + | { __typename: "s1_eternum_Leaderboard" } + | { __typename: "s1_eternum_LeaderboardEntry" } + | { __typename: "s1_eternum_LeaderboardRegisterContribution" } + | { __typename: "s1_eternum_LeaderboardRegisterShare" } + | { __typename: "s1_eternum_LeaderboardRegistered" } + | { __typename: "s1_eternum_LeaderboardRewardClaimed" } + | { __typename: "s1_eternum_LevelingConfig" } + | { __typename: "s1_eternum_Liquidity" } + | { __typename: "s1_eternum_LiquidityEvent" } + | { __typename: "s1_eternum_MapConfig" } + | { __typename: "s1_eternum_MapExplored" } + | { __typename: "s1_eternum_Market" } + | { __typename: "s1_eternum_MercenariesConfig" } + | { __typename: "s1_eternum_Message" } + | { __typename: "s1_eternum_Movable" } + | { __typename: "s1_eternum_Orders" } + | { __typename: "s1_eternum_OwnedResourcesTracker"; resource_types?: any | null } + | { __typename: "s1_eternum_Owner" } + | { __typename: "s1_eternum_Population" } + | { __typename: "s1_eternum_PopulationConfig" } + | { __typename: "s1_eternum_Position"; x?: any | null; y?: any | null } + | { __typename: "s1_eternum_Production" } + | { __typename: "s1_eternum_ProductionConfig" } + | { __typename: "s1_eternum_ProductionDeadline" } + | { __typename: "s1_eternum_ProductionInput" } + | { __typename: "s1_eternum_ProductionOutput" } + | { __typename: "s1_eternum_Progress" } + | { __typename: "s1_eternum_Protectee" } + | { __typename: "s1_eternum_Protector" } + | { __typename: "s1_eternum_Quantity" } + | { __typename: "s1_eternum_QuantityTracker" } + | { __typename: "s1_eternum_Quest" } + | { __typename: "s1_eternum_QuestConfig" } + | { __typename: "s1_eternum_QuestRewardConfig" } + | { __typename: "s1_eternum_Realm" } + | { __typename: "s1_eternum_RealmLevelConfig" } + | { __typename: "s1_eternum_RealmMaxLevelConfig" } + | { __typename: "s1_eternum_Resource" } + | { __typename: "s1_eternum_ResourceAllowance" } + | { __typename: "s1_eternum_ResourceBridgeConfig" } + | { __typename: "s1_eternum_ResourceBridgeFeeSplitConfig" } + | { __typename: "s1_eternum_ResourceBridgeWhitelistConfig" } + | { __typename: "s1_eternum_ResourceCost" } + | { __typename: "s1_eternum_ResourceTransferLock" } + | { __typename: "s1_eternum_Season" } + | { __typename: "s1_eternum_SeasonAddressesConfig" } + | { __typename: "s1_eternum_SeasonBridgeConfig" } + | { __typename: "s1_eternum_SettleRealmData" } + | { __typename: "s1_eternum_SettlementConfig" } + | { __typename: "s1_eternum_SpeedConfig" } + | { __typename: "s1_eternum_Stamina" } + | { __typename: "s1_eternum_StaminaConfig" } + | { __typename: "s1_eternum_StaminaRefillConfig" } + | { __typename: "s1_eternum_Status" } + | { __typename: "s1_eternum_Structure" } + | { __typename: "s1_eternum_StructureCount" } + | { __typename: "s1_eternum_SwapEvent" } + | { __typename: "s1_eternum_TickConfig" } + | { __typename: "s1_eternum_Tile" } + | { __typename: "s1_eternum_Trade" } + | { __typename: "s1_eternum_Transfer" } + | { __typename: "s1_eternum_Travel" } + | { __typename: "s1_eternum_TravelFoodCostConfig" } + | { __typename: "s1_eternum_TravelStaminaCostConfig" } + | { __typename: "s1_eternum_TroopConfig" } + | { __typename: "s1_eternum_TrophyCreation" } + | { __typename: "s1_eternum_TrophyProgression" } + | { __typename: "s1_eternum_VRFConfig" } + | { __typename: "s1_eternum_Weight"; value?: any | null } + | { __typename: "s1_eternum_WeightConfig" } + | { __typename: "s1_eternum_WorldConfig" } + | null + > | null; + } | null; + } | null; + } | null> | null; + } | null; +}; export type GetAccountTokensQueryVariables = Exact<{ - accountAddress: Scalars['String']['input']; -}>; - - -export type GetAccountTokensQuery = { __typename?: 'World__Query', tokenBalances?: { __typename?: 'Token__BalanceConnection', edges?: Array<{ __typename?: 'Token__BalanceEdge', node?: { __typename?: 'Token__Balance', tokenMetadata: { __typename: 'ERC20__Token' } | { __typename: 'ERC721__Token', tokenId: string, metadataDescription?: string | null, imagePath: string, contractAddress: string, metadata: string } } | null } | null> | null } | null }; - -export type GetErc721MintsQueryVariables = Exact<{ [key: string]: never; }>; - - -export type GetErc721MintsQuery = { __typename?: 'World__Query', tokenTransfers?: { __typename?: 'Token__TransferConnection', edges?: Array<{ __typename?: 'Token__TransferEdge', node?: { __typename?: 'Token__Transfer', tokenMetadata: { __typename: 'ERC20__Token' } | { __typename: 'ERC721__Token', tokenId: string, metadataDescription?: string | null, imagePath: string, contractAddress: string, metadata: string } } | null } | null> | null } | null }; - -export type EternumStatisticsQueryVariables = Exact<{ [key: string]: never; }>; - - -export type EternumStatisticsQuery = { __typename?: 'World__Query', s0EternumAddressNameModels?: { __typename?: 's0_eternum_AddressNameConnection', totalCount: number } | null, s0EternumHyperstructureModels?: { __typename?: 's0_eternum_HyperstructureConnection', totalCount: number } | null, s0EternumRealmModels?: { __typename?: 's0_eternum_RealmConnection', totalCount: number } | null, s0EternumFragmentMineDiscoveredModels?: { __typename?: 's0_eternum_FragmentMineDiscoveredConnection', totalCount: number } | null }; - -export type HasGameEndedQueryVariables = Exact<{ [key: string]: never; }>; - - -export type HasGameEndedQuery = { __typename?: 'World__Query', s0EternumGameEndedModels?: { __typename?: 's0_eternum_GameEndedConnection', edges?: Array<{ __typename?: 's0_eternum_GameEndedEdge', node?: { __typename?: 's0_eternum_GameEnded', winner_address?: any | null } | null } | null> | null } | null }; - -export type HasPlayerRegisteredQueryVariables = Exact<{ - accountAddress: Scalars['ContractAddress']['input']; -}>; - - -export type HasPlayerRegisteredQuery = { __typename?: 'World__Query', s0EternumOwnerModels?: { __typename?: 's0_eternum_OwnerConnection', totalCount: number } | null }; - -export type HasPlayerClaimedQueryVariables = Exact<{ - accountAddress: Scalars['ContractAddress']['input']; + accountAddress: Scalars["String"]["input"]; }>; - -export type HasPlayerClaimedQuery = { __typename?: 'World__Query', s0EternumLeaderboardRewardClaimedModels?: { __typename?: 's0_eternum_LeaderboardRewardClaimedConnection', totalCount: number } | null }; +export type GetAccountTokensQuery = { + __typename?: "World__Query"; + tokenBalances?: { + __typename?: "Token__BalanceConnection"; + edges?: Array<{ + __typename?: "Token__BalanceEdge"; + node?: { + __typename?: "Token__Balance"; + tokenMetadata: + | { __typename: "ERC20__Token" } + | { + __typename: "ERC721__Token"; + tokenId: string; + metadataDescription?: string | null; + imagePath: string; + contractAddress: string; + metadata: string; + }; + } | null; + } | null> | null; + } | null; +}; + +export type GetErc721MintsQueryVariables = Exact<{ [key: string]: never }>; + +export type GetErc721MintsQuery = { + __typename?: "World__Query"; + tokenTransfers?: { + __typename?: "Token__TransferConnection"; + edges?: Array<{ + __typename?: "Token__TransferEdge"; + node?: { + __typename?: "Token__Transfer"; + tokenMetadata: + | { __typename: "ERC20__Token" } + | { + __typename: "ERC721__Token"; + tokenId: string; + metadataDescription?: string | null; + imagePath: string; + contractAddress: string; + metadata: string; + }; + } | null; + } | null> | null; + } | null; +}; + +export type EternumStatisticsQueryVariables = Exact<{ [key: string]: never }>; + +export type EternumStatisticsQuery = { + __typename?: "World__Query"; + s0EternumAddressNameModels?: { __typename?: "s1_eternum_AddressNameConnection"; totalCount: number } | null; + s0EternumHyperstructureModels?: { __typename?: "s1_eternum_HyperstructureConnection"; totalCount: number } | null; + s0EternumRealmModels?: { __typename?: "s1_eternum_RealmConnection"; totalCount: number } | null; + s0EternumFragmentMineDiscoveredModels?: { + __typename?: "s1_eternum_FragmentMineDiscoveredConnection"; + totalCount: number; + } | null; +}; + +export type HasGameEndedQueryVariables = Exact<{ [key: string]: never }>; + +export type HasGameEndedQuery = { + __typename?: "World__Query"; + s0EternumGameEndedModels?: { + __typename?: "s1_eternum_GameEndedConnection"; + edges?: Array<{ + __typename?: "s1_eternum_GameEndedEdge"; + node?: { __typename?: "s1_eternum_GameEnded"; winner_address?: any | null } | null; + } | null> | null; + } | null; +}; export type GetLeaderboardEntryQueryVariables = Exact<{ - accountAddress: Scalars['ContractAddress']['input']; + accountAddress: Scalars["ContractAddress"]["input"]; }>; - -export type GetLeaderboardEntryQuery = { __typename?: 'World__Query', s0EternumLeaderboardEntryModels?: { __typename?: 's0_eternum_LeaderboardEntryConnection', edges?: Array<{ __typename?: 's0_eternum_LeaderboardEntryEdge', node?: { __typename?: 's0_eternum_LeaderboardEntry', address?: any | null, points?: any | null } | null } | null> | null } | null }; - -export type GetLeaderboardQueryVariables = Exact<{ [key: string]: never; }>; - - -export type GetLeaderboardQuery = { __typename?: 'World__Query', s0EternumLeaderboardModels?: { __typename?: 's0_eternum_LeaderboardConnection', edges?: Array<{ __typename?: 's0_eternum_LeaderboardEdge', node?: { __typename?: 's0_eternum_Leaderboard', total_points?: any | null, registration_end_timestamp?: any | null, distribution_started?: any | null, total_price_pool?: { __typename?: 's0_eternum_Optionu256', Some?: any | null, option?: any | null } | null } | null } | null> | null } | null }; +export type GetLeaderboardEntryQuery = { + __typename?: "World__Query"; + s0EternumLeaderboardEntryModels?: { + __typename?: "s1_eternum_LeaderboardEntryConnection"; + edges?: Array<{ + __typename?: "s1_eternum_LeaderboardEntryEdge"; + node?: { __typename?: "s1_eternum_LeaderboardEntry"; address?: any | null; points?: any | null } | null; + } | null> | null; + } | null; +}; + +export type GetLeaderboardQueryVariables = Exact<{ [key: string]: never }>; + +export type GetLeaderboardQuery = { + __typename?: "World__Query"; + s0EternumLeaderboardModels?: { + __typename?: "s1_eternum_LeaderboardConnection"; + edges?: Array<{ + __typename?: "s1_eternum_LeaderboardEdge"; + node?: { + __typename?: "s1_eternum_Leaderboard"; + total_points?: any | null; + registration_end_timestamp?: any | null; + distribution_started?: any | null; + total_price_pool?: { __typename?: "s1_eternum_Optionu256"; Some?: any | null; option?: any | null } | null; + } | null; + } | null> | null; + } | null; +}; export type GetHyperstructureContributionsQueryVariables = Exact<{ - accountAddress: Scalars['ContractAddress']['input']; + accountAddress: Scalars["ContractAddress"]["input"]; }>; - -export type GetHyperstructureContributionsQuery = { __typename?: 'World__Query', s0EternumContributionModels?: { __typename?: 's0_eternum_ContributionConnection', edges?: Array<{ __typename?: 's0_eternum_ContributionEdge', node?: { __typename?: 's0_eternum_Contribution', hyperstructure_entity_id?: any | null, amount?: any | null } | null } | null> | null } | null }; - -export type GetEpochsQueryVariables = Exact<{ [key: string]: never; }>; - - -export type GetEpochsQuery = { __typename?: 'World__Query', s0EternumEpochModels?: { __typename?: 's0_eternum_EpochConnection', edges?: Array<{ __typename?: 's0_eternum_EpochEdge', node?: { __typename?: 's0_eternum_Epoch', start_timestamp?: any | null, hyperstructure_entity_id?: any | null, index?: any | null, owners?: Array<{ __typename?: 's0_eternum_ContractAddressu16', _0?: any | null, _1?: any | null } | null> | null } | null } | null> | null } | null }; +export type GetHyperstructureContributionsQuery = { + __typename?: "World__Query"; + s0EternumContributionModels?: { + __typename?: "s1_eternum_ContributionConnection"; + edges?: Array<{ + __typename?: "s1_eternum_ContributionEdge"; + node?: { + __typename?: "s1_eternum_Contribution"; + hyperstructure_entity_id?: any | null; + amount?: any | null; + } | null; + } | null> | null; + } | null; +}; + +export type GetEpochsQueryVariables = Exact<{ [key: string]: never }>; + +export type GetEpochsQuery = { + __typename?: "World__Query"; + s0EternumEpochModels?: { + __typename?: "s1_eternum_EpochConnection"; + edges?: Array<{ + __typename?: "s1_eternum_EpochEdge"; + node?: { + __typename?: "s1_eternum_Epoch"; + start_timestamp?: any | null; + hyperstructure_entity_id?: any | null; + index?: any | null; + owners?: Array<{ + __typename?: "s1_eternum_ContractAddressu16"; + _0?: any | null; + _1?: any | null; + } | null> | null; + } | null; + } | null> | null; + } | null; +}; export type GetEntityPositionQueryVariables = Exact<{ - entityIds: Array | Scalars['u32']['input']; + entityIds: Array | Scalars["u32"]["input"]; }>; - -export type GetEntityPositionQuery = { __typename?: 'World__Query', s0EternumPositionModels?: { __typename?: 's0_eternum_PositionConnection', edges?: Array<{ __typename?: 's0_eternum_PositionEdge', node?: { __typename?: 's0_eternum_Position', x?: any | null, y?: any | null, entity_id?: any | null, entity?: { __typename: 'World__Entity' } | null } | null } | null> | null } | null }; +export type GetEntityPositionQuery = { + __typename?: "World__Query"; + s0EternumPositionModels?: { + __typename?: "s1_eternum_PositionConnection"; + edges?: Array<{ + __typename?: "s1_eternum_PositionEdge"; + node?: { + __typename?: "s1_eternum_Position"; + x?: any | null; + y?: any | null; + entity_id?: any | null; + entity?: { __typename: "World__Entity" } | null; + } | null; + } | null> | null; + } | null; +}; export type GetEntitiesResourcesQueryVariables = Exact<{ - entityIds: Array | Scalars['u32']['input']; + entityIds: Array | Scalars["u32"]["input"]; }>; - -export type GetEntitiesResourcesQuery = { __typename?: 'World__Query', s0EternumResourceModels?: { __typename?: 's0_eternum_ResourceConnection', edges?: Array<{ __typename?: 's0_eternum_ResourceEdge', node?: { __typename?: 's0_eternum_Resource', entity_id?: any | null, resource_type?: any | null, balance?: any | null, entity?: { __typename: 'World__Entity' } | null } | null } | null> | null } | null }; +export type GetEntitiesResourcesQuery = { + __typename?: "World__Query"; + s0EternumResourceModels?: { + __typename?: "s1_eternum_ResourceConnection"; + edges?: Array<{ + __typename?: "s1_eternum_ResourceEdge"; + node?: { + __typename?: "s1_eternum_Resource"; + entity_id?: any | null; + resource_type?: any | null; + balance?: any | null; + entity?: { __typename: "World__Entity" } | null; + } | null; + } | null> | null; + } | null; +}; export class TypedDocumentString extends String implements DocumentTypeDecoration { - __apiType?: DocumentTypeDecoration['__apiType']; + __apiType?: DocumentTypeDecoration["__apiType"]; - constructor(private value: string, public __meta__?: Record | undefined) { + constructor( + private value: string, + public __meta__?: Record | undefined, + ) { super(value); } @@ -7403,7 +7716,7 @@ export const GetEternumOwnerRealmIdsDocument = new TypedDocumentString(` entity { models { __typename - ... on s0_eternum_Realm { + ... on s1_eternum_Realm { realm_id } } @@ -7426,17 +7739,17 @@ export const GetEternumEntityOwnerDocument = new TypedDocumentString(` entity { models { __typename - ... on s0_eternum_OwnedResourcesTracker { + ... on s1_eternum_OwnedResourcesTracker { resource_types } - ... on s0_eternum_Position { + ... on s1_eternum_Position { x y } - ... on s0_eternum_ArrivalTime { + ... on s1_eternum_ArrivalTime { arrives_at } - ... on s0_eternum_Weight { + ... on s1_eternum_Weight { value } } @@ -7513,20 +7826,6 @@ export const HasGameEndedDocument = new TypedDocumentString(` } } `) as unknown as TypedDocumentString; -export const HasPlayerRegisteredDocument = new TypedDocumentString(` - query hasPlayerRegistered($accountAddress: ContractAddress!) { - s0EternumOwnerModels(where: {address: $accountAddress}) { - totalCount - } -} - `) as unknown as TypedDocumentString; -export const HasPlayerClaimedDocument = new TypedDocumentString(` - query hasPlayerClaimed($accountAddress: ContractAddress!) { - s0EternumLeaderboardRewardClaimedModels(where: {address: $accountAddress}) { - totalCount - } -} - `) as unknown as TypedDocumentString; export const GetLeaderboardEntryDocument = new TypedDocumentString(` query getLeaderboardEntry($accountAddress: ContractAddress!) { s0EternumLeaderboardEntryModels(where: {address: $accountAddress}) { @@ -7570,7 +7869,10 @@ export const GetHyperstructureContributionsDocument = new TypedDocumentString(` } } } - `) as unknown as TypedDocumentString; + `) as unknown as TypedDocumentString< + GetHyperstructureContributionsQuery, + GetHyperstructureContributionsQueryVariables +>; export const GetEpochsDocument = new TypedDocumentString(` query getEpochs { s0EternumEpochModels(limit: 1000) { @@ -7619,4 +7921,4 @@ export const GetEntitiesResourcesDocument = new TypedDocumentString(` } } } - `) as unknown as TypedDocumentString; \ No newline at end of file + `) as unknown as TypedDocumentString; diff --git a/client/apps/landing/src/hooks/gql/index.ts b/client/apps/landing/src/hooks/gql/index.ts index f51599168f..0ea4a91cf8 100644 --- a/client/apps/landing/src/hooks/gql/index.ts +++ b/client/apps/landing/src/hooks/gql/index.ts @@ -1,2 +1,2 @@ export * from "./fragment-masking"; -export * from "./gql"; \ No newline at end of file +export * from "./gql"; diff --git a/client/apps/landing/src/hooks/helpers/use-contributions.tsx b/client/apps/landing/src/hooks/helpers/use-contributions.tsx deleted file mode 100644 index e6f4d66d3d..0000000000 --- a/client/apps/landing/src/hooks/helpers/use-contributions.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { divideByPrecision } from "@/components/ui/utils/utils"; -import { ClientComponents } from "@/dojo/createClientComponents"; -import { configManager } from "@/dojo/setup"; -import { ContractAddress, ID, Resource } from "@bibliothecadao/eternum"; -import { useEntityQuery } from "@dojoengine/react"; -import { ComponentValue, HasValue, getComponentValue, runQuery } from "@dojoengine/recs"; -import { useCallback } from "react"; -import { useDojo } from "../context/DojoContext"; - -export const useContributions = () => { - const { - setup: { - components: { Contribution }, - }, - } = useDojo(); - - const getContributions = (hyperstructureEntityId: ID) => { - const contributionsToHyperstructure = Array.from( - runQuery([HasValue(Contribution, { hyperstructure_entity_id: hyperstructureEntityId })]), - ).map((id) => getComponentValue(Contribution, id)); - - return contributionsToHyperstructure as ComponentValue[]; - }; - - const useContributionsByPlayerAddress = (playerAddress: ContractAddress, hyperstructureEntityId: ID) => { - const contributionsToHyperstructure = useEntityQuery([ - HasValue(Contribution, { hyperstructure_entity_id: hyperstructureEntityId, player_address: playerAddress }), - ]) - .map((id) => getComponentValue(Contribution, id)) - .filter((x): x is ComponentValue => x !== undefined); - - return contributionsToHyperstructure; - }; - - const getContributionsTotalPercentage = (hyperstructureId: number, contributions: Resource[]) => { - const totalPlayerContribution = divideByPrecision( - contributions.reduce((acc, { amount, resourceId }) => { - return acc + amount * configManager.getResourceRarity(resourceId); - }, 0), - ); - - const totalHyperstructureContribution = configManager.getHyperstructureTotalContributableAmount(hyperstructureId); - - return totalPlayerContribution / totalHyperstructureContribution; - }; - - return { - getContributions, - useContributionsByPlayerAddress, - getContributionsTotalPercentage, - }; -}; - -export const useGetHyperstructuresWithContributionsFromPlayer = () => { - const { - account: { account }, - setup: { - components: { Contribution }, - }, - } = useDojo(); - - const getContributions = useCallback(() => { - const entityIds = runQuery([HasValue(Contribution, { player_address: ContractAddress(account.address) })]); - const hyperstructureEntityIds = Array.from(entityIds).map( - (entityId) => getComponentValue(Contribution, entityId)?.hyperstructure_entity_id ?? 0, - ); - return new Set(hyperstructureEntityIds); - }, [account?.address]); - - return getContributions; -}; diff --git a/client/apps/landing/src/hooks/helpers/useDonkeyArrivals.tsx b/client/apps/landing/src/hooks/helpers/useDonkeyArrivals.tsx index 735fddf9b4..64ba50424b 100644 --- a/client/apps/landing/src/hooks/helpers/useDonkeyArrivals.tsx +++ b/client/apps/landing/src/hooks/helpers/useDonkeyArrivals.tsx @@ -39,7 +39,6 @@ export function useDonkeyArrivals(realmEntityIds: ID[]) { return batches; }, [realmEntityIds]); - const donkeyQueriesResults = useQueries({ queries: batchedRealmIds.map((realmIds) => ({ queryKey: ["donkeyEntityIds", realmIds], @@ -74,9 +73,9 @@ export function useDonkeyArrivals(realmEntityIds: ID[]) { if (!donkeyEntities?.s0EternumEntityOwnerModels?.edges || !bankPosition) return []; return donkeyEntities.s0EternumEntityOwnerModels.edges.filter((edge) => { - const position = edge?.node?.entity?.models?.find((model) => model?.__typename === "s0_eternum_Position"); + const position = edge?.node?.entity?.models?.find((model) => model?.__typename === "s1_eternum_Position"); const resource = edge?.node?.entity?.models?.find( - (model) => model?.__typename === "s0_eternum_OwnedResourcesTracker", + (model) => model?.__typename === "s1_eternum_OwnedResourcesTracker", ); return Boolean( @@ -103,7 +102,7 @@ export function useDonkeyArrivals(realmEntityIds: ID[]) { ) => { const donkeyEntityId = donkeyEntity?.node?.entity_id; const donkeyArrivalTime = donkeyEntity?.node?.entity?.models?.find( - (model) => model?.__typename === "s0_eternum_ArrivalTime", + (model) => model?.__typename === "s1_eternum_ArrivalTime", )?.arrives_at; const donkeyResourceBalances = diff --git a/client/apps/landing/src/hooks/helpers/useEntities.tsx b/client/apps/landing/src/hooks/helpers/useEntities.tsx index df7543947a..2de832f842 100644 --- a/client/apps/landing/src/hooks/helpers/useEntities.tsx +++ b/client/apps/landing/src/hooks/helpers/useEntities.tsx @@ -5,17 +5,17 @@ import { execute } from "../gql/execute"; import { GET_ETERNUM_OWNER_REALM_IDS } from "../query/entities"; import { useRealm } from "./useRealms"; -export interface S0EternumRealm { - __typename: "s0_eternum_Realm"; +interface S0EternumRealm { + __typename: "s1_eternum_Realm"; realm_id: number; } -export function isS0EternumRealm(model: any): model is S0EternumRealm { - return model?.__typename === "s0_eternum_Realm"; +function isS0EternumRealm(model: any): model is S0EternumRealm { + return model?.__typename === "s1_eternum_Realm"; } -export function isS0EternumStructure(model: any) { - return model?.__typename === "s0_eternum_Structure"; +function isS0EternumStructure(model: any) { + return model?.__typename === "s1_eternum_Structure"; } export const useEntities = () => { diff --git a/client/apps/landing/src/hooks/helpers/useResources.tsx b/client/apps/landing/src/hooks/helpers/useResources.tsx index a5fddc3663..db9148fda1 100644 --- a/client/apps/landing/src/hooks/helpers/useResources.tsx +++ b/client/apps/landing/src/hooks/helpers/useResources.tsx @@ -8,18 +8,19 @@ import { GET_ENTITIES_RESOURCES } from "../query/resources"; export function useResourceBalance({ entityId, resourceId }: { entityId?: ID; resourceId?: ResourcesIds }) { const { data, isLoading, error } = useQuery({ queryKey: ["entityResources", entityId], - queryFn: () => - entityId ? execute(GET_ENTITIES_RESOURCES, { entityIds: [entityId] }) : null, + queryFn: () => (entityId ? execute(GET_ENTITIES_RESOURCES, { entityIds: [entityId] }) : null), refetchInterval: 10_000, staleTime: 5_000, }); - const getBalance = useMemo(() => (resourceId: ResourcesIds) => { - return data?.s0EternumResourceModels?.edges?.find( - (r) => r?.node?.resource_type === resourceId - )?.node?.balance ?? 0; - }, [data]); + const getBalance = useMemo( + () => (resourceId: ResourcesIds) => { + return ( + data?.s0EternumResourceModels?.edges?.find((r) => r?.node?.resource_type === resourceId)?.node?.balance ?? 0 + ); + }, + [data], + ); return { data: data?.s0EternumResourceModels?.edges, isLoading, error, getBalance }; } - diff --git a/client/apps/landing/src/hooks/query/capacityConfig.tsx b/client/apps/landing/src/hooks/query/capacityConfig.tsx index 37a17048c2..b2faa1901e 100644 --- a/client/apps/landing/src/hooks/query/capacityConfig.tsx +++ b/client/apps/landing/src/hooks/query/capacityConfig.tsx @@ -1,20 +1,20 @@ import { graphql } from "../gql"; - + export const GET_CAPACITY_SPEED_CONFIG = graphql(` query getCapacitySpeedConfig($category: Enum!, $entityType: u32!) { - s0EternumCapacityConfigModels(where: {category: $category }) { - edges{ - node { - weight_gram - } + s0EternumCapacityConfigModels(where: { category: $category }) { + edges { + node { + weight_gram } } - s0EternumSpeedConfigModels(where: {entity_type: $entityType }) { - edges{ - node { - sec_per_km - } + } + s0EternumSpeedConfigModels(where: { entity_type: $entityType }) { + edges { + node { + sec_per_km } } + } } `); diff --git a/client/apps/landing/src/hooks/query/entities.tsx b/client/apps/landing/src/hooks/query/entities.tsx index 777aa346a7..9b0d0ff624 100644 --- a/client/apps/landing/src/hooks/query/entities.tsx +++ b/client/apps/landing/src/hooks/query/entities.tsx @@ -10,7 +10,7 @@ export const GET_ETERNUM_OWNER_REALM_IDS = graphql(` entity { models { __typename - ... on s0_eternum_Realm { + ... on s1_eternum_Realm { realm_id } } diff --git a/client/apps/landing/src/hooks/query/entityOwners.tsx b/client/apps/landing/src/hooks/query/entityOwners.tsx index 70b2410fbb..56f7e8f2eb 100644 --- a/client/apps/landing/src/hooks/query/entityOwners.tsx +++ b/client/apps/landing/src/hooks/query/entityOwners.tsx @@ -2,7 +2,7 @@ import { graphql } from "../gql"; export const GET_ETERNUM_ENTITY_OWNERS = graphql(` query getEternumEntityOwner($entityOwnerIds: [u32!]!) { - s0EternumEntityOwnerModels(where: { entity_owner_idIN: $entityOwnerIds}, limit: 10000) { + s0EternumEntityOwnerModels(where: { entity_owner_idIN: $entityOwnerIds }, limit: 10000) { edges { node { entity_id @@ -10,17 +10,17 @@ export const GET_ETERNUM_ENTITY_OWNERS = graphql(` entity { models { __typename - ... on s0_eternum_OwnedResourcesTracker { + ... on s1_eternum_OwnedResourcesTracker { resource_types } - ... on s0_eternum_Position { + ... on s1_eternum_Position { x y } - ... on s0_eternum_ArrivalTime { + ... on s1_eternum_ArrivalTime { arrives_at } - ... on s0_eternum_Weight { + ... on s1_eternum_Weight { value } } diff --git a/client/apps/landing/src/hooks/query/leaderboard.tsx b/client/apps/landing/src/hooks/query/leaderboard.tsx index a44d64aa99..5578960b71 100644 --- a/client/apps/landing/src/hooks/query/leaderboard.tsx +++ b/client/apps/landing/src/hooks/query/leaderboard.tsx @@ -12,22 +12,6 @@ export const GET_GAME_WINNER = graphql(` } `); -export const GET_PLAYER_HAS_REGISTRED = graphql(` - query hasPlayerRegistered($accountAddress: ContractAddress!) { - s0EternumOwnerModels(where: { address: $accountAddress }) { - totalCount - } - } -`); - -export const GET_PLAYER_HAS_CLAIMED = graphql(` - query hasPlayerClaimed($accountAddress: ContractAddress!) { - s0EternumLeaderboardRewardClaimedModels(where: { address: $accountAddress }) { - totalCount - } - } -`); - export const GET_LEADERBOARD_ENTRY = graphql(` query getLeaderboardEntry($accountAddress: ContractAddress!) { s0EternumLeaderboardEntryModels(where: { address: $accountAddress }) { diff --git a/client/apps/landing/src/hooks/query/players.tsx b/client/apps/landing/src/hooks/query/players.tsx deleted file mode 100644 index cfa7c2b0c9..0000000000 --- a/client/apps/landing/src/hooks/query/players.tsx +++ /dev/null @@ -1,8 +0,0 @@ -/* Not currently in World Contract*/ -/*export const GET_USERS = graphql(` - query totalPlayers { - eternumOwnerModels { - totalCount - } - } -`);*/ diff --git a/client/apps/landing/src/hooks/use-entities-utils.tsx b/client/apps/landing/src/hooks/use-entities-utils.tsx deleted file mode 100644 index 23b0f22768..0000000000 --- a/client/apps/landing/src/hooks/use-entities-utils.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { ID, StructureType } from "@bibliothecadao/eternum"; -import { getComponentValue } from "@dojoengine/recs"; -import { getEntityIdFromKeys } from "@dojoengine/utils"; -import { shortString } from "starknet"; -import { useDojo } from "./context/DojoContext"; - -export const useEntitiesUtils = () => { - const { - setup: { - components: { EntityName, Structure }, - }, - } = useDojo(); - - const getEntityName = (entityId: ID, abbreviate: boolean = false) => { - const entityName = getComponentValue(EntityName, getEntityIdFromKeys([BigInt(entityId)])); - const structure = getComponentValue(Structure, getEntityIdFromKeys([BigInt(entityId)])); - - if (structure?.category === StructureType[StructureType.Realm]) { - // if realm is needed at some point we can add it here - return "realm"; - } else if (entityName) { - return shortString.decodeShortString(entityName.name.toString()); - } else { - if (abbreviate) { - if (structure?.category === StructureType[StructureType.FragmentMine]) { - return `FM ${structure.entity_id}`; - } else if (structure?.category === StructureType[StructureType.Hyperstructure]) { - return `HS ${structure.entity_id}`; - } else if (structure?.category === StructureType[StructureType.Bank]) { - return `BK ${structure.entity_id}`; - } - } - return `${structure?.category} ${structure?.entity_id}`; - } - }; - - return { getEntityName }; -}; diff --git a/client/apps/landing/src/hooks/use-get-all-players.tsx b/client/apps/landing/src/hooks/use-get-all-players.tsx deleted file mode 100644 index dfbfa536d3..0000000000 --- a/client/apps/landing/src/hooks/use-get-all-players.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import { LeaderboardManager } from "@/dojo/modelManager/leaderboard/LeaderboardManager"; -import { calculateLordsShare, calculatePlayerSharePercentage } from "@/utils/leaderboard"; -import { Player, StructureType } from "@bibliothecadao/eternum"; -import { getComponentValue, Has, HasValue, runQuery } from "@dojoengine/recs"; -import { shortString } from "starknet"; -import { formatEther } from "viem"; -import { useDojo } from "./context/DojoContext"; -import { useEntitiesUtils } from "./use-entities-utils"; -import { usePrizePool } from "./use-rewards"; - -export const useGetAllPlayers = () => { - const dojo = useDojo(); - const { - setup: { - components: { Realm, Owner, GuildMember, AddressName, Hyperstructure, Structure }, - }, - } = dojo; - - const nextBlockTimestamp = Math.floor(Date.now() / 1000); - - const { getEntityName } = useEntitiesUtils(); - - const prizePool = usePrizePool(); - - const playerEntities = runQuery([Has(AddressName)]); - const playersByRank = LeaderboardManager.instance(dojo).getPlayersByRank(nextBlockTimestamp || 0); - - const totalPoints = playersByRank.reduce((sum, [, points]) => sum + points, 0); - - const getPlayers = (): Player[] => { - const players = Array.from(Array.from(playerEntities)) - .map((id) => { - const addressName = getComponentValue(AddressName, id); - if (!addressName) return; - - const isAlive = !!runQuery([HasValue(Owner, { address: addressName.address })]).size; - - const guildMember = getComponentValue(GuildMember, id); - const guildName = guildMember ? getEntityName(guildMember.guild_entity_id) : ""; - - return { - address: addressName.address, - addressName: shortString.decodeShortString(addressName.name.toString()), - isAlive, - guildName, - }; - }) - .filter((player) => player !== undefined); - - let unrankedCount = 0; - - return players.map((player) => { - const rankIndex = playersByRank.findIndex(([address]) => address === player.address); - if (rankIndex === -1) unrankedCount++; - - const points = rankIndex === -1 ? 0 : playersByRank[rankIndex][1]; - - return { - name: player.addressName, - address: player.address, - points, - rank: rankIndex === -1 ? Number.MAX_SAFE_INTEGER : rankIndex + 1, - percentage: calculatePlayerSharePercentage(points, totalPoints), - lords: calculateLordsShare(points, totalPoints, Number(formatEther(prizePool))), - realms: runQuery([Has(Realm), HasValue(Owner, { address: player.address })]).size, - mines: runQuery([ - HasValue(Structure, { category: StructureType[StructureType.FragmentMine] }), - HasValue(Owner, { address: player.address }), - ]).size, - hyperstructures: runQuery([Has(Hyperstructure), HasValue(Owner, { address: player.address })]).size, - isAlive: player.isAlive, - guildName: player.guildName, - }; - }); - }; - - return getPlayers; -}; diff --git a/client/apps/landing/src/hooks/use-lords-bridged.tsx b/client/apps/landing/src/hooks/use-lords-bridged.tsx index 59932ca658..e27eb08c37 100644 --- a/client/apps/landing/src/hooks/use-lords-bridged.tsx +++ b/client/apps/landing/src/hooks/use-lords-bridged.tsx @@ -1,69 +1,8 @@ import { lordsAddress } from "@/config"; import { useEffect, useState } from "react"; import { getManifest } from "../../dojoConfig"; -import { env } from "./../../env"; import { useDojo } from "./context/DojoContext"; -const ERC20EVENT_SELECTOR = "0x166373381772db0a01c3a66865fc326c297787697aa52a6ea318e38c42302f7"; -const TRANSFER_SELECTOR = "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9"; -const START_BLOCK = 951460; - -export const useLordsBridgedIn = () => { - const { - network: { provider }, - } = useDojo(); - - const [lordsBridgedIn, setLordsBridgedIn] = useState(0n); - - const manifest = getManifest(); - const bridgeContract = manifest.contracts.find((contract) => contract.tag === "s0_eternum-resource_bridge_systems"); - - // lords contract is different between mainnet and sepolia/local - const isMainnet = env.VITE_PUBLIC_CHAIN === "mainnet"; - - const keys = isMainnet - ? [[TRANSFER_SELECTOR]] - : [ - // Event key - [ERC20EVENT_SELECTOR], - // Transfer selector - [TRANSFER_SELECTOR], - // from anybody - [], - // bridge contract address - [bridgeContract?.address || "0x0"], - ]; - - const block_number = isMainnet ? START_BLOCK : 0; - - useEffect(() => { - const fetchTransferEvents = async () => { - try { - const events = await provider.provider.getEvents({ - address: lordsAddress, - from_block: { block_number }, - to_block: "latest", - keys, - chunk_size: 100, - }); - - let total = 0n; - events.events.forEach((event) => { - total += BigInt(event.data[0]); - }); - - setLordsBridgedIn(total); - } catch (error) { - console.error("Error fetching transfer events:", error); - } - }; - - fetchTransferEvents(); - }, [provider, bridgeContract?.address]); - - return Number(lordsBridgedIn) / 10 ** 18; -}; - export const useLordsBridgeBalance = () => { const { network: { provider }, @@ -72,7 +11,7 @@ export const useLordsBridgeBalance = () => { const [lordsBalance, setLordsBalance] = useState(0n); const manifest = getManifest(); - const bridgeContract = manifest.contracts.find((contract) => contract.tag === "s0_eternum-resource_bridge_systems"); + const bridgeContract = manifest.contracts.find((contract) => contract.tag === "s1_eternum-resource_bridge_systems"); useEffect(() => { const fetchBalance = async () => { diff --git a/client/apps/landing/src/hooks/use-realms-settled.tsx b/client/apps/landing/src/hooks/use-realms-settled.tsx deleted file mode 100644 index ae9fffd0c4..0000000000 --- a/client/apps/landing/src/hooks/use-realms-settled.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { useEntityQuery } from "@dojoengine/react"; -import { Has } from "@dojoengine/recs"; -import { useDojo } from "./context/DojoContext"; - -export const useRealmsSettled = () => { - return useEntityQuery([Has(useDojo().setup.components.Realm)]).length; -}; diff --git a/client/apps/landing/src/hooks/use-rewards.tsx b/client/apps/landing/src/hooks/use-rewards.tsx index ff26801435..270943c902 100644 --- a/client/apps/landing/src/hooks/use-rewards.tsx +++ b/client/apps/landing/src/hooks/use-rewards.tsx @@ -1,15 +1,16 @@ +import { getLordsAddress } from "@/components/ui/utils/utils"; import { configManager } from "@/dojo/setup"; import { useAccount } from "@starknet-react/core"; import { useEffect, useState } from "react"; -import { env } from "../../env"; export const usePrizePool = () => { const [prizePool, setPrizePool] = useState(0n); const { account } = useAccount(); const getBalance = async (address: string) => { + const lordsAddress = await getLordsAddress(); const balance = await account?.callContract({ - contractAddress: env.VITE_LORDS_ADDRESS!, + contractAddress: lordsAddress, entrypoint: "balance_of", calldata: [address], }); diff --git a/client/apps/landing/src/hooks/useCollectionTokens.tsx b/client/apps/landing/src/hooks/useCollectionTokens.tsx deleted file mode 100644 index a0d0bead2f..0000000000 --- a/client/apps/landing/src/hooks/useCollectionTokens.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { useSuspenseInfiniteQuery } from "@tanstack/react-query"; - -import type { - CollectionSortBy, - CollectionSortDirection, - CollectionTokensApiResponse, -} from "@/lib/ark/getCollectionTokens"; -import type { Filters } from "@/types"; - -import { getCollectionTokens } from "@/lib/ark/getCollectionTokens"; - -interface useCollectionTokensProps { - collectionAddress: string; - sortBy: CollectionSortBy; - sortDirection: CollectionSortDirection; - filters: Filters; - buyNow: boolean; -} - -const REFETCH_INTERVAL = 10_000; - -export default function useCollectionTokens({ - collectionAddress, - sortDirection, - sortBy, - filters, - buyNow, -}: useCollectionTokensProps) { - const result = useSuspenseInfiniteQuery({ - queryKey: ["collectionTokens", sortDirection, sortBy, collectionAddress, filters, buyNow], - refetchInterval: REFETCH_INTERVAL, - getNextPageParam: (lastPage: CollectionTokensApiResponse) => lastPage.next_page, - initialPageParam: undefined as number | undefined, - queryFn: ({ pageParam }) => - getCollectionTokens({ - collectionAddress, - page: pageParam, - sortDirection, - sortBy, - filters, - buyNow, - }), - }); - return result; -} diff --git a/client/apps/landing/src/hooks/usePrizeClaim.tsx b/client/apps/landing/src/hooks/usePrizeClaim.tsx index 5bc0753175..4daf6f8686 100644 --- a/client/apps/landing/src/hooks/usePrizeClaim.tsx +++ b/client/apps/landing/src/hooks/usePrizeClaim.tsx @@ -6,7 +6,6 @@ import { GET_HYPERSTRUCTURE_EPOCHS, GET_LEADERBOARD, GET_LEADERBOARD_ENTRY, - GET_PLAYER_HAS_CLAIMED, GET_PLAYER_HYPERSTRUCTURE_CONTRIBUTIONS, } from "./query/leaderboard"; @@ -34,18 +33,6 @@ export const useLeaderboardStatus = () => { return { leaderboard, isLoading }; }; -export const useHasPlayerClaimed = (playerAddress: string) => { - const { data, isLoading } = useQuery({ - queryKey: ["address", playerAddress], - queryFn: () => execute(GET_PLAYER_HAS_CLAIMED, { accountAddress: playerAddress }), - refetchInterval: 10_000, - }); - - const hasClaimed = (data?.s0EternumLeaderboardRewardClaimedModels?.totalCount || 0) > 0; - - return { hasClaimed, isLoading }; -}; - export const useGameWinner = () => { const { data, isLoading } = useQuery({ queryKey: ["gameEnded"], diff --git a/client/apps/landing/src/hooks/useTravel.tsx b/client/apps/landing/src/hooks/useTravel.tsx index 3e863e7278..1f7350ab47 100644 --- a/client/apps/landing/src/hooks/useTravel.tsx +++ b/client/apps/landing/src/hooks/useTravel.tsx @@ -10,11 +10,14 @@ export function useTravel(fromId: ID, toId: ID, secPerKm: number, pickup?: boole queryFn: () => execute(GET_ENTITY_DISTANCE, { entityIds: [fromId, toId] }), refetchInterval: 10_000, }); - const computeTravelTime = (fromId: ID, toId: ID, secPerKm: number, pickup?: boolean) => { - const fromPosition = entityPositions?.s0EternumPositionModels?.edges?.find((entity)=> entity?.node?.entity_id == fromId); - const toPosition = entityPositions?.s0EternumPositionModels?.edges?.find((entity)=> entity?.node?.entity_id == toId); + const fromPosition = entityPositions?.s0EternumPositionModels?.edges?.find( + (entity) => entity?.node?.entity_id == fromId, + ); + const toPosition = entityPositions?.s0EternumPositionModels?.edges?.find( + (entity) => entity?.node?.entity_id == toId, + ); if (!fromPosition || !toPosition) return; const distanceFromPosition = calculateDistance( diff --git a/client/apps/landing/src/lib/ark/getCollectionTokens.ts b/client/apps/landing/src/lib/ark/getCollectionTokens.ts deleted file mode 100644 index 49f8066685..0000000000 --- a/client/apps/landing/src/lib/ark/getCollectionTokens.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { /*createSearchParamsCache,*/ parseAsStringLiteral } from "nuqs/server"; - -import type { CollectionToken, Filters } from "@/types"; -import { env } from "../../../env"; -export const itemsPerPage = 50; - -export const collectionSortDirectionKey = "direction"; -export const collectionSortDirectionsValues = ["asc", "desc"] as const; -export const collectionSortDirectionsParser = parseAsStringLiteral(collectionSortDirectionsValues).withDefault("asc"); -export type CollectionSortDirection = (typeof collectionSortDirectionsValues)[number]; - -export const collectionSortByKey = "sort"; -export const collectionSortByValues = ["price"] as const; -export const collectionSortByParser = parseAsStringLiteral(collectionSortByValues).withDefault("price"); -export type CollectionSortBy = (typeof collectionSortByValues)[number]; - -/*export const collectionPageSearchParamsCache = createSearchParamsCache({ - [collectionSortDirectionKey]: collectionSortDirectionsParser, - [collectionSortByKey]: collectionSortByParser, -});*/ - -export interface CollectionTokensApiResponse { - data: CollectionToken[]; - next_page: number | null; - token_count: number; -} - -interface GetCollectionTokensParams { - collectionAddress: string; - page?: number; - sortDirection?: CollectionSortDirection; - sortBy?: CollectionSortBy; - filters?: Filters; - buyNow?: boolean; -} - -export async function getCollectionTokens({ - collectionAddress, - page, - sortDirection, - sortBy, - filters, - buyNow, -}: GetCollectionTokensParams) { - const queryParams = [`items_per_page=${itemsPerPage}`]; - - if (Object.keys(filters?.traits ?? {}).length) { - queryParams.push(`filters=${encodeURIComponent(JSON.stringify(filters))}`); - } - - if (page !== undefined) { - queryParams.push(`page=${page}`); - } - - if (buyNow) { - queryParams.push("buy_now=true"); - } - - if (sortBy !== undefined) { - queryParams.push(`sort=${sortBy}`); - } - if (sortBy !== undefined) { - queryParams.push(`direction=${sortDirection}`); - } - - const url = `${ - env.VITE_PUBLIC_ARK_MARKETPLACE_API - }/collections/${collectionAddress}/0x534e5f4d41494e/tokens?${queryParams.join("&")}`; - const response = await fetch(url, { - headers: { - "Content-Type": "application/json", - }, - }); - - if (!response.ok) { - console.error(url, response.status); - - return { - data: [], - next_page: null, - token_count: 0, - }; - } - - const result = (await response.json()) as CollectionTokensApiResponse; - - return result; -} - -export function getMediaSrc( - src?: string | null, - mediaKey?: string | null, - thumbnailKey?: string | null, - width?: number, - height?: number, -) { - if (thumbnailKey) { - return `${env.VITE_PUBLIC_IMAGE_CDN_URL}/${thumbnailKey}`; - } - - if (mediaKey && width && height) { - const resolutionParam = `:${width}:${height}`; - return `${env.VITE_PUBLIC_IMAGE_PROXY_URL}/_/rs:fit${resolutionParam}/plain/${env.VITE_PUBLIC_IMAGE_CDN_URL}/${mediaKey}`; - } - return src?.replace("ipfs://", env.VITE_PUBLIC_IPFS_GATEWAY); -} diff --git a/client/apps/landing/src/lib/utils.ts b/client/apps/landing/src/lib/utils.ts index 336695c872..d0abcb6d6a 100644 --- a/client/apps/landing/src/lib/utils.ts +++ b/client/apps/landing/src/lib/utils.ts @@ -1,30 +1,11 @@ -import { - BuildingType, - ContractAddress, - EternumGlobalConfig, - type ID, - type Position, - type Resource, -} from "@bibliothecadao/eternum"; -import { getEntityIdFromKeys } from "@dojoengine/utils"; -import { Connector } from "@starknet-react/core"; +import { ETERNUM_CONFIG } from "@/utils/config"; import { clsx, type ClassValue } from "clsx"; import { twMerge } from "tailwind-merge"; -export { getEntityIdFromKeys }; - export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } -export const toHexString = (num: bigint) => { - return `0x${num.toString(16)}`; -}; - -export const checkCartridgeConnector = (connector?: Connector) => { - return connector?.id === "controller"; -}; - export const formatNumber = (num: number, decimals: number): string => { return num.toFixed(decimals).replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"); }; @@ -33,189 +14,15 @@ export const currencyFormat = (num: number, decimals: number): string => { return formatNumber(divideByPrecision(num), decimals); }; -export function currencyIntlFormat(num: number, decimals: number = 2): string { - return Intl.NumberFormat("en-US", { - notation: "compact", - maximumFractionDigits: decimals, - }).format(num || 0); -} - export function displayAddress(string: string) { if (string === undefined) return "unknown"; return string.substring(0, 6) + "..." + string.substring(string.length - 4); } export function multiplyByPrecision(value: number): number { - return Math.floor(value * EternumGlobalConfig.resources.resourcePrecision); + return Math.floor(value * ETERNUM_CONFIG().resources.resourcePrecision); } export function divideByPrecision(value: number): number { - return value / EternumGlobalConfig.resources.resourcePrecision; -} - -export function addressToNumber(address: string) { - // Convert the address to a big integer - let numericValue = ContractAddress(address); - - // Sum the digits of the numeric value - let sum = 0; - while (numericValue > 0) { - sum += Number(numericValue % 5n); - numericValue /= 5n; - } - - // Map the sum to a number between 1 and 10 - return (sum % 5) + 1; + return value / ETERNUM_CONFIG().resources.resourcePrecision; } - -export function calculateDistance(start: Position, destination: Position): number | undefined { - // d = √((x2-x1)² + (y2-y1)²) - - if (start && destination) { - // Calculate the difference in x and y coordinates - const deltaX = Math.abs(start.x - destination.x); - const deltaY = Math.abs(start.y - destination.y); - - // Calculate the distance using the Pythagorean theorem - // Each tile is 1 km, so we don't need to divide by 10000 here - const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); - - return distance; - } -} - -export enum TimeFormat { - D = 1, - H = 2, - M = 4, - S = 8, -} - -export const formatTime = ( - seconds: number, - format: TimeFormat = TimeFormat.D | TimeFormat.H | TimeFormat.M | TimeFormat.S, -): string => { - const days = Math.floor(seconds / (3600 * 24)); - const hours = Math.floor((seconds % (3600 * 24)) / 3600); - const minutes = Math.floor((seconds % 3600) / 60); - const remainingSeconds = Math.floor(seconds % 60); - - const parts = []; - if (days > 0 && format & TimeFormat.D) parts.push(`${days}d`); - if (hours > 0 && format & TimeFormat.H) parts.push(`${hours}h`); - if (minutes > 0 && format & TimeFormat.M) parts.push(`${minutes}m`); - if (remainingSeconds > 0 && format & TimeFormat.S) parts.push(`${remainingSeconds}s`); - - return parts.join(" "); -}; - -export const copyPlayerAddressToClipboard = (address: ContractAddress, name: string) => { - navigator.clipboard - .writeText(address.toString()) - .then(() => { - alert(`Address of ${name} copied to clipboard`); - }) - .catch((err) => { - console.error("Failed to copy: ", err); - }); -}; - -export const isRealmSelected = (structureEntityId: ID, structures: any) => { - const selectedStructure = structures?.find((structure: any) => structure?.entity_id === structureEntityId); - return selectedStructure?.category === "Realm"; -}; - -export const formatSecondsInHoursMinutes = (seconds: number) => { - const hours = Math.floor(seconds / 3600); - const minutes = Math.floor((seconds % 3600) / 60); - - return `${hours}h:${minutes}m`; -}; - -export const isResourceProductionBuilding = (buildingId: BuildingType) => { - return ( - buildingId === BuildingType.Resource || - buildingId === BuildingType.Farm || - buildingId === BuildingType.FishingVillage || - buildingId === BuildingType.Barracks || - buildingId === BuildingType.ArcheryRange || - buildingId === BuildingType.Stable - ); -}; - -export function gramToKg(grams: number): number { - return Number(grams) / 1000; -} - -export function kgToGram(kg: number): number { - return Number(kg) * 1000; -} - -export const formatResources = (resources: any[]): Resource[] => { - return resources - .map((resource) => ({ - resourceId: Number(resource[0].value), - amount: Number(resource[1].value), - })) - .filter((resource) => resource.amount > 0); -}; - -const accentsToAscii = (str: string) => { - // Character map for transliteration to ASCII - const charMap: Record = { - á: "a", - ú: "u", - é: "e", - ä: "a", - Š: "S", - Ï: "I", - š: "s", - Í: "I", - í: "i", - ó: "o", - ï: "i", - ë: "e", - ê: "e", - â: "a", - Ó: "O", - ü: "u", - Á: "A", - Ü: "U", - ô: "o", - ž: "z", - Ê: "E", - ö: "o", - č: "c", - Â: "A", - Ä: "A", - Ë: "E", - É: "E", - Č: "C", - Ž: "Z", - Ö: "O", - Ú: "U", - Ô: "O", - "‘": "'", - }; - const transliterate = (str: string) => { - return str - .split("") - .map((char) => charMap[char] || char) - .join(""); - }; - return transliterate(str); -}; - -export const toValidAscii = (str: string) => { - const intermediateString = str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); - return accentsToAscii(intermediateString); -}; - -export const separateCamelCase = (str: string): string => { - return str - .replace(/([a-z])([A-Z])/g, "$1 $2") - .replace(/([A-Z])([A-Z][a-z])/g, "$1 $2") - .split(" ") - .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) - .join(" "); -}; diff --git a/client/apps/landing/src/main.tsx b/client/apps/landing/src/main.tsx index 00bd7c7abc..39d6393953 100644 --- a/client/apps/landing/src/main.tsx +++ b/client/apps/landing/src/main.tsx @@ -33,7 +33,7 @@ if (!rootElement.innerHTML) { root.render(
- + Loading...
{`We are experiencing high loading times. Please be patient.`}
diff --git a/client/apps/landing/src/routeTree.gen.ts b/client/apps/landing/src/routeTree.gen.ts index e465925643..b6bc8e30a2 100644 --- a/client/apps/landing/src/routeTree.gen.ts +++ b/client/apps/landing/src/routeTree.gen.ts @@ -8,167 +8,154 @@ // You should NOT make any changes in this file as it will be overwritten. // Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. -import { createFileRoute } from '@tanstack/react-router' +import { createFileRoute } from "@tanstack/react-router"; // Import Routes -import { Route as rootRoute } from './routes/__root' -import { Route as MyEmpireImport } from './routes/my-empire' +import { Route as rootRoute } from "./routes/__root"; +import { Route as MyEmpireImport } from "./routes/my-empire"; // Create Virtual Routes -const TradeLazyImport = createFileRoute('/trade')() -const SeasonPassesLazyImport = createFileRoute('/season-passes')() -const MintLazyImport = createFileRoute('/mint')() -const ClaimLazyImport = createFileRoute('/claim')() -const IndexLazyImport = createFileRoute('/')() +const TradeLazyImport = createFileRoute("/trade")(); +const SeasonPassesLazyImport = createFileRoute("/season-passes")(); +const MintLazyImport = createFileRoute("/mint")(); +const ClaimLazyImport = createFileRoute("/claim")(); +const IndexLazyImport = createFileRoute("/")(); // Create/Update Routes const TradeLazyRoute = TradeLazyImport.update({ - id: '/trade', - path: '/trade', + id: "/trade", + path: "/trade", getParentRoute: () => rootRoute, -} as any).lazy(() => import('./routes/trade.lazy').then((d) => d.Route)) +} as any).lazy(() => import("./routes/trade.lazy").then((d) => d.Route)); const SeasonPassesLazyRoute = SeasonPassesLazyImport.update({ - id: '/season-passes', - path: '/season-passes', + id: "/season-passes", + path: "/season-passes", getParentRoute: () => rootRoute, -} as any).lazy(() => import('./routes/season-passes.lazy').then((d) => d.Route)) +} as any).lazy(() => import("./routes/season-passes.lazy").then((d) => d.Route)); const MintLazyRoute = MintLazyImport.update({ - id: '/mint', - path: '/mint', + id: "/mint", + path: "/mint", getParentRoute: () => rootRoute, -} as any).lazy(() => import('./routes/mint.lazy').then((d) => d.Route)) +} as any).lazy(() => import("./routes/mint.lazy").then((d) => d.Route)); const ClaimLazyRoute = ClaimLazyImport.update({ - id: '/claim', - path: '/claim', + id: "/claim", + path: "/claim", getParentRoute: () => rootRoute, -} as any).lazy(() => import('./routes/claim.lazy').then((d) => d.Route)) +} as any).lazy(() => import("./routes/claim.lazy").then((d) => d.Route)); const MyEmpireRoute = MyEmpireImport.update({ - id: '/my-empire', - path: '/my-empire', + id: "/my-empire", + path: "/my-empire", getParentRoute: () => rootRoute, -} as any) +} as any); const IndexLazyRoute = IndexLazyImport.update({ - id: '/', - path: '/', + id: "/", + path: "/", getParentRoute: () => rootRoute, -} as any).lazy(() => import('./routes/index.lazy').then((d) => d.Route)) +} as any).lazy(() => import("./routes/index.lazy").then((d) => d.Route)); // Populate the FileRoutesByPath interface -declare module '@tanstack/react-router' { +declare module "@tanstack/react-router" { interface FileRoutesByPath { - '/': { - id: '/' - path: '/' - fullPath: '/' - preLoaderRoute: typeof IndexLazyImport - parentRoute: typeof rootRoute - } - '/my-empire': { - id: '/my-empire' - path: '/my-empire' - fullPath: '/my-empire' - preLoaderRoute: typeof MyEmpireImport - parentRoute: typeof rootRoute - } - '/claim': { - id: '/claim' - path: '/claim' - fullPath: '/claim' - preLoaderRoute: typeof ClaimLazyImport - parentRoute: typeof rootRoute - } - '/mint': { - id: '/mint' - path: '/mint' - fullPath: '/mint' - preLoaderRoute: typeof MintLazyImport - parentRoute: typeof rootRoute - } - '/season-passes': { - id: '/season-passes' - path: '/season-passes' - fullPath: '/season-passes' - preLoaderRoute: typeof SeasonPassesLazyImport - parentRoute: typeof rootRoute - } - '/trade': { - id: '/trade' - path: '/trade' - fullPath: '/trade' - preLoaderRoute: typeof TradeLazyImport - parentRoute: typeof rootRoute - } + "/": { + id: "/"; + path: "/"; + fullPath: "/"; + preLoaderRoute: typeof IndexLazyImport; + parentRoute: typeof rootRoute; + }; + "/my-empire": { + id: "/my-empire"; + path: "/my-empire"; + fullPath: "/my-empire"; + preLoaderRoute: typeof MyEmpireImport; + parentRoute: typeof rootRoute; + }; + "/claim": { + id: "/claim"; + path: "/claim"; + fullPath: "/claim"; + preLoaderRoute: typeof ClaimLazyImport; + parentRoute: typeof rootRoute; + }; + "/mint": { + id: "/mint"; + path: "/mint"; + fullPath: "/mint"; + preLoaderRoute: typeof MintLazyImport; + parentRoute: typeof rootRoute; + }; + "/season-passes": { + id: "/season-passes"; + path: "/season-passes"; + fullPath: "/season-passes"; + preLoaderRoute: typeof SeasonPassesLazyImport; + parentRoute: typeof rootRoute; + }; + "/trade": { + id: "/trade"; + path: "/trade"; + fullPath: "/trade"; + preLoaderRoute: typeof TradeLazyImport; + parentRoute: typeof rootRoute; + }; } } // Create and export the route tree export interface FileRoutesByFullPath { - '/': typeof IndexLazyRoute - '/my-empire': typeof MyEmpireRoute - '/claim': typeof ClaimLazyRoute - '/mint': typeof MintLazyRoute - '/season-passes': typeof SeasonPassesLazyRoute - '/trade': typeof TradeLazyRoute + "/": typeof IndexLazyRoute; + "/my-empire": typeof MyEmpireRoute; + "/claim": typeof ClaimLazyRoute; + "/mint": typeof MintLazyRoute; + "/season-passes": typeof SeasonPassesLazyRoute; + "/trade": typeof TradeLazyRoute; } export interface FileRoutesByTo { - '/': typeof IndexLazyRoute - '/my-empire': typeof MyEmpireRoute - '/claim': typeof ClaimLazyRoute - '/mint': typeof MintLazyRoute - '/season-passes': typeof SeasonPassesLazyRoute - '/trade': typeof TradeLazyRoute + "/": typeof IndexLazyRoute; + "/my-empire": typeof MyEmpireRoute; + "/claim": typeof ClaimLazyRoute; + "/mint": typeof MintLazyRoute; + "/season-passes": typeof SeasonPassesLazyRoute; + "/trade": typeof TradeLazyRoute; } export interface FileRoutesById { - __root__: typeof rootRoute - '/': typeof IndexLazyRoute - '/my-empire': typeof MyEmpireRoute - '/claim': typeof ClaimLazyRoute - '/mint': typeof MintLazyRoute - '/season-passes': typeof SeasonPassesLazyRoute - '/trade': typeof TradeLazyRoute + __root__: typeof rootRoute; + "/": typeof IndexLazyRoute; + "/my-empire": typeof MyEmpireRoute; + "/claim": typeof ClaimLazyRoute; + "/mint": typeof MintLazyRoute; + "/season-passes": typeof SeasonPassesLazyRoute; + "/trade": typeof TradeLazyRoute; } export interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: - | '/' - | '/my-empire' - | '/claim' - | '/mint' - | '/season-passes' - | '/trade' - fileRoutesByTo: FileRoutesByTo - to: '/' | '/my-empire' | '/claim' | '/mint' | '/season-passes' | '/trade' - id: - | '__root__' - | '/' - | '/my-empire' - | '/claim' - | '/mint' - | '/season-passes' - | '/trade' - fileRoutesById: FileRoutesById + fileRoutesByFullPath: FileRoutesByFullPath; + fullPaths: "/" | "/my-empire" | "/claim" | "/mint" | "/season-passes" | "/trade"; + fileRoutesByTo: FileRoutesByTo; + to: "/" | "/my-empire" | "/claim" | "/mint" | "/season-passes" | "/trade"; + id: "__root__" | "/" | "/my-empire" | "/claim" | "/mint" | "/season-passes" | "/trade"; + fileRoutesById: FileRoutesById; } export interface RootRouteChildren { - IndexLazyRoute: typeof IndexLazyRoute - MyEmpireRoute: typeof MyEmpireRoute - ClaimLazyRoute: typeof ClaimLazyRoute - MintLazyRoute: typeof MintLazyRoute - SeasonPassesLazyRoute: typeof SeasonPassesLazyRoute - TradeLazyRoute: typeof TradeLazyRoute + IndexLazyRoute: typeof IndexLazyRoute; + MyEmpireRoute: typeof MyEmpireRoute; + ClaimLazyRoute: typeof ClaimLazyRoute; + MintLazyRoute: typeof MintLazyRoute; + SeasonPassesLazyRoute: typeof SeasonPassesLazyRoute; + TradeLazyRoute: typeof TradeLazyRoute; } const rootRouteChildren: RootRouteChildren = { @@ -178,11 +165,9 @@ const rootRouteChildren: RootRouteChildren = { MintLazyRoute: MintLazyRoute, SeasonPassesLazyRoute: SeasonPassesLazyRoute, TradeLazyRoute: TradeLazyRoute, -} +}; -export const routeTree = rootRoute - ._addFileChildren(rootRouteChildren) - ._addFileTypes() +export const routeTree = rootRoute._addFileChildren(rootRouteChildren)._addFileTypes(); /* ROUTE_MANIFEST_START { diff --git a/client/apps/landing/src/routes/index.lazy.tsx b/client/apps/landing/src/routes/index.lazy.tsx index edd0d9f802..9796e5cfc3 100644 --- a/client/apps/landing/src/routes/index.lazy.tsx +++ b/client/apps/landing/src/routes/index.lazy.tsx @@ -57,7 +57,7 @@ function Index() { title: "players", value: formatNumber(data?.s0EternumAddressNameModels?.totalCount ?? 0, 0), icon: , - backgroundImage: "/images/avatars/Armor.png", + backgroundImage: "/images/avatars/12.png", }, }, { @@ -66,7 +66,7 @@ function Index() { title: "realms settled", value: formatNumber(data?.s0EternumRealmModels?.totalCount ?? 0, 0), icon: , - backgroundImage: "/images/avatars/Blade.png", + backgroundImage: "/images/avatars/09.png", }, }, { @@ -75,7 +75,7 @@ function Index() { title: "hyperstructures", value: formatNumber(data?.s0EternumHyperstructureModels?.totalCount ?? 0, 0), icon: , - backgroundImage: "/images/avatars/Hidden.png", + backgroundImage: "/images/avatars/06.png", }, }, { @@ -84,7 +84,7 @@ function Index() { title: "mines discovered", value: formatNumber(data?.s0EternumFragmentMineDiscoveredModels?.totalCount ?? 0, 0), icon: , - backgroundImage: "/images/jungle-clouds.png", + backgroundImage: "/images/covers/03.png", }, }, { @@ -100,7 +100,7 @@ function Index() { 0, ), icon: , - backgroundImage: "/images/avatars/Hidden.png", + backgroundImage: "/images/avatars/06.png", }, }, { @@ -109,7 +109,7 @@ function Index() { title: "donkeys burned", value: currencyFormat(donkeysBurned, 0), icon: , - backgroundImage: "/images/jungle-clouds.png", + backgroundImage: "/images/covers/03.png", }, }, { @@ -118,7 +118,7 @@ function Index() { title: "Bridge Lords Balance", value: formatNumber(lordsBalance, 0), icon: , - backgroundImage: "/images/hidden-castle.png", + backgroundImage: "/images/covers/04.png", }, }, ], diff --git a/client/apps/landing/src/routes/mint.lazy.tsx b/client/apps/landing/src/routes/mint.lazy.tsx index bc539926df..084470eb86 100644 --- a/client/apps/landing/src/routes/mint.lazy.tsx +++ b/client/apps/landing/src/routes/mint.lazy.tsx @@ -37,29 +37,6 @@ function Mint() { refetchInterval: 10_000, }); - /* const { data: seasonPassMints, isLoading: isSeasonPassMintsLoading } = useSuspenseQuery({ - queryKey: ["ERCMints"], - queryFn: () => execute(GET_ERC_MINTS), - refetchInterval: 10_000, - });*/ - - /*const seasonPassTokenIds = useMemo( - () => - seasonPassMints?.tokenTransfers?.edges - ?.filter((token) => { - if (token?.node?.tokenMetadata.__typename !== "ERC721__Token") return false; - return token.node.tokenMetadata.contractAddress === import.meta.env.VITE_SEASON_PASS_ADDRESS; - }) - .map((token) => { - if (token?.node?.tokenMetadata.__typename === "ERC721__Token") { - return token.node.tokenMetadata.tokenId; - } - return undefined; - }) - .filter((id): id is string => id !== undefined), - [seasonPassMints], - );*/ - const realmsErcBalance = useMemo( () => data?.tokenBalances?.edges?.filter((token) => { diff --git a/client/apps/landing/src/types/index.ts b/client/apps/landing/src/types/index.ts index 2817510462..eb79d80209 100644 --- a/client/apps/landing/src/types/index.ts +++ b/client/apps/landing/src/types/index.ts @@ -1,373 +1,3 @@ -export interface Guild { - name: string; - points: number; - percentage: number; - lords: number; - realms: number; - mines: number; - hyperstructures: number; - isAlive: boolean; - playerCount: number; -} - -export interface SeasonPass { - realm: string; -} -export interface Collection { - address: string; - floor?: string; - image?: string; - is_verified: boolean; - listed_items: number; - listed_percentage: number; - marketcap: number; - name: string; - owner_count: number; - sales_7d: number; - token_count: number; - total_sales: number; - total_volume: number; - volume_7d_eth: number; - floor_7d_percentage: string; -} - -export type CollectionTrait = Record; - -export type CollectionTraits = Record; - -export interface PortfolioCollection { - address: string; - image?: string; - name: string; - floor?: number; - user_listed_tokens: number; - user_token_count: number; -} - -export interface Offer { - order_hash: string; - offer_maker: string; - offer_amount: string; - offer_quantity: `0x${string}`; - offer_timestamp: number; - currency_address: string; - currency_chain_id: string; - start_date: number; - end_date: number; - status: string; -} - -export interface CollectionTokenOffersApiResponse { - token_address: string; - token_id: string; - current_owner: string; - last_price: null; - offers: Offer[]; -} - -export interface Activity { - event_type: string; - event_timestamp: number; - order_status: string; - previous_owner: string; - new_owner: string; - amount: string; - canceled_reason: string; - end_amount: string; - start_date: number; - end_date: number; -} - -export interface CollectionTokenActivityApiResponse { - token_address: string; - token_id: string; - history: Activity[]; -} - -export interface CollectionTokenApiResponse { - result: Token; -} - -interface TokenMetadataAttribute { - display_type?: string; - trait_type?: string; - value?: string; -} - -export interface TokenMetadata { - image: string; - name: string; - animation_key: string | null; - animation_url: string | null; - image_key: string | null; - image_key_540_540?: string | null; - attributes: TokenMetadataAttribute[]; -} - -export interface Token { - collection_image: string; - collection_name: string; - collection_address: string; - last_price?: string; - metadata?: TokenMetadata; - owner: string; - price?: string; - top_offer?: string; - token_id: string; -} - -export interface CollectionToken { - buy_in_progress: boolean; - collection_address: string; - collection_name: string; - floor_difference: number | null; - last_price?: string; - is_listed: boolean; - listed_at?: number; - listing: { - is_auction: boolean; - }; - metadata?: TokenMetadata; - owner: string; - price?: string; - token_id: string; -} - -export interface AccountSearchResult { - owner: string; - starknet_id: string | null; - image: string | null; -} - -export interface CollectionSearchResult { - address: string; - image: string | null; - is_verified: boolean; - name: string; - token_count: number; -} - -export interface PortfolioToken { - collection_name: string; - collection_address: string; - best_offer?: number; - floor?: number; - list_price?: number; - owner: string; - received_at?: string; - token_id: string; - metadata?: TokenMetadata; -} - -export const activityTypes = [ - "AUCTION", - "BURN", - "CANCELLED", - "CANCEL_AUCTION", - "CANCEL_OFFER", - "DELISTING", - "EXECUTED", - "EXPIRED_LISTING", - "EXPIRED_OFFER", - "FULFILL", - "LISTING", - "MINT", - "OFFER", - "SALE", - "TRANSFER", -] as const; - -export type ActivityType = (typeof activityTypes)[number]; - -export interface PortfolioActivity { - activity_type: ActivityType; - collection_address: string; - collection_is_verified: boolean; - collection_name: string; - from: string; - metadata?: TokenMetadata; - price: string; - time_stamp: number; - to: string; - token_id: string; - transaction_hash: string | null; - currency?: { - contract: string; - decimals: number; - symbol: string; - } | null; -} - -export interface PortfolioOffers { - collection_address: string; - collection_name: string; - currency_address: string; - expire_at: number; - floor_difference: string | null; - from_address: string; - hash: string; - is_verified: boolean; - metadata?: TokenMetadata; - offer_id: number; - price: string; - to_address: string | null; - token_id: string; - is_listed: boolean; - listing: { - currency_address: string | null; - end_amount: string | null; - end_date: number | null; - is_auction: boolean; - order_hash: string; - start_amount: string | null; - start_date: number | null; - }; - currency?: { - contract: string; - decimals: number; - symbol: string; - } | null; -} - -export interface CollectionActivity { - activity_type: ActivityType; - address: string; - from: string; - is_verified: boolean; - name: string; - price: string; - time_stamp: number; - to: string; - token_id: string; - token_metadata: TokenMetadata | null; - transaction_hash: string | null; - currency?: { - contract: string; - decimals: number; - symbol: string; - } | null; -} - -export interface TokenOffer { - expire_at: number; - floor_difference: number | null; - hash: string; - offer_id: number; - price: string; - source: string; -} - -export interface TokenApiResponse { - result: Token; -} - -export interface OwnersTokensApiResponse { - result: Token[]; -} - -export interface PortfolioStats { - total_value: string | null; -} - -export interface TokenMarketData { - buy_in_progress: boolean; - created_timestamp: number | null; - floor: string | null; - has_offer: boolean; - is_listed: boolean; - last_price: string | null; - listing: { - currency_address: string | null; - end_amount: string | null; - end_date: number | null; - is_auction: boolean; - order_hash: string; - start_amount: string | null; - start_date: number | null; - }; - owner: string; - top_offer: { - amount: string; - currency_address: string; - end_date: number; - order_hash: string; - start_date: number; - }; - updated_timestamp: number; -} - -export interface ContractInfo { - contract_address: string; - contract_type: string; - image: string; - name: string; - symbol: string; -} - -export interface PricesResult { - ethereum: { - price: number; - }; - starknet: { - price: number; - }; -} - -export interface SystemStatus { - status: string; -} - -export interface TokenActivity { - activity_type: ActivityType; - from: string | null; - price: string | null; - time_stamp: number; - to: string | null; - transaction_hash: string | null; - currency?: { - contract: string; - decimals: number; - symbol: string; - } | null; -} - -export interface Filters { - traits: Record; -} - -export interface LatestSales { - collection_address: string; - collection_name: string; - token_id: string; - from: string; - metadata: TokenMetadata | null; - price: string; - timestamp: number; - to: string; - transaction_hash: string | null; - currency: { - contract: string; - decimals: number; - symbol: string; - } | null; -} - -export interface TrendingNow { - collection_address: string; - collection_image: string; - collection_name: string; - floor_difference: number; - floor_price: string | null; - preview_nfts: [{ metadata?: TokenMetadata }, { metadata?: TokenMetadata }, { metadata?: TokenMetadata }]; -} - -export interface LiveAuctions { - collection_address: string; - token_id: string; - end_timestamp: number; - metadata?: TokenMetadata; -} - export type RealmMetadata = { name: string; description: string; @@ -377,17 +7,3 @@ export type RealmMetadata = { value: string | number; }[]; }; - -export type SeasonPassMint = { - node: { - __typename?: "Token__Balance"; - tokenMetadata: { - __typename: "ERC721__Token"; - tokenId: string; - metadataDescription: string; - imagePath: string; - contractAddress: string; - metadata: string; - }; - }; -} | null; diff --git a/client/apps/landing/src/utils/leaderboard.tsx b/client/apps/landing/src/utils/leaderboard.tsx deleted file mode 100644 index db87214ba9..0000000000 --- a/client/apps/landing/src/utils/leaderboard.tsx +++ /dev/null @@ -1,12 +0,0 @@ -export const calculateLordsShare = (points: number, totalPoints: number, prizePoolAmount: number): number => { - if (totalPoints === 0) return 0; - - const playerShare = (points / totalPoints) * prizePoolAmount; - return Math.floor(playerShare); -}; - -export const calculatePlayerSharePercentage = (points: number, totalPoints: number): number => { - if (totalPoints === 0) return 0; - - return Math.floor((points / totalPoints) * 100); -}; diff --git a/client/apps/landing/tsconfig.app.tsbuildinfo b/client/apps/landing/tsconfig.app.tsbuildinfo index b60f4b603c..b6dab90397 100644 --- a/client/apps/landing/tsconfig.app.tsbuildinfo +++ b/client/apps/landing/tsconfig.app.tsbuildinfo @@ -1 +1,113 @@ -{"root":["./src/config.ts","./src/main.tsx","./src/routetree.gen.ts","./src/vite-env.d.ts","./src/components/layouts/dashboard-layout.tsx","./src/components/modules/animated-grid.tsx","./src/components/modules/app-sidebar.tsx","./src/components/modules/bridge-in.tsx","./src/components/modules/bridge-out-step-1.tsx","./src/components/modules/bridge-out-step-2.tsx","./src/components/modules/bridge.tsx","./src/components/modules/cartridge-connect-button.tsx","./src/components/modules/data-card.tsx","./src/components/modules/data.tsx","./src/components/modules/filters.tsx","./src/components/modules/mode-toggle.tsx","./src/components/modules/realm-card.tsx","./src/components/modules/realm-mint-dialog.tsx","./src/components/modules/realms-grid.tsx","./src/components/modules/season-pass-mint-dialog.tsx","./src/components/modules/season-pass-row.tsx","./src/components/modules/season-pass.tsx","./src/components/modules/select-nft-actions.tsx","./src/components/modules/swap-panel.tsx","./src/components/modules/top-navigation.tsx","./src/components/providers/starknet.tsx","./src/components/providers/cartridge-controller.tsx","./src/components/providers/theme-provider.tsx","./src/components/typography/type-h1.tsx","./src/components/typography/type-h2.tsx","./src/components/typography/type-h3.tsx","./src/components/typography/type-h4.tsx","./src/components/typography/type-p.tsx","./src/components/ui/selectresources.tsx","./src/components/ui/badge.tsx","./src/components/ui/button.tsx","./src/components/ui/card.tsx","./src/components/ui/checkbox.tsx","./src/components/ui/collapsible.tsx","./src/components/ui/command.tsx","./src/components/ui/custom-iframe.tsx","./src/components/ui/dialog.tsx","./src/components/ui/dropdown-menu.tsx","./src/components/ui/input.tsx","./src/components/ui/label.tsx","./src/components/ui/multi-select.tsx","./src/components/ui/popover.tsx","./src/components/ui/select.tsx","./src/components/ui/separator.tsx","./src/components/ui/sheet.tsx","./src/components/ui/sidebar.tsx","./src/components/ui/skeleton.tsx","./src/components/ui/sonner.tsx","./src/components/ui/switch.tsx","./src/components/ui/tabs.tsx","./src/components/ui/tooltip.tsx","./src/components/ui/elements/button.tsx","./src/components/ui/elements/listselect.tsx","./src/components/ui/elements/numberinput.tsx","./src/components/ui/elements/resourcecost.tsx","./src/components/ui/elements/resourceicon.tsx","./src/components/ui/utils/utils.ts","./src/dojo/contractcomponents.ts","./src/dojo/createclientcomponents.ts","./src/dojo/createsystemcalls.ts","./src/dojo/setup.ts","./src/dojo/setupnetwork.ts","./src/dojo/world.ts","./src/dojo/modelmanager/configmanager.ts","./src/dojo/modelmanager/resourcemanager.ts","./src/hooks/use-lords.tsx","./src/hooks/use-mobile.tsx","./src/hooks/useaccountorburner.tsx","./src/hooks/usebridge.tsx","./src/hooks/usecollectiontokens.tsx","./src/hooks/usemintseasonpass.tsx","./src/hooks/useminttestrealm.tsx","./src/hooks/usenftselection.tsx","./src/hooks/usetravel.tsx","./src/hooks/context/dojocontext.tsx","./src/hooks/gql/execute.ts","./src/hooks/gql/fragment-masking.ts","./src/hooks/gql/gql.ts","./src/hooks/gql/graphql.ts","./src/hooks/gql/index.ts","./src/hooks/helpers/userealms.tsx","./src/hooks/helpers/useresources.tsx","./src/hooks/query/players.tsx","./src/hooks/query/realms.tsx","./src/lib/utils.ts","./src/lib/ark/getcollectiontokens.ts","./src/routes/__root.tsx","./src/routes/bridge.lazy.tsx","./src/routes/index.lazy.tsx","./src/routes/mint.lazy.tsx","./src/routes/my-empire.tsx","./src/routes/passes.lazy.tsx","./src/routes/trade.lazy.tsx","./src/stories/button.stories.tsx","./src/stories/dashboard-layout.stories.tsx","./src/stories/data-card.stories.tsx","./src/stories/season-pass-row.stories.tsx","./src/stories/season-pass.stories.tsx","./src/stories/swap-panel.stories.tsx","./src/stories/swap.stories.tsx","./src/stories/top-navigation.stories.tsx","./src/types/index.ts","./env.ts"],"errors":true,"version":"5.7.2"} \ No newline at end of file +{ + "root": [ + "./src/config.ts", + "./src/main.tsx", + "./src/routetree.gen.ts", + "./src/vite-env.d.ts", + "./src/components/layouts/dashboard-layout.tsx", + "./src/components/modules/animated-grid.tsx", + "./src/components/modules/app-sidebar.tsx", + "./src/components/modules/bridge-in.tsx", + "./src/components/modules/bridge-out-step-1.tsx", + "./src/components/modules/bridge-out-step-2.tsx", + "./src/components/modules/bridge.tsx", + "./src/components/modules/cartridge-connect-button.tsx", + "./src/components/modules/data-card.tsx", + "./src/components/modules/data.tsx", + "./src/components/modules/filters.tsx", + "./src/components/modules/mode-toggle.tsx", + "./src/components/modules/realm-card.tsx", + "./src/components/modules/realm-mint-dialog.tsx", + "./src/components/modules/realms-grid.tsx", + "./src/components/modules/season-pass-mint-dialog.tsx", + "./src/components/modules/season-pass-row.tsx", + "./src/components/modules/season-pass.tsx", + "./src/components/modules/select-nft-actions.tsx", + "./src/components/modules/swap-panel.tsx", + "./src/components/modules/top-navigation.tsx", + "./src/components/providers/starknet.tsx", + "./src/components/providers/cartridge-controller.tsx", + "./src/components/providers/theme-provider.tsx", + "./src/components/typography/type-h1.tsx", + "./src/components/typography/type-h2.tsx", + "./src/components/typography/type-h3.tsx", + "./src/components/typography/type-h4.tsx", + "./src/components/typography/type-p.tsx", + "./src/components/ui/selectresources.tsx", + "./src/components/ui/badge.tsx", + "./src/components/ui/button.tsx", + "./src/components/ui/card.tsx", + "./src/components/ui/checkbox.tsx", + "./src/components/ui/collapsible.tsx", + "./src/components/ui/command.tsx", + "./src/components/ui/dialog.tsx", + "./src/components/ui/dropdown-menu.tsx", + "./src/components/ui/input.tsx", + "./src/components/ui/label.tsx", + "./src/components/ui/multi-select.tsx", + "./src/components/ui/popover.tsx", + "./src/components/ui/select.tsx", + "./src/components/ui/separator.tsx", + "./src/components/ui/sheet.tsx", + "./src/components/ui/sidebar.tsx", + "./src/components/ui/skeleton.tsx", + "./src/components/ui/sonner.tsx", + "./src/components/ui/switch.tsx", + "./src/components/ui/tabs.tsx", + "./src/components/ui/tooltip.tsx", + "./src/components/ui/elements/button.tsx", + "./src/components/ui/elements/listselect.tsx", + "./src/components/ui/elements/numberinput.tsx", + "./src/components/ui/elements/resourcecost.tsx", + "./src/components/ui/elements/resourceicon.tsx", + "./src/components/ui/utils/utils.ts", + "./src/dojo/contractcomponents.ts", + "./src/dojo/createclientcomponents.ts", + "./src/dojo/createsystemcalls.ts", + "./src/dojo/setup.ts", + "./src/dojo/setupnetwork.ts", + "./src/dojo/world.ts", + "./src/dojo/modelmanager/configmanager.ts", + "./src/dojo/modelmanager/resourcemanager.ts", + "./src/hooks/use-lords.tsx", + "./src/hooks/use-mobile.tsx", + "./src/hooks/useaccountorburner.tsx", + "./src/hooks/usebridge.tsx", + "./src/hooks/usecollectiontokens.tsx", + "./src/hooks/usemintseasonpass.tsx", + "./src/hooks/useminttestrealm.tsx", + "./src/hooks/usenftselection.tsx", + "./src/hooks/usetravel.tsx", + "./src/hooks/context/dojocontext.tsx", + "./src/hooks/gql/execute.ts", + "./src/hooks/gql/fragment-masking.ts", + "./src/hooks/gql/gql.ts", + "./src/hooks/gql/graphql.ts", + "./src/hooks/gql/index.ts", + "./src/hooks/helpers/userealms.tsx", + "./src/hooks/helpers/useresources.tsx", + "./src/hooks/query/players.tsx", + "./src/hooks/query/realms.tsx", + "./src/lib/utils.ts", + "./src/lib/ark/getcollectiontokens.ts", + "./src/routes/__root.tsx", + "./src/routes/bridge.lazy.tsx", + "./src/routes/index.lazy.tsx", + "./src/routes/mint.lazy.tsx", + "./src/routes/my-empire.tsx", + "./src/routes/passes.lazy.tsx", + "./src/routes/trade.lazy.tsx", + "./src/stories/button.stories.tsx", + "./src/stories/dashboard-layout.stories.tsx", + "./src/stories/data-card.stories.tsx", + "./src/stories/season-pass-row.stories.tsx", + "./src/stories/season-pass.stories.tsx", + "./src/stories/swap-panel.stories.tsx", + "./src/stories/swap.stories.tsx", + "./src/stories/top-navigation.stories.tsx", + "./src/types/index.ts", + "./env.ts" + ], + "errors": true, + "version": "5.7.2" +} diff --git a/client/apps/landing/tsconfig.json b/client/apps/landing/tsconfig.json index 2b78387c74..27d8b209c3 100644 --- a/client/apps/landing/tsconfig.json +++ b/client/apps/landing/tsconfig.json @@ -5,6 +5,7 @@ "baseUrl": ".", "paths": { "@/*": ["./src/*"] - } + }, + "allowJs": true } } diff --git a/client/apps/landing/vite.config.ts b/client/apps/landing/vite.config.ts index 9e5cd24040..b39ed7f5c7 100644 --- a/client/apps/landing/vite.config.ts +++ b/client/apps/landing/vite.config.ts @@ -27,5 +27,6 @@ export default defineConfig(({ mode }) => { }, }, }, + publicDir: "../../common/public", }; }); diff --git a/client/common/.gitignore b/client/common/.gitignore new file mode 100644 index 0000000000..468f82a1aa --- /dev/null +++ b/client/common/.gitignore @@ -0,0 +1,175 @@ +# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore + +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Caches + +.cache + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/client/common/addresses/addresses.MAINNET.json b/client/common/addresses/addresses.MAINNET.json deleted file mode 100644 index 9b8cea85f6..0000000000 --- a/client/common/addresses/addresses.MAINNET.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "seasonPass": "0x057675b9c0bd62b096a2e15502a37b290fa766ead21c33eda42993e48a714b80", - "realms": "0x07ae27a31bb6526e3de9cf02f081f6ce0615ac12a6d7b85ee58b8ad7947a2809", - "lords": "0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49" -} diff --git a/client/common/addresses/addresses.SEPOLIA.json b/client/common/addresses/addresses.SEPOLIA.json deleted file mode 100644 index ddf30ab58b..0000000000 --- a/client/common/addresses/addresses.SEPOLIA.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "seasonPass": "0x23cc88996a5f9c7bcb559fdcffc257c0f75abe60f2a7e5d5cd343f8a95967f7", - "realms": "0x3205f47bd6f0b5e9cd5c79fcae19e12523a024709776d0a9e8b375adf63468d", - "lords": "0x1802f8c2c742e6114291b0c4ff1c707c6e220ce0557b94a3036fa24ccb1b234" -} diff --git a/client/common/addresses/addresses.local.json b/client/common/addresses/addresses.local.json deleted file mode 100644 index ffd7f02de7..0000000000 --- a/client/common/addresses/addresses.local.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "seasonPass": "0x8c3806e7c51fec810b68e4fbd18e4272e18a16b4c380fbebcd9533ba8fcdf0", - "realms": "0x542c0ef45d70dff6c98ced94feb956152c5116f64b3acc9f577ff880821bd2d", - "lords": "0x4b2162f4b591fbf2052f0600652655675471a850656468dc3ddf57ad4fdbf56" -} diff --git a/client/common/manifests/manifest_dev.json b/client/common/manifests/manifest_dev.json deleted file mode 100644 index feadad803f..0000000000 --- a/client/common/manifests/manifest_dev.json +++ /dev/null @@ -1,9690 +0,0 @@ -{ - "world": { - "class_hash": "0x45575a88cc5cef1e444c77ce60b7b4c9e73a01cbbe20926d5a4c72a94011410", - "address": "0x6a9e4c6f0799160ea8ddc43ff982a5f83d7f633e9732ce42701de1288ff705f", - "seed": "s0_eternum", - "name": "Realms: Eternum", - "entrypoints": [ - "uuid", - "set_metadata", - "register_namespace", - "register_event", - "register_model", - "register_contract", - "init_contract", - "upgrade_event", - "upgrade_model", - "upgrade_contract", - "emit_event", - "emit_events", - "set_entity", - "set_entities", - "delete_entity", - "delete_entities", - "grant_owner", - "revoke_owner", - "grant_writer", - "revoke_writer", - "upgrade" - ], - "abi": [ - { - "type": "impl", - "name": "World", - "interface_name": "dojo::world::iworld::IWorld" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "enum", - "name": "dojo::world::resource::Resource", - "variants": [ - { - "name": "Model", - "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" - }, - { - "name": "Event", - "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" - }, - { - "name": "Contract", - "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" - }, - { - "name": "Namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "World", - "type": "()" - }, - { - "name": "Unregistered", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "dojo::model::metadata::ResourceMetadata", - "members": [ - { - "name": "resource_id", - "type": "core::felt252" - }, - { - "name": "metadata_uri", - "type": "core::byte_array::ByteArray" - }, - { - "name": "metadata_hash", - "type": "core::felt252" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::>" - } - ] - }, - { - "type": "enum", - "name": "dojo::model::definition::ModelIndex", - "variants": [ - { - "name": "Keys", - "type": "core::array::Span::" - }, - { - "name": "Id", - "type": "core::felt252" - }, - { - "name": "MemberId", - "type": "(core::felt252, core::felt252)" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "dojo::meta::layout::FieldLayout", - "members": [ - { - "name": "selector", - "type": "core::felt252" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "enum", - "name": "dojo::meta::layout::Layout", - "variants": [ - { - "name": "Fixed", - "type": "core::array::Span::" - }, - { - "name": "Struct", - "type": "core::array::Span::" - }, - { - "name": "Tuple", - "type": "core::array::Span::" - }, - { - "name": "Array", - "type": "core::array::Span::" - }, - { - "name": "ByteArray", - "type": "()" - }, - { - "name": "Enum", - "type": "core::array::Span::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "dojo::world::iworld::IWorld", - "items": [ - { - "type": "function", - "name": "resource", - "inputs": [ - { - "name": "selector", - "type": "core::felt252" - } - ], - "outputs": [ - { - "type": "dojo::world::resource::Resource" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "uuid", - "inputs": [], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "metadata", - "inputs": [ - { - "name": "resource_selector", - "type": "core::felt252" - } - ], - "outputs": [ - { - "type": "dojo::model::metadata::ResourceMetadata" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "set_metadata", - "inputs": [ - { - "name": "metadata", - "type": "dojo::model::metadata::ResourceMetadata" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "register_namespace", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "register_event", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "register_model", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "register_contract", - "inputs": [ - { - "name": "salt", - "type": "core::felt252" - }, - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [ - { - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "init_contract", - "inputs": [ - { - "name": "selector", - "type": "core::felt252" - }, - { - "name": "init_calldata", - "type": "core::array::Span::" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "upgrade_event", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "upgrade_model", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "upgrade_contract", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [ - { - "type": "core::starknet::class_hash::ClassHash" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "emit_event", - "inputs": [ - { - "name": "event_selector", - "type": "core::felt252" - }, - { - "name": "keys", - "type": "core::array::Span::" - }, - { - "name": "values", - "type": "core::array::Span::" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "emit_events", - "inputs": [ - { - "name": "event_selector", - "type": "core::felt252" - }, - { - "name": "keys", - "type": "core::array::Span::>" - }, - { - "name": "values", - "type": "core::array::Span::>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "entity", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "index", - "type": "dojo::model::definition::ModelIndex" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [ - { - "type": "core::array::Span::" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "entities", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "indexes", - "type": "core::array::Span::" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [ - { - "type": "core::array::Span::>" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "set_entity", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "index", - "type": "dojo::model::definition::ModelIndex" - }, - { - "name": "values", - "type": "core::array::Span::" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_entities", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "indexes", - "type": "core::array::Span::" - }, - { - "name": "values", - "type": "core::array::Span::>" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "delete_entity", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "index", - "type": "dojo::model::definition::ModelIndex" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "delete_entities", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "indexes", - "type": "core::array::Span::" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "is_owner", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::bool" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "grant_owner", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "revoke_owner", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "is_writer", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::bool" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "grant_writer", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "revoke_writer", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableWorld", - "interface_name": "dojo::world::iworld::IUpgradeableWorld" - }, - { - "type": "interface", - "name": "dojo::world::iworld::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": "world_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::WorldSpawned", - "kind": "struct", - "members": [ - { - "name": "creator", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::WorldUpgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::NamespaceRegistered", - "kind": "struct", - "members": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "hash", - "type": "core::felt252", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ModelRegistered", - "kind": "struct", - "members": [ - { - "name": "name", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "namespace", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::EventRegistered", - "kind": "struct", - "members": [ - { - "name": "name", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "namespace", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ContractRegistered", - "kind": "struct", - "members": [ - { - "name": "name", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "namespace", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "salt", - "type": "core::felt252", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ModelUpgraded", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - }, - { - "name": "prev_address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::EventUpgraded", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - }, - { - "name": "prev_address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ContractUpgraded", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ContractInitialized", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "init_calldata", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::EventEmitted", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "system_address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "key" - }, - { - "name": "keys", - "type": "core::array::Span::", - "kind": "data" - }, - { - "name": "values", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::MetadataUpdate", - "kind": "struct", - "members": [ - { - "name": "resource", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "uri", - "type": "core::byte_array::ByteArray", - "kind": "data" - }, - { - "name": "hash", - "type": "core::felt252", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::StoreSetRecord", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "entity_id", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "keys", - "type": "core::array::Span::", - "kind": "data" - }, - { - "name": "values", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::StoreUpdateRecord", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "entity_id", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "values", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::StoreUpdateMember", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "entity_id", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "member_selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "values", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::StoreDelRecord", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "entity_id", - "type": "core::felt252", - "kind": "key" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::WriterUpdated", - "kind": "struct", - "members": [ - { - "name": "resource", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "key" - }, - { - "name": "value", - "type": "core::bool", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::OwnerUpdated", - "kind": "struct", - "members": [ - { - "name": "resource", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "key" - }, - { - "name": "value", - "type": "core::bool", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::Event", - "kind": "enum", - "variants": [ - { - "name": "WorldSpawned", - "type": "dojo::world::world_contract::world::WorldSpawned", - "kind": "nested" - }, - { - "name": "WorldUpgraded", - "type": "dojo::world::world_contract::world::WorldUpgraded", - "kind": "nested" - }, - { - "name": "NamespaceRegistered", - "type": "dojo::world::world_contract::world::NamespaceRegistered", - "kind": "nested" - }, - { - "name": "ModelRegistered", - "type": "dojo::world::world_contract::world::ModelRegistered", - "kind": "nested" - }, - { - "name": "EventRegistered", - "type": "dojo::world::world_contract::world::EventRegistered", - "kind": "nested" - }, - { - "name": "ContractRegistered", - "type": "dojo::world::world_contract::world::ContractRegistered", - "kind": "nested" - }, - { - "name": "ModelUpgraded", - "type": "dojo::world::world_contract::world::ModelUpgraded", - "kind": "nested" - }, - { - "name": "EventUpgraded", - "type": "dojo::world::world_contract::world::EventUpgraded", - "kind": "nested" - }, - { - "name": "ContractUpgraded", - "type": "dojo::world::world_contract::world::ContractUpgraded", - "kind": "nested" - }, - { - "name": "ContractInitialized", - "type": "dojo::world::world_contract::world::ContractInitialized", - "kind": "nested" - }, - { - "name": "EventEmitted", - "type": "dojo::world::world_contract::world::EventEmitted", - "kind": "nested" - }, - { - "name": "MetadataUpdate", - "type": "dojo::world::world_contract::world::MetadataUpdate", - "kind": "nested" - }, - { - "name": "StoreSetRecord", - "type": "dojo::world::world_contract::world::StoreSetRecord", - "kind": "nested" - }, - { - "name": "StoreUpdateRecord", - "type": "dojo::world::world_contract::world::StoreUpdateRecord", - "kind": "nested" - }, - { - "name": "StoreUpdateMember", - "type": "dojo::world::world_contract::world::StoreUpdateMember", - "kind": "nested" - }, - { - "name": "StoreDelRecord", - "type": "dojo::world::world_contract::world::StoreDelRecord", - "kind": "nested" - }, - { - "name": "WriterUpdated", - "type": "dojo::world::world_contract::world::WriterUpdated", - "kind": "nested" - }, - { - "name": "OwnerUpdated", - "type": "dojo::world::world_contract::world::OwnerUpdated", - "kind": "nested" - } - ] - } - ] - }, - "contracts": [ - { - "address": "0x7f4862123d52dffae89ec3fb4557690cd7fe2e92c9bf48d3bf8e44abfeafcf4", - "class_hash": "0x78b9f6c5bf71c8f9fc992f0c3a955dfc17fa6384bd2857d5ba32206a354ff9b", - "abi": [ - { - "type": "impl", - "name": "bank_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "bank_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BankSystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::bank::IBankSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::bank::contracts::bank::IBankSystems", - "items": [ - { - "type": "function", - "name": "change_owner_amm_fee", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "new_owner_fee_num", - "type": "core::integer::u128" - }, - { - "name": "new_owner_fee_denom", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "change_owner_bridge_fee", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "owner_bridge_fee_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "owner_bridge_fee_wtdr_percent", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::bank::contracts::bank::bank_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-bank_systems", - "selector": "0x16cf356882260a01771aedaab01f8e3afdab764944c3c4d41c617cd76b91e6a", - "systems": [ - "change_owner_amm_fee", - "change_owner_bridge_fee", - "upgrade" - ] - }, - { - "address": "0x1a3169679e32c64f68eb3dadc2795160b27d8dbf030a978708a87fce391fcae", - "class_hash": "0x333584d37f9cf4ec51a61e4fcd47875fb62dc1f4843add096cf2e4983516fea", - "abi": [ - { - "type": "impl", - "name": "battle_pillage_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "battle_pillage_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BattlePillageContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract" - }, - { - "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract", - "items": [ - { - "type": "function", - "name": "battle_pillage", - "inputs": [ - { - "name": "army_id", - "type": "core::integer::u32" - }, - { - "name": "structure_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_pillage_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-battle_pillage_systems", - "selector": "0x9861172f7b864354b6e23d8971f0b054c518337a3cea854724658c43f9f580", - "systems": [ - "battle_pillage", - "upgrade" - ] - }, - { - "address": "0x76ac17d7b4d8d42b313babda68f3a5fbf9a0664609205cedf5198ae3a192c1d", - "class_hash": "0x4db4a33f8a9fc59d6e5c9a865cbffbadd4df15907a098804e33f007d1baf1a7", - "abi": [ - { - "type": "impl", - "name": "battle_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "battle_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BattleContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleContract" - }, - { - "type": "enum", - "name": "s0_eternum::models::combat::BattleSide", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Attack", - "type": "()" - }, - { - "name": "Defence", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleContract", - "items": [ - { - "type": "function", - "name": "battle_start", - "inputs": [ - { - "name": "attacking_army_id", - "type": "core::integer::u32" - }, - { - "name": "defending_army_id", - "type": "core::integer::u32" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "battle_force_start", - "inputs": [ - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "defending_army_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "battle_join", - "inputs": [ - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" - }, - { - "name": "army_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "battle_leave", - "inputs": [ - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "army_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "battle_claim", - "inputs": [ - { - "name": "army_id", - "type": "core::integer::u32" - }, - { - "name": "structure_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-battle_systems", - "selector": "0x28fc8bb4b5e0140b71566a257468e491e41a12f2f284cae6d4e731abd862067", - "systems": [ - "battle_start", - "battle_force_start", - "battle_join", - "battle_leave", - "battle_claim", - "upgrade" - ] - }, - { - "address": "0x793436e661c06da00e0da2bf2229636f8a022f1bef717a371f5cd2d4b0ad47d", - "class_hash": "0x57f215fc69b9ebea7f170dc735af052a1a94231957647af6b767d9049226d8c", - "abi": [ - { - "type": "impl", - "name": "battle_utils_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "battle_utils_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BattleUtilsContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract" - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::Troops", - "members": [ - { - "name": "knight_count", - "type": "core::integer::u64" - }, - { - "name": "paladin_count", - "type": "core::integer::u64" - }, - { - "name": "crossbowman_count", - "type": "core::integer::u64" - } - ] - }, - { - "type": "enum", - "name": "s0_eternum::models::combat::BattleSide", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Attack", - "type": "()" - }, - { - "name": "Defence", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::BattleArmy", - "members": [ - { - "name": "troops", - "type": "s0_eternum::models::combat::Troops" - }, - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::BattleHealth", - "members": [ - { - "name": "current", - "type": "core::integer::u128" - }, - { - "name": "lifetime", - "type": "core::integer::u128" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::Battle", - "members": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "attack_army", - "type": "s0_eternum::models::combat::BattleArmy" - }, - { - "name": "attack_army_lifetime", - "type": "s0_eternum::models::combat::BattleArmy" - }, - { - "name": "defence_army", - "type": "s0_eternum::models::combat::BattleArmy" - }, - { - "name": "defence_army_lifetime", - "type": "s0_eternum::models::combat::BattleArmy" - }, - { - "name": "attackers_resources_escrow_id", - "type": "core::integer::u32" - }, - { - "name": "defenders_resources_escrow_id", - "type": "core::integer::u32" - }, - { - "name": "attack_army_health", - "type": "s0_eternum::models::combat::BattleHealth" - }, - { - "name": "defence_army_health", - "type": "s0_eternum::models::combat::BattleHealth" - }, - { - "name": "attack_delta", - "type": "core::integer::u64" - }, - { - "name": "defence_delta", - "type": "core::integer::u64" - }, - { - "name": "last_updated", - "type": "core::integer::u64" - }, - { - "name": "duration_left", - "type": "core::integer::u64" - }, - { - "name": "start_at", - "type": "core::integer::u64" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::Army", - "members": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "troops", - "type": "s0_eternum::models::combat::Troops" - }, - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract", - "items": [ - { - "type": "function", - "name": "leave_battle", - "inputs": [ - { - "name": "battle", - "type": "s0_eternum::models::combat::Battle" - }, - { - "name": "army", - "type": "s0_eternum::models::combat::Army" - } - ], - "outputs": [ - { - "type": "(s0_eternum::models::combat::Battle, s0_eternum::models::combat::Army)" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "leave_battle_if_ended", - "inputs": [ - { - "name": "battle", - "type": "s0_eternum::models::combat::Battle" - }, - { - "name": "army", - "type": "s0_eternum::models::combat::Army" - } - ], - "outputs": [ - { - "type": "(s0_eternum::models::combat::Battle, s0_eternum::models::combat::Army)" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_utils_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-battle_utils_systems", - "selector": "0x4199f9a24edfc349a8a16e338daaaea77af951bcc40d636e85107731d52d2b7", - "systems": [ - "leave_battle", - "leave_battle_if_ended", - "upgrade" - ] - }, - { - "address": "0x12817bed1bdd05251fc4921f03625f2e142873eaec93d527aff3ed806baf860", - "class_hash": "0x166ac57561dc94cb60d6e4b709000aa3df688b2884649a2a69a48b8aa630412", - "abi": [ - { - "type": "impl", - "name": "building_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "building_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BuildingContractImpl", - "interface_name": "s0_eternum::systems::buildings::contracts::IBuildingContract" - }, - { - "type": "enum", - "name": "s0_eternum::models::position::Direction", - "variants": [ - { - "name": "East", - "type": "()" - }, - { - "name": "NorthEast", - "type": "()" - }, - { - "name": "NorthWest", - "type": "()" - }, - { - "name": "West", - "type": "()" - }, - { - "name": "SouthWest", - "type": "()" - }, - { - "name": "SouthEast", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "enum", - "name": "s0_eternum::models::buildings::BuildingCategory", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Castle", - "type": "()" - }, - { - "name": "Resource", - "type": "()" - }, - { - "name": "Farm", - "type": "()" - }, - { - "name": "FishingVillage", - "type": "()" - }, - { - "name": "Barracks", - "type": "()" - }, - { - "name": "Market", - "type": "()" - }, - { - "name": "ArcheryRange", - "type": "()" - }, - { - "name": "Stable", - "type": "()" - }, - { - "name": "TradingPost", - "type": "()" - }, - { - "name": "WorkersHut", - "type": "()" - }, - { - "name": "WatchTower", - "type": "()" - }, - { - "name": "Walls", - "type": "()" - }, - { - "name": "Storehouse", - "type": "()" - } - ] - }, - { - "type": "enum", - "name": "core::option::Option::", - "variants": [ - { - "name": "Some", - "type": "core::integer::u8" - }, - { - "name": "None", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::position::Coord", - "members": [ - { - "name": "x", - "type": "core::integer::u32" - }, - { - "name": "y", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::buildings::contracts::IBuildingContract", - "items": [ - { - "type": "function", - "name": "create", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "directions", - "type": "core::array::Span::" - }, - { - "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" - }, - { - "name": "produce_resource_type", - "type": "core::option::Option::" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "pause_production", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "building_coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "resume_production", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "building_coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "destroy", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "building_coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::buildings::contracts::building_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-building_systems", - "selector": "0x5f7b231f89cc7ec90785783e2484266d4b35e7f1488ec406ffea0cf92fac777", - "systems": [ - "create", - "pause_production", - "resume_production", - "destroy", - "upgrade" - ] - }, - { - "address": "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - "class_hash": "0x2a1623aa93f362b754f5c9dc9c592ef42bf820498ba120b256002463aa89292", - "abi": [ - { - "type": "impl", - "name": "config_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "config_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IWorldConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IWorldConfig", - "items": [ - { - "type": "function", - "name": "set_world_config", - "inputs": [ - { - "name": "admin_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "realm_l2_contract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "SeasonConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ISeasonConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ISeasonConfig", - "items": [ - { - "type": "function", - "name": "set_season_config", - "inputs": [ - { - "name": "season_pass_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "realms_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "lords_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "start_at", - "type": "core::integer::u64" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_season_bridge_config", - "inputs": [ - { - "name": "close_after_end_seconds", - "type": "core::integer::u64" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "VRFConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IVRFConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IVRFConfig", - "items": [ - { - "type": "function", - "name": "set_vrf_config", - "inputs": [ - { - "name": "vrf_provider_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "QuestConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IQuestConfig" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IQuestConfig", - "items": [ - { - "type": "function", - "name": "set_quest_config", - "inputs": [ - { - "name": "production_material_multiplier", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_quest_reward_config", - "inputs": [ - { - "name": "quest_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "MapConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IMapConfig" - }, - { - "type": "struct", - "name": "s0_eternum::models::config::MapConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "reward_resource_amount", - "type": "core::integer::u128" - }, - { - "name": "shards_mines_fail_probability", - "type": "core::integer::u128" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IMapConfig", - "items": [ - { - "type": "function", - "name": "set_map_config", - "inputs": [ - { - "name": "map_config", - "type": "s0_eternum::models::config::MapConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "CapacityConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ICapacityConfig" - }, - { - "type": "enum", - "name": "s0_eternum::models::config::CapacityConfigCategory", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Structure", - "type": "()" - }, - { - "name": "Donkey", - "type": "()" - }, - { - "name": "Army", - "type": "()" - }, - { - "name": "Storehouse", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::config::CapacityConfig", - "members": [ - { - "name": "category", - "type": "s0_eternum::models::config::CapacityConfigCategory" - }, - { - "name": "weight_gram", - "type": "core::integer::u128" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ICapacityConfig", - "items": [ - { - "type": "function", - "name": "set_capacity_config", - "inputs": [ - { - "name": "capacity_config", - "type": "s0_eternum::models::config::CapacityConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TravelStaminaCostConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITravelStaminaCostConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITravelStaminaCostConfig", - "items": [ - { - "type": "function", - "name": "set_travel_stamina_cost_config", - "inputs": [ - { - "name": "travel_type", - "type": "core::integer::u8" - }, - { - "name": "cost", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "WeightConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IWeightConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IWeightConfig", - "items": [ - { - "type": "function", - "name": "set_weight_config", - "inputs": [ - { - "name": "entity_type", - "type": "core::integer::u32" - }, - { - "name": "weight_gram", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "BattleConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBattleConfig" - }, - { - "type": "struct", - "name": "s0_eternum::models::config::BattleConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "regular_immunity_ticks", - "type": "core::integer::u8" - }, - { - "name": "hyperstructure_immunity_ticks", - "type": "core::integer::u8" - }, - { - "name": "battle_delay_seconds", - "type": "core::integer::u64" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBattleConfig", - "items": [ - { - "type": "function", - "name": "set_battle_config", - "inputs": [ - { - "name": "battle_config", - "type": "s0_eternum::models::config::BattleConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TickConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITickConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITickConfig", - "items": [ - { - "type": "function", - "name": "set_tick_config", - "inputs": [ - { - "name": "tick_id", - "type": "core::integer::u8" - }, - { - "name": "tick_interval_in_seconds", - "type": "core::integer::u64" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "StaminaConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IStaminaConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IStaminaConfig", - "items": [ - { - "type": "function", - "name": "set_stamina_config", - "inputs": [ - { - "name": "unit_type", - "type": "core::integer::u8" - }, - { - "name": "max_stamina", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TravelFoodCostConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITravelFoodCostConfig" - }, - { - "type": "struct", - "name": "s0_eternum::models::config::TravelFoodCostConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "unit_type", - "type": "core::integer::u8" - }, - { - "name": "explore_wheat_burn_amount", - "type": "core::integer::u128" - }, - { - "name": "explore_fish_burn_amount", - "type": "core::integer::u128" - }, - { - "name": "travel_wheat_burn_amount", - "type": "core::integer::u128" - }, - { - "name": "travel_fish_burn_amount", - "type": "core::integer::u128" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITravelFoodCostConfig", - "items": [ - { - "type": "function", - "name": "set_travel_food_cost_config", - "inputs": [ - { - "name": "travel_food_cost_config", - "type": "s0_eternum::models::config::TravelFoodCostConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "StaminaRefillConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IStaminaRefillConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IStaminaRefillConfig", - "items": [ - { - "type": "function", - "name": "set_stamina_refill_config", - "inputs": [ - { - "name": "amount_per_tick", - "type": "core::integer::u16" - }, - { - "name": "start_boost_tick_count", - "type": "core::integer::u8" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "LevelingConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ILevelingConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ILevelingConfig", - "items": [ - { - "type": "function", - "name": "set_leveling_config", - "inputs": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "decay_interval", - "type": "core::integer::u64" - }, - { - "name": "max_level", - "type": "core::integer::u64" - }, - { - "name": "decay_scaled", - "type": "core::integer::u128" - }, - { - "name": "cost_percentage_scaled", - "type": "core::integer::u128" - }, - { - "name": "base_multiplier", - "type": "core::integer::u128" - }, - { - "name": "wheat_base_amount", - "type": "core::integer::u128" - }, - { - "name": "fish_base_amount", - "type": "core::integer::u128" - }, - { - "name": "resource_1_costs", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "resource_2_costs", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "resource_3_costs", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "ProductionConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IProductionConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IProductionConfig", - "items": [ - { - "type": "function", - "name": "set_production_config", - "inputs": [ - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "amount", - "type": "core::integer::u128" - }, - { - "name": "cost", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TransportConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITransportConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITransportConfig", - "items": [ - { - "type": "function", - "name": "set_speed_config", - "inputs": [ - { - "name": "entity_type", - "type": "core::integer::u32" - }, - { - "name": "sec_per_km", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "HyperstructureConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IHyperstructureConfig" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IHyperstructureConfig", - "items": [ - { - "type": "function", - "name": "set_hyperstructure_config", - "inputs": [ - { - "name": "resources_for_completion", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128, core::integer::u128)>" - }, - { - "name": "time_between_shares_change", - "type": "core::integer::u64" - }, - { - "name": "points_per_cycle", - "type": "core::integer::u128" - }, - { - "name": "points_for_win", - "type": "core::integer::u128" - }, - { - "name": "points_on_completion", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "BankConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBankConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBankConfig", - "items": [ - { - "type": "function", - "name": "set_bank_config", - "inputs": [ - { - "name": "lords_cost", - "type": "core::integer::u128" - }, - { - "name": "lp_fee_num", - "type": "core::integer::u128" - }, - { - "name": "lp_fee_denom", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TroopConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITroopConfig" - }, - { - "type": "struct", - "name": "s0_eternum::models::config::TroopConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "health", - "type": "core::integer::u32" - }, - { - "name": "knight_strength", - "type": "core::integer::u8" - }, - { - "name": "paladin_strength", - "type": "core::integer::u8" - }, - { - "name": "crossbowman_strength", - "type": "core::integer::u16" - }, - { - "name": "advantage_percent", - "type": "core::integer::u16" - }, - { - "name": "disadvantage_percent", - "type": "core::integer::u16" - }, - { - "name": "max_troop_count", - "type": "core::integer::u64" - }, - { - "name": "pillage_health_divisor", - "type": "core::integer::u8" - }, - { - "name": "army_free_per_structure", - "type": "core::integer::u8" - }, - { - "name": "army_extra_per_building", - "type": "core::integer::u8" - }, - { - "name": "army_max_per_structure", - "type": "core::integer::u8" - }, - { - "name": "battle_leave_slash_num", - "type": "core::integer::u8" - }, - { - "name": "battle_leave_slash_denom", - "type": "core::integer::u8" - }, - { - "name": "battle_time_scale", - "type": "core::integer::u16" - }, - { - "name": "battle_max_time_seconds", - "type": "core::integer::u64" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITroopConfig", - "items": [ - { - "type": "function", - "name": "set_troop_config", - "inputs": [ - { - "name": "troop_config", - "type": "s0_eternum::models::config::TroopConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "BuildingCategoryPopulationConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBuildingCategoryPopConfig" - }, - { - "type": "enum", - "name": "s0_eternum::models::buildings::BuildingCategory", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Castle", - "type": "()" - }, - { - "name": "Resource", - "type": "()" - }, - { - "name": "Farm", - "type": "()" - }, - { - "name": "FishingVillage", - "type": "()" - }, - { - "name": "Barracks", - "type": "()" - }, - { - "name": "Market", - "type": "()" - }, - { - "name": "ArcheryRange", - "type": "()" - }, - { - "name": "Stable", - "type": "()" - }, - { - "name": "TradingPost", - "type": "()" - }, - { - "name": "WorkersHut", - "type": "()" - }, - { - "name": "WatchTower", - "type": "()" - }, - { - "name": "Walls", - "type": "()" - }, - { - "name": "Storehouse", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBuildingCategoryPopConfig", - "items": [ - { - "type": "function", - "name": "set_building_category_pop_config", - "inputs": [ - { - "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" - }, - { - "name": "population", - "type": "core::integer::u32" - }, - { - "name": "capacity", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "PopulationConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IPopulationConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IPopulationConfig", - "items": [ - { - "type": "function", - "name": "set_population_config", - "inputs": [ - { - "name": "base_population", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "BuildingConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBuildingConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBuildingConfig", - "items": [ - { - "type": "function", - "name": "set_building_general_config", - "inputs": [ - { - "name": "base_cost_percent_increase", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_building_config", - "inputs": [ - { - "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" - }, - { - "name": "building_resource_type", - "type": "core::integer::u8" - }, - { - "name": "cost_of_building", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "IMercenariesConfig", - "interface_name": "s0_eternum::systems::config::contracts::IMercenariesConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IMercenariesConfig", - "items": [ - { - "type": "function", - "name": "set_mercenaries_config", - "inputs": [ - { - "name": "knights_lower_bound", - "type": "core::integer::u64" - }, - { - "name": "knights_upper_bound", - "type": "core::integer::u64" - }, - { - "name": "paladins_lower_bound", - "type": "core::integer::u64" - }, - { - "name": "paladins_upper_bound", - "type": "core::integer::u64" - }, - { - "name": "crossbowmen_lower_bound", - "type": "core::integer::u64" - }, - { - "name": "crossbowmen_upper_bound", - "type": "core::integer::u64" - }, - { - "name": "rewards", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "IResourceBridgeConfig", - "interface_name": "s0_eternum::systems::config::contracts::IResourceBridgeConfig" - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "deposit_paused", - "type": "core::bool" - }, - { - "name": "withdraw_paused", - "type": "core::bool" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeFeeSplitConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "velords_fee_on_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "velords_fee_on_wtdr_percent", - "type": "core::integer::u16" - }, - { - "name": "season_pool_fee_on_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "season_pool_fee_on_wtdr_percent", - "type": "core::integer::u16" - }, - { - "name": "client_fee_on_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "client_fee_on_wtdr_percent", - "type": "core::integer::u16" - }, - { - "name": "velords_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "season_pool_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "max_bank_fee_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "max_bank_fee_wtdr_percent", - "type": "core::integer::u16" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeWhitelistConfig", - "members": [ - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IResourceBridgeConfig", - "items": [ - { - "type": "function", - "name": "set_resource_bridge_config", - "inputs": [ - { - "name": "resource_bridge_config", - "type": "s0_eternum::models::config::ResourceBridgeConfig" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_resource_bridge_fee_split_config", - "inputs": [ - { - "name": "resource_bridge_fee_split_config", - "type": "s0_eternum::models::config::ResourceBridgeFeeSplitConfig" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_resource_bridge_whitelist_config", - "inputs": [ - { - "name": "resource_bridge_whitelist_config", - "type": "s0_eternum::models::config::ResourceBridgeWhitelistConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "RealmLevelConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IRealmLevelConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IRealmLevelConfig", - "items": [ - { - "type": "function", - "name": "set_realm_max_level_config", - "inputs": [ - { - "name": "new_max_level", - "type": "core::integer::u8" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_realm_level_config", - "inputs": [ - { - "name": "level", - "type": "core::integer::u8" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "ISettlementConfig", - "interface_name": "s0_eternum::systems::config::contracts::ISettlementConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ISettlementConfig", - "items": [ - { - "type": "function", - "name": "set_settlement_config", - "inputs": [ - { - "name": "center", - "type": "core::integer::u32" - }, - { - "name": "base_distance", - "type": "core::integer::u32" - }, - { - "name": "min_first_layer_distance", - "type": "core::integer::u32" - }, - { - "name": "points_placed", - "type": "core::integer::u32" - }, - { - "name": "current_layer", - "type": "core::integer::u32" - }, - { - "name": "current_side", - "type": "core::integer::u32" - }, - { - "name": "current_point_on_side", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "achievement::components::achievable::AchievableComponent::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::config::contracts::config_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - }, - { - "name": "AchievableEvent", - "type": "achievement::components::achievable::AchievableComponent::Event", - "kind": "flat" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-config_systems", - "selector": "0x4deb9db2b1005876b689d07a98673dacb6beea64ef9f564a19a38228d798204", - "systems": [ - "set_world_config", - "set_season_config", - "set_season_bridge_config", - "set_vrf_config", - "set_quest_config", - "set_quest_reward_config", - "set_map_config", - "set_capacity_config", - "set_travel_stamina_cost_config", - "set_weight_config", - "set_battle_config", - "set_tick_config", - "set_stamina_config", - "set_travel_food_cost_config", - "set_stamina_refill_config", - "set_leveling_config", - "set_production_config", - "set_speed_config", - "set_hyperstructure_config", - "set_bank_config", - "set_troop_config", - "set_building_category_pop_config", - "set_population_config", - "set_building_general_config", - "set_building_config", - "set_mercenaries_config", - "set_resource_bridge_config", - "set_resource_bridge_fee_split_config", - "set_resource_bridge_whitelist_config", - "set_realm_max_level_config", - "set_realm_level_config", - "set_settlement_config", - "upgrade" - ] - }, - { - "address": "0xf15b647039a99451c530650bbad145c082d60ff26f02856de132bf202c893a", - "class_hash": "0x4a67b90b5bcdfd6cdc139c5e8fc204d8e31d59c038b192d30c33dea54f1d46e", - "abi": [ - { - "type": "impl", - "name": "dev_bank_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "dev_bank_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BankSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::bank::IBankSystems" - }, - { - "type": "struct", - "name": "s0_eternum::models::position::Coord", - "members": [ - { - "name": "x", - "type": "core::integer::u32" - }, - { - "name": "y", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::dev::contracts::bank::IBankSystems", - "items": [ - { - "type": "function", - "name": "create_admin_bank", - "inputs": [ - { - "name": "name", - "type": "core::felt252" - }, - { - "name": "coord", - "type": "s0_eternum::models::position::Coord" - }, - { - "name": "owner_fee_num", - "type": "core::integer::u128" - }, - { - "name": "owner_fee_denom", - "type": "core::integer::u128" - }, - { - "name": "owner_bridge_fee_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "owner_bridge_fee_wtdr_percent", - "type": "core::integer::u16" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::dev::contracts::bank::dev_bank_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-dev_bank_systems", - "selector": "0x436d7ef5fa5753c742f95b4fd3a7722399b309251363684474bfcba389fb607", - "systems": [ - "create_admin_bank", - "upgrade" - ] - }, - { - "address": "0x729222a8e3757daec72d37dd434a3a44d3c0bddbec95cf087fb1b983b166b1a", - "class_hash": "0x1b92ab9641011892a0ee9b70dd142bbe52b53bef66ae2ff5e92a20e445375f4", - "abi": [ - { - "type": "impl", - "name": "dev_realm_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "dev_realm_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "DevRealmSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::realm::IDevRealmSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::dev::contracts::realm::IDevRealmSystems", - "items": [ - { - "type": "function", - "name": "create", - "inputs": [ - { - "name": "realm_id", - "type": "core::integer::u32" - }, - { - "name": "frontend", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::dev::contracts::realm::dev_realm_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-dev_realm_systems", - "selector": "0x2a2f52f1a66a15e1e6bee3b5ea2d104bc146e82c1625c5421f6f45c44640824", - "systems": [ - "create", - "upgrade" - ] - }, - { - "address": "0x17410a6c37040ef285251f763799939f69033c69c6d5f9ddb61ff4a139d3f58", - "class_hash": "0x36772edb97443579ee3f8e7c590bcf623e6a383f3323229df75544eb2a97129", - "abi": [ - { - "type": "impl", - "name": "dev_resource_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "dev_resource_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "ResourceSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::resource::IResourceSystems" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::dev::contracts::resource::IResourceSystems", - "items": [ - { - "type": "function", - "name": "mint", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::dev::contracts::resource::dev_resource_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-dev_resource_systems", - "selector": "0x6125379dcbb305b4f4b955271c3c4d472ece9852c3592d9d38a9fbc63fe9025", - "systems": [ - "mint", - "upgrade" - ] - }, - { - "address": "0x68a2cb801dc504acb121c7609d13f1f4bea6739dc80c31d789868ebda339067", - "class_hash": "0x2727b507b2d724b109bc2f969ccb090ee75e78b4c0d2d685e5e8cbce47f07f7", - "abi": [ - { - "type": "impl", - "name": "donkey_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "donkey_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::transport::contracts::donkey_systems::donkey_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-donkey_systems", - "selector": "0x76a0f4e4cdc01c969350b612c38d49d38689d5fde54e4afb3205a4629db83b6", - "systems": [ - "upgrade" - ] - }, - { - "address": "0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4", - "class_hash": "0x2107679161457e3f08fcd5bbb8f8473983e5c8b3c48c1ef67840958e994547c", - "abi": [ - { - "type": "impl", - "name": "guild_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "guild_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "GuildSystemsImpl", - "interface_name": "s0_eternum::systems::guild::contracts::IGuildSystems" - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::guild::contracts::IGuildSystems", - "items": [ - { - "type": "function", - "name": "create_guild", - "inputs": [ - { - "name": "is_public", - "type": "core::bool" - }, - { - "name": "guild_name", - "type": "core::felt252" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "join_guild", - "inputs": [ - { - "name": "guild_entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "whitelist_player", - "inputs": [ - { - "name": "player_address_to_whitelist", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "guild_entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "transfer_guild_ownership", - "inputs": [ - { - "name": "guild_entity_id", - "type": "core::integer::u32" - }, - { - "name": "to_player_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "remove_guild_member", - "inputs": [ - { - "name": "player_address_to_remove", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "remove_player_from_whitelist", - "inputs": [ - { - "name": "player_address_to_remove", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "guild_entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::guild::contracts::guild_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-guild_systems", - "selector": "0x6b2e6f3912853c9745b74266fe1d344bfe8ba99561982c5b4c3ac0e081f956b", - "systems": [ - "create_guild", - "join_guild", - "whitelist_player", - "transfer_guild_ownership", - "remove_guild_member", - "remove_player_from_whitelist", - "upgrade" - ] - }, - { - "address": "0xf1da2d364a23d3adbdbf25b218cd232c0a1fef3c09f6889d78ac666fd58beb", - "class_hash": "0x7a02ac880a0f3cabe318eab082720128ee0d10eb3be8d9599885ee04c72c9b9", - "abi": [ - { - "type": "impl", - "name": "hyperstructure_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "hyperstructure_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "HyperstructureSystemsImpl", - "interface_name": "s0_eternum::systems::hyperstructure::contracts::IHyperstructureSystems" - }, - { - "type": "struct", - "name": "s0_eternum::models::position::Coord", - "members": [ - { - "name": "x", - "type": "core::integer::u32" - }, - { - "name": "y", - "type": "core::integer::u32" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u32, core::integer::u16)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u32, core::integer::u16)>" - } - ] - }, - { - "type": "enum", - "name": "s0_eternum::models::hyperstructure::Access", - "variants": [ - { - "name": "Public", - "type": "()" - }, - { - "name": "Private", - "type": "()" - }, - { - "name": "GuildOnly", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::hyperstructure::contracts::IHyperstructureSystems", - "items": [ - { - "type": "function", - "name": "create", - "inputs": [ - { - "name": "creator_entity_id", - "type": "core::integer::u32" - }, - { - "name": "coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "contribute_to_construction", - "inputs": [ - { - "name": "hyperstructure_entity_id", - "type": "core::integer::u32" - }, - { - "name": "contributor_entity_id", - "type": "core::integer::u32" - }, - { - "name": "contributions", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_co_owners", - "inputs": [ - { - "name": "hyperstructure_entity_id", - "type": "core::integer::u32" - }, - { - "name": "co_owners", - "type": "core::array::Span::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "end_game", - "inputs": [ - { - "name": "hyperstructures_contributed_to", - "type": "core::array::Span::" - }, - { - "name": "hyperstructure_shareholder_epochs", - "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_access", - "inputs": [ - { - "name": "hyperstructure_entity_id", - "type": "core::integer::u32" - }, - { - "name": "access", - "type": "s0_eternum::models::hyperstructure::Access" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::hyperstructure::contracts::hyperstructure_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-hyperstructure_systems", - "selector": "0x44f825ffb89246cbeda203107846db0efad60bbedb24dc67dbd4a42593e6c82", - "systems": [ - "create", - "contribute_to_construction", - "set_co_owners", - "end_game", - "set_access", - "upgrade" - ] - }, - { - "address": "0x29ebe0bfa1989bac75afe636f7e72c6e8742006d5ca0a26f938fa497f37365b", - "class_hash": "0x7745ddfb6e0ee149ea9e7251c7c26270f637d6c8a16a96a28445329db84d48d", - "abi": [ - { - "type": "impl", - "name": "liquidity_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "liquidity_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "LiquiditySystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::liquidity::ILiquiditySystems" - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "cubit::f128::types::fixed::Fixed", - "members": [ - { - "name": "mag", - "type": "core::integer::u128" - }, - { - "name": "sign", - "type": "core::bool" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::bank::contracts::liquidity::ILiquiditySystems", - "items": [ - { - "type": "function", - "name": "add", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "resource_amount", - "type": "core::integer::u128" - }, - { - "name": "lords_amount", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "remove", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "shares", - "type": "cubit::f128::types::fixed::Fixed" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::bank::contracts::liquidity::liquidity_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-liquidity_systems", - "selector": "0x3cc30307c653c6c1ba1a6e99364f57c94360b8f73787d1518eaab02e9d0d6b", - "systems": [ - "add", - "remove", - "upgrade" - ] - }, - { - "address": "0x41c98a7b8f03f83ad9d4d24ecddd0fd21d5b2f60a2c0ac815f75f0bb6bf5a52", - "class_hash": "0x38af9ba05f482d793c8324222a4fc2015c340a9dd497840269797b24f87450a", - "abi": [ - { - "type": "impl", - "name": "map_generation_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "map_generation_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "MapGenerationSystemsImpl", - "interface_name": "s0_eternum::systems::map::map_generation::IMapGenerationSystems" - }, - { - "type": "struct", - "name": "s0_eternum::models::owner::EntityOwner", - "members": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_owner_id", - "type": "core::integer::u32" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::position::Coord", - "members": [ - { - "name": "x", - "type": "core::integer::u32" - }, - { - "name": "y", - "type": "core::integer::u32" - } - ] - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::map::map_generation::IMapGenerationSystems", - "items": [ - { - "type": "function", - "name": "discover_shards_mine", - "inputs": [ - { - "name": "unit_entity_owner", - "type": "s0_eternum::models::owner::EntityOwner" - }, - { - "name": "coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [ - { - "type": "core::bool" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "add_mercenaries_to_structure", - "inputs": [ - { - "name": "structure_entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::map::map_generation::map_generation_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-map_generation_systems", - "selector": "0x29daec1bf7e70863ae1f9a4b455a1e12030394562eb21b214c9037f9fb71424", - "systems": [ - "discover_shards_mine", - "add_mercenaries_to_structure", - "upgrade" - ] - }, - { - "address": "0x4a212c52c4035bc9bd170125216604f406dcd75b41be11d3b4d89047366d84d", - "class_hash": "0x5dd66452d42d01a490e933231094f081fe535d7ba8222cc56add27221f34cd9", - "abi": [ - { - "type": "impl", - "name": "map_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "map_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "MapSystemsImpl", - "interface_name": "s0_eternum::systems::map::contracts::IMapSystems" - }, - { - "type": "enum", - "name": "s0_eternum::models::position::Direction", - "variants": [ - { - "name": "East", - "type": "()" - }, - { - "name": "NorthEast", - "type": "()" - }, - { - "name": "NorthWest", - "type": "()" - }, - { - "name": "West", - "type": "()" - }, - { - "name": "SouthWest", - "type": "()" - }, - { - "name": "SouthEast", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::map::contracts::IMapSystems", - "items": [ - { - "type": "function", - "name": "explore", - "inputs": [ - { - "name": "unit_id", - "type": "core::integer::u32" - }, - { - "name": "direction", - "type": "s0_eternum::models::position::Direction" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::map::contracts::map_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-map_systems", - "selector": "0x27a92961f46c5ac43e19fa2b7d50d169c2776dbb98478a96a8a3050647431cd", - "systems": [ - "explore", - "upgrade" - ] - }, - { - "address": "0x7e3bae0e253a0131063b63ee4d7b27b50329c617ae88b82d529a70f1a11c63", - "class_hash": "0x288d58cd0a2fa003e18768537e62f72649c451a647fd704096a4b1dae4bdcae", - "abi": [ - { - "type": "impl", - "name": "name_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "name_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "NameSystemsImpl", - "interface_name": "s0_eternum::systems::name::contracts::INameSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::name::contracts::INameSystems", - "items": [ - { - "type": "function", - "name": "set_address_name", - "inputs": [ - { - "name": "name", - "type": "core::felt252" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_entity_name", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "name", - "type": "core::felt252" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::name::contracts::name_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-name_systems", - "selector": "0x57061191efce4db08b753f5d6119a16595a3ac2b91db70e971630c34ff5e16e", - "systems": [ - "set_address_name", - "set_entity_name", - "upgrade" - ] - }, - { - "address": "0x30516789ee1b822d7b448f01be67cec7bf383d3ac4b2380a09f85ad0765f846", - "class_hash": "0x1896883a09bb110c705be2685eacb0b0e6ae67fde76602982f7f32daceb7fa7", - "abi": [ - { - "type": "impl", - "name": "ownership_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "ownership_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "OwnershipSystemsImpl", - "interface_name": "s0_eternum::systems::ownership::contracts::IOwnershipSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::ownership::contracts::IOwnershipSystems", - "items": [ - { - "type": "function", - "name": "transfer_ownership", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "new_owner", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::ownership::contracts::ownership_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-ownership_systems", - "selector": "0x419b9f1d9d3cbe8dd78cb553b0e1895fa2d3cfb9e7e578866056fca72f9108b", - "systems": [ - "transfer_ownership", - "upgrade" - ] - }, - { - "address": "0x1b480f620ea35431ab43dba634795b14f547ef3e77370db6f0a31f2fdc21d86", - "class_hash": "0x5b0020020a6d5d6d8753ef323cc6240cfabb3daa52334fafc2323b8995e6a8c", - "abi": [ - { - "type": "impl", - "name": "realm_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "realm_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "RealmSystemsImpl", - "interface_name": "s0_eternum::systems::realm::contracts::IRealmSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::realm::contracts::IRealmSystems", - "items": [ - { - "type": "function", - "name": "create", - "inputs": [ - { - "name": "owner", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "realm_id", - "type": "core::integer::u32" - }, - { - "name": "frontend", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "upgrade_level", - "inputs": [ - { - "name": "realm_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "quest_claim", - "inputs": [ - { - "name": "quest_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::realm::contracts::realm_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-realm_systems", - "selector": "0x6ae6691704d5df34326545ad7d15afebdd83066596af8c0dcb5d216d1ede909", - "systems": [ - "create", - "upgrade_level", - "quest_claim", - "upgrade" - ] - }, - { - "address": "0x39485580b263e26b208ca689e33f3ea0016d98939b773186eec615d6398dd18", - "class_hash": "0x2b86deb10f19e8a3e75b0051610d1819fa8354aaa328c88c18c0dee28b2cd7", - "abi": [ - { - "type": "impl", - "name": "resource_bridge_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "resource_bridge_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "ResourceBridgeImpl", - "interface_name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems" - }, - { - "type": "struct", - "name": "core::integer::u256", - "members": [ - { - "name": "low", - "type": "core::integer::u128" - }, - { - "name": "high", - "type": "core::integer::u128" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems", - "items": [ - { - "type": "function", - "name": "deposit_initial", - "inputs": [ - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "recipient_realm_id", - "type": "core::integer::u32" - }, - { - "name": "amount", - "type": "core::integer::u256" - }, - { - "name": "client_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "deposit", - "inputs": [ - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "through_bank_id", - "type": "core::integer::u32" - }, - { - "name": "recipient_realm_id", - "type": "core::integer::u32" - }, - { - "name": "amount", - "type": "core::integer::u256" - }, - { - "name": "client_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "start_withdraw", - "inputs": [ - { - "name": "through_bank_id", - "type": "core::integer::u32" - }, - { - "name": "from_realm_id", - "type": "core::integer::u32" - }, - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "amount", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "finish_withdraw", - "inputs": [ - { - "name": "through_bank_id", - "type": "core::integer::u32" - }, - { - "name": "from_entity_id", - "type": "core::integer::u32" - }, - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "recipient_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "client_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::resource_bridge_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-resource_bridge_systems", - "selector": "0x5916a4c5e4fb7f1105244015fcc1e9950efab35919af199a4a2c1aef2c3aa61", - "systems": [ - "deposit_initial", - "deposit", - "start_withdraw", - "finish_withdraw", - "upgrade" - ] - }, - { - "address": "0x2df8fb2bf3f7866aa5a1258df35b9cd21d6a73e040c6cae224ac769fefc2789", - "class_hash": "0x13b3cd46bf3fe06dfb296df2daa903ab1814b9e2a45001074ee8ab9653171d6", - "abi": [ - { - "type": "impl", - "name": "resource_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "resource_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "ResourceSystemsImpl", - "interface_name": "s0_eternum::systems::resources::contracts::resource_systems::IResourceSystems" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::resources::contracts::resource_systems::IResourceSystems", - "items": [ - { - "type": "function", - "name": "approve", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "recipient_entity_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "send", - "inputs": [ - { - "name": "sender_entity_id", - "type": "core::integer::u32" - }, - { - "name": "recipient_entity_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "pickup", - "inputs": [ - { - "name": "recipient_entity_id", - "type": "core::integer::u32" - }, - { - "name": "owner_entity_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::resources::contracts::resource_systems::resource_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-resource_systems", - "selector": "0x31e8be63af9c072934c219dd6cbd2fea3b49fce2311adceb8a8a8870a760b62", - "systems": [ - "approve", - "send", - "pickup", - "upgrade" - ] - }, - { - "address": "0x45d09aa925f24a12546f9e791b130aa443469517a670d3666c5276caa57003f", - "class_hash": "0x2e9bd746faba7d7f8075392a0d214349e9db3ddc8495199a101098b4e2520c3", - "abi": [ - { - "type": "impl", - "name": "season_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "season_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "SeasonSystemsImpl", - "interface_name": "s0_eternum::systems::season::contracts::ISeasonSystems" - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u32, core::integer::u16)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u32, core::integer::u16)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::season::contracts::ISeasonSystems", - "items": [ - { - "type": "function", - "name": "register_to_leaderboard", - "inputs": [ - { - "name": "hyperstructures_contributed_to", - "type": "core::array::Span::" - }, - { - "name": "hyperstructure_shareholder_epochs", - "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "claim_leaderboard_rewards", - "inputs": [ - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::season::contracts::season_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-season_systems", - "selector": "0x384e61da11b2e476dc992c9556f8d1d42814136a36400b5cb34175de183ac9", - "systems": [ - "register_to_leaderboard", - "claim_leaderboard_rewards", - "upgrade" - ] - }, - { - "address": "0x4f92a1d00d3aec8cece60fc2d0fc236fe1d95c54ff0ceb2f393fbc7e0863d8e", - "class_hash": "0xeb430602e661e99572522646cde107ec514e61144be7d21b6d8f506253fb12", - "abi": [ - { - "type": "impl", - "name": "swap_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "swap_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "SwapSystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::swap::ISwapSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::bank::contracts::swap::ISwapSystems", - "items": [ - { - "type": "function", - "name": "buy", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "amount", - "type": "core::integer::u128" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "sell", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "amount", - "type": "core::integer::u128" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::bank::contracts::swap::swap_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-swap_systems", - "selector": "0x14a06d11e0f26724e8e61c141842f95425009d07620b3c369f9f517d568e591", - "systems": [ - "buy", - "sell", - "upgrade" - ] - }, - { - "address": "0x7e2b1334398fafbe640f34bacae99b649d633417960ee397b6a8fb117fec819", - "class_hash": "0x82d4c26c51972a54cce8bdb3a2d75c88cba9435fef478cd548616144dc8cf7", - "abi": [ - { - "type": "impl", - "name": "trade_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "trade_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "TradeSystemsImpl", - "interface_name": "s0_eternum::systems::trade::contracts::trade_systems::ITradeSystems" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::trade::contracts::trade_systems::ITradeSystems", - "items": [ - { - "type": "function", - "name": "create_order", - "inputs": [ - { - "name": "maker_id", - "type": "core::integer::u32" - }, - { - "name": "maker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "taker_id", - "type": "core::integer::u32" - }, - { - "name": "taker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "expires_at", - "type": "core::integer::u64" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "accept_order", - "inputs": [ - { - "name": "taker_id", - "type": "core::integer::u32" - }, - { - "name": "trade_id", - "type": "core::integer::u32" - }, - { - "name": "maker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "taker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "accept_partial_order", - "inputs": [ - { - "name": "taker_id", - "type": "core::integer::u32" - }, - { - "name": "trade_id", - "type": "core::integer::u32" - }, - { - "name": "maker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "taker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "taker_gives_actual_amount", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "cancel_order", - "inputs": [ - { - "name": "trade_id", - "type": "core::integer::u32" - }, - { - "name": "return_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::trade::contracts::trade_systems::trade_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-trade_systems", - "selector": "0x5272cd9b34062cb8bd8ec92ecca87f92a884d4bd2f5bf6c563265a018ac22a5", - "systems": [ - "create_order", - "accept_order", - "accept_partial_order", - "cancel_order", - "upgrade" - ] - }, - { - "address": "0x4069c2be57f08fef9f31afc85a5b4c03c208ebdb278b9d853606caa7a9cbee6", - "class_hash": "0x265849dc16d9a9aea6fa88ba80d8daa77cc3323320eba61acef791980f7731d", - "abi": [ - { - "type": "impl", - "name": "travel_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "travel_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "TravelSystemsImpl", - "interface_name": "s0_eternum::systems::transport::contracts::travel_systems::ITravelSystems" - }, - { - "type": "enum", - "name": "s0_eternum::models::position::Direction", - "variants": [ - { - "name": "East", - "type": "()" - }, - { - "name": "NorthEast", - "type": "()" - }, - { - "name": "NorthWest", - "type": "()" - }, - { - "name": "West", - "type": "()" - }, - { - "name": "SouthWest", - "type": "()" - }, - { - "name": "SouthEast", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::transport::contracts::travel_systems::ITravelSystems", - "items": [ - { - "type": "function", - "name": "travel_hex", - "inputs": [ - { - "name": "travelling_entity_id", - "type": "core::integer::u32" - }, - { - "name": "directions", - "type": "core::array::Span::" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::transport::contracts::travel_systems::travel_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-travel_systems", - "selector": "0x4928d4294639e944ff93869e10cee7533ffd910f5791fc486c04b91f2fcf8fe", - "systems": [ - "travel_hex", - "upgrade" - ] - }, - { - "address": "0x26be0ed574aa9ee6f73b53b12f0a199ddbf4ac697470316cdb3d9d1f5680cab", - "class_hash": "0x73a377e55a1833ac9ab16ad9eb29c941cc182bf8cf4a10720d6737dc7c826ff", - "abi": [ - { - "type": "impl", - "name": "troop_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "troop_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "TroopContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::troop_systems::ITroopContract" - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::Troops", - "members": [ - { - "name": "knight_count", - "type": "core::integer::u64" - }, - { - "name": "paladin_count", - "type": "core::integer::u64" - }, - { - "name": "crossbowman_count", - "type": "core::integer::u64" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::combat::contracts::troop_systems::ITroopContract", - "items": [ - { - "type": "function", - "name": "army_create", - "inputs": [ - { - "name": "army_owner_id", - "type": "core::integer::u32" - }, - { - "name": "is_defensive_army", - "type": "core::bool" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "army_delete", - "inputs": [ - { - "name": "army_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "army_buy_troops", - "inputs": [ - { - "name": "army_id", - "type": "core::integer::u32" - }, - { - "name": "payer_id", - "type": "core::integer::u32" - }, - { - "name": "troops", - "type": "s0_eternum::models::combat::Troops" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "army_merge_troops", - "inputs": [ - { - "name": "from_army_id", - "type": "core::integer::u32" - }, - { - "name": "to_army_id", - "type": "core::integer::u32" - }, - { - "name": "troops", - "type": "s0_eternum::models::combat::Troops" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::combat::contracts::troop_systems::troop_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-troop_systems", - "selector": "0x5f97ab78613558d9346649708e6829b417ad55826ba2e4f7b0fc79ad276180a", - "systems": [ - "army_create", - "army_delete", - "army_buy_troops", - "army_merge_troops", - "upgrade" - ] - } - ], - "models": [ - { - "members": [], - "class_hash": "0x25603f4597c7b9476318af1bf26c9e0f9f7a3f24b8aa4fd4aa095289c74e2bb", - "tag": "s0_eternum-AddressName", - "selector": "0x2a33e6e963e8f80fb8f00a69a8b55ec9834adda81bbb305024500c4b4356e24" - }, - { - "members": [], - "class_hash": "0x7c8598486eb6f5bc890ccac17cc5c4f7400998f5c50247d90e5df0f643f9f2b", - "tag": "s0_eternum-Army", - "selector": "0x34cab5fd09c4f5f5b8624e52c883afec2462c2fc2e7227121f70de648e68dcc" - }, - { - "members": [], - "class_hash": "0x7833dddc0296ff97ec9f1dc202d471ed80888935579f156737927c9207e0417", - "tag": "s0_eternum-ArrivalTime", - "selector": "0xd334451a97858d6173423408cd0c4da2a3878f6ec4f3909e134193d07682c4" - }, - { - "members": [], - "class_hash": "0x189b3d6d05402af89cfefc45b6c6ce579ab81ee7da7cce1fdf08ecb881de732", - "tag": "s0_eternum-Bank", - "selector": "0x6f71dd64e5e14a5ab47d15cfabd84490061490c8c203993790f30cafd5d117e" - }, - { - "members": [], - "class_hash": "0xa7a02d408072e5f97ebf3f0d69acb4fb176223379091948a452c10c314a0d2", - "tag": "s0_eternum-BankConfig", - "selector": "0x2a507ce5bff2ddf50eced9c753dc0a160ba64fc6efe3be4cb26ce51210e2b81" - }, - { - "members": [], - "class_hash": "0x809fe36ec53a3cfa77f64648430007c5bc0bb148c31652b3956bb318a8f7ae", - "tag": "s0_eternum-Battle", - "selector": "0x28394f9c3c874b586a25bf96d137256eab0a702fc3f66aa83464a5a0e062172" - }, - { - "members": [], - "class_hash": "0x715169dd601b742605451b231c47de8970be609fb85f48115b01333766bedf4", - "tag": "s0_eternum-BattleConfig", - "selector": "0x224e4f9b37ed3d9cc06297ea8507e62538b864a92232f0ec53a4c7a4cf6ccfd" - }, - { - "members": [], - "class_hash": "0x551b3f9ea6504a59d70f1fc420d6e20797bdfe822c7c5e8d5d0d6bff8ad679a", - "tag": "s0_eternum-Building", - "selector": "0x74f3912ea921e93e11f5c8267c29d94f367b3c52840c0ec93292ff5d2374d6c" - }, - { - "members": [], - "class_hash": "0x3d1ed9f1e9280e3f046561cfb77244866cc919517e62762cef17779d91a9d4e", - "tag": "s0_eternum-BuildingCategoryPopConfig", - "selector": "0x7713338d5bb53067dd8a10c158385c2744d0dfba8260ddb0658394359b6b5e2" - }, - { - "members": [], - "class_hash": "0x6619a6a57a8361ac09e034d95d26df7608a1314a89386bfbc9fbbc385dfb090", - "tag": "s0_eternum-BuildingConfig", - "selector": "0x1f8462fbfd271244b0144b93124ee213e9ef6edec50e6fc4b0ea41d2b756d87" - }, - { - "members": [], - "class_hash": "0x2fdd5ae262983f3645779ab454a188dd555dcbc3dc3ceb438bf1ee7958b6c5f", - "tag": "s0_eternum-BuildingGeneralConfig", - "selector": "0x1fc4af90bddbc3edb2446f5839d3274131bd7023a2bde3aeddbe29769c0be84" - }, - { - "members": [], - "class_hash": "0x1d3ddebfe5bbb35348ac03a42b77be34ff050b5f60d5370ff5a6415d61f8a11", - "tag": "s0_eternum-BuildingQuantityv2", - "selector": "0xe74ab1d939c8b4763331ecee9187cc91e4a363228e596e0a655667aeedb117" - }, - { - "members": [], - "class_hash": "0x6cafd04dceeb148a4f3cdb0fc76083c74677f11a046f3be2a50cc22279a8074", - "tag": "s0_eternum-CapacityCategory", - "selector": "0x166cc667881fc0d333660d7668601cf536082cc577b720cea8be0f24549473c" - }, - { - "members": [], - "class_hash": "0x3a19b4d090591b5be5a300e1fd02e3b0d52bc20b30b47d7a0255a48a678e29d", - "tag": "s0_eternum-CapacityConfig", - "selector": "0x4bb69cf85cfa897830312e40bb75ab1c0f58c01cbbadf4e835ee5fa37d1bb2e" - }, - { - "members": [], - "class_hash": "0x105a94789b0a8342a90b8878fa4f06553af01b9416d86a0a80d65fc169d3092", - "tag": "s0_eternum-Contribution", - "selector": "0x48fb552387fed5f3f7bcb55468f85ac92efeb06817e5f5e329358b69b4a7d6" - }, - { - "members": [], - "class_hash": "0x56087bbaf3245d64e62c0afd732ffdbe7584493d1a39316a09082182d809da1", - "tag": "s0_eternum-DetachedResource", - "selector": "0x34cc163b0f7a78e671da441bbbfe6dd3632f7f62cbee8e1734c6dec2971478c" - }, - { - "members": [], - "class_hash": "0x71b9c7843ab6be7de6ade56f21be309f9bf08a6e4fc33318dd9f43307e1008", - "tag": "s0_eternum-EntityName", - "selector": "0x4ea8f072e356080ed18f016cbb7f0c43807c733d037c3ad9e52da5fd98e11f0" - }, - { - "members": [], - "class_hash": "0x2d0dd3c37fa25edc072c4fd231c6ec51dbed2ea0304a334a8b47568d9a1ec4f", - "tag": "s0_eternum-EntityOwner", - "selector": "0x19fbc5ce760d680c185bbefb04a4b1870a4f23bc8fda0fbf77b4a241b7ce04a" - }, - { - "members": [], - "class_hash": "0x76ab75f20ec824383b34afe1315ec9e59fe9f23599086b354f43e3c08aa8e24", - "tag": "s0_eternum-Epoch", - "selector": "0x62827d2605e74e8c4ea2f40a6407477a0eae355a2e6485261acbc95e3219fc3" - }, - { - "members": [], - "class_hash": "0x22001c3a27555a192b0a134e76a443707ca89af8fb7a01265473cd609b04a41", - "tag": "s0_eternum-Guild", - "selector": "0x49ac80c25fa65d45250f4dd7a253dd79561a9460e108c173aa413ef246c3e6b" - }, - { - "members": [], - "class_hash": "0x2ba8f917f23ee021008384816f0ad038a1cae8b004c53e18f6bac455ec9efa6", - "tag": "s0_eternum-GuildMember", - "selector": "0x517c08e6a498a5a56742edce432fd533bc4cb16589acf1bb025999a5cec0e66" - }, - { - "members": [], - "class_hash": "0x2f72606313ed3fca8c1d6ec0257466e6b9301cc9fba8ec67d114f7fab0dc23a", - "tag": "s0_eternum-GuildWhitelist", - "selector": "0x5da3d8f80bab03feaa3c5158e1e4584b6b5e213a0feb4d4125798f73b4a528a" - }, - { - "members": [], - "class_hash": "0x111b1a81032822367c6d57b2fe7b2baaaf8304ec0f8075bda6dd83b0827f35d", - "tag": "s0_eternum-Health", - "selector": "0x1aa97583b6abc29f779ed14e03d820d29e64168389ca94367abf35ea7f103a1" - }, - { - "members": [], - "class_hash": "0x6277bc0b34ccf11b00b086ca2c7e83a5ac144532b6b4f843caddfcf01c02327", - "tag": "s0_eternum-Hyperstructure", - "selector": "0x5a47c8b59e367cc045b847bd4f63955ceeeffbc43055ecd11d2d77796bddd73" - }, - { - "members": [], - "class_hash": "0x1f90aa30d9d5d978f71b991daa57bc5ce51070034c3c3749c3378eae720e1b5", - "tag": "s0_eternum-HyperstructureConfig", - "selector": "0x538fcd59a65ece056337c3f4563a41b0922e14c0892d9e0f2e9980716487be3" - }, - { - "members": [], - "class_hash": "0x4f85a565011171be648bda2095b1448773804f29d967448aa2fa81554cbfab1", - "tag": "s0_eternum-HyperstructureResourceConfig", - "selector": "0x3841ccb4835caa2dd2433ed893d593a63d74afea4ec67eccb905df41d6b95b1" - }, - { - "members": [], - "class_hash": "0x7dfe538eaecf8e98fc578ef98c8766c050d1e6fd853f2a663a42d99813b4e23", - "tag": "s0_eternum-Leaderboard", - "selector": "0x2feedf0fc0a7bb2c53a51fee44e1c8a2cbf182ed000b57865c108eaaa463bcf" - }, - { - "members": [], - "class_hash": "0x792ff7a8ffffbaff0859d84e2d87ee5a71996bfeb349248cbf63d7dd1b8a1f4", - "tag": "s0_eternum-LeaderboardEntry", - "selector": "0x446f6cb1881e354935007b6a51033216f2f66cab52573d1bb2a03d7bc7fb4fb" - }, - { - "members": [], - "class_hash": "0x6a6b0e38324523a4d7c9406ad059adc0244353ae86fdb28589419643152d42a", - "tag": "s0_eternum-LeaderboardRegistered", - "selector": "0x3d2cbb167883a8ff584dad6276fc1df0b7757d5e2282f1658d746a8c936116b" - }, - { - "members": [], - "class_hash": "0x19baf80e6ba59bfb8c94643f2ed7c15e902d00d313ac92c90f4071e3ddf0129", - "tag": "s0_eternum-LeaderboardRewardClaimed", - "selector": "0xc7744e31a4ae5a2f24008b6147fac5c735bfa7fc4bbff8224f2833f73a8e93" - }, - { - "members": [], - "class_hash": "0x1a812bd54f7a074e8a1289ab1d7e41e659ef15c607d934abfeda35d987a834", - "tag": "s0_eternum-LevelingConfig", - "selector": "0x57307c2d18e8c1e060fcb4cc9d63ce0abfa90f9e9bca63f00fb08a8b6a6584d" - }, - { - "members": [], - "class_hash": "0x465e09976306288f9d5ba76464636aa3570b50d3dd537e62df642524007eab8", - "tag": "s0_eternum-Liquidity", - "selector": "0x88855562f77d4da524f33db24ad881dd1c3b4d809fa37d2508b5ab1fd4310e" - }, - { - "members": [], - "class_hash": "0x3acaf90122ee7bec0d7e0c29b9d227fb3f7576661157acf5817d2875acdeb24", - "tag": "s0_eternum-MapConfig", - "selector": "0x1c44934bf878736b0ffd224a4d0065ca92072daa6e846de657f58b7b5a4374a" - }, - { - "members": [], - "class_hash": "0x1c99e7ffe68d55ac3fc421eb979fd5d7d197d6dc99cc8893fcaae5abbaedfa9", - "tag": "s0_eternum-Market", - "selector": "0x18457324069342b71d49b485b3b2ced814726c5a978581a172dd806de3d9bac" - }, - { - "members": [], - "class_hash": "0x16eef0d1d4096a35efebc74a9c8254cb8c1af27a8c7d22fda96edc796b4cdac", - "tag": "s0_eternum-MercenariesConfig", - "selector": "0x7983d4a611b82abb59e4320d8032fcb84f3c372c60c83a01d680f14f64bd3c6" - }, - { - "members": [], - "class_hash": "0x247307d7e5299e6b3ce6377a08a9d41497229eaa6a9e591858d0a088c61af4a", - "tag": "s0_eternum-Message", - "selector": "0x3262fb0b2f51323ea7116e1ef4735a6e1be97bc86bbe19fcba298d0edfa0c5c" - }, - { - "members": [], - "class_hash": "0x355984d124ab086115f9b6855c05a7c6ab416e01a45e57a08e13b28ec7db02d", - "tag": "s0_eternum-Movable", - "selector": "0x354103241a35f6b87bb0e9c4ac055975dd5324a93ab74b5b30edcce0067c59" - }, - { - "members": [], - "class_hash": "0x51b6a84422ddfda104af1cb45bbce0609edd265d2b909237ec37dc7aa5a2afd", - "tag": "s0_eternum-Orders", - "selector": "0x2b8ed5e03d3934c534f66fc8194cd3cc112003028691019c9d1dd5ceacf6bc" - }, - { - "members": [], - "class_hash": "0x787159e5bbd67c0eba40db3b4984a9b1ace232ce3991bf96abb6a964b57d2", - "tag": "s0_eternum-OwnedResourcesTracker", - "selector": "0x50b64757716328c2639f72f641130df11177b01695167ec2ffb63f4c5ac8c93" - }, - { - "members": [], - "class_hash": "0x6943ea1c8aee5d7749a85d2e333a8d97dce8d1d661e5bba0d93c850ab33d7da", - "tag": "s0_eternum-Owner", - "selector": "0x2ac70068901471291f27e386276bb51ce50c89e144a6e8e11d4f91b78236241" - }, - { - "members": [], - "class_hash": "0x77effa7d6e9cdaf053e31ddb864c29cc587e756673d8a2bdc8b919ac8eb0373", - "tag": "s0_eternum-Population", - "selector": "0x999f9ad8790ee0ec873b5e149fa1ef1054039e90bba49ac4975ba2cdb54429" - }, - { - "members": [], - "class_hash": "0x58397e297c6e9d5fb96965dd7241321667199c25918efeb27bbb830ab0948c3", - "tag": "s0_eternum-PopulationConfig", - "selector": "0x5cd485b0e678c36a4a14b0fcf5880e58e206c5b8199c9640d88f5ea86efe9b5" - }, - { - "members": [], - "class_hash": "0x4953b4f720c6479aae4d8b84b2d749ad5ab816f03e6ce500d5bcf609c59e77c", - "tag": "s0_eternum-Position", - "selector": "0x77c1a504cea841ea9ee0819e994d66d453d0652ecb7a51e80682ff8abd57f65" - }, - { - "members": [], - "class_hash": "0x681143e22335e72474d3921e0c0de14be253faa5b5c5c46a4adb8ecd3e2f6c9", - "tag": "s0_eternum-Production", - "selector": "0x12c4d44e2b854c8481b4da2b2dcc648b3a9d4e9006b4143acfedbd6aa8641db" - }, - { - "members": [], - "class_hash": "0x2ae1387960b8602eab9567676f73317344ae7ded34e9fc0c012966e8d3cf2ce", - "tag": "s0_eternum-ProductionConfig", - "selector": "0x520a8a0dec76799ca6b1198154f32247aa76da785d2cc7a56dabe401f80416c" - }, - { - "members": [], - "class_hash": "0x429e0c7c8e81306023b8d502d4e7737646720b8769a13581d54e99b76a6052e", - "tag": "s0_eternum-ProductionDeadline", - "selector": "0x18bea71025a244df48319cca495154feeec10353885e4e9b73aa18239584fee" - }, - { - "members": [], - "class_hash": "0x7c98db7992d639ca0be54bd97dd342e80e4b5a8f9fab93fa3d37a5c027eb8ef", - "tag": "s0_eternum-ProductionInput", - "selector": "0x3df010b82ccfbdd80db14af6e47dc79038aec508f795b9d0f9968edba040c07" - }, - { - "members": [], - "class_hash": "0x297e32982827c7ca0e9950f7ab0593a7334289d004cff93809522a45774d858", - "tag": "s0_eternum-ProductionOutput", - "selector": "0x5ad2bb76ff0fcf39f0a6399770ae2f78b6999f03e5c9b9aa7b2216477772ffe" - }, - { - "members": [], - "class_hash": "0x3736456c345cc770abd64231513bd58269d6fb382e48c411be7bb5c66a54322", - "tag": "s0_eternum-Progress", - "selector": "0x2b63dd696d82b19fa1421e9e47be1c573b761c39f6b58c0d14ed0c562f26b3f" - }, - { - "members": [], - "class_hash": "0x375116ae74219639eab6fd408cdd263e4c6c93fb0b544d3ba3ef8e876ef561", - "tag": "s0_eternum-Protectee", - "selector": "0x2ac4b9ed0d69ae66f6feff3272811293fa6e8196bd602183271d07ae7a5d3bb" - }, - { - "members": [], - "class_hash": "0x3eff2b8014606f2522063b0803a9f0456c0be34f4ec6b7f31d2b0948a4aa0c1", - "tag": "s0_eternum-Protector", - "selector": "0x72426f978a43c915d92511ce3efb7fdd6c962f4344e37d38ed00d0d95eb37b5" - }, - { - "members": [], - "class_hash": "0x7577aac22db1cb4db007701d6292ed0edddb54a27a947f2fdbce4615cb0c178", - "tag": "s0_eternum-Quantity", - "selector": "0x399416904300b2d9bc98601f480dcdd403fac4845279504082f1775505fb41" - }, - { - "members": [], - "class_hash": "0x2c17a1b5a72fc1c99fcc98629008b8cf539162e67a39813fadb9f407e20b2fb", - "tag": "s0_eternum-QuantityTracker", - "selector": "0x29c1ad2966a8d135fb73179ff12b872776a13fef4e7dcc14955f71950ad65aa" - }, - { - "members": [], - "class_hash": "0x3c9e64e617d829d6ef52f3cc63ee1872892697641ece5c3562494655751ee92", - "tag": "s0_eternum-Quest", - "selector": "0x7be72bb5626ead15f8756586fc89f32ca4e65fcbe00e8d49a222d94460b40ac" - }, - { - "members": [], - "class_hash": "0x6d7d41fa73f6a0cafcc95b905c394f420dbe512afb245f63c5aaf9d440c1c90", - "tag": "s0_eternum-QuestBonus", - "selector": "0x3e946c05a7448654a3f0f8e3983c98daca1d6727d3a595076b232f21aa9bf61" - }, - { - "members": [], - "class_hash": "0x6d7fa03d466e40e61eb5f9e8920ed1723e386147ece32faabfe48a3d96d8acb", - "tag": "s0_eternum-QuestConfig", - "selector": "0x10baf692d4bb6ab5fa51d3bcdb33b443bbb89178f74ad35c0f39df34972d97a" - }, - { - "members": [], - "class_hash": "0x5c8dbcc5c43eef6f7bebe035cfab3f0d97fc98cb7468c27494032ee7c477682", - "tag": "s0_eternum-QuestRewardConfig", - "selector": "0x1ee6b0ff29db9cdeecda6f947a65007ef951ac7b80242fe22cbc641bfcd24c5" - }, - { - "members": [], - "class_hash": "0x442cd0a9cac38ceadfe1f6ff64cf9df8a08036e1aa83e9fc8afdb34cb94af86", - "tag": "s0_eternum-Realm", - "selector": "0x73d618f4cfd6974371417e6fbe450ff219d703d52cd92acd3e0362d18754876" - }, - { - "members": [], - "class_hash": "0x37903a2f2a111216ca18f3d52cd3b7ac241700c929d0f532d82c8d0eef0db26", - "tag": "s0_eternum-RealmLevelConfig", - "selector": "0x7430cd339058f757d8da2972d4609124b232fac288cd84efb4975ef17783fa3" - }, - { - "members": [], - "class_hash": "0xb05b9f8bd0de85e837c571d3b7555c1dd54b8601049eb250f25193581a3813", - "tag": "s0_eternum-RealmMaxLevelConfig", - "selector": "0x454f0915256598d53f9fdd192a32a5886d2b006532ea05b1981694951e62fb7" - }, - { - "members": [], - "class_hash": "0x6e316e67743d138e6ee73ed2a1e6f6e9b814a888ca4e06d61d066853949c906", - "tag": "s0_eternum-Resource", - "selector": "0x6d9f80d9fc8d932eaf382b0dc61539511e229b2dec5a275dfb836095d8f0521" - }, - { - "members": [], - "class_hash": "0x63b70cb7538cdbf5d9c29df596130839d21a2a3327cea598931b590d0ad3199", - "tag": "s0_eternum-ResourceAllowance", - "selector": "0x5d040dde8317e13b9643f324a18afc64c5044e79569552f8496e919c312b44a" - }, - { - "members": [], - "class_hash": "0x2e09899ffdc52704cf7d5881b2b9576b99ac5d1a0939caaa79ba005f941ef8c", - "tag": "s0_eternum-ResourceBridgeConfig", - "selector": "0x462f28b5568fb3e258400d85241d45cd31e053723d029bb0a3542da9ef2ece6" - }, - { - "members": [], - "class_hash": "0x7773a272288d8f6746b61d40015b44f451a5f4418785ebb893cdd8a3f101924", - "tag": "s0_eternum-ResourceBridgeFeeSplitConfig", - "selector": "0x33b2e568d65393f26dffa1e9fcb1c8e5aac80bf8ecd96a62c56fa7626d08d4a" - }, - { - "members": [], - "class_hash": "0x69f85789f3cd09073415acea848b4121fb7ab57660d65efc0902f9b9088cfec", - "tag": "s0_eternum-ResourceBridgeWhitelistConfig", - "selector": "0x291a767dc981735be14609c8ef267d33c389f58393358ce20f757680d065bbb" - }, - { - "members": [], - "class_hash": "0x5ca96e7981e9fa033962a04953fe271d795fc28a77dcd09d5271d8da3714c9f", - "tag": "s0_eternum-ResourceCost", - "selector": "0x15d8989d3b9ba9d2d089e1e920d2d0c428811ec0ac77b09ab12bfc3b42121d" - }, - { - "members": [], - "class_hash": "0x1c08b438614f48ce953db0bd0621cc61e499be8dad256a681d0f8981525fee9", - "tag": "s0_eternum-ResourceTransferLock", - "selector": "0x7deca04dad26fe5bed5def8be8e9fc199906496dfe2aa982e9cd11fe35300b" - }, - { - "members": [], - "class_hash": "0x1661ce7179939f89588fcf3d6ea91416e265772e6cdca45dac1441e4b3db807", - "tag": "s0_eternum-Season", - "selector": "0x4f8865388e8136115c535f8be3bca980cc55ce5cde180fdf43877a9ac42cf10" - }, - { - "members": [], - "class_hash": "0x5908399449b220b2799f9c6c1d90531548d6a921676a73d5b18e3c73211349c", - "tag": "s0_eternum-SeasonAddressesConfig", - "selector": "0x2d1f2883267358910522f3abc2d86e377bf44b7a85eb1ce9a9a936af9872400" - }, - { - "members": [], - "class_hash": "0x6f19a8e8f55464fb398bf457038b10a01d6cfcf5051aa6c7a7296024fc78f9c", - "tag": "s0_eternum-SeasonBridgeConfig", - "selector": "0x67d6487b53941b5d6614c1f8f8fd0c620904fffed74e740a95f99485854896e" - }, - { - "members": [], - "class_hash": "0x68dbc517a95bd1643828c7f03c53b34cc6a2b9ab364825b676b19245380bec4", - "tag": "s0_eternum-SettlementConfig", - "selector": "0x2df09676383e67499863f6671e25031b67c0344b2d3e2177081d16640cef28b" - }, - { - "members": [], - "class_hash": "0x5a674566f968363982331c6e454e8046e123ce141cbe9ccb031a6f44d7fab3a", - "tag": "s0_eternum-SpeedConfig", - "selector": "0x7f66a20a5fc5f3b3a3b77fa1a3f8c30cc0a5e7fe03eed54a4c1f3a50d3421a4" - }, - { - "members": [], - "class_hash": "0x5c31bd0ec3923ca88f01ac658fcdfc8e8e73d22f4362b96a5ee55ae5232a2c8", - "tag": "s0_eternum-Stamina", - "selector": "0x39518c19003fa9f7525361cc92b886b541122d0ef323ad02f0a5ab8baf1dd4b" - }, - { - "members": [], - "class_hash": "0x4e57c7bc107c4d7f740589732138414790b76320bb831fc912d0ac30d699738", - "tag": "s0_eternum-StaminaConfig", - "selector": "0x72604cb9cc861ecdb0e70b00137564390c5ccafde0d9d37ba014122e9288df9" - }, - { - "members": [], - "class_hash": "0x68eaa4e6a99462bf94073ba9b2e3a580b4db9170d28f47cfdefb47023e91eb7", - "tag": "s0_eternum-StaminaRefillConfig", - "selector": "0x269f27b58ce568cd0a1187c785445f746a959f915fc35b999aaf2afa95c04b9" - }, - { - "members": [], - "class_hash": "0x6d8349a51048775ad58a5e14c77606d882ab3a4d18f5a1b59138d973156b8f6", - "tag": "s0_eternum-Status", - "selector": "0x6819b601c22df29790f76f061612ee4c23e6d77cf850a685fa8c7ea6defe1bb" - }, - { - "members": [], - "class_hash": "0x3669757d103c83f6fca79bd6c75a49d8a273fb92dcf6bba1ab4ccaafa6137ea", - "tag": "s0_eternum-Structure", - "selector": "0x67d49b2755ef1c37f1efaa29dcd3b4c483691d9a969211f49bae940e757b033" - }, - { - "members": [], - "class_hash": "0x6e04e36fce10b6885b2180899d40134304afd733807bf45183839c37276d44d", - "tag": "s0_eternum-StructureCount", - "selector": "0x2add29083cc23bb0da9d45470d574877e3a63de4eca3730bfc35fc32d7256bd" - }, - { - "members": [], - "class_hash": "0x229093b1da22e9f70eb9818a6873854bc5f7a9c3c254b32e33b8ac8ef7e6a78", - "tag": "s0_eternum-TickConfig", - "selector": "0x3dacec234467fc19b55d08363ec6c5128d40513e9c785cc8d6fa96a10e1e2fe" - }, - { - "members": [], - "class_hash": "0x4789f1e5905969a83009f355f5e2bc6882f5228f2dff1beae21f6c315f4d3f1", - "tag": "s0_eternum-Tile", - "selector": "0x2be20d4e39863a5ae902d8a1d7d218f011bc5fd0b144656c1ec555e95939d7a" - }, - { - "members": [], - "class_hash": "0x4a83f3518a2a3b7fd4a69303275fc35dc9d5b08d3b3bf19a6ec9cb8779b34b9", - "tag": "s0_eternum-Trade", - "selector": "0xb8f1c0b8b5c9b646a2275babf4f493a4dd50440775aa1a52f07612a3f699bf" - }, - { - "members": [], - "class_hash": "0x35b1c94e4a2c44b7484df407cba0df8042fd2c8bb2cb7c14e3a54b5c78f9724", - "tag": "s0_eternum-TravelFoodCostConfig", - "selector": "0x5effa64ae71be8b1d19c231fefb1056039306d3b1d8885baed5f774d4da2a9a" - }, - { - "members": [], - "class_hash": "0x24f902eba1a1f00afbb06c6d6358a5b9d9831e5f01fa19d20d54e4610d266e2", - "tag": "s0_eternum-TravelStaminaCostConfig", - "selector": "0x49e464fb66d305b9b58610bfb89bed1df4e2cde87f523936e71e5fa5562f9cf" - }, - { - "members": [], - "class_hash": "0x13787b670988065ecde86c7622e4dfc79e9752b1b093e22e81cb9797af3eaa0", - "tag": "s0_eternum-TroopConfig", - "selector": "0x6ae523bfd49a164bfc5949f568674f7b4e09cca39f55d389d398f159b363178" - }, - { - "members": [], - "class_hash": "0x6effa334a8558bcffbb55620d842fe9fc355a497100768c7ebeb1e5f01c85d2", - "tag": "s0_eternum-VRFConfig", - "selector": "0x325d18df666336f28e2027292fb9164e890d520368b4e150d3fffddb95b2304" - }, - { - "members": [], - "class_hash": "0x239c7e9007b36b7105d01e2d5fb2cc87a2f0123cf02308d78299fb1b2c0286b", - "tag": "s0_eternum-Weight", - "selector": "0x3af9b99c6bed5e58f52a76ef3616395e8ae96acee151395134ab5199fe5b36a" - }, - { - "members": [], - "class_hash": "0x342088461be2657e2281e9f5a773aa8e7c6584dd62e125edf4ca71e39400e57", - "tag": "s0_eternum-WeightConfig", - "selector": "0x5b42c2cdd790597f7f8125e69d38f2db0469a37ba2a436c5fbc6f54ab16f2a6" - }, - { - "members": [], - "class_hash": "0x3f493c16b07f9edf224672fd7d0a1766b42863e70e08e4ce21f8b9368a95486", - "tag": "s0_eternum-WorldConfig", - "selector": "0x2640c924e58d9c307bff3a21564eeccf889b9d22e9d1b99eaf3d3ca79ba29e9" - } - ], - "events": [ - { - "members": [], - "class_hash": "0x308165ad0fe528e9f62f91851e42cd02186c284133e0f716bf618e2a89a064", - "tag": "s0_eternum-AcceptOrder", - "selector": "0x34724f2592dc93feb914074bbe4e6abc093e7ca15f6755824c7f694662853fc" - }, - { - "members": [], - "class_hash": "0x4fca4dcdf02fdc00635fdbdbfa78b928f907e5a82f58e24f17e95ec9d9e2475", - "tag": "s0_eternum-AcceptPartialOrder", - "selector": "0x34b84575baeaa398556ab0a3889fabb7b08d2520d8838734eaf12282776900b" - }, - { - "members": [], - "class_hash": "0x56a5736da894e6774c628874b21f414a2c4f035065b75e36f1c7facd27420ee", - "tag": "s0_eternum-BattleClaimData", - "selector": "0x41d29e106dc5491be952bbe2faaddf7f61d2822a533f17116600e7ef9c76c18" - }, - { - "members": [], - "class_hash": "0x1aab9d5811dd52241b604e734cd3527f3723320d2e8a16d8d2f9ab9657cf07a", - "tag": "s0_eternum-BattleJoinData", - "selector": "0x4410ca9a121bdc7bd8847dc77b08361cc88574ae4ff18bdfb1f56ebd168a377" - }, - { - "members": [], - "class_hash": "0x483a25c8985f722179db7ab176625c2f0415004e315c89ddd569a546c0ff352", - "tag": "s0_eternum-BattleLeaveData", - "selector": "0x817ae7123b2cf2c241e4a1cee0acb2a6537270d32f68da46c222a19b7a6b7e" - }, - { - "members": [], - "class_hash": "0x6bd170bb8c9642bd582be27066fc5baa71ab6a5c989b6147c16b7187ae8b2de", - "tag": "s0_eternum-BattlePillageData", - "selector": "0x1e6374e36d81091d4c72eb16936e2afc86ed695397fb5fc54780a01187bfbe2" - }, - { - "members": [], - "class_hash": "0x75e03d907604ffc855f6fa954001870813f8731f049aa1a65b4fc0335b53989", - "tag": "s0_eternum-BattleStartData", - "selector": "0x39cee4993b5b6698ea69be399295a54faabb31613ddc297bd452b7db0c79081" - }, - { - "members": [], - "class_hash": "0x53ea30ee96d0e5b7eefcd0b3c5ff8ec23062b6a8af282c235dbd06db0c4d77", - "tag": "s0_eternum-BurnDonkey", - "selector": "0x61be67037fa3f9fa7655102f1fe0c3f35d352d5919aba6a204b0af556649e55" - }, - { - "members": [], - "class_hash": "0x3cd551d7e4b53f2b4afcab56040f3dfff20f2dd3e75f346c4f86f15d6f2aab8", - "tag": "s0_eternum-CancelOrder", - "selector": "0x37baed7c5d5da7ddcfe014daac5b3f37b4b959b832e8c4c70df06c8b530478" - }, - { - "members": [], - "class_hash": "0x54ebf96034d04a3febfaaa17372961a8746cdb440f451d4e3acfcedd4992db6", - "tag": "s0_eternum-CreateGuild", - "selector": "0x55a0213c9d81381326def8de071ea32d31f412ae525cb58b8b2a29cdbf3821" - }, - { - "members": [], - "class_hash": "0x3da4824e6b15595ea7c4906de6ae545f1de3c6997655c55fa040d9bc466fbcb", - "tag": "s0_eternum-CreateOrder", - "selector": "0x6cd5deb58306ff9ed529e7e496193ac3b8dadc4927768951a16afd5cee79291" - }, - { - "members": [], - "class_hash": "0x411bb0ec4ce2af05182f278331717c86aab7b154ea844fa05f5dc693b4f5f65", - "tag": "s0_eternum-FragmentMineDiscovered", - "selector": "0x5afb247cb5972fc84d96b10c69f31a96666642065816bfa74f4d0fdd715fac6" - }, - { - "members": [], - "class_hash": "0xf00b2af42e9108761ad47e50a2605c55203a83b342235def07252a85d6db85", - "tag": "s0_eternum-GameEnded", - "selector": "0x7552b1455aaf939a5cee7dfe7d65ef0341647b2b1dc97bbdac22e38f81b6f75" - }, - { - "members": [], - "class_hash": "0x5cddcd628958870243552341afbf5859b87d5f623d9ccec87fc217218301da", - "tag": "s0_eternum-HyperstructureCoOwnersChange", - "selector": "0x16aa9c3ff1e2229ec3989607dee034c26f555386c3fda2f57ae23a5da08bcd2" - }, - { - "members": [], - "class_hash": "0x5bf722c02c026a13863bc061f7f31d3e9a94a409e60a0b020355c621b3c8848", - "tag": "s0_eternum-HyperstructureContribution", - "selector": "0x11b57482819f44946c794b42bb3d6f9b5111e416abddd5590e48933db4e8c1c" - }, - { - "members": [], - "class_hash": "0x4bf46b14a1878f03209d4c6af988281d51fc7cc98fd8f1603e23092c67fcb5e", - "tag": "s0_eternum-HyperstructureFinished", - "selector": "0x18188e073773854e47229a73718f205c22955838714d847ff4bab4ed315852c" - }, - { - "members": [], - "class_hash": "0x19167b2efb0019a2d2547e6b97653c2e44eaa0648110a8d0492857d48f7628", - "tag": "s0_eternum-HyperstructureStarted", - "selector": "0x524d52c11289b16c879df0675bb7168b4556196e805130884ff7399568955f4" - }, - { - "members": [], - "class_hash": "0x10489827f673705da04f7c52b54164e01679958dec37bf8c97f45b6229adde", - "tag": "s0_eternum-JoinGuild", - "selector": "0x490fb23242de6839d879e576254121a224786783b288f05e8e57e942f0d0c44" - }, - { - "members": [], - "class_hash": "0x1de238739f2586354bfefc4c7d49a8e392b3c911515c9ad6445e96027a0dcb3", - "tag": "s0_eternum-LiquidityEvent", - "selector": "0x5ca594f7a676a13c4b15d34ffd0e922bf64e127d0fa6b6a9bd29a4bb6dcfd19" - }, - { - "members": [], - "class_hash": "0x6f57b19aaa43496f97785e8d6b18e21dc116bbd690e54a4fd03ccbb98ae760b", - "tag": "s0_eternum-MapExplored", - "selector": "0x5238d4838007cb371e0a62aff2a2d4241868fa579edc867125fa71c493fb2c8" - }, - { - "members": [], - "class_hash": "0x65b91709428bb484001943f1662d614fb4b6318b3fca1c4ed4b2fe53d822f6", - "tag": "s0_eternum-SettleRealmData", - "selector": "0x11b4babbcafbf1834c8e535877d14f1fc5dc0bd0b126a97a98bb1093d30e873" - }, - { - "members": [], - "class_hash": "0x4db6f101a1cff37f8e4709053f1ae4c1d8b8ec3dda5a2284b606439d051fb86", - "tag": "s0_eternum-SwapEvent", - "selector": "0x783a3cc6562fe31ae83bac3e69e636d8b58c357d5d3621c6d2e5d74da51e5db" - }, - { - "members": [], - "class_hash": "0x6059f5ee6fd551e038f65eac650a50c7af4401d3ce90cf257693b3eab27b8a3", - "tag": "s0_eternum-Transfer", - "selector": "0x4ff88ec4fe7fc992e29c980b4c0abfb2c35ecacce7e63248c2731984995fcbd" - }, - { - "members": [], - "class_hash": "0x40aee82a2213fb870290370044eeafec0c98eb8953299883251f870a9fd1e4c", - "tag": "s0_eternum-Travel", - "selector": "0x4e45f9632599eeb9a25d0977cd5aebf8a4aa209fea4134a862e592d31e387c0" - }, - { - "members": [], - "class_hash": "0x6b38999d987627835d4c20e7e571c73d32ddc856786d9790a131bdb3372a246", - "tag": "s0_eternum-TrophyCreation", - "selector": "0x5633ebee65e16c483940f284a816ac8b31e08ddd3932f80db960a40573d4dc2" - }, - { - "members": [], - "class_hash": "0xf05f290a704ad2671544b391f0c33d50d6d43d468d52791282852a833a00c7", - "tag": "s0_eternum-TrophyProgression", - "selector": "0x5a8f3fedb72efc9d358b86574cf362f8ed1ec12a02ca9f276e6190f49191217" - } - ] -} \ No newline at end of file diff --git a/client/common/manifests/manifest_mainnet.json b/client/common/manifests/manifest_mainnet.json deleted file mode 100644 index 087fa55df6..0000000000 --- a/client/common/manifests/manifest_mainnet.json +++ /dev/null @@ -1,9762 +0,0 @@ -{ - "world": { - "class_hash": "0x45575a88cc5cef1e444c77ce60b7b4c9e73a01cbbe20926d5a4c72a94011410", - "address": "0x6a9e4c6f0799160ea8ddc43ff982a5f83d7f633e9732ce42701de1288ff705f", - "seed": "s0_eternum", - "name": "Realms: Eternum", - "entrypoints": [ - "uuid", - "set_metadata", - "register_namespace", - "register_event", - "register_model", - "register_contract", - "init_contract", - "upgrade_event", - "upgrade_model", - "upgrade_contract", - "emit_event", - "emit_events", - "set_entity", - "set_entities", - "delete_entity", - "delete_entities", - "grant_owner", - "revoke_owner", - "grant_writer", - "revoke_writer", - "upgrade" - ], - "abi": [ - { - "type": "impl", - "name": "World", - "interface_name": "dojo::world::iworld::IWorld" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "enum", - "name": "dojo::world::resource::Resource", - "variants": [ - { - "name": "Model", - "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" - }, - { - "name": "Event", - "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" - }, - { - "name": "Contract", - "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" - }, - { - "name": "Namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "World", - "type": "()" - }, - { - "name": "Unregistered", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "dojo::model::metadata::ResourceMetadata", - "members": [ - { - "name": "resource_id", - "type": "core::felt252" - }, - { - "name": "metadata_uri", - "type": "core::byte_array::ByteArray" - }, - { - "name": "metadata_hash", - "type": "core::felt252" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::>" - } - ] - }, - { - "type": "enum", - "name": "dojo::model::definition::ModelIndex", - "variants": [ - { - "name": "Keys", - "type": "core::array::Span::" - }, - { - "name": "Id", - "type": "core::felt252" - }, - { - "name": "MemberId", - "type": "(core::felt252, core::felt252)" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "dojo::meta::layout::FieldLayout", - "members": [ - { - "name": "selector", - "type": "core::felt252" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "enum", - "name": "dojo::meta::layout::Layout", - "variants": [ - { - "name": "Fixed", - "type": "core::array::Span::" - }, - { - "name": "Struct", - "type": "core::array::Span::" - }, - { - "name": "Tuple", - "type": "core::array::Span::" - }, - { - "name": "Array", - "type": "core::array::Span::" - }, - { - "name": "ByteArray", - "type": "()" - }, - { - "name": "Enum", - "type": "core::array::Span::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "dojo::world::iworld::IWorld", - "items": [ - { - "type": "function", - "name": "resource", - "inputs": [ - { - "name": "selector", - "type": "core::felt252" - } - ], - "outputs": [ - { - "type": "dojo::world::resource::Resource" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "uuid", - "inputs": [], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "metadata", - "inputs": [ - { - "name": "resource_selector", - "type": "core::felt252" - } - ], - "outputs": [ - { - "type": "dojo::model::metadata::ResourceMetadata" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "set_metadata", - "inputs": [ - { - "name": "metadata", - "type": "dojo::model::metadata::ResourceMetadata" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "register_namespace", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "register_event", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "register_model", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "register_contract", - "inputs": [ - { - "name": "salt", - "type": "core::felt252" - }, - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [ - { - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "init_contract", - "inputs": [ - { - "name": "selector", - "type": "core::felt252" - }, - { - "name": "init_calldata", - "type": "core::array::Span::" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "upgrade_event", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "upgrade_model", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "upgrade_contract", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [ - { - "type": "core::starknet::class_hash::ClassHash" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "emit_event", - "inputs": [ - { - "name": "event_selector", - "type": "core::felt252" - }, - { - "name": "keys", - "type": "core::array::Span::" - }, - { - "name": "values", - "type": "core::array::Span::" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "emit_events", - "inputs": [ - { - "name": "event_selector", - "type": "core::felt252" - }, - { - "name": "keys", - "type": "core::array::Span::>" - }, - { - "name": "values", - "type": "core::array::Span::>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "entity", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "index", - "type": "dojo::model::definition::ModelIndex" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [ - { - "type": "core::array::Span::" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "entities", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "indexes", - "type": "core::array::Span::" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [ - { - "type": "core::array::Span::>" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "set_entity", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "index", - "type": "dojo::model::definition::ModelIndex" - }, - { - "name": "values", - "type": "core::array::Span::" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_entities", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "indexes", - "type": "core::array::Span::" - }, - { - "name": "values", - "type": "core::array::Span::>" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "delete_entity", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "index", - "type": "dojo::model::definition::ModelIndex" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "delete_entities", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "indexes", - "type": "core::array::Span::" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "is_owner", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::bool" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "grant_owner", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "revoke_owner", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "is_writer", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::bool" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "grant_writer", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "revoke_writer", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableWorld", - "interface_name": "dojo::world::iworld::IUpgradeableWorld" - }, - { - "type": "interface", - "name": "dojo::world::iworld::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": "world_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::WorldSpawned", - "kind": "struct", - "members": [ - { - "name": "creator", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::WorldUpgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::NamespaceRegistered", - "kind": "struct", - "members": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "hash", - "type": "core::felt252", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ModelRegistered", - "kind": "struct", - "members": [ - { - "name": "name", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "namespace", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::EventRegistered", - "kind": "struct", - "members": [ - { - "name": "name", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "namespace", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ContractRegistered", - "kind": "struct", - "members": [ - { - "name": "name", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "namespace", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "salt", - "type": "core::felt252", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ModelUpgraded", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - }, - { - "name": "prev_address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::EventUpgraded", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - }, - { - "name": "prev_address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ContractUpgraded", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ContractInitialized", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "init_calldata", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::EventEmitted", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "system_address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "key" - }, - { - "name": "keys", - "type": "core::array::Span::", - "kind": "data" - }, - { - "name": "values", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::MetadataUpdate", - "kind": "struct", - "members": [ - { - "name": "resource", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "uri", - "type": "core::byte_array::ByteArray", - "kind": "data" - }, - { - "name": "hash", - "type": "core::felt252", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::StoreSetRecord", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "entity_id", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "keys", - "type": "core::array::Span::", - "kind": "data" - }, - { - "name": "values", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::StoreUpdateRecord", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "entity_id", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "values", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::StoreUpdateMember", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "entity_id", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "member_selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "values", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::StoreDelRecord", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "entity_id", - "type": "core::felt252", - "kind": "key" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::WriterUpdated", - "kind": "struct", - "members": [ - { - "name": "resource", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "key" - }, - { - "name": "value", - "type": "core::bool", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::OwnerUpdated", - "kind": "struct", - "members": [ - { - "name": "resource", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "key" - }, - { - "name": "value", - "type": "core::bool", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::Event", - "kind": "enum", - "variants": [ - { - "name": "WorldSpawned", - "type": "dojo::world::world_contract::world::WorldSpawned", - "kind": "nested" - }, - { - "name": "WorldUpgraded", - "type": "dojo::world::world_contract::world::WorldUpgraded", - "kind": "nested" - }, - { - "name": "NamespaceRegistered", - "type": "dojo::world::world_contract::world::NamespaceRegistered", - "kind": "nested" - }, - { - "name": "ModelRegistered", - "type": "dojo::world::world_contract::world::ModelRegistered", - "kind": "nested" - }, - { - "name": "EventRegistered", - "type": "dojo::world::world_contract::world::EventRegistered", - "kind": "nested" - }, - { - "name": "ContractRegistered", - "type": "dojo::world::world_contract::world::ContractRegistered", - "kind": "nested" - }, - { - "name": "ModelUpgraded", - "type": "dojo::world::world_contract::world::ModelUpgraded", - "kind": "nested" - }, - { - "name": "EventUpgraded", - "type": "dojo::world::world_contract::world::EventUpgraded", - "kind": "nested" - }, - { - "name": "ContractUpgraded", - "type": "dojo::world::world_contract::world::ContractUpgraded", - "kind": "nested" - }, - { - "name": "ContractInitialized", - "type": "dojo::world::world_contract::world::ContractInitialized", - "kind": "nested" - }, - { - "name": "EventEmitted", - "type": "dojo::world::world_contract::world::EventEmitted", - "kind": "nested" - }, - { - "name": "MetadataUpdate", - "type": "dojo::world::world_contract::world::MetadataUpdate", - "kind": "nested" - }, - { - "name": "StoreSetRecord", - "type": "dojo::world::world_contract::world::StoreSetRecord", - "kind": "nested" - }, - { - "name": "StoreUpdateRecord", - "type": "dojo::world::world_contract::world::StoreUpdateRecord", - "kind": "nested" - }, - { - "name": "StoreUpdateMember", - "type": "dojo::world::world_contract::world::StoreUpdateMember", - "kind": "nested" - }, - { - "name": "StoreDelRecord", - "type": "dojo::world::world_contract::world::StoreDelRecord", - "kind": "nested" - }, - { - "name": "WriterUpdated", - "type": "dojo::world::world_contract::world::WriterUpdated", - "kind": "nested" - }, - { - "name": "OwnerUpdated", - "type": "dojo::world::world_contract::world::OwnerUpdated", - "kind": "nested" - } - ] - } - ] - }, - "contracts": [ - { - "address": "0x7f4862123d52dffae89ec3fb4557690cd7fe2e92c9bf48d3bf8e44abfeafcf4", - "class_hash": "0x78b9f6c5bf71c8f9fc992f0c3a955dfc17fa6384bd2857d5ba32206a354ff9b", - "abi": [ - { - "type": "impl", - "name": "bank_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "bank_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BankSystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::bank::IBankSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::bank::contracts::bank::IBankSystems", - "items": [ - { - "type": "function", - "name": "change_owner_amm_fee", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "new_owner_fee_num", - "type": "core::integer::u128" - }, - { - "name": "new_owner_fee_denom", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "change_owner_bridge_fee", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "owner_bridge_fee_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "owner_bridge_fee_wtdr_percent", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::bank::contracts::bank::bank_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-bank_systems", - "selector": "0x16cf356882260a01771aedaab01f8e3afdab764944c3c4d41c617cd76b91e6a", - "systems": [ - "change_owner_amm_fee", - "change_owner_bridge_fee", - "upgrade" - ] - }, - { - "address": "0x4ed3a7c5f53c6e96186eaf1b670bd2e2a3699c08e070aedf4e5fc6ac246ddc1", - "class_hash": "0x1d705daa1501a2647e6e051aceaff470486f0d803d528461d8a23c27265072", - "abi": [ - { - "type": "impl", - "name": "battle_pillage_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "battle_pillage_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BattlePillageContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract" - }, - { - "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract", - "items": [ - { - "type": "function", - "name": "battle_pillage", - "inputs": [ - { - "name": "army_id", - "type": "core::integer::u32" - }, - { - "name": "structure_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_pillage_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-battle_pillage_systems", - "selector": "0x9861172f7b864354b6e23d8971f0b054c518337a3cea854724658c43f9f580", - "systems": [ - "battle_pillage", - "upgrade" - ] - }, - { - "address": "0x2620f65aa2fd72d705306ada1ee7410023a3df03da9291f1ccb744fabfebc0", - "class_hash": "0x6212c2b9ed24053620aa93e85707a364870d5ab5696a164233d5f46efd412b6", - "abi": [ - { - "type": "impl", - "name": "battle_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "battle_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BattleContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleContract" - }, - { - "type": "enum", - "name": "s0_eternum::models::combat::BattleSide", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Attack", - "type": "()" - }, - { - "name": "Defence", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleContract", - "items": [ - { - "type": "function", - "name": "battle_start", - "inputs": [ - { - "name": "attacking_army_id", - "type": "core::integer::u32" - }, - { - "name": "defending_army_id", - "type": "core::integer::u32" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "battle_force_start", - "inputs": [ - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "defending_army_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "battle_join", - "inputs": [ - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" - }, - { - "name": "army_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "battle_leave", - "inputs": [ - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "army_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "battle_claim", - "inputs": [ - { - "name": "army_id", - "type": "core::integer::u32" - }, - { - "name": "structure_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "battle_resolve", - "inputs": [ - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "army_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-battle_systems", - "selector": "0x28fc8bb4b5e0140b71566a257468e491e41a12f2f284cae6d4e731abd862067", - "systems": [ - "battle_start", - "battle_force_start", - "battle_join", - "battle_leave", - "battle_claim", - "battle_resolve", - "upgrade" - ] - }, - { - "address": "0x6bf57710571fd159e71b1ed155bb0759027e416c88a06556f321c94c214e768", - "class_hash": "0x1986f4fea425f9b595997a08b2d5217e0f743e98086c1f147ff2e44dcfbab47", - "abi": [ - { - "type": "impl", - "name": "battle_utils_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "battle_utils_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BattleUtilsContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract" - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::Troops", - "members": [ - { - "name": "knight_count", - "type": "core::integer::u64" - }, - { - "name": "paladin_count", - "type": "core::integer::u64" - }, - { - "name": "crossbowman_count", - "type": "core::integer::u64" - } - ] - }, - { - "type": "enum", - "name": "s0_eternum::models::combat::BattleSide", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Attack", - "type": "()" - }, - { - "name": "Defence", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::BattleArmy", - "members": [ - { - "name": "troops", - "type": "s0_eternum::models::combat::Troops" - }, - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::BattleHealth", - "members": [ - { - "name": "current", - "type": "core::integer::u128" - }, - { - "name": "lifetime", - "type": "core::integer::u128" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::Battle", - "members": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "attack_army", - "type": "s0_eternum::models::combat::BattleArmy" - }, - { - "name": "attack_army_lifetime", - "type": "s0_eternum::models::combat::BattleArmy" - }, - { - "name": "defence_army", - "type": "s0_eternum::models::combat::BattleArmy" - }, - { - "name": "defence_army_lifetime", - "type": "s0_eternum::models::combat::BattleArmy" - }, - { - "name": "attackers_resources_escrow_id", - "type": "core::integer::u32" - }, - { - "name": "defenders_resources_escrow_id", - "type": "core::integer::u32" - }, - { - "name": "attack_army_health", - "type": "s0_eternum::models::combat::BattleHealth" - }, - { - "name": "defence_army_health", - "type": "s0_eternum::models::combat::BattleHealth" - }, - { - "name": "attack_delta", - "type": "core::integer::u64" - }, - { - "name": "defence_delta", - "type": "core::integer::u64" - }, - { - "name": "last_updated", - "type": "core::integer::u64" - }, - { - "name": "duration_left", - "type": "core::integer::u64" - }, - { - "name": "start_at", - "type": "core::integer::u64" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::Army", - "members": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "troops", - "type": "s0_eternum::models::combat::Troops" - }, - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract", - "items": [ - { - "type": "function", - "name": "leave_battle", - "inputs": [ - { - "name": "battle", - "type": "s0_eternum::models::combat::Battle" - }, - { - "name": "army", - "type": "s0_eternum::models::combat::Army" - } - ], - "outputs": [ - { - "type": "(s0_eternum::models::combat::Battle, s0_eternum::models::combat::Army)" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "leave_battle_if_ended", - "inputs": [ - { - "name": "battle", - "type": "s0_eternum::models::combat::Battle" - }, - { - "name": "army", - "type": "s0_eternum::models::combat::Army" - } - ], - "outputs": [ - { - "type": "(s0_eternum::models::combat::Battle, s0_eternum::models::combat::Army)" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_utils_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-battle_utils_systems", - "selector": "0x4199f9a24edfc349a8a16e338daaaea77af951bcc40d636e85107731d52d2b7", - "systems": [ - "leave_battle", - "leave_battle_if_ended", - "upgrade" - ] - }, - { - "address": "0x4b6a35c0c541467674ebb9640113a6d79c6f5a468796e9299b8e484a770032a", - "class_hash": "0x63b571819526e64bcde41b7dcddcc8bc687b4ee52b6b44a771236a14cc8dbf7", - "abi": [ - { - "type": "impl", - "name": "building_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "building_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BuildingContractImpl", - "interface_name": "s0_eternum::systems::buildings::contracts::IBuildingContract" - }, - { - "type": "enum", - "name": "s0_eternum::models::position::Direction", - "variants": [ - { - "name": "East", - "type": "()" - }, - { - "name": "NorthEast", - "type": "()" - }, - { - "name": "NorthWest", - "type": "()" - }, - { - "name": "West", - "type": "()" - }, - { - "name": "SouthWest", - "type": "()" - }, - { - "name": "SouthEast", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "enum", - "name": "s0_eternum::models::buildings::BuildingCategory", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Castle", - "type": "()" - }, - { - "name": "Resource", - "type": "()" - }, - { - "name": "Farm", - "type": "()" - }, - { - "name": "FishingVillage", - "type": "()" - }, - { - "name": "Barracks", - "type": "()" - }, - { - "name": "Market", - "type": "()" - }, - { - "name": "ArcheryRange", - "type": "()" - }, - { - "name": "Stable", - "type": "()" - }, - { - "name": "TradingPost", - "type": "()" - }, - { - "name": "WorkersHut", - "type": "()" - }, - { - "name": "WatchTower", - "type": "()" - }, - { - "name": "Walls", - "type": "()" - }, - { - "name": "Storehouse", - "type": "()" - } - ] - }, - { - "type": "enum", - "name": "core::option::Option::", - "variants": [ - { - "name": "Some", - "type": "core::integer::u8" - }, - { - "name": "None", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::position::Coord", - "members": [ - { - "name": "x", - "type": "core::integer::u32" - }, - { - "name": "y", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::buildings::contracts::IBuildingContract", - "items": [ - { - "type": "function", - "name": "create", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "directions", - "type": "core::array::Span::" - }, - { - "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" - }, - { - "name": "produce_resource_type", - "type": "core::option::Option::" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "pause_production", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "building_coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "resume_production", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "building_coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "destroy", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "building_coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::buildings::contracts::building_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-building_systems", - "selector": "0x5f7b231f89cc7ec90785783e2484266d4b35e7f1488ec406ffea0cf92fac777", - "systems": [ - "create", - "pause_production", - "resume_production", - "destroy", - "upgrade" - ] - }, - { - "address": "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - "class_hash": "0x682236180454ea85548145c9c75a1db98361212b8320a4dad0757066ee4ead6", - "abi": [ - { - "type": "impl", - "name": "config_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "config_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IWorldConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IWorldConfig", - "items": [ - { - "type": "function", - "name": "set_world_config", - "inputs": [ - { - "name": "admin_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "realm_l2_contract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "SeasonConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ISeasonConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ISeasonConfig", - "items": [ - { - "type": "function", - "name": "set_season_config", - "inputs": [ - { - "name": "season_pass_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "realms_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "lords_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "start_at", - "type": "core::integer::u64" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_season_bridge_config", - "inputs": [ - { - "name": "close_after_end_seconds", - "type": "core::integer::u64" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "VRFConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IVRFConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IVRFConfig", - "items": [ - { - "type": "function", - "name": "set_vrf_config", - "inputs": [ - { - "name": "vrf_provider_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "QuestConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IQuestConfig" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IQuestConfig", - "items": [ - { - "type": "function", - "name": "set_quest_config", - "inputs": [ - { - "name": "production_material_multiplier", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_quest_reward_config", - "inputs": [ - { - "name": "quest_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "MapConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IMapConfig" - }, - { - "type": "struct", - "name": "s0_eternum::models::config::MapConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "reward_resource_amount", - "type": "core::integer::u128" - }, - { - "name": "shards_mines_fail_probability", - "type": "core::integer::u128" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IMapConfig", - "items": [ - { - "type": "function", - "name": "set_map_config", - "inputs": [ - { - "name": "map_config", - "type": "s0_eternum::models::config::MapConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "CapacityConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ICapacityConfig" - }, - { - "type": "enum", - "name": "s0_eternum::models::config::CapacityConfigCategory", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Structure", - "type": "()" - }, - { - "name": "Donkey", - "type": "()" - }, - { - "name": "Army", - "type": "()" - }, - { - "name": "Storehouse", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::config::CapacityConfig", - "members": [ - { - "name": "category", - "type": "s0_eternum::models::config::CapacityConfigCategory" - }, - { - "name": "weight_gram", - "type": "core::integer::u128" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ICapacityConfig", - "items": [ - { - "type": "function", - "name": "set_capacity_config", - "inputs": [ - { - "name": "capacity_config", - "type": "s0_eternum::models::config::CapacityConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TravelStaminaCostConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITravelStaminaCostConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITravelStaminaCostConfig", - "items": [ - { - "type": "function", - "name": "set_travel_stamina_cost_config", - "inputs": [ - { - "name": "travel_type", - "type": "core::integer::u8" - }, - { - "name": "cost", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "WeightConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IWeightConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IWeightConfig", - "items": [ - { - "type": "function", - "name": "set_weight_config", - "inputs": [ - { - "name": "entity_type", - "type": "core::integer::u32" - }, - { - "name": "weight_gram", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "BattleConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBattleConfig" - }, - { - "type": "struct", - "name": "s0_eternum::models::config::BattleConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "regular_immunity_ticks", - "type": "core::integer::u8" - }, - { - "name": "hyperstructure_immunity_ticks", - "type": "core::integer::u8" - }, - { - "name": "battle_delay_seconds", - "type": "core::integer::u64" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBattleConfig", - "items": [ - { - "type": "function", - "name": "set_battle_config", - "inputs": [ - { - "name": "battle_config", - "type": "s0_eternum::models::config::BattleConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TickConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITickConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITickConfig", - "items": [ - { - "type": "function", - "name": "set_tick_config", - "inputs": [ - { - "name": "tick_id", - "type": "core::integer::u8" - }, - { - "name": "tick_interval_in_seconds", - "type": "core::integer::u64" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "StaminaConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IStaminaConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IStaminaConfig", - "items": [ - { - "type": "function", - "name": "set_stamina_config", - "inputs": [ - { - "name": "unit_type", - "type": "core::integer::u8" - }, - { - "name": "max_stamina", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TravelFoodCostConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITravelFoodCostConfig" - }, - { - "type": "struct", - "name": "s0_eternum::models::config::TravelFoodCostConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "unit_type", - "type": "core::integer::u8" - }, - { - "name": "explore_wheat_burn_amount", - "type": "core::integer::u128" - }, - { - "name": "explore_fish_burn_amount", - "type": "core::integer::u128" - }, - { - "name": "travel_wheat_burn_amount", - "type": "core::integer::u128" - }, - { - "name": "travel_fish_burn_amount", - "type": "core::integer::u128" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITravelFoodCostConfig", - "items": [ - { - "type": "function", - "name": "set_travel_food_cost_config", - "inputs": [ - { - "name": "travel_food_cost_config", - "type": "s0_eternum::models::config::TravelFoodCostConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "StaminaRefillConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IStaminaRefillConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IStaminaRefillConfig", - "items": [ - { - "type": "function", - "name": "set_stamina_refill_config", - "inputs": [ - { - "name": "amount_per_tick", - "type": "core::integer::u16" - }, - { - "name": "start_boost_tick_count", - "type": "core::integer::u8" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "LevelingConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ILevelingConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ILevelingConfig", - "items": [ - { - "type": "function", - "name": "set_leveling_config", - "inputs": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "decay_interval", - "type": "core::integer::u64" - }, - { - "name": "max_level", - "type": "core::integer::u64" - }, - { - "name": "decay_scaled", - "type": "core::integer::u128" - }, - { - "name": "cost_percentage_scaled", - "type": "core::integer::u128" - }, - { - "name": "base_multiplier", - "type": "core::integer::u128" - }, - { - "name": "wheat_base_amount", - "type": "core::integer::u128" - }, - { - "name": "fish_base_amount", - "type": "core::integer::u128" - }, - { - "name": "resource_1_costs", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "resource_2_costs", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "resource_3_costs", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "ProductionConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IProductionConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IProductionConfig", - "items": [ - { - "type": "function", - "name": "set_production_config", - "inputs": [ - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "amount", - "type": "core::integer::u128" - }, - { - "name": "cost", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TransportConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITransportConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITransportConfig", - "items": [ - { - "type": "function", - "name": "set_speed_config", - "inputs": [ - { - "name": "entity_type", - "type": "core::integer::u32" - }, - { - "name": "sec_per_km", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "HyperstructureConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IHyperstructureConfig" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IHyperstructureConfig", - "items": [ - { - "type": "function", - "name": "set_hyperstructure_config", - "inputs": [ - { - "name": "resources_for_completion", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128, core::integer::u128)>" - }, - { - "name": "time_between_shares_change", - "type": "core::integer::u64" - }, - { - "name": "points_per_cycle", - "type": "core::integer::u128" - }, - { - "name": "points_for_win", - "type": "core::integer::u128" - }, - { - "name": "points_on_completion", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "BankConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBankConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBankConfig", - "items": [ - { - "type": "function", - "name": "set_bank_config", - "inputs": [ - { - "name": "lords_cost", - "type": "core::integer::u128" - }, - { - "name": "lp_fee_num", - "type": "core::integer::u128" - }, - { - "name": "lp_fee_denom", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TroopConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITroopConfig" - }, - { - "type": "struct", - "name": "s0_eternum::models::config::TroopConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "health", - "type": "core::integer::u32" - }, - { - "name": "knight_strength", - "type": "core::integer::u8" - }, - { - "name": "paladin_strength", - "type": "core::integer::u8" - }, - { - "name": "crossbowman_strength", - "type": "core::integer::u16" - }, - { - "name": "advantage_percent", - "type": "core::integer::u16" - }, - { - "name": "disadvantage_percent", - "type": "core::integer::u16" - }, - { - "name": "max_troop_count", - "type": "core::integer::u64" - }, - { - "name": "pillage_health_divisor", - "type": "core::integer::u8" - }, - { - "name": "army_free_per_structure", - "type": "core::integer::u8" - }, - { - "name": "army_extra_per_building", - "type": "core::integer::u8" - }, - { - "name": "army_max_per_structure", - "type": "core::integer::u8" - }, - { - "name": "battle_leave_slash_num", - "type": "core::integer::u8" - }, - { - "name": "battle_leave_slash_denom", - "type": "core::integer::u8" - }, - { - "name": "battle_time_scale", - "type": "core::integer::u16" - }, - { - "name": "battle_max_time_seconds", - "type": "core::integer::u64" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITroopConfig", - "items": [ - { - "type": "function", - "name": "set_troop_config", - "inputs": [ - { - "name": "troop_config", - "type": "s0_eternum::models::config::TroopConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "BuildingCategoryPopulationConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBuildingCategoryPopConfig" - }, - { - "type": "enum", - "name": "s0_eternum::models::buildings::BuildingCategory", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Castle", - "type": "()" - }, - { - "name": "Resource", - "type": "()" - }, - { - "name": "Farm", - "type": "()" - }, - { - "name": "FishingVillage", - "type": "()" - }, - { - "name": "Barracks", - "type": "()" - }, - { - "name": "Market", - "type": "()" - }, - { - "name": "ArcheryRange", - "type": "()" - }, - { - "name": "Stable", - "type": "()" - }, - { - "name": "TradingPost", - "type": "()" - }, - { - "name": "WorkersHut", - "type": "()" - }, - { - "name": "WatchTower", - "type": "()" - }, - { - "name": "Walls", - "type": "()" - }, - { - "name": "Storehouse", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBuildingCategoryPopConfig", - "items": [ - { - "type": "function", - "name": "set_building_category_pop_config", - "inputs": [ - { - "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" - }, - { - "name": "population", - "type": "core::integer::u32" - }, - { - "name": "capacity", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "PopulationConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IPopulationConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IPopulationConfig", - "items": [ - { - "type": "function", - "name": "set_population_config", - "inputs": [ - { - "name": "base_population", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "BuildingConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBuildingConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBuildingConfig", - "items": [ - { - "type": "function", - "name": "set_building_general_config", - "inputs": [ - { - "name": "base_cost_percent_increase", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_building_config", - "inputs": [ - { - "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" - }, - { - "name": "building_resource_type", - "type": "core::integer::u8" - }, - { - "name": "cost_of_building", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "IMercenariesConfig", - "interface_name": "s0_eternum::systems::config::contracts::IMercenariesConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IMercenariesConfig", - "items": [ - { - "type": "function", - "name": "set_mercenaries_config", - "inputs": [ - { - "name": "knights_lower_bound", - "type": "core::integer::u64" - }, - { - "name": "knights_upper_bound", - "type": "core::integer::u64" - }, - { - "name": "paladins_lower_bound", - "type": "core::integer::u64" - }, - { - "name": "paladins_upper_bound", - "type": "core::integer::u64" - }, - { - "name": "crossbowmen_lower_bound", - "type": "core::integer::u64" - }, - { - "name": "crossbowmen_upper_bound", - "type": "core::integer::u64" - }, - { - "name": "rewards", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "IResourceBridgeConfig", - "interface_name": "s0_eternum::systems::config::contracts::IResourceBridgeConfig" - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "deposit_paused", - "type": "core::bool" - }, - { - "name": "withdraw_paused", - "type": "core::bool" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeFeeSplitConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "velords_fee_on_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "velords_fee_on_wtdr_percent", - "type": "core::integer::u16" - }, - { - "name": "season_pool_fee_on_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "season_pool_fee_on_wtdr_percent", - "type": "core::integer::u16" - }, - { - "name": "client_fee_on_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "client_fee_on_wtdr_percent", - "type": "core::integer::u16" - }, - { - "name": "velords_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "season_pool_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "max_bank_fee_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "max_bank_fee_wtdr_percent", - "type": "core::integer::u16" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeWhitelistConfig", - "members": [ - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IResourceBridgeConfig", - "items": [ - { - "type": "function", - "name": "set_resource_bridge_config", - "inputs": [ - { - "name": "resource_bridge_config", - "type": "s0_eternum::models::config::ResourceBridgeConfig" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_resource_bridge_fee_split_config", - "inputs": [ - { - "name": "resource_bridge_fee_split_config", - "type": "s0_eternum::models::config::ResourceBridgeFeeSplitConfig" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_resource_bridge_whitelist_config", - "inputs": [ - { - "name": "resource_bridge_whitelist_config", - "type": "s0_eternum::models::config::ResourceBridgeWhitelistConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "RealmLevelConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IRealmLevelConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IRealmLevelConfig", - "items": [ - { - "type": "function", - "name": "set_realm_max_level_config", - "inputs": [ - { - "name": "new_max_level", - "type": "core::integer::u8" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_realm_level_config", - "inputs": [ - { - "name": "level", - "type": "core::integer::u8" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "ISettlementConfig", - "interface_name": "s0_eternum::systems::config::contracts::ISettlementConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ISettlementConfig", - "items": [ - { - "type": "function", - "name": "set_settlement_config", - "inputs": [ - { - "name": "center", - "type": "core::integer::u32" - }, - { - "name": "base_distance", - "type": "core::integer::u32" - }, - { - "name": "min_first_layer_distance", - "type": "core::integer::u32" - }, - { - "name": "points_placed", - "type": "core::integer::u32" - }, - { - "name": "current_layer", - "type": "core::integer::u32" - }, - { - "name": "current_side", - "type": "core::integer::u32" - }, - { - "name": "current_point_on_side", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "achievement::components::achievable::AchievableComponent::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::config::contracts::config_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - }, - { - "name": "AchievableEvent", - "type": "achievement::components::achievable::AchievableComponent::Event", - "kind": "flat" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-config_systems", - "selector": "0x4deb9db2b1005876b689d07a98673dacb6beea64ef9f564a19a38228d798204", - "systems": [ - "set_world_config", - "set_season_config", - "set_season_bridge_config", - "set_vrf_config", - "set_quest_config", - "set_quest_reward_config", - "set_map_config", - "set_capacity_config", - "set_travel_stamina_cost_config", - "set_weight_config", - "set_battle_config", - "set_tick_config", - "set_stamina_config", - "set_travel_food_cost_config", - "set_stamina_refill_config", - "set_leveling_config", - "set_production_config", - "set_speed_config", - "set_hyperstructure_config", - "set_bank_config", - "set_troop_config", - "set_building_category_pop_config", - "set_population_config", - "set_building_general_config", - "set_building_config", - "set_mercenaries_config", - "set_resource_bridge_config", - "set_resource_bridge_fee_split_config", - "set_resource_bridge_whitelist_config", - "set_realm_max_level_config", - "set_realm_level_config", - "set_settlement_config", - "upgrade" - ] - }, - { - "address": "0xee829901be444844e0771a0c793b106c3192c312c8e58685f7c6941893b5f9", - "class_hash": "0x5ffed6c73f9f2219e87b2fc6b2a35c14e50c0ee70a0c914b098049ab86ea228", - "abi": [ - { - "type": "impl", - "name": "dev_bank_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "dev_bank_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BankSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::bank::IBankSystems" - }, - { - "type": "struct", - "name": "s0_eternum::models::position::Coord", - "members": [ - { - "name": "x", - "type": "core::integer::u32" - }, - { - "name": "y", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::dev::contracts::bank::IBankSystems", - "items": [ - { - "type": "function", - "name": "create_admin_bank", - "inputs": [ - { - "name": "name", - "type": "core::felt252" - }, - { - "name": "coord", - "type": "s0_eternum::models::position::Coord" - }, - { - "name": "owner_fee_num", - "type": "core::integer::u128" - }, - { - "name": "owner_fee_denom", - "type": "core::integer::u128" - }, - { - "name": "owner_bridge_fee_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "owner_bridge_fee_wtdr_percent", - "type": "core::integer::u16" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::dev::contracts::bank::dev_bank_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-dev_bank_systems", - "selector": "0x436d7ef5fa5753c742f95b4fd3a7722399b309251363684474bfcba389fb607", - "systems": [ - "create_admin_bank", - "upgrade" - ] - }, - { - "address": "0x729222a8e3757daec72d37dd434a3a44d3c0bddbec95cf087fb1b983b166b1a", - "class_hash": "0x1b92ab9641011892a0ee9b70dd142bbe52b53bef66ae2ff5e92a20e445375f4", - "abi": [ - { - "type": "impl", - "name": "dev_realm_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "dev_realm_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "DevRealmSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::realm::IDevRealmSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::dev::contracts::realm::IDevRealmSystems", - "items": [ - { - "type": "function", - "name": "create", - "inputs": [ - { - "name": "realm_id", - "type": "core::integer::u32" - }, - { - "name": "frontend", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::dev::contracts::realm::dev_realm_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-dev_realm_systems", - "selector": "0x2a2f52f1a66a15e1e6bee3b5ea2d104bc146e82c1625c5421f6f45c44640824", - "systems": [ - "create", - "upgrade" - ] - }, - { - "address": "0x17410a6c37040ef285251f763799939f69033c69c6d5f9ddb61ff4a139d3f58", - "class_hash": "0x36772edb97443579ee3f8e7c590bcf623e6a383f3323229df75544eb2a97129", - "abi": [ - { - "type": "impl", - "name": "dev_resource_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "dev_resource_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "ResourceSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::resource::IResourceSystems" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::dev::contracts::resource::IResourceSystems", - "items": [ - { - "type": "function", - "name": "mint", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::dev::contracts::resource::dev_resource_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-dev_resource_systems", - "selector": "0x6125379dcbb305b4f4b955271c3c4d472ece9852c3592d9d38a9fbc63fe9025", - "systems": [ - "mint", - "upgrade" - ] - }, - { - "address": "0x68a2cb801dc504acb121c7609d13f1f4bea6739dc80c31d789868ebda339067", - "class_hash": "0x2727b507b2d724b109bc2f969ccb090ee75e78b4c0d2d685e5e8cbce47f07f7", - "abi": [ - { - "type": "impl", - "name": "donkey_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "donkey_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::transport::contracts::donkey_systems::donkey_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-donkey_systems", - "selector": "0x76a0f4e4cdc01c969350b612c38d49d38689d5fde54e4afb3205a4629db83b6", - "systems": [ - "upgrade" - ] - }, - { - "address": "0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4", - "class_hash": "0x2107679161457e3f08fcd5bbb8f8473983e5c8b3c48c1ef67840958e994547c", - "abi": [ - { - "type": "impl", - "name": "guild_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "guild_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "GuildSystemsImpl", - "interface_name": "s0_eternum::systems::guild::contracts::IGuildSystems" - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::guild::contracts::IGuildSystems", - "items": [ - { - "type": "function", - "name": "create_guild", - "inputs": [ - { - "name": "is_public", - "type": "core::bool" - }, - { - "name": "guild_name", - "type": "core::felt252" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "join_guild", - "inputs": [ - { - "name": "guild_entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "whitelist_player", - "inputs": [ - { - "name": "player_address_to_whitelist", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "guild_entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "transfer_guild_ownership", - "inputs": [ - { - "name": "guild_entity_id", - "type": "core::integer::u32" - }, - { - "name": "to_player_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "remove_guild_member", - "inputs": [ - { - "name": "player_address_to_remove", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "remove_player_from_whitelist", - "inputs": [ - { - "name": "player_address_to_remove", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "guild_entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::guild::contracts::guild_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-guild_systems", - "selector": "0x6b2e6f3912853c9745b74266fe1d344bfe8ba99561982c5b4c3ac0e081f956b", - "systems": [ - "create_guild", - "join_guild", - "whitelist_player", - "transfer_guild_ownership", - "remove_guild_member", - "remove_player_from_whitelist", - "upgrade" - ] - }, - { - "address": "0x2fcc3c1691387321c2f4d6310eda7a14365bd274c1a37ed3948d2e93a56f821", - "class_hash": "0x10309b3f3943f076c9064f664c9b4f0b82369bf6f6a21fdb560718693588bc7", - "abi": [ - { - "type": "impl", - "name": "hyperstructure_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "hyperstructure_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "HyperstructureSystemsImpl", - "interface_name": "s0_eternum::systems::hyperstructure::contracts::IHyperstructureSystems" - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u32, core::integer::u16)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u32, core::integer::u16)>" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::position::Coord", - "members": [ - { - "name": "x", - "type": "core::integer::u32" - }, - { - "name": "y", - "type": "core::integer::u32" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>" - } - ] - }, - { - "type": "enum", - "name": "s0_eternum::models::hyperstructure::Access", - "variants": [ - { - "name": "Public", - "type": "()" - }, - { - "name": "Private", - "type": "()" - }, - { - "name": "GuildOnly", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::hyperstructure::contracts::IHyperstructureSystems", - "items": [ - { - "type": "function", - "name": "get_points", - "inputs": [ - { - "name": "player_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "hyperstructures_contributed_to", - "type": "core::array::Span::" - }, - { - "name": "hyperstructure_shareholder_epochs", - "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" - } - ], - "outputs": [ - { - "type": "(core::integer::u128, core::integer::u128, core::integer::u128, core::integer::u128)" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "create", - "inputs": [ - { - "name": "creator_entity_id", - "type": "core::integer::u32" - }, - { - "name": "coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "contribute_to_construction", - "inputs": [ - { - "name": "hyperstructure_entity_id", - "type": "core::integer::u32" - }, - { - "name": "contributor_entity_id", - "type": "core::integer::u32" - }, - { - "name": "contributions", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_co_owners", - "inputs": [ - { - "name": "hyperstructure_entity_id", - "type": "core::integer::u32" - }, - { - "name": "co_owners", - "type": "core::array::Span::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "end_game", - "inputs": [ - { - "name": "hyperstructures_contributed_to", - "type": "core::array::Span::" - }, - { - "name": "hyperstructure_shareholder_epochs", - "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_access", - "inputs": [ - { - "name": "hyperstructure_entity_id", - "type": "core::integer::u32" - }, - { - "name": "access", - "type": "s0_eternum::models::hyperstructure::Access" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::hyperstructure::contracts::hyperstructure_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-hyperstructure_systems", - "selector": "0x44f825ffb89246cbeda203107846db0efad60bbedb24dc67dbd4a42593e6c82", - "systems": [ - "get_points", - "create", - "contribute_to_construction", - "set_co_owners", - "end_game", - "set_access", - "upgrade" - ] - }, - { - "address": "0xa052c5ca082356bcc8457f0f805eaf18f97d0fdddde3f90f5b238923859ed4", - "class_hash": "0x5790815c798b8e4b21dd876b91ce4114f51a4584ef6a5324d100fa825054e74", - "abi": [ - { - "type": "impl", - "name": "liquidity_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "liquidity_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "LiquiditySystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::liquidity::ILiquiditySystems" - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "cubit::f128::types::fixed::Fixed", - "members": [ - { - "name": "mag", - "type": "core::integer::u128" - }, - { - "name": "sign", - "type": "core::bool" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::bank::contracts::liquidity::ILiquiditySystems", - "items": [ - { - "type": "function", - "name": "add", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "resource_amount", - "type": "core::integer::u128" - }, - { - "name": "lords_amount", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "remove", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "shares", - "type": "cubit::f128::types::fixed::Fixed" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::bank::contracts::liquidity::liquidity_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-liquidity_systems", - "selector": "0x3cc30307c653c6c1ba1a6e99364f57c94360b8f73787d1518eaab02e9d0d6b", - "systems": [ - "add", - "remove", - "upgrade" - ] - }, - { - "address": "0x7f274766f8f7fb0503d3d72b15a4d853f6189402a2ad1c9780fc7a1b017f678", - "class_hash": "0x2e3c0d6a5a26c91cadd794a04329a23f030c89d03ec50a8199244d545b912d6", - "abi": [ - { - "type": "impl", - "name": "map_generation_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "map_generation_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "MapGenerationSystemsImpl", - "interface_name": "s0_eternum::systems::map::map_generation::IMapGenerationSystems" - }, - { - "type": "struct", - "name": "s0_eternum::models::owner::EntityOwner", - "members": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_owner_id", - "type": "core::integer::u32" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::position::Coord", - "members": [ - { - "name": "x", - "type": "core::integer::u32" - }, - { - "name": "y", - "type": "core::integer::u32" - } - ] - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "core::integer::u256", - "members": [ - { - "name": "low", - "type": "core::integer::u128" - }, - { - "name": "high", - "type": "core::integer::u128" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::map::map_generation::IMapGenerationSystems", - "items": [ - { - "type": "function", - "name": "discover_shards_mine", - "inputs": [ - { - "name": "unit_entity_owner", - "type": "s0_eternum::models::owner::EntityOwner" - }, - { - "name": "coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [ - { - "type": "core::bool" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "add_mercenaries_to_structure", - "inputs": [ - { - "name": "randomness", - "type": "core::integer::u256" - }, - { - "name": "structure_entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::map::map_generation::map_generation_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-map_generation_systems", - "selector": "0x29daec1bf7e70863ae1f9a4b455a1e12030394562eb21b214c9037f9fb71424", - "systems": [ - "discover_shards_mine", - "add_mercenaries_to_structure", - "upgrade" - ] - }, - { - "address": "0x4a212c52c4035bc9bd170125216604f406dcd75b41be11d3b4d89047366d84d", - "class_hash": "0x5dd66452d42d01a490e933231094f081fe535d7ba8222cc56add27221f34cd9", - "abi": [ - { - "type": "impl", - "name": "map_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "map_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "MapSystemsImpl", - "interface_name": "s0_eternum::systems::map::contracts::IMapSystems" - }, - { - "type": "enum", - "name": "s0_eternum::models::position::Direction", - "variants": [ - { - "name": "East", - "type": "()" - }, - { - "name": "NorthEast", - "type": "()" - }, - { - "name": "NorthWest", - "type": "()" - }, - { - "name": "West", - "type": "()" - }, - { - "name": "SouthWest", - "type": "()" - }, - { - "name": "SouthEast", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::map::contracts::IMapSystems", - "items": [ - { - "type": "function", - "name": "explore", - "inputs": [ - { - "name": "unit_id", - "type": "core::integer::u32" - }, - { - "name": "direction", - "type": "s0_eternum::models::position::Direction" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::map::contracts::map_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-map_systems", - "selector": "0x27a92961f46c5ac43e19fa2b7d50d169c2776dbb98478a96a8a3050647431cd", - "systems": [ - "explore", - "upgrade" - ] - }, - { - "address": "0x7e3bae0e253a0131063b63ee4d7b27b50329c617ae88b82d529a70f1a11c63", - "class_hash": "0x288d58cd0a2fa003e18768537e62f72649c451a647fd704096a4b1dae4bdcae", - "abi": [ - { - "type": "impl", - "name": "name_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "name_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "NameSystemsImpl", - "interface_name": "s0_eternum::systems::name::contracts::INameSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::name::contracts::INameSystems", - "items": [ - { - "type": "function", - "name": "set_address_name", - "inputs": [ - { - "name": "name", - "type": "core::felt252" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_entity_name", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "name", - "type": "core::felt252" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::name::contracts::name_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-name_systems", - "selector": "0x57061191efce4db08b753f5d6119a16595a3ac2b91db70e971630c34ff5e16e", - "systems": [ - "set_address_name", - "set_entity_name", - "upgrade" - ] - }, - { - "address": "0x30516789ee1b822d7b448f01be67cec7bf383d3ac4b2380a09f85ad0765f846", - "class_hash": "0x1896883a09bb110c705be2685eacb0b0e6ae67fde76602982f7f32daceb7fa7", - "abi": [ - { - "type": "impl", - "name": "ownership_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "ownership_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "OwnershipSystemsImpl", - "interface_name": "s0_eternum::systems::ownership::contracts::IOwnershipSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::ownership::contracts::IOwnershipSystems", - "items": [ - { - "type": "function", - "name": "transfer_ownership", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "new_owner", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::ownership::contracts::ownership_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-ownership_systems", - "selector": "0x419b9f1d9d3cbe8dd78cb553b0e1895fa2d3cfb9e7e578866056fca72f9108b", - "systems": [ - "transfer_ownership", - "upgrade" - ] - }, - { - "address": "0x1b480f620ea35431ab43dba634795b14f547ef3e77370db6f0a31f2fdc21d86", - "class_hash": "0x6aa56ec3dace30b73ad1764b63291cc4c6c6bd19e7fe522b255d6686d40befb", - "abi": [ - { - "type": "impl", - "name": "realm_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "realm_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "RealmSystemsImpl", - "interface_name": "s0_eternum::systems::realm::contracts::IRealmSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::realm::contracts::IRealmSystems", - "items": [ - { - "type": "function", - "name": "create", - "inputs": [ - { - "name": "owner", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "realm_id", - "type": "core::integer::u32" - }, - { - "name": "frontend", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "upgrade_level", - "inputs": [ - { - "name": "realm_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "quest_claim", - "inputs": [ - { - "name": "quest_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::realm::contracts::realm_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-realm_systems", - "selector": "0x6ae6691704d5df34326545ad7d15afebdd83066596af8c0dcb5d216d1ede909", - "systems": [ - "create", - "upgrade_level", - "quest_claim", - "upgrade" - ] - }, - { - "address": "0x691a60b709ca5c1c5ff86824831f84deb26f0f5d07d70c0f807eab48110d2f6", - "class_hash": "0x5be66113526f96d4bb34d6a2b80b5d7dd8639104a30cf9d5d14ff930defa583", - "abi": [ - { - "type": "impl", - "name": "resource_bridge_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "resource_bridge_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "ResourceBridgeImpl", - "interface_name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems" - }, - { - "type": "struct", - "name": "core::integer::u256", - "members": [ - { - "name": "low", - "type": "core::integer::u128" - }, - { - "name": "high", - "type": "core::integer::u128" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems", - "items": [ - { - "type": "function", - "name": "deposit_initial", - "inputs": [ - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "recipient_realm_id", - "type": "core::integer::u32" - }, - { - "name": "amount", - "type": "core::integer::u256" - }, - { - "name": "client_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "deposit", - "inputs": [ - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "through_bank_id", - "type": "core::integer::u32" - }, - { - "name": "recipient_realm_id", - "type": "core::integer::u32" - }, - { - "name": "amount", - "type": "core::integer::u256" - }, - { - "name": "client_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "start_withdraw", - "inputs": [ - { - "name": "through_bank_id", - "type": "core::integer::u32" - }, - { - "name": "from_realm_id", - "type": "core::integer::u32" - }, - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "amount", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "finish_withdraw", - "inputs": [ - { - "name": "through_bank_id", - "type": "core::integer::u32" - }, - { - "name": "from_entity_id", - "type": "core::integer::u32" - }, - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "recipient_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "client_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::resource_bridge_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-resource_bridge_systems", - "selector": "0x5916a4c5e4fb7f1105244015fcc1e9950efab35919af199a4a2c1aef2c3aa61", - "systems": [ - "deposit_initial", - "deposit", - "start_withdraw", - "finish_withdraw", - "upgrade" - ] - }, - { - "address": "0x42c0303a2119a9e20daa60e83c48221cdf1bb2a4c009bab031d1cd3555a127e", - "class_hash": "0x5e9b55f4acabd7ec7ef30f1cbd4d0fa397e0877234f1c7d46c9678a67248a17", - "abi": [ - { - "type": "impl", - "name": "resource_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "resource_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "ResourceSystemsImpl", - "interface_name": "s0_eternum::systems::resources::contracts::resource_systems::IResourceSystems" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::resources::contracts::resource_systems::IResourceSystems", - "items": [ - { - "type": "function", - "name": "approve", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "recipient_entity_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "send", - "inputs": [ - { - "name": "sender_entity_id", - "type": "core::integer::u32" - }, - { - "name": "recipient_entity_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "pickup", - "inputs": [ - { - "name": "recipient_entity_id", - "type": "core::integer::u32" - }, - { - "name": "owner_entity_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::resources::contracts::resource_systems::resource_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-resource_systems", - "selector": "0x31e8be63af9c072934c219dd6cbd2fea3b49fce2311adceb8a8a8870a760b62", - "systems": [ - "approve", - "send", - "pickup", - "upgrade" - ] - }, - { - "address": "0x4b5e65a9617c7ba3c7ea64324ff4338a400adb1a3cfe903b3f8b647cbb59fb7", - "class_hash": "0x58d34a3f335f4eabf39bff79e901b3e80b6f2065809a110070ad9db15433186", - "abi": [ - { - "type": "impl", - "name": "season_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "season_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "SeasonSystemsImpl", - "interface_name": "s0_eternum::systems::season::contracts::ISeasonSystems" - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u32, core::integer::u16)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u32, core::integer::u16)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::season::contracts::ISeasonSystems", - "items": [ - { - "type": "function", - "name": "register_to_leaderboard", - "inputs": [ - { - "name": "hyperstructures_contributed_to", - "type": "core::array::Span::" - }, - { - "name": "hyperstructure_shareholder_epochs", - "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "claim_leaderboard_rewards", - "inputs": [ - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::season::contracts::season_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-season_systems", - "selector": "0x384e61da11b2e476dc992c9556f8d1d42814136a36400b5cb34175de183ac9", - "systems": [ - "register_to_leaderboard", - "claim_leaderboard_rewards", - "upgrade" - ] - }, - { - "address": "0x4f92a1d00d3aec8cece60fc2d0fc236fe1d95c54ff0ceb2f393fbc7e0863d8e", - "class_hash": "0xeb430602e661e99572522646cde107ec514e61144be7d21b6d8f506253fb12", - "abi": [ - { - "type": "impl", - "name": "swap_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "swap_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "SwapSystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::swap::ISwapSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::bank::contracts::swap::ISwapSystems", - "items": [ - { - "type": "function", - "name": "buy", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "amount", - "type": "core::integer::u128" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "sell", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "amount", - "type": "core::integer::u128" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::bank::contracts::swap::swap_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-swap_systems", - "selector": "0x14a06d11e0f26724e8e61c141842f95425009d07620b3c369f9f517d568e591", - "systems": [ - "buy", - "sell", - "upgrade" - ] - }, - { - "address": "0x7e2b1334398fafbe640f34bacae99b649d633417960ee397b6a8fb117fec819", - "class_hash": "0x82d4c26c51972a54cce8bdb3a2d75c88cba9435fef478cd548616144dc8cf7", - "abi": [ - { - "type": "impl", - "name": "trade_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "trade_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "TradeSystemsImpl", - "interface_name": "s0_eternum::systems::trade::contracts::trade_systems::ITradeSystems" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::trade::contracts::trade_systems::ITradeSystems", - "items": [ - { - "type": "function", - "name": "create_order", - "inputs": [ - { - "name": "maker_id", - "type": "core::integer::u32" - }, - { - "name": "maker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "taker_id", - "type": "core::integer::u32" - }, - { - "name": "taker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "expires_at", - "type": "core::integer::u64" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "accept_order", - "inputs": [ - { - "name": "taker_id", - "type": "core::integer::u32" - }, - { - "name": "trade_id", - "type": "core::integer::u32" - }, - { - "name": "maker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "taker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "accept_partial_order", - "inputs": [ - { - "name": "taker_id", - "type": "core::integer::u32" - }, - { - "name": "trade_id", - "type": "core::integer::u32" - }, - { - "name": "maker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "taker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "taker_gives_actual_amount", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "cancel_order", - "inputs": [ - { - "name": "trade_id", - "type": "core::integer::u32" - }, - { - "name": "return_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::trade::contracts::trade_systems::trade_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-trade_systems", - "selector": "0x5272cd9b34062cb8bd8ec92ecca87f92a884d4bd2f5bf6c563265a018ac22a5", - "systems": [ - "create_order", - "accept_order", - "accept_partial_order", - "cancel_order", - "upgrade" - ] - }, - { - "address": "0x4069c2be57f08fef9f31afc85a5b4c03c208ebdb278b9d853606caa7a9cbee6", - "class_hash": "0x265849dc16d9a9aea6fa88ba80d8daa77cc3323320eba61acef791980f7731d", - "abi": [ - { - "type": "impl", - "name": "travel_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "travel_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "TravelSystemsImpl", - "interface_name": "s0_eternum::systems::transport::contracts::travel_systems::ITravelSystems" - }, - { - "type": "enum", - "name": "s0_eternum::models::position::Direction", - "variants": [ - { - "name": "East", - "type": "()" - }, - { - "name": "NorthEast", - "type": "()" - }, - { - "name": "NorthWest", - "type": "()" - }, - { - "name": "West", - "type": "()" - }, - { - "name": "SouthWest", - "type": "()" - }, - { - "name": "SouthEast", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::transport::contracts::travel_systems::ITravelSystems", - "items": [ - { - "type": "function", - "name": "travel_hex", - "inputs": [ - { - "name": "travelling_entity_id", - "type": "core::integer::u32" - }, - { - "name": "directions", - "type": "core::array::Span::" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::transport::contracts::travel_systems::travel_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-travel_systems", - "selector": "0x4928d4294639e944ff93869e10cee7533ffd910f5791fc486c04b91f2fcf8fe", - "systems": [ - "travel_hex", - "upgrade" - ] - }, - { - "address": "0x26be0ed574aa9ee6f73b53b12f0a199ddbf4ac697470316cdb3d9d1f5680cab", - "class_hash": "0x73a377e55a1833ac9ab16ad9eb29c941cc182bf8cf4a10720d6737dc7c826ff", - "abi": [ - { - "type": "impl", - "name": "troop_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "troop_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "TroopContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::troop_systems::ITroopContract" - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::Troops", - "members": [ - { - "name": "knight_count", - "type": "core::integer::u64" - }, - { - "name": "paladin_count", - "type": "core::integer::u64" - }, - { - "name": "crossbowman_count", - "type": "core::integer::u64" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::combat::contracts::troop_systems::ITroopContract", - "items": [ - { - "type": "function", - "name": "army_create", - "inputs": [ - { - "name": "army_owner_id", - "type": "core::integer::u32" - }, - { - "name": "is_defensive_army", - "type": "core::bool" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "army_delete", - "inputs": [ - { - "name": "army_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "army_buy_troops", - "inputs": [ - { - "name": "army_id", - "type": "core::integer::u32" - }, - { - "name": "payer_id", - "type": "core::integer::u32" - }, - { - "name": "troops", - "type": "s0_eternum::models::combat::Troops" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "army_merge_troops", - "inputs": [ - { - "name": "from_army_id", - "type": "core::integer::u32" - }, - { - "name": "to_army_id", - "type": "core::integer::u32" - }, - { - "name": "troops", - "type": "s0_eternum::models::combat::Troops" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::combat::contracts::troop_systems::troop_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-troop_systems", - "selector": "0x5f97ab78613558d9346649708e6829b417ad55826ba2e4f7b0fc79ad276180a", - "systems": [ - "army_create", - "army_delete", - "army_buy_troops", - "army_merge_troops", - "upgrade" - ] - } - ], - "models": [ - { - "members": [], - "class_hash": "0x25603f4597c7b9476318af1bf26c9e0f9f7a3f24b8aa4fd4aa095289c74e2bb", - "tag": "s0_eternum-AddressName", - "selector": "0x2a33e6e963e8f80fb8f00a69a8b55ec9834adda81bbb305024500c4b4356e24" - }, - { - "members": [], - "class_hash": "0x7c8598486eb6f5bc890ccac17cc5c4f7400998f5c50247d90e5df0f643f9f2b", - "tag": "s0_eternum-Army", - "selector": "0x34cab5fd09c4f5f5b8624e52c883afec2462c2fc2e7227121f70de648e68dcc" - }, - { - "members": [], - "class_hash": "0x7833dddc0296ff97ec9f1dc202d471ed80888935579f156737927c9207e0417", - "tag": "s0_eternum-ArrivalTime", - "selector": "0xd334451a97858d6173423408cd0c4da2a3878f6ec4f3909e134193d07682c4" - }, - { - "members": [], - "class_hash": "0x189b3d6d05402af89cfefc45b6c6ce579ab81ee7da7cce1fdf08ecb881de732", - "tag": "s0_eternum-Bank", - "selector": "0x6f71dd64e5e14a5ab47d15cfabd84490061490c8c203993790f30cafd5d117e" - }, - { - "members": [], - "class_hash": "0xa7a02d408072e5f97ebf3f0d69acb4fb176223379091948a452c10c314a0d2", - "tag": "s0_eternum-BankConfig", - "selector": "0x2a507ce5bff2ddf50eced9c753dc0a160ba64fc6efe3be4cb26ce51210e2b81" - }, - { - "members": [], - "class_hash": "0x809fe36ec53a3cfa77f64648430007c5bc0bb148c31652b3956bb318a8f7ae", - "tag": "s0_eternum-Battle", - "selector": "0x28394f9c3c874b586a25bf96d137256eab0a702fc3f66aa83464a5a0e062172" - }, - { - "members": [], - "class_hash": "0x715169dd601b742605451b231c47de8970be609fb85f48115b01333766bedf4", - "tag": "s0_eternum-BattleConfig", - "selector": "0x224e4f9b37ed3d9cc06297ea8507e62538b864a92232f0ec53a4c7a4cf6ccfd" - }, - { - "members": [], - "class_hash": "0x551b3f9ea6504a59d70f1fc420d6e20797bdfe822c7c5e8d5d0d6bff8ad679a", - "tag": "s0_eternum-Building", - "selector": "0x74f3912ea921e93e11f5c8267c29d94f367b3c52840c0ec93292ff5d2374d6c" - }, - { - "members": [], - "class_hash": "0x3d1ed9f1e9280e3f046561cfb77244866cc919517e62762cef17779d91a9d4e", - "tag": "s0_eternum-BuildingCategoryPopConfig", - "selector": "0x7713338d5bb53067dd8a10c158385c2744d0dfba8260ddb0658394359b6b5e2" - }, - { - "members": [], - "class_hash": "0x6619a6a57a8361ac09e034d95d26df7608a1314a89386bfbc9fbbc385dfb090", - "tag": "s0_eternum-BuildingConfig", - "selector": "0x1f8462fbfd271244b0144b93124ee213e9ef6edec50e6fc4b0ea41d2b756d87" - }, - { - "members": [], - "class_hash": "0x2fdd5ae262983f3645779ab454a188dd555dcbc3dc3ceb438bf1ee7958b6c5f", - "tag": "s0_eternum-BuildingGeneralConfig", - "selector": "0x1fc4af90bddbc3edb2446f5839d3274131bd7023a2bde3aeddbe29769c0be84" - }, - { - "members": [], - "class_hash": "0x1d3ddebfe5bbb35348ac03a42b77be34ff050b5f60d5370ff5a6415d61f8a11", - "tag": "s0_eternum-BuildingQuantityv2", - "selector": "0xe74ab1d939c8b4763331ecee9187cc91e4a363228e596e0a655667aeedb117" - }, - { - "members": [], - "class_hash": "0x6cafd04dceeb148a4f3cdb0fc76083c74677f11a046f3be2a50cc22279a8074", - "tag": "s0_eternum-CapacityCategory", - "selector": "0x166cc667881fc0d333660d7668601cf536082cc577b720cea8be0f24549473c" - }, - { - "members": [], - "class_hash": "0x3a19b4d090591b5be5a300e1fd02e3b0d52bc20b30b47d7a0255a48a678e29d", - "tag": "s0_eternum-CapacityConfig", - "selector": "0x4bb69cf85cfa897830312e40bb75ab1c0f58c01cbbadf4e835ee5fa37d1bb2e" - }, - { - "members": [], - "class_hash": "0x105a94789b0a8342a90b8878fa4f06553af01b9416d86a0a80d65fc169d3092", - "tag": "s0_eternum-Contribution", - "selector": "0x48fb552387fed5f3f7bcb55468f85ac92efeb06817e5f5e329358b69b4a7d6" - }, - { - "members": [], - "class_hash": "0x56087bbaf3245d64e62c0afd732ffdbe7584493d1a39316a09082182d809da1", - "tag": "s0_eternum-DetachedResource", - "selector": "0x34cc163b0f7a78e671da441bbbfe6dd3632f7f62cbee8e1734c6dec2971478c" - }, - { - "members": [], - "class_hash": "0x71b9c7843ab6be7de6ade56f21be309f9bf08a6e4fc33318dd9f43307e1008", - "tag": "s0_eternum-EntityName", - "selector": "0x4ea8f072e356080ed18f016cbb7f0c43807c733d037c3ad9e52da5fd98e11f0" - }, - { - "members": [], - "class_hash": "0x2d0dd3c37fa25edc072c4fd231c6ec51dbed2ea0304a334a8b47568d9a1ec4f", - "tag": "s0_eternum-EntityOwner", - "selector": "0x19fbc5ce760d680c185bbefb04a4b1870a4f23bc8fda0fbf77b4a241b7ce04a" - }, - { - "members": [], - "class_hash": "0x76ab75f20ec824383b34afe1315ec9e59fe9f23599086b354f43e3c08aa8e24", - "tag": "s0_eternum-Epoch", - "selector": "0x62827d2605e74e8c4ea2f40a6407477a0eae355a2e6485261acbc95e3219fc3" - }, - { - "members": [], - "class_hash": "0x22001c3a27555a192b0a134e76a443707ca89af8fb7a01265473cd609b04a41", - "tag": "s0_eternum-Guild", - "selector": "0x49ac80c25fa65d45250f4dd7a253dd79561a9460e108c173aa413ef246c3e6b" - }, - { - "members": [], - "class_hash": "0x2ba8f917f23ee021008384816f0ad038a1cae8b004c53e18f6bac455ec9efa6", - "tag": "s0_eternum-GuildMember", - "selector": "0x517c08e6a498a5a56742edce432fd533bc4cb16589acf1bb025999a5cec0e66" - }, - { - "members": [], - "class_hash": "0x2f72606313ed3fca8c1d6ec0257466e6b9301cc9fba8ec67d114f7fab0dc23a", - "tag": "s0_eternum-GuildWhitelist", - "selector": "0x5da3d8f80bab03feaa3c5158e1e4584b6b5e213a0feb4d4125798f73b4a528a" - }, - { - "members": [], - "class_hash": "0x111b1a81032822367c6d57b2fe7b2baaaf8304ec0f8075bda6dd83b0827f35d", - "tag": "s0_eternum-Health", - "selector": "0x1aa97583b6abc29f779ed14e03d820d29e64168389ca94367abf35ea7f103a1" - }, - { - "members": [], - "class_hash": "0x6277bc0b34ccf11b00b086ca2c7e83a5ac144532b6b4f843caddfcf01c02327", - "tag": "s0_eternum-Hyperstructure", - "selector": "0x5a47c8b59e367cc045b847bd4f63955ceeeffbc43055ecd11d2d77796bddd73" - }, - { - "members": [], - "class_hash": "0x1f90aa30d9d5d978f71b991daa57bc5ce51070034c3c3749c3378eae720e1b5", - "tag": "s0_eternum-HyperstructureConfig", - "selector": "0x538fcd59a65ece056337c3f4563a41b0922e14c0892d9e0f2e9980716487be3" - }, - { - "members": [], - "class_hash": "0x4f85a565011171be648bda2095b1448773804f29d967448aa2fa81554cbfab1", - "tag": "s0_eternum-HyperstructureResourceConfig", - "selector": "0x3841ccb4835caa2dd2433ed893d593a63d74afea4ec67eccb905df41d6b95b1" - }, - { - "members": [], - "class_hash": "0x7dfe538eaecf8e98fc578ef98c8766c050d1e6fd853f2a663a42d99813b4e23", - "tag": "s0_eternum-Leaderboard", - "selector": "0x2feedf0fc0a7bb2c53a51fee44e1c8a2cbf182ed000b57865c108eaaa463bcf" - }, - { - "members": [], - "class_hash": "0x792ff7a8ffffbaff0859d84e2d87ee5a71996bfeb349248cbf63d7dd1b8a1f4", - "tag": "s0_eternum-LeaderboardEntry", - "selector": "0x446f6cb1881e354935007b6a51033216f2f66cab52573d1bb2a03d7bc7fb4fb" - }, - { - "members": [], - "class_hash": "0x3d74e8cac527985922387788dbf8d902a90ae15d21468719ba2d5f7b74cc881", - "tag": "s0_eternum-LeaderboardRegisterContribution", - "selector": "0x751fee2d8620c3b1f24b201044ac4414a808e5cc57cbf99b305a66ac3dc6334" - }, - { - "members": [], - "class_hash": "0x671185f10d3a8d6917e10b6c8686fbc556755e8eb7fe8b871e9660db26a16db", - "tag": "s0_eternum-LeaderboardRegisterShare", - "selector": "0x2781c647b95b04aba3e293318e83e5ab139e95a13630336badd83197225f679" - }, - { - "members": [], - "class_hash": "0x6a6b0e38324523a4d7c9406ad059adc0244353ae86fdb28589419643152d42a", - "tag": "s0_eternum-LeaderboardRegistered", - "selector": "0x3d2cbb167883a8ff584dad6276fc1df0b7757d5e2282f1658d746a8c936116b" - }, - { - "members": [], - "class_hash": "0x19baf80e6ba59bfb8c94643f2ed7c15e902d00d313ac92c90f4071e3ddf0129", - "tag": "s0_eternum-LeaderboardRewardClaimed", - "selector": "0xc7744e31a4ae5a2f24008b6147fac5c735bfa7fc4bbff8224f2833f73a8e93" - }, - { - "members": [], - "class_hash": "0x1a812bd54f7a074e8a1289ab1d7e41e659ef15c607d934abfeda35d987a834", - "tag": "s0_eternum-LevelingConfig", - "selector": "0x57307c2d18e8c1e060fcb4cc9d63ce0abfa90f9e9bca63f00fb08a8b6a6584d" - }, - { - "members": [], - "class_hash": "0x465e09976306288f9d5ba76464636aa3570b50d3dd537e62df642524007eab8", - "tag": "s0_eternum-Liquidity", - "selector": "0x88855562f77d4da524f33db24ad881dd1c3b4d809fa37d2508b5ab1fd4310e" - }, - { - "members": [], - "class_hash": "0x3acaf90122ee7bec0d7e0c29b9d227fb3f7576661157acf5817d2875acdeb24", - "tag": "s0_eternum-MapConfig", - "selector": "0x1c44934bf878736b0ffd224a4d0065ca92072daa6e846de657f58b7b5a4374a" - }, - { - "members": [], - "class_hash": "0x1c99e7ffe68d55ac3fc421eb979fd5d7d197d6dc99cc8893fcaae5abbaedfa9", - "tag": "s0_eternum-Market", - "selector": "0x18457324069342b71d49b485b3b2ced814726c5a978581a172dd806de3d9bac" - }, - { - "members": [], - "class_hash": "0x16eef0d1d4096a35efebc74a9c8254cb8c1af27a8c7d22fda96edc796b4cdac", - "tag": "s0_eternum-MercenariesConfig", - "selector": "0x7983d4a611b82abb59e4320d8032fcb84f3c372c60c83a01d680f14f64bd3c6" - }, - { - "members": [], - "class_hash": "0x247307d7e5299e6b3ce6377a08a9d41497229eaa6a9e591858d0a088c61af4a", - "tag": "s0_eternum-Message", - "selector": "0x3262fb0b2f51323ea7116e1ef4735a6e1be97bc86bbe19fcba298d0edfa0c5c" - }, - { - "members": [], - "class_hash": "0x355984d124ab086115f9b6855c05a7c6ab416e01a45e57a08e13b28ec7db02d", - "tag": "s0_eternum-Movable", - "selector": "0x354103241a35f6b87bb0e9c4ac055975dd5324a93ab74b5b30edcce0067c59" - }, - { - "members": [], - "class_hash": "0x51b6a84422ddfda104af1cb45bbce0609edd265d2b909237ec37dc7aa5a2afd", - "tag": "s0_eternum-Orders", - "selector": "0x2b8ed5e03d3934c534f66fc8194cd3cc112003028691019c9d1dd5ceacf6bc" - }, - { - "members": [], - "class_hash": "0x787159e5bbd67c0eba40db3b4984a9b1ace232ce3991bf96abb6a964b57d2", - "tag": "s0_eternum-OwnedResourcesTracker", - "selector": "0x50b64757716328c2639f72f641130df11177b01695167ec2ffb63f4c5ac8c93" - }, - { - "members": [], - "class_hash": "0x6943ea1c8aee5d7749a85d2e333a8d97dce8d1d661e5bba0d93c850ab33d7da", - "tag": "s0_eternum-Owner", - "selector": "0x2ac70068901471291f27e386276bb51ce50c89e144a6e8e11d4f91b78236241" - }, - { - "members": [], - "class_hash": "0x77effa7d6e9cdaf053e31ddb864c29cc587e756673d8a2bdc8b919ac8eb0373", - "tag": "s0_eternum-Population", - "selector": "0x999f9ad8790ee0ec873b5e149fa1ef1054039e90bba49ac4975ba2cdb54429" - }, - { - "members": [], - "class_hash": "0x58397e297c6e9d5fb96965dd7241321667199c25918efeb27bbb830ab0948c3", - "tag": "s0_eternum-PopulationConfig", - "selector": "0x5cd485b0e678c36a4a14b0fcf5880e58e206c5b8199c9640d88f5ea86efe9b5" - }, - { - "members": [], - "class_hash": "0x4953b4f720c6479aae4d8b84b2d749ad5ab816f03e6ce500d5bcf609c59e77c", - "tag": "s0_eternum-Position", - "selector": "0x77c1a504cea841ea9ee0819e994d66d453d0652ecb7a51e80682ff8abd57f65" - }, - { - "members": [], - "class_hash": "0x681143e22335e72474d3921e0c0de14be253faa5b5c5c46a4adb8ecd3e2f6c9", - "tag": "s0_eternum-Production", - "selector": "0x12c4d44e2b854c8481b4da2b2dcc648b3a9d4e9006b4143acfedbd6aa8641db" - }, - { - "members": [], - "class_hash": "0x2ae1387960b8602eab9567676f73317344ae7ded34e9fc0c012966e8d3cf2ce", - "tag": "s0_eternum-ProductionConfig", - "selector": "0x520a8a0dec76799ca6b1198154f32247aa76da785d2cc7a56dabe401f80416c" - }, - { - "members": [], - "class_hash": "0x429e0c7c8e81306023b8d502d4e7737646720b8769a13581d54e99b76a6052e", - "tag": "s0_eternum-ProductionDeadline", - "selector": "0x18bea71025a244df48319cca495154feeec10353885e4e9b73aa18239584fee" - }, - { - "members": [], - "class_hash": "0x7c98db7992d639ca0be54bd97dd342e80e4b5a8f9fab93fa3d37a5c027eb8ef", - "tag": "s0_eternum-ProductionInput", - "selector": "0x3df010b82ccfbdd80db14af6e47dc79038aec508f795b9d0f9968edba040c07" - }, - { - "members": [], - "class_hash": "0x297e32982827c7ca0e9950f7ab0593a7334289d004cff93809522a45774d858", - "tag": "s0_eternum-ProductionOutput", - "selector": "0x5ad2bb76ff0fcf39f0a6399770ae2f78b6999f03e5c9b9aa7b2216477772ffe" - }, - { - "members": [], - "class_hash": "0x3736456c345cc770abd64231513bd58269d6fb382e48c411be7bb5c66a54322", - "tag": "s0_eternum-Progress", - "selector": "0x2b63dd696d82b19fa1421e9e47be1c573b761c39f6b58c0d14ed0c562f26b3f" - }, - { - "members": [], - "class_hash": "0x375116ae74219639eab6fd408cdd263e4c6c93fb0b544d3ba3ef8e876ef561", - "tag": "s0_eternum-Protectee", - "selector": "0x2ac4b9ed0d69ae66f6feff3272811293fa6e8196bd602183271d07ae7a5d3bb" - }, - { - "members": [], - "class_hash": "0x3eff2b8014606f2522063b0803a9f0456c0be34f4ec6b7f31d2b0948a4aa0c1", - "tag": "s0_eternum-Protector", - "selector": "0x72426f978a43c915d92511ce3efb7fdd6c962f4344e37d38ed00d0d95eb37b5" - }, - { - "members": [], - "class_hash": "0x7577aac22db1cb4db007701d6292ed0edddb54a27a947f2fdbce4615cb0c178", - "tag": "s0_eternum-Quantity", - "selector": "0x399416904300b2d9bc98601f480dcdd403fac4845279504082f1775505fb41" - }, - { - "members": [], - "class_hash": "0x2c17a1b5a72fc1c99fcc98629008b8cf539162e67a39813fadb9f407e20b2fb", - "tag": "s0_eternum-QuantityTracker", - "selector": "0x29c1ad2966a8d135fb73179ff12b872776a13fef4e7dcc14955f71950ad65aa" - }, - { - "members": [], - "class_hash": "0x3c9e64e617d829d6ef52f3cc63ee1872892697641ece5c3562494655751ee92", - "tag": "s0_eternum-Quest", - "selector": "0x7be72bb5626ead15f8756586fc89f32ca4e65fcbe00e8d49a222d94460b40ac" - }, - { - "members": [], - "class_hash": "0x6d7d41fa73f6a0cafcc95b905c394f420dbe512afb245f63c5aaf9d440c1c90", - "tag": "s0_eternum-QuestBonus", - "selector": "0x3e946c05a7448654a3f0f8e3983c98daca1d6727d3a595076b232f21aa9bf61" - }, - { - "members": [], - "class_hash": "0x6d7fa03d466e40e61eb5f9e8920ed1723e386147ece32faabfe48a3d96d8acb", - "tag": "s0_eternum-QuestConfig", - "selector": "0x10baf692d4bb6ab5fa51d3bcdb33b443bbb89178f74ad35c0f39df34972d97a" - }, - { - "members": [], - "class_hash": "0x5c8dbcc5c43eef6f7bebe035cfab3f0d97fc98cb7468c27494032ee7c477682", - "tag": "s0_eternum-QuestRewardConfig", - "selector": "0x1ee6b0ff29db9cdeecda6f947a65007ef951ac7b80242fe22cbc641bfcd24c5" - }, - { - "members": [], - "class_hash": "0x442cd0a9cac38ceadfe1f6ff64cf9df8a08036e1aa83e9fc8afdb34cb94af86", - "tag": "s0_eternum-Realm", - "selector": "0x73d618f4cfd6974371417e6fbe450ff219d703d52cd92acd3e0362d18754876" - }, - { - "members": [], - "class_hash": "0x37903a2f2a111216ca18f3d52cd3b7ac241700c929d0f532d82c8d0eef0db26", - "tag": "s0_eternum-RealmLevelConfig", - "selector": "0x7430cd339058f757d8da2972d4609124b232fac288cd84efb4975ef17783fa3" - }, - { - "members": [], - "class_hash": "0xb05b9f8bd0de85e837c571d3b7555c1dd54b8601049eb250f25193581a3813", - "tag": "s0_eternum-RealmMaxLevelConfig", - "selector": "0x454f0915256598d53f9fdd192a32a5886d2b006532ea05b1981694951e62fb7" - }, - { - "members": [], - "class_hash": "0x6e316e67743d138e6ee73ed2a1e6f6e9b814a888ca4e06d61d066853949c906", - "tag": "s0_eternum-Resource", - "selector": "0x6d9f80d9fc8d932eaf382b0dc61539511e229b2dec5a275dfb836095d8f0521" - }, - { - "members": [], - "class_hash": "0x63b70cb7538cdbf5d9c29df596130839d21a2a3327cea598931b590d0ad3199", - "tag": "s0_eternum-ResourceAllowance", - "selector": "0x5d040dde8317e13b9643f324a18afc64c5044e79569552f8496e919c312b44a" - }, - { - "members": [], - "class_hash": "0x2e09899ffdc52704cf7d5881b2b9576b99ac5d1a0939caaa79ba005f941ef8c", - "tag": "s0_eternum-ResourceBridgeConfig", - "selector": "0x462f28b5568fb3e258400d85241d45cd31e053723d029bb0a3542da9ef2ece6" - }, - { - "members": [], - "class_hash": "0x7773a272288d8f6746b61d40015b44f451a5f4418785ebb893cdd8a3f101924", - "tag": "s0_eternum-ResourceBridgeFeeSplitConfig", - "selector": "0x33b2e568d65393f26dffa1e9fcb1c8e5aac80bf8ecd96a62c56fa7626d08d4a" - }, - { - "members": [], - "class_hash": "0x69f85789f3cd09073415acea848b4121fb7ab57660d65efc0902f9b9088cfec", - "tag": "s0_eternum-ResourceBridgeWhitelistConfig", - "selector": "0x291a767dc981735be14609c8ef267d33c389f58393358ce20f757680d065bbb" - }, - { - "members": [], - "class_hash": "0x5ca96e7981e9fa033962a04953fe271d795fc28a77dcd09d5271d8da3714c9f", - "tag": "s0_eternum-ResourceCost", - "selector": "0x15d8989d3b9ba9d2d089e1e920d2d0c428811ec0ac77b09ab12bfc3b42121d" - }, - { - "members": [], - "class_hash": "0x1c08b438614f48ce953db0bd0621cc61e499be8dad256a681d0f8981525fee9", - "tag": "s0_eternum-ResourceTransferLock", - "selector": "0x7deca04dad26fe5bed5def8be8e9fc199906496dfe2aa982e9cd11fe35300b" - }, - { - "members": [], - "class_hash": "0x1661ce7179939f89588fcf3d6ea91416e265772e6cdca45dac1441e4b3db807", - "tag": "s0_eternum-Season", - "selector": "0x4f8865388e8136115c535f8be3bca980cc55ce5cde180fdf43877a9ac42cf10" - }, - { - "members": [], - "class_hash": "0x5908399449b220b2799f9c6c1d90531548d6a921676a73d5b18e3c73211349c", - "tag": "s0_eternum-SeasonAddressesConfig", - "selector": "0x2d1f2883267358910522f3abc2d86e377bf44b7a85eb1ce9a9a936af9872400" - }, - { - "members": [], - "class_hash": "0x6f19a8e8f55464fb398bf457038b10a01d6cfcf5051aa6c7a7296024fc78f9c", - "tag": "s0_eternum-SeasonBridgeConfig", - "selector": "0x67d6487b53941b5d6614c1f8f8fd0c620904fffed74e740a95f99485854896e" - }, - { - "members": [], - "class_hash": "0x68dbc517a95bd1643828c7f03c53b34cc6a2b9ab364825b676b19245380bec4", - "tag": "s0_eternum-SettlementConfig", - "selector": "0x2df09676383e67499863f6671e25031b67c0344b2d3e2177081d16640cef28b" - }, - { - "members": [], - "class_hash": "0x5a674566f968363982331c6e454e8046e123ce141cbe9ccb031a6f44d7fab3a", - "tag": "s0_eternum-SpeedConfig", - "selector": "0x7f66a20a5fc5f3b3a3b77fa1a3f8c30cc0a5e7fe03eed54a4c1f3a50d3421a4" - }, - { - "members": [], - "class_hash": "0x5c31bd0ec3923ca88f01ac658fcdfc8e8e73d22f4362b96a5ee55ae5232a2c8", - "tag": "s0_eternum-Stamina", - "selector": "0x39518c19003fa9f7525361cc92b886b541122d0ef323ad02f0a5ab8baf1dd4b" - }, - { - "members": [], - "class_hash": "0x4e57c7bc107c4d7f740589732138414790b76320bb831fc912d0ac30d699738", - "tag": "s0_eternum-StaminaConfig", - "selector": "0x72604cb9cc861ecdb0e70b00137564390c5ccafde0d9d37ba014122e9288df9" - }, - { - "members": [], - "class_hash": "0x68eaa4e6a99462bf94073ba9b2e3a580b4db9170d28f47cfdefb47023e91eb7", - "tag": "s0_eternum-StaminaRefillConfig", - "selector": "0x269f27b58ce568cd0a1187c785445f746a959f915fc35b999aaf2afa95c04b9" - }, - { - "members": [], - "class_hash": "0x6d8349a51048775ad58a5e14c77606d882ab3a4d18f5a1b59138d973156b8f6", - "tag": "s0_eternum-Status", - "selector": "0x6819b601c22df29790f76f061612ee4c23e6d77cf850a685fa8c7ea6defe1bb" - }, - { - "members": [], - "class_hash": "0x3669757d103c83f6fca79bd6c75a49d8a273fb92dcf6bba1ab4ccaafa6137ea", - "tag": "s0_eternum-Structure", - "selector": "0x67d49b2755ef1c37f1efaa29dcd3b4c483691d9a969211f49bae940e757b033" - }, - { - "members": [], - "class_hash": "0x6e04e36fce10b6885b2180899d40134304afd733807bf45183839c37276d44d", - "tag": "s0_eternum-StructureCount", - "selector": "0x2add29083cc23bb0da9d45470d574877e3a63de4eca3730bfc35fc32d7256bd" - }, - { - "members": [], - "class_hash": "0x229093b1da22e9f70eb9818a6873854bc5f7a9c3c254b32e33b8ac8ef7e6a78", - "tag": "s0_eternum-TickConfig", - "selector": "0x3dacec234467fc19b55d08363ec6c5128d40513e9c785cc8d6fa96a10e1e2fe" - }, - { - "members": [], - "class_hash": "0x4789f1e5905969a83009f355f5e2bc6882f5228f2dff1beae21f6c315f4d3f1", - "tag": "s0_eternum-Tile", - "selector": "0x2be20d4e39863a5ae902d8a1d7d218f011bc5fd0b144656c1ec555e95939d7a" - }, - { - "members": [], - "class_hash": "0x4a83f3518a2a3b7fd4a69303275fc35dc9d5b08d3b3bf19a6ec9cb8779b34b9", - "tag": "s0_eternum-Trade", - "selector": "0xb8f1c0b8b5c9b646a2275babf4f493a4dd50440775aa1a52f07612a3f699bf" - }, - { - "members": [], - "class_hash": "0x35b1c94e4a2c44b7484df407cba0df8042fd2c8bb2cb7c14e3a54b5c78f9724", - "tag": "s0_eternum-TravelFoodCostConfig", - "selector": "0x5effa64ae71be8b1d19c231fefb1056039306d3b1d8885baed5f774d4da2a9a" - }, - { - "members": [], - "class_hash": "0x24f902eba1a1f00afbb06c6d6358a5b9d9831e5f01fa19d20d54e4610d266e2", - "tag": "s0_eternum-TravelStaminaCostConfig", - "selector": "0x49e464fb66d305b9b58610bfb89bed1df4e2cde87f523936e71e5fa5562f9cf" - }, - { - "members": [], - "class_hash": "0x13787b670988065ecde86c7622e4dfc79e9752b1b093e22e81cb9797af3eaa0", - "tag": "s0_eternum-TroopConfig", - "selector": "0x6ae523bfd49a164bfc5949f568674f7b4e09cca39f55d389d398f159b363178" - }, - { - "members": [], - "class_hash": "0x6effa334a8558bcffbb55620d842fe9fc355a497100768c7ebeb1e5f01c85d2", - "tag": "s0_eternum-VRFConfig", - "selector": "0x325d18df666336f28e2027292fb9164e890d520368b4e150d3fffddb95b2304" - }, - { - "members": [], - "class_hash": "0x239c7e9007b36b7105d01e2d5fb2cc87a2f0123cf02308d78299fb1b2c0286b", - "tag": "s0_eternum-Weight", - "selector": "0x3af9b99c6bed5e58f52a76ef3616395e8ae96acee151395134ab5199fe5b36a" - }, - { - "members": [], - "class_hash": "0x342088461be2657e2281e9f5a773aa8e7c6584dd62e125edf4ca71e39400e57", - "tag": "s0_eternum-WeightConfig", - "selector": "0x5b42c2cdd790597f7f8125e69d38f2db0469a37ba2a436c5fbc6f54ab16f2a6" - }, - { - "members": [], - "class_hash": "0x3f493c16b07f9edf224672fd7d0a1766b42863e70e08e4ce21f8b9368a95486", - "tag": "s0_eternum-WorldConfig", - "selector": "0x2640c924e58d9c307bff3a21564eeccf889b9d22e9d1b99eaf3d3ca79ba29e9" - } - ], - "events": [ - { - "members": [], - "class_hash": "0x308165ad0fe528e9f62f91851e42cd02186c284133e0f716bf618e2a89a064", - "tag": "s0_eternum-AcceptOrder", - "selector": "0x34724f2592dc93feb914074bbe4e6abc093e7ca15f6755824c7f694662853fc" - }, - { - "members": [], - "class_hash": "0x4fca4dcdf02fdc00635fdbdbfa78b928f907e5a82f58e24f17e95ec9d9e2475", - "tag": "s0_eternum-AcceptPartialOrder", - "selector": "0x34b84575baeaa398556ab0a3889fabb7b08d2520d8838734eaf12282776900b" - }, - { - "members": [], - "class_hash": "0x56a5736da894e6774c628874b21f414a2c4f035065b75e36f1c7facd27420ee", - "tag": "s0_eternum-BattleClaimData", - "selector": "0x41d29e106dc5491be952bbe2faaddf7f61d2822a533f17116600e7ef9c76c18" - }, - { - "members": [], - "class_hash": "0x1aab9d5811dd52241b604e734cd3527f3723320d2e8a16d8d2f9ab9657cf07a", - "tag": "s0_eternum-BattleJoinData", - "selector": "0x4410ca9a121bdc7bd8847dc77b08361cc88574ae4ff18bdfb1f56ebd168a377" - }, - { - "members": [], - "class_hash": "0x483a25c8985f722179db7ab176625c2f0415004e315c89ddd569a546c0ff352", - "tag": "s0_eternum-BattleLeaveData", - "selector": "0x817ae7123b2cf2c241e4a1cee0acb2a6537270d32f68da46c222a19b7a6b7e" - }, - { - "members": [], - "class_hash": "0x6bd170bb8c9642bd582be27066fc5baa71ab6a5c989b6147c16b7187ae8b2de", - "tag": "s0_eternum-BattlePillageData", - "selector": "0x1e6374e36d81091d4c72eb16936e2afc86ed695397fb5fc54780a01187bfbe2" - }, - { - "members": [], - "class_hash": "0x75e03d907604ffc855f6fa954001870813f8731f049aa1a65b4fc0335b53989", - "tag": "s0_eternum-BattleStartData", - "selector": "0x39cee4993b5b6698ea69be399295a54faabb31613ddc297bd452b7db0c79081" - }, - { - "members": [], - "class_hash": "0x53ea30ee96d0e5b7eefcd0b3c5ff8ec23062b6a8af282c235dbd06db0c4d77", - "tag": "s0_eternum-BurnDonkey", - "selector": "0x61be67037fa3f9fa7655102f1fe0c3f35d352d5919aba6a204b0af556649e55" - }, - { - "members": [], - "class_hash": "0x3cd551d7e4b53f2b4afcab56040f3dfff20f2dd3e75f346c4f86f15d6f2aab8", - "tag": "s0_eternum-CancelOrder", - "selector": "0x37baed7c5d5da7ddcfe014daac5b3f37b4b959b832e8c4c70df06c8b530478" - }, - { - "members": [], - "class_hash": "0x54ebf96034d04a3febfaaa17372961a8746cdb440f451d4e3acfcedd4992db6", - "tag": "s0_eternum-CreateGuild", - "selector": "0x55a0213c9d81381326def8de071ea32d31f412ae525cb58b8b2a29cdbf3821" - }, - { - "members": [], - "class_hash": "0x3da4824e6b15595ea7c4906de6ae545f1de3c6997655c55fa040d9bc466fbcb", - "tag": "s0_eternum-CreateOrder", - "selector": "0x6cd5deb58306ff9ed529e7e496193ac3b8dadc4927768951a16afd5cee79291" - }, - { - "members": [], - "class_hash": "0x411bb0ec4ce2af05182f278331717c86aab7b154ea844fa05f5dc693b4f5f65", - "tag": "s0_eternum-FragmentMineDiscovered", - "selector": "0x5afb247cb5972fc84d96b10c69f31a96666642065816bfa74f4d0fdd715fac6" - }, - { - "members": [], - "class_hash": "0xf00b2af42e9108761ad47e50a2605c55203a83b342235def07252a85d6db85", - "tag": "s0_eternum-GameEnded", - "selector": "0x7552b1455aaf939a5cee7dfe7d65ef0341647b2b1dc97bbdac22e38f81b6f75" - }, - { - "members": [], - "class_hash": "0x5cddcd628958870243552341afbf5859b87d5f623d9ccec87fc217218301da", - "tag": "s0_eternum-HyperstructureCoOwnersChange", - "selector": "0x16aa9c3ff1e2229ec3989607dee034c26f555386c3fda2f57ae23a5da08bcd2" - }, - { - "members": [], - "class_hash": "0x5bf722c02c026a13863bc061f7f31d3e9a94a409e60a0b020355c621b3c8848", - "tag": "s0_eternum-HyperstructureContribution", - "selector": "0x11b57482819f44946c794b42bb3d6f9b5111e416abddd5590e48933db4e8c1c" - }, - { - "members": [], - "class_hash": "0x3a5f236a8854f32ed034b3f68bda881b3a28be9b2f5563fbd479ee415fa489b", - "tag": "s0_eternum-HyperstructureFinished", - "selector": "0x18188e073773854e47229a73718f205c22955838714d847ff4bab4ed315852c" - }, - { - "members": [], - "class_hash": "0x19167b2efb0019a2d2547e6b97653c2e44eaa0648110a8d0492857d48f7628", - "tag": "s0_eternum-HyperstructureStarted", - "selector": "0x524d52c11289b16c879df0675bb7168b4556196e805130884ff7399568955f4" - }, - { - "members": [], - "class_hash": "0x10489827f673705da04f7c52b54164e01679958dec37bf8c97f45b6229adde", - "tag": "s0_eternum-JoinGuild", - "selector": "0x490fb23242de6839d879e576254121a224786783b288f05e8e57e942f0d0c44" - }, - { - "members": [], - "class_hash": "0x1de238739f2586354bfefc4c7d49a8e392b3c911515c9ad6445e96027a0dcb3", - "tag": "s0_eternum-LiquidityEvent", - "selector": "0x5ca594f7a676a13c4b15d34ffd0e922bf64e127d0fa6b6a9bd29a4bb6dcfd19" - }, - { - "members": [], - "class_hash": "0x6f57b19aaa43496f97785e8d6b18e21dc116bbd690e54a4fd03ccbb98ae760b", - "tag": "s0_eternum-MapExplored", - "selector": "0x5238d4838007cb371e0a62aff2a2d4241868fa579edc867125fa71c493fb2c8" - }, - { - "members": [], - "class_hash": "0x65b91709428bb484001943f1662d614fb4b6318b3fca1c4ed4b2fe53d822f6", - "tag": "s0_eternum-SettleRealmData", - "selector": "0x11b4babbcafbf1834c8e535877d14f1fc5dc0bd0b126a97a98bb1093d30e873" - }, - { - "members": [], - "class_hash": "0x4db6f101a1cff37f8e4709053f1ae4c1d8b8ec3dda5a2284b606439d051fb86", - "tag": "s0_eternum-SwapEvent", - "selector": "0x783a3cc6562fe31ae83bac3e69e636d8b58c357d5d3621c6d2e5d74da51e5db" - }, - { - "members": [], - "class_hash": "0x6059f5ee6fd551e038f65eac650a50c7af4401d3ce90cf257693b3eab27b8a3", - "tag": "s0_eternum-Transfer", - "selector": "0x4ff88ec4fe7fc992e29c980b4c0abfb2c35ecacce7e63248c2731984995fcbd" - }, - { - "members": [], - "class_hash": "0x40aee82a2213fb870290370044eeafec0c98eb8953299883251f870a9fd1e4c", - "tag": "s0_eternum-Travel", - "selector": "0x4e45f9632599eeb9a25d0977cd5aebf8a4aa209fea4134a862e592d31e387c0" - }, - { - "members": [], - "class_hash": "0x6b38999d987627835d4c20e7e571c73d32ddc856786d9790a131bdb3372a246", - "tag": "s0_eternum-TrophyCreation", - "selector": "0x5633ebee65e16c483940f284a816ac8b31e08ddd3932f80db960a40573d4dc2" - }, - { - "members": [], - "class_hash": "0xf05f290a704ad2671544b391f0c33d50d6d43d468d52791282852a833a00c7", - "tag": "s0_eternum-TrophyProgression", - "selector": "0x5a8f3fedb72efc9d358b86574cf362f8ed1ec12a02ca9f276e6190f49191217" - } - ] -} \ No newline at end of file diff --git a/client/apps/game/public/draco/README.md b/client/common/public/draco/README.md similarity index 100% rename from client/apps/game/public/draco/README.md rename to client/common/public/draco/README.md diff --git a/client/apps/game/public/draco/draco_decoder.js b/client/common/public/draco/draco_decoder.js similarity index 100% rename from client/apps/game/public/draco/draco_decoder.js rename to client/common/public/draco/draco_decoder.js diff --git a/client/apps/game/public/draco/draco_decoder.wasm b/client/common/public/draco/draco_decoder.wasm similarity index 100% rename from client/apps/game/public/draco/draco_decoder.wasm rename to client/common/public/draco/draco_decoder.wasm diff --git a/client/apps/game/public/draco/draco_encoder.js b/client/common/public/draco/draco_encoder.js similarity index 100% rename from client/apps/game/public/draco/draco_encoder.js rename to client/common/public/draco/draco_encoder.js diff --git a/client/apps/game/public/draco/draco_wasm_wrapper.js b/client/common/public/draco/draco_wasm_wrapper.js similarity index 100% rename from client/apps/game/public/draco/draco_wasm_wrapper.js rename to client/common/public/draco/draco_wasm_wrapper.js diff --git a/client/apps/game/public/draco/gltf/draco_decoder.js b/client/common/public/draco/gltf/draco_decoder.js similarity index 100% rename from client/apps/game/public/draco/gltf/draco_decoder.js rename to client/common/public/draco/gltf/draco_decoder.js diff --git a/client/apps/game/public/draco/gltf/draco_decoder.wasm b/client/common/public/draco/gltf/draco_decoder.wasm similarity index 100% rename from client/apps/game/public/draco/gltf/draco_decoder.wasm rename to client/common/public/draco/gltf/draco_decoder.wasm diff --git a/client/apps/game/public/draco/gltf/draco_encoder.js b/client/common/public/draco/gltf/draco_encoder.js similarity index 100% rename from client/apps/game/public/draco/gltf/draco_encoder.js rename to client/common/public/draco/gltf/draco_encoder.js diff --git a/client/apps/game/public/draco/gltf/draco_wasm_wrapper.js b/client/common/public/draco/gltf/draco_wasm_wrapper.js similarity index 100% rename from client/apps/game/public/draco/gltf/draco_wasm_wrapper.js rename to client/common/public/draco/gltf/draco_wasm_wrapper.js diff --git a/client/apps/game-docs/docs/public/gifs/bridge-in.gif b/client/common/public/gifs/bridge-in.gif similarity index 100% rename from client/apps/game-docs/docs/public/gifs/bridge-in.gif rename to client/common/public/gifs/bridge-in.gif diff --git a/client/apps/game-docs/docs/public/gifs/bridge-out-final.gif b/client/common/public/gifs/bridge-out-final.gif similarity index 100% rename from client/apps/game-docs/docs/public/gifs/bridge-out-final.gif rename to client/common/public/gifs/bridge-out-final.gif diff --git a/client/apps/game-docs/docs/public/gifs/bridge-out-start.gif b/client/common/public/gifs/bridge-out-start.gif similarity index 100% rename from client/apps/game-docs/docs/public/gifs/bridge-out-start.gif rename to client/common/public/gifs/bridge-out-start.gif diff --git a/client/apps/game-docs/docs/public/gifs/final-bridge-in.gif b/client/common/public/gifs/final-bridge-in.gif similarity index 100% rename from client/apps/game-docs/docs/public/gifs/final-bridge-in.gif rename to client/common/public/gifs/final-bridge-in.gif diff --git a/client/apps/game/public/images/avatars/01.png b/client/common/public/images/avatars/01.png similarity index 100% rename from client/apps/game/public/images/avatars/01.png rename to client/common/public/images/avatars/01.png diff --git a/client/apps/game/public/images/avatars/02.png b/client/common/public/images/avatars/02.png similarity index 100% rename from client/apps/game/public/images/avatars/02.png rename to client/common/public/images/avatars/02.png diff --git a/client/apps/game/public/images/avatars/03.png b/client/common/public/images/avatars/03.png similarity index 100% rename from client/apps/game/public/images/avatars/03.png rename to client/common/public/images/avatars/03.png diff --git a/client/apps/game/public/images/avatars/04.png b/client/common/public/images/avatars/04.png similarity index 100% rename from client/apps/game/public/images/avatars/04.png rename to client/common/public/images/avatars/04.png diff --git a/client/apps/game/public/images/avatars/05.png b/client/common/public/images/avatars/05.png similarity index 100% rename from client/apps/game/public/images/avatars/05.png rename to client/common/public/images/avatars/05.png diff --git a/client/apps/game/public/images/avatars/06.png b/client/common/public/images/avatars/06.png similarity index 100% rename from client/apps/game/public/images/avatars/06.png rename to client/common/public/images/avatars/06.png diff --git a/client/apps/game/public/images/avatars/07.png b/client/common/public/images/avatars/07.png similarity index 100% rename from client/apps/game/public/images/avatars/07.png rename to client/common/public/images/avatars/07.png diff --git a/client/apps/game/public/images/avatars/08.png b/client/common/public/images/avatars/08.png similarity index 100% rename from client/apps/game/public/images/avatars/08.png rename to client/common/public/images/avatars/08.png diff --git a/client/apps/game/public/images/avatars/09.png b/client/common/public/images/avatars/09.png similarity index 100% rename from client/apps/game/public/images/avatars/09.png rename to client/common/public/images/avatars/09.png diff --git a/client/apps/game/public/images/avatars/10.png b/client/common/public/images/avatars/10.png similarity index 100% rename from client/apps/game/public/images/avatars/10.png rename to client/common/public/images/avatars/10.png diff --git a/client/apps/game/public/images/avatars/11.png b/client/common/public/images/avatars/11.png similarity index 100% rename from client/apps/game/public/images/avatars/11.png rename to client/common/public/images/avatars/11.png diff --git a/client/apps/game/public/images/avatars/12.png b/client/common/public/images/avatars/12.png similarity index 100% rename from client/apps/game/public/images/avatars/12.png rename to client/common/public/images/avatars/12.png diff --git a/client/apps/landing/public/images/avatars/01.png b/client/common/public/images/avatars/DEPRECATED/01.png similarity index 100% rename from client/apps/landing/public/images/avatars/01.png rename to client/common/public/images/avatars/DEPRECATED/01.png diff --git a/client/apps/landing/public/images/avatars/02.png b/client/common/public/images/avatars/DEPRECATED/02.png similarity index 100% rename from client/apps/landing/public/images/avatars/02.png rename to client/common/public/images/avatars/DEPRECATED/02.png diff --git a/client/apps/landing/public/images/avatars/03.png b/client/common/public/images/avatars/DEPRECATED/03.png similarity index 100% rename from client/apps/landing/public/images/avatars/03.png rename to client/common/public/images/avatars/DEPRECATED/03.png diff --git a/client/apps/landing/public/images/avatars/04.png b/client/common/public/images/avatars/DEPRECATED/04.png similarity index 100% rename from client/apps/landing/public/images/avatars/04.png rename to client/common/public/images/avatars/DEPRECATED/04.png diff --git a/client/apps/landing/public/images/avatars/05.png b/client/common/public/images/avatars/DEPRECATED/05.png similarity index 100% rename from client/apps/landing/public/images/avatars/05.png rename to client/common/public/images/avatars/DEPRECATED/05.png diff --git a/client/apps/landing/public/images/avatars/06.png b/client/common/public/images/avatars/DEPRECATED/06.png similarity index 100% rename from client/apps/landing/public/images/avatars/06.png rename to client/common/public/images/avatars/DEPRECATED/06.png diff --git a/client/apps/landing/public/images/avatars/07.png b/client/common/public/images/avatars/DEPRECATED/07.png similarity index 100% rename from client/apps/landing/public/images/avatars/07.png rename to client/common/public/images/avatars/DEPRECATED/07.png diff --git a/client/apps/landing/public/images/avatars/08.png b/client/common/public/images/avatars/DEPRECATED/08.png similarity index 100% rename from client/apps/landing/public/images/avatars/08.png rename to client/common/public/images/avatars/DEPRECATED/08.png diff --git a/client/apps/landing/public/images/avatars/09.png b/client/common/public/images/avatars/DEPRECATED/09.png similarity index 100% rename from client/apps/landing/public/images/avatars/09.png rename to client/common/public/images/avatars/DEPRECATED/09.png diff --git a/client/apps/landing/public/images/avatars/10.png b/client/common/public/images/avatars/DEPRECATED/10.png similarity index 100% rename from client/apps/landing/public/images/avatars/10.png rename to client/common/public/images/avatars/DEPRECATED/10.png diff --git a/client/apps/game/public/images/avatars/mercenary.png b/client/common/public/images/avatars/mercenary.png similarity index 100% rename from client/apps/game/public/images/avatars/mercenary.png rename to client/common/public/images/avatars/mercenary.png diff --git a/client/apps/game-docs/docs/public/buildings/archery.png b/client/common/public/images/buildings/construction/archery.png similarity index 100% rename from client/apps/game-docs/docs/public/buildings/archery.png rename to client/common/public/images/buildings/construction/archery.png diff --git a/client/apps/game-docs/docs/public/buildings/bank.png b/client/common/public/images/buildings/construction/bank.png similarity index 100% rename from client/apps/game-docs/docs/public/buildings/bank.png rename to client/common/public/images/buildings/construction/bank.png diff --git a/client/apps/game-docs/docs/public/buildings/barracks.png b/client/common/public/images/buildings/construction/barracks.png similarity index 100% rename from client/apps/game-docs/docs/public/buildings/barracks.png rename to client/common/public/images/buildings/construction/barracks.png diff --git a/client/apps/game/public/images/buildings/construction/dragonhide.png b/client/common/public/images/buildings/construction/dragonhide.png similarity index 100% rename from client/apps/game/public/images/buildings/construction/dragonhide.png rename to client/common/public/images/buildings/construction/dragonhide.png diff --git a/client/apps/game-docs/docs/public/buildings/farm.png b/client/common/public/images/buildings/construction/farm.png similarity index 100% rename from client/apps/game-docs/docs/public/buildings/farm.png rename to client/common/public/images/buildings/construction/farm.png diff --git a/client/apps/game-docs/docs/public/buildings/fishing_village.png b/client/common/public/images/buildings/construction/fishing_village.png similarity index 100% rename from client/apps/game-docs/docs/public/buildings/fishing_village.png rename to client/common/public/images/buildings/construction/fishing_village.png diff --git a/client/apps/game-docs/docs/public/buildings/forge.png b/client/common/public/images/buildings/construction/forge.png similarity index 100% rename from client/apps/game-docs/docs/public/buildings/forge.png rename to client/common/public/images/buildings/construction/forge.png diff --git a/client/apps/game-docs/docs/public/buildings/fragment_mine.png b/client/common/public/images/buildings/construction/fragment_mine.png similarity index 100% rename from client/apps/game-docs/docs/public/buildings/fragment_mine.png rename to client/common/public/images/buildings/construction/fragment_mine.png diff --git a/client/apps/game-docs/docs/public/buildings/hyperstructure.png b/client/common/public/images/buildings/construction/hyperstructure.png similarity index 100% rename from client/apps/game-docs/docs/public/buildings/hyperstructure.png rename to client/common/public/images/buildings/construction/hyperstructure.png diff --git a/client/apps/game-docs/docs/public/buildings/lumber_mill.png b/client/common/public/images/buildings/construction/lumber_mill.png similarity index 100% rename from client/apps/game-docs/docs/public/buildings/lumber_mill.png rename to client/common/public/images/buildings/construction/lumber_mill.png diff --git a/client/apps/game-docs/docs/public/buildings/market.png b/client/common/public/images/buildings/construction/market.png similarity index 100% rename from client/apps/game-docs/docs/public/buildings/market.png rename to client/common/public/images/buildings/construction/market.png diff --git a/client/apps/game-docs/docs/public/buildings/mine.png b/client/common/public/images/buildings/construction/mine.png similarity index 100% rename from client/apps/game-docs/docs/public/buildings/mine.png rename to client/common/public/images/buildings/construction/mine.png diff --git a/client/apps/game-docs/docs/public/buildings/stable.png b/client/common/public/images/buildings/construction/stable.png similarity index 100% rename from client/apps/game-docs/docs/public/buildings/stable.png rename to client/common/public/images/buildings/construction/stable.png diff --git a/client/apps/game-docs/docs/public/buildings/storehouse.png b/client/common/public/images/buildings/construction/storehouse.png similarity index 100% rename from client/apps/game-docs/docs/public/buildings/storehouse.png rename to client/common/public/images/buildings/construction/storehouse.png diff --git a/client/apps/game-docs/docs/public/buildings/workers_hut.png b/client/common/public/images/buildings/construction/workers_hut.png similarity index 100% rename from client/apps/game-docs/docs/public/buildings/workers_hut.png rename to client/common/public/images/buildings/construction/workers_hut.png diff --git a/client/apps/game/public/images/buildings/thumb/banks.png b/client/common/public/images/buildings/thumb/banks.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/banks.png rename to client/common/public/images/buildings/thumb/banks.png diff --git a/client/apps/game/public/images/buildings/thumb/castleOne.png b/client/common/public/images/buildings/thumb/castleOne.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/castleOne.png rename to client/common/public/images/buildings/thumb/castleOne.png diff --git a/client/apps/game/public/images/buildings/thumb/castleThree.png b/client/common/public/images/buildings/thumb/castleThree.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/castleThree.png rename to client/common/public/images/buildings/thumb/castleThree.png diff --git a/client/apps/game/public/images/buildings/thumb/castleTwo.png b/client/common/public/images/buildings/thumb/castleTwo.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/castleTwo.png rename to client/common/public/images/buildings/thumb/castleTwo.png diff --git a/client/apps/game/public/images/buildings/thumb/castleZero.png b/client/common/public/images/buildings/thumb/castleZero.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/castleZero.png rename to client/common/public/images/buildings/thumb/castleZero.png diff --git a/client/apps/game/public/images/buildings/thumb/crane.png b/client/common/public/images/buildings/thumb/crane.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/crane.png rename to client/common/public/images/buildings/thumb/crane.png diff --git a/client/apps/game/public/images/buildings/thumb/discord.png b/client/common/public/images/buildings/thumb/discord.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/discord.png rename to client/common/public/images/buildings/thumb/discord.png diff --git a/client/apps/game/public/images/buildings/thumb/fragment-mine.png b/client/common/public/images/buildings/thumb/fragment-mine.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/fragment-mine.png rename to client/common/public/images/buildings/thumb/fragment-mine.png diff --git a/client/apps/game/public/images/buildings/thumb/guilds.png b/client/common/public/images/buildings/thumb/guilds.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/guilds.png rename to client/common/public/images/buildings/thumb/guilds.png diff --git a/client/apps/game/public/images/buildings/thumb/house.png b/client/common/public/images/buildings/thumb/house.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/house.png rename to client/common/public/images/buildings/thumb/house.png diff --git a/client/apps/game/public/images/buildings/thumb/hyperstructure.png b/client/common/public/images/buildings/thumb/hyperstructure.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/hyperstructure.png rename to client/common/public/images/buildings/thumb/hyperstructure.png diff --git a/client/apps/game/public/images/buildings/thumb/leaderboard.png b/client/common/public/images/buildings/thumb/leaderboard.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/leaderboard.png rename to client/common/public/images/buildings/thumb/leaderboard.png diff --git a/client/apps/game/public/images/buildings/thumb/question-wood.png b/client/common/public/images/buildings/thumb/question-wood.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/question-wood.png rename to client/common/public/images/buildings/thumb/question-wood.png diff --git a/client/apps/game/public/images/buildings/thumb/question.png b/client/common/public/images/buildings/thumb/question.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/question.png rename to client/common/public/images/buildings/thumb/question.png diff --git a/client/apps/game/public/images/buildings/thumb/resources.png b/client/common/public/images/buildings/thumb/resources.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/resources.png rename to client/common/public/images/buildings/thumb/resources.png diff --git a/client/apps/game/public/images/buildings/thumb/rewards.png b/client/common/public/images/buildings/thumb/rewards.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/rewards.png rename to client/common/public/images/buildings/thumb/rewards.png diff --git a/client/apps/game/public/images/buildings/thumb/scale.png b/client/common/public/images/buildings/thumb/scale.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/scale.png rename to client/common/public/images/buildings/thumb/scale.png diff --git a/client/apps/game/public/images/buildings/thumb/settings.png b/client/common/public/images/buildings/thumb/settings.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/settings.png rename to client/common/public/images/buildings/thumb/settings.png diff --git a/client/apps/game/public/images/buildings/thumb/silo.png b/client/common/public/images/buildings/thumb/silo.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/silo.png rename to client/common/public/images/buildings/thumb/silo.png diff --git a/client/apps/game/public/images/buildings/thumb/squire.png b/client/common/public/images/buildings/thumb/squire.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/squire.png rename to client/common/public/images/buildings/thumb/squire.png diff --git a/client/apps/game/public/images/buildings/thumb/sword.png b/client/common/public/images/buildings/thumb/sword.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/sword.png rename to client/common/public/images/buildings/thumb/sword.png diff --git a/client/apps/game/public/images/buildings/thumb/timeglass.png b/client/common/public/images/buildings/thumb/timeglass.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/timeglass.png rename to client/common/public/images/buildings/thumb/timeglass.png diff --git a/client/apps/game/public/images/buildings/thumb/trade.png b/client/common/public/images/buildings/thumb/trade.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/trade.png rename to client/common/public/images/buildings/thumb/trade.png diff --git a/client/apps/game/public/images/buildings/thumb/trophy.png b/client/common/public/images/buildings/thumb/trophy.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/trophy.png rename to client/common/public/images/buildings/thumb/trophy.png diff --git a/client/apps/game/public/images/buildings/thumb/world-map.png b/client/common/public/images/buildings/thumb/world-map.png similarity index 100% rename from client/apps/game/public/images/buildings/thumb/world-map.png rename to client/common/public/images/buildings/thumb/world-map.png diff --git a/client/apps/game/public/images/covers/01.png b/client/common/public/images/covers/01.png similarity index 100% rename from client/apps/game/public/images/covers/01.png rename to client/common/public/images/covers/01.png diff --git a/client/apps/game/public/images/covers/02.png b/client/common/public/images/covers/02.png similarity index 100% rename from client/apps/game/public/images/covers/02.png rename to client/common/public/images/covers/02.png diff --git a/client/apps/game-docs/docs/public/03.png b/client/common/public/images/covers/03.png similarity index 100% rename from client/apps/game-docs/docs/public/03.png rename to client/common/public/images/covers/03.png diff --git a/client/apps/game/public/images/covers/04.png b/client/common/public/images/covers/04.png similarity index 100% rename from client/apps/game/public/images/covers/04.png rename to client/common/public/images/covers/04.png diff --git a/client/apps/game/public/images/covers/05.png b/client/common/public/images/covers/05.png similarity index 100% rename from client/apps/game/public/images/covers/05.png rename to client/common/public/images/covers/05.png diff --git a/client/apps/game/public/images/covers/06.png b/client/common/public/images/covers/06.png similarity index 100% rename from client/apps/game/public/images/covers/06.png rename to client/common/public/images/covers/06.png diff --git a/client/apps/game/public/images/covers/07.png b/client/common/public/images/covers/07.png similarity index 100% rename from client/apps/game/public/images/covers/07.png rename to client/common/public/images/covers/07.png diff --git a/client/apps/landing/public/empire-og-image.jpg b/client/common/public/images/covers/empire-og-image.jpg similarity index 100% rename from client/apps/landing/public/empire-og-image.jpg rename to client/common/public/images/covers/empire-og-image.jpg diff --git a/client/apps/game-docs/docs/public/eternum_documentation.png b/client/common/public/images/covers/eternum-documentation.png similarity index 100% rename from client/apps/game-docs/docs/public/eternum_documentation.png rename to client/common/public/images/covers/eternum-documentation.png diff --git a/client/apps/game/public/images/cover.png b/client/common/public/images/covers/game-cover.png similarity index 100% rename from client/apps/game/public/images/cover.png rename to client/common/public/images/covers/game-cover.png diff --git a/client/apps/game-docs/docs/public/og-image.png b/client/common/public/images/covers/og-image-docs.png similarity index 100% rename from client/apps/game-docs/docs/public/og-image.png rename to client/common/public/images/covers/og-image-docs.png diff --git a/client/apps/game/public/images/og-image.png b/client/common/public/images/covers/og-image.png similarity index 100% rename from client/apps/game/public/images/og-image.png rename to client/common/public/images/covers/og-image.png diff --git a/client/apps/game/public/images/apple-touch-icon-180x180.png b/client/common/public/images/game-apple-touch-icon-180x180.png similarity index 100% rename from client/apps/game/public/images/apple-touch-icon-180x180.png rename to client/common/public/images/game-apple-touch-icon-180x180.png diff --git a/client/apps/game/public/images/favicon.ico b/client/common/public/images/game-favicon.ico similarity index 100% rename from client/apps/game/public/images/favicon.ico rename to client/common/public/images/game-favicon.ico diff --git a/client/apps/game/public/images/maskable-icon-512x512.png b/client/common/public/images/game-maskable-icon-512x512.png similarity index 100% rename from client/apps/game/public/images/maskable-icon-512x512.png rename to client/common/public/images/game-maskable-icon-512x512.png diff --git a/client/apps/game/public/images/pwa-192x192.png b/client/common/public/images/game-pwa-192x192.png similarity index 100% rename from client/apps/game/public/images/pwa-192x192.png rename to client/common/public/images/game-pwa-192x192.png diff --git a/client/apps/game/public/images/pwa-512x512.png b/client/common/public/images/game-pwa-512x512.png similarity index 100% rename from client/apps/game/public/images/pwa-512x512.png rename to client/common/public/images/game-pwa-512x512.png diff --git a/client/apps/game/public/images/pwa-64x64.png b/client/common/public/images/game-pwa-64x64.png similarity index 100% rename from client/apps/game/public/images/pwa-64x64.png rename to client/common/public/images/game-pwa-64x64.png diff --git a/client/apps/game/public/hex-bg.png b/client/common/public/images/hex-bg.png similarity index 100% rename from client/apps/game/public/hex-bg.png rename to client/common/public/images/hex-bg.png diff --git a/client/apps/game-docs/docs/public/resources/250.png b/client/common/public/images/icons/250.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/250.png rename to client/common/public/images/icons/250.png diff --git a/client/apps/game-docs/docs/public/resources/251.png b/client/common/public/images/icons/251.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/251.png rename to client/common/public/images/icons/251.png diff --git a/client/apps/game-docs/docs/public/resources/252.png b/client/common/public/images/icons/252.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/252.png rename to client/common/public/images/icons/252.png diff --git a/client/apps/game/public/images/icons/attack.png b/client/common/public/images/icons/attack.png similarity index 100% rename from client/apps/game/public/images/icons/attack.png rename to client/common/public/images/icons/attack.png diff --git a/client/apps/game/public/images/icons/claim.png b/client/common/public/images/icons/claim.png similarity index 100% rename from client/apps/game/public/images/icons/claim.png rename to client/common/public/images/icons/claim.png diff --git a/client/apps/game/public/cursor-cross.png b/client/common/public/images/icons/cursor-cross.png similarity index 100% rename from client/apps/game/public/cursor-cross.png rename to client/common/public/images/icons/cursor-cross.png diff --git a/client/apps/game/public/cursor.png b/client/common/public/images/icons/cursor.png similarity index 100% rename from client/apps/game/public/cursor.png rename to client/common/public/images/icons/cursor.png diff --git a/client/apps/game/public/grab.png b/client/common/public/images/icons/grab.png similarity index 100% rename from client/apps/game/public/grab.png rename to client/common/public/images/icons/grab.png diff --git a/client/apps/game/public/images/icons/leave-battle.png b/client/common/public/images/icons/leave-battle.png similarity index 100% rename from client/apps/game/public/images/icons/leave-battle.png rename to client/common/public/images/icons/leave-battle.png diff --git a/client/apps/game/public/images/icons/raid.png b/client/common/public/images/icons/raid.png similarity index 100% rename from client/apps/game/public/images/icons/raid.png rename to client/common/public/images/icons/raid.png diff --git a/client/apps/landing/public/images/apple-touch-icon-180x180.png b/client/common/public/images/landing-apple-touch-icon-180x180.png similarity index 100% rename from client/apps/landing/public/images/apple-touch-icon-180x180.png rename to client/common/public/images/landing-apple-touch-icon-180x180.png diff --git a/client/apps/landing/public/images/favicon.ico b/client/common/public/images/landing-favicon.ico similarity index 100% rename from client/apps/landing/public/images/favicon.ico rename to client/common/public/images/landing-favicon.ico diff --git a/client/apps/landing/public/images/maskable-icon-512x512.png b/client/common/public/images/landing-maskable-icon-512x512.png similarity index 100% rename from client/apps/landing/public/images/maskable-icon-512x512.png rename to client/common/public/images/landing-maskable-icon-512x512.png diff --git a/client/apps/landing/public/images/pwa-192x192.png b/client/common/public/images/landing-pwa-192x192.png similarity index 100% rename from client/apps/landing/public/images/pwa-192x192.png rename to client/common/public/images/landing-pwa-192x192.png diff --git a/client/apps/landing/public/images/pwa-512x512.png b/client/common/public/images/landing-pwa-512x512.png similarity index 100% rename from client/apps/landing/public/images/pwa-512x512.png rename to client/common/public/images/landing-pwa-512x512.png diff --git a/client/apps/landing/public/images/pwa-64x64.png b/client/common/public/images/landing-pwa-64x64.png similarity index 100% rename from client/apps/landing/public/images/pwa-64x64.png rename to client/common/public/images/landing-pwa-64x64.png diff --git a/client/apps/game-docs/docs/public/logos/BuiltDojo.svg b/client/common/public/images/logos/BuiltDojo.svg similarity index 100% rename from client/apps/game-docs/docs/public/logos/BuiltDojo.svg rename to client/common/public/images/logos/BuiltDojo.svg diff --git a/client/apps/game-docs/docs/public/logos/Cartridge.png b/client/common/public/images/logos/Cartridge.png similarity index 100% rename from client/apps/game-docs/docs/public/logos/Cartridge.png rename to client/common/public/images/logos/Cartridge.png diff --git a/client/apps/game-docs/docs/public/logos/Dojo.svg b/client/common/public/images/logos/Dojo.svg similarity index 100% rename from client/apps/game-docs/docs/public/logos/Dojo.svg rename to client/common/public/images/logos/Dojo.svg diff --git a/client/apps/game/public/images/Eternum-Mark-Black.png b/client/common/public/images/logos/Eternum-Mark-Black.png similarity index 100% rename from client/apps/game/public/images/Eternum-Mark-Black.png rename to client/common/public/images/logos/Eternum-Mark-Black.png diff --git a/client/apps/game-docs/docs/public/logos/RealmsWorld.png b/client/common/public/images/logos/RealmsWorld.png similarity index 100% rename from client/apps/game-docs/docs/public/logos/RealmsWorld.png rename to client/common/public/images/logos/RealmsWorld.png diff --git a/client/apps/game-docs/docs/public/logos/Starknet.png b/client/common/public/images/logos/Starknet.png similarity index 100% rename from client/apps/game-docs/docs/public/logos/Starknet.png rename to client/common/public/images/logos/Starknet.png diff --git a/client/apps/game/public/images/argent-x.svg b/client/common/public/images/logos/argent-x.svg similarity index 100% rename from client/apps/game/public/images/argent-x.svg rename to client/common/public/images/logos/argent-x.svg diff --git a/client/apps/game/public/images/braavos.svg b/client/common/public/images/logos/braavos.svg similarity index 100% rename from client/apps/game/public/images/braavos.svg rename to client/common/public/images/logos/braavos.svg diff --git a/client/apps/game/public/images/eternum-logo_animated.png b/client/common/public/images/logos/eternum-animated.png similarity index 100% rename from client/apps/game/public/images/eternum-logo_animated.png rename to client/common/public/images/logos/eternum-animated.png diff --git a/client/apps/game/public/images/eternumloader.png b/client/common/public/images/logos/eternum-loader.png similarity index 100% rename from client/apps/game/public/images/eternumloader.png rename to client/common/public/images/logos/eternum-loader.png diff --git a/client/apps/game-docs/docs/public/eternum_new_logo.svg b/client/common/public/images/logos/eternum-new.svg similarity index 100% rename from client/apps/game-docs/docs/public/eternum_new_logo.svg rename to client/common/public/images/logos/eternum-new.svg diff --git a/client/apps/game/public/images/eternum_with_snake.png b/client/common/public/images/logos/eternum-with-snake.png similarity index 100% rename from client/apps/game/public/images/eternum_with_snake.png rename to client/common/public/images/logos/eternum-with-snake.png diff --git a/client/apps/game/public/images/eternum_logo.png b/client/common/public/images/logos/eternum.png similarity index 100% rename from client/apps/game/public/images/eternum_logo.png rename to client/common/public/images/logos/eternum.png diff --git a/client/apps/game/public/images/eternum-logo.svg b/client/common/public/images/logos/eternum.svg similarity index 100% rename from client/apps/game/public/images/eternum-logo.svg rename to client/common/public/images/logos/eternum.svg diff --git a/client/apps/game-docs/docs/public/eternum_words_logo.svg b/client/common/public/images/logos/eternum_words_logo.svg similarity index 100% rename from client/apps/game-docs/docs/public/eternum_words_logo.svg rename to client/common/public/images/logos/eternum_words_logo.svg diff --git a/client/apps/game/public/map.svg b/client/common/public/images/map.svg similarity index 100% rename from client/apps/game/public/map.svg rename to client/common/public/images/map.svg diff --git a/client/apps/game/public/images/orders/anger.png b/client/common/public/images/orders/anger.png similarity index 100% rename from client/apps/game/public/images/orders/anger.png rename to client/common/public/images/orders/anger.png diff --git a/client/apps/game/public/images/orders/brilliance.png b/client/common/public/images/orders/brilliance.png similarity index 100% rename from client/apps/game/public/images/orders/brilliance.png rename to client/common/public/images/orders/brilliance.png diff --git a/client/apps/game/public/images/orders/detection.png b/client/common/public/images/orders/detection.png similarity index 100% rename from client/apps/game/public/images/orders/detection.png rename to client/common/public/images/orders/detection.png diff --git a/client/apps/game/public/images/orders/enlightenment.png b/client/common/public/images/orders/enlightenment.png similarity index 100% rename from client/apps/game/public/images/orders/enlightenment.png rename to client/common/public/images/orders/enlightenment.png diff --git a/client/apps/game/public/images/orders/fox.png b/client/common/public/images/orders/fox.png similarity index 100% rename from client/apps/game/public/images/orders/fox.png rename to client/common/public/images/orders/fox.png diff --git a/client/apps/game/public/images/orders/fury.png b/client/common/public/images/orders/fury.png similarity index 100% rename from client/apps/game/public/images/orders/fury.png rename to client/common/public/images/orders/fury.png diff --git a/client/apps/game/public/images/orders/giants.png b/client/common/public/images/orders/giants.png similarity index 100% rename from client/apps/game/public/images/orders/giants.png rename to client/common/public/images/orders/giants.png diff --git a/client/apps/game/public/images/orders/perfection.png b/client/common/public/images/orders/perfection.png similarity index 100% rename from client/apps/game/public/images/orders/perfection.png rename to client/common/public/images/orders/perfection.png diff --git a/client/apps/game/public/images/orders/power.png b/client/common/public/images/orders/power.png similarity index 100% rename from client/apps/game/public/images/orders/power.png rename to client/common/public/images/orders/power.png diff --git a/client/apps/game/public/images/orders/protection.png b/client/common/public/images/orders/protection.png similarity index 100% rename from client/apps/game/public/images/orders/protection.png rename to client/common/public/images/orders/protection.png diff --git a/client/apps/game/public/images/orders/rage.png b/client/common/public/images/orders/rage.png similarity index 100% rename from client/apps/game/public/images/orders/rage.png rename to client/common/public/images/orders/rage.png diff --git a/client/apps/game/public/images/orders/reflection.png b/client/common/public/images/orders/reflection.png similarity index 100% rename from client/apps/game/public/images/orders/reflection.png rename to client/common/public/images/orders/reflection.png diff --git a/client/apps/game/public/images/orders/skill.png b/client/common/public/images/orders/skill.png similarity index 100% rename from client/apps/game/public/images/orders/skill.png rename to client/common/public/images/orders/skill.png diff --git a/client/apps/game/public/images/orders/titans.png b/client/common/public/images/orders/titans.png similarity index 100% rename from client/apps/game/public/images/orders/titans.png rename to client/common/public/images/orders/titans.png diff --git a/client/apps/game/public/images/orders/twins.png b/client/common/public/images/orders/twins.png similarity index 100% rename from client/apps/game/public/images/orders/twins.png rename to client/common/public/images/orders/twins.png diff --git a/client/apps/game/public/images/orders/vitriol.png b/client/common/public/images/orders/vitriol.png similarity index 100% rename from client/apps/game/public/images/orders/vitriol.png rename to client/common/public/images/orders/vitriol.png diff --git a/client/apps/game/public/images/oroborus.png b/client/common/public/images/oroborus.png similarity index 100% rename from client/apps/game/public/images/oroborus.png rename to client/common/public/images/oroborus.png diff --git a/client/apps/game-docs/docs/public/resources/1.png b/client/common/public/images/resources/1.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/1.png rename to client/common/public/images/resources/1.png diff --git a/client/apps/game-docs/docs/public/resources/10.png b/client/common/public/images/resources/10.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/10.png rename to client/common/public/images/resources/10.png diff --git a/client/apps/game-docs/docs/public/resources/11.png b/client/common/public/images/resources/11.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/11.png rename to client/common/public/images/resources/11.png diff --git a/client/apps/game-docs/docs/public/resources/12.png b/client/common/public/images/resources/12.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/12.png rename to client/common/public/images/resources/12.png diff --git a/client/apps/game-docs/docs/public/resources/13.png b/client/common/public/images/resources/13.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/13.png rename to client/common/public/images/resources/13.png diff --git a/client/apps/game-docs/docs/public/resources/14.png b/client/common/public/images/resources/14.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/14.png rename to client/common/public/images/resources/14.png diff --git a/client/apps/game-docs/docs/public/resources/15.png b/client/common/public/images/resources/15.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/15.png rename to client/common/public/images/resources/15.png diff --git a/client/apps/game-docs/docs/public/resources/16.png b/client/common/public/images/resources/16.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/16.png rename to client/common/public/images/resources/16.png diff --git a/client/apps/game-docs/docs/public/resources/17.png b/client/common/public/images/resources/17.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/17.png rename to client/common/public/images/resources/17.png diff --git a/client/apps/game-docs/docs/public/resources/18.png b/client/common/public/images/resources/18.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/18.png rename to client/common/public/images/resources/18.png diff --git a/client/apps/game-docs/docs/public/resources/19.png b/client/common/public/images/resources/19.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/19.png rename to client/common/public/images/resources/19.png diff --git a/client/apps/game-docs/docs/public/resources/2.png b/client/common/public/images/resources/2.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/2.png rename to client/common/public/images/resources/2.png diff --git a/client/apps/game-docs/docs/public/resources/20.png b/client/common/public/images/resources/20.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/20.png rename to client/common/public/images/resources/20.png diff --git a/client/apps/game-docs/docs/public/resources/21.png b/client/common/public/images/resources/21.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/21.png rename to client/common/public/images/resources/21.png diff --git a/client/apps/game-docs/docs/public/resources/22.png b/client/common/public/images/resources/22.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/22.png rename to client/common/public/images/resources/22.png diff --git a/client/apps/game-docs/docs/public/resources/253.png b/client/common/public/images/resources/253.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/253.png rename to client/common/public/images/resources/253.png diff --git a/client/apps/game-docs/docs/public/resources/254.png b/client/common/public/images/resources/254.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/254.png rename to client/common/public/images/resources/254.png diff --git a/client/apps/game-docs/docs/public/resources/255.png b/client/common/public/images/resources/255.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/255.png rename to client/common/public/images/resources/255.png diff --git a/client/apps/game-docs/docs/public/resources/29.png b/client/common/public/images/resources/29.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/29.png rename to client/common/public/images/resources/29.png diff --git a/client/apps/game-docs/docs/public/resources/3.png b/client/common/public/images/resources/3.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/3.png rename to client/common/public/images/resources/3.png diff --git a/client/apps/game-docs/docs/public/resources/4.png b/client/common/public/images/resources/4.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/4.png rename to client/common/public/images/resources/4.png diff --git a/client/apps/game-docs/docs/public/resources/5.png b/client/common/public/images/resources/5.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/5.png rename to client/common/public/images/resources/5.png diff --git a/client/apps/game-docs/docs/public/resources/6.png b/client/common/public/images/resources/6.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/6.png rename to client/common/public/images/resources/6.png diff --git a/client/apps/game-docs/docs/public/resources/7.png b/client/common/public/images/resources/7.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/7.png rename to client/common/public/images/resources/7.png diff --git a/client/apps/game-docs/docs/public/resources/8.png b/client/common/public/images/resources/8.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/8.png rename to client/common/public/images/resources/8.png diff --git a/client/apps/game-docs/docs/public/resources/9.png b/client/common/public/images/resources/9.png similarity index 100% rename from client/apps/game-docs/docs/public/resources/9.png rename to client/common/public/images/resources/9.png diff --git a/client/apps/game/public/images/resources/coin.png b/client/common/public/images/resources/coin.png similarity index 100% rename from client/apps/game/public/images/resources/coin.png rename to client/common/public/images/resources/coin.png diff --git a/client/apps/game-docs/docs/public/ring_pass.png b/client/common/public/images/ring_pass.png similarity index 100% rename from client/apps/game-docs/docs/public/ring_pass.png rename to client/common/public/images/ring_pass.png diff --git a/client/apps/game-docs/docs/public/bridge.png b/client/common/public/images/screenshots/bridge.png similarity index 100% rename from client/apps/game-docs/docs/public/bridge.png rename to client/common/public/images/screenshots/bridge.png diff --git a/client/apps/game-docs/docs/public/controller.png b/client/common/public/images/screenshots/controller.png similarity index 100% rename from client/apps/game-docs/docs/public/controller.png rename to client/common/public/images/screenshots/controller.png diff --git a/client/apps/game-docs/docs/public/map.png b/client/common/public/images/screenshots/map.png similarity index 100% rename from client/apps/game-docs/docs/public/map.png rename to client/common/public/images/screenshots/map.png diff --git a/client/apps/game/public/jsons/realms.json b/client/common/public/jsons/realms.json similarity index 100% rename from client/apps/game/public/jsons/realms.json rename to client/common/public/jsons/realms.json diff --git a/client/apps/game/public/models/arrow.glb b/client/common/public/models/arrow.glb similarity index 100% rename from client/apps/game/public/models/arrow.glb rename to client/common/public/models/arrow.glb diff --git a/client/apps/game/public/models/battle.glb b/client/common/public/models/battle.glb similarity index 100% rename from client/apps/game/public/models/battle.glb rename to client/common/public/models/battle.glb diff --git a/client/public/models/biomes-flat-opt/bare.glb b/client/common/public/models/biomes-flat-opt/bare.glb similarity index 100% rename from client/public/models/biomes-flat-opt/bare.glb rename to client/common/public/models/biomes-flat-opt/bare.glb diff --git a/client/public/models/biomes-flat-opt/beach.glb b/client/common/public/models/biomes-flat-opt/beach.glb similarity index 100% rename from client/public/models/biomes-flat-opt/beach.glb rename to client/common/public/models/biomes-flat-opt/beach.glb diff --git a/client/public/models/biomes-flat-opt/deciduousForest.glb b/client/common/public/models/biomes-flat-opt/deciduousForest.glb similarity index 100% rename from client/public/models/biomes-flat-opt/deciduousForest.glb rename to client/common/public/models/biomes-flat-opt/deciduousForest.glb diff --git a/client/public/models/biomes-flat-opt/deepOcean.glb b/client/common/public/models/biomes-flat-opt/deepOcean.glb similarity index 100% rename from client/public/models/biomes-flat-opt/deepOcean.glb rename to client/common/public/models/biomes-flat-opt/deepOcean.glb diff --git a/client/public/models/biomes-flat-opt/grassland.glb b/client/common/public/models/biomes-flat-opt/grassland.glb similarity index 100% rename from client/public/models/biomes-flat-opt/grassland.glb rename to client/common/public/models/biomes-flat-opt/grassland.glb diff --git a/client/public/models/biomes-flat-opt/ocean.glb b/client/common/public/models/biomes-flat-opt/ocean.glb similarity index 100% rename from client/public/models/biomes-flat-opt/ocean.glb rename to client/common/public/models/biomes-flat-opt/ocean.glb diff --git a/client/public/models/biomes-flat-opt/scorched.glb b/client/common/public/models/biomes-flat-opt/scorched.glb similarity index 100% rename from client/public/models/biomes-flat-opt/scorched.glb rename to client/common/public/models/biomes-flat-opt/scorched.glb diff --git a/client/public/models/biomes-flat-opt/scorchedVolcano.glb b/client/common/public/models/biomes-flat-opt/scorchedVolcano.glb similarity index 100% rename from client/public/models/biomes-flat-opt/scorchedVolcano.glb rename to client/common/public/models/biomes-flat-opt/scorchedVolcano.glb diff --git a/client/public/models/biomes-flat-opt/shrubland.glb b/client/common/public/models/biomes-flat-opt/shrubland.glb similarity index 100% rename from client/public/models/biomes-flat-opt/shrubland.glb rename to client/common/public/models/biomes-flat-opt/shrubland.glb diff --git a/client/public/models/biomes-flat-opt/snow.glb b/client/common/public/models/biomes-flat-opt/snow.glb similarity index 100% rename from client/public/models/biomes-flat-opt/snow.glb rename to client/common/public/models/biomes-flat-opt/snow.glb diff --git a/client/public/models/biomes-flat-opt/subtropicalDesert.glb b/client/common/public/models/biomes-flat-opt/subtropicalDesert.glb similarity index 100% rename from client/public/models/biomes-flat-opt/subtropicalDesert.glb rename to client/common/public/models/biomes-flat-opt/subtropicalDesert.glb diff --git a/client/public/models/biomes-flat-opt/taiga.glb b/client/common/public/models/biomes-flat-opt/taiga.glb similarity index 100% rename from client/public/models/biomes-flat-opt/taiga.glb rename to client/common/public/models/biomes-flat-opt/taiga.glb diff --git a/client/public/models/biomes-flat-opt/temperateDesert.glb b/client/common/public/models/biomes-flat-opt/temperateDesert.glb similarity index 100% rename from client/public/models/biomes-flat-opt/temperateDesert.glb rename to client/common/public/models/biomes-flat-opt/temperateDesert.glb diff --git a/client/public/models/biomes-flat-opt/temperateRainforest.glb b/client/common/public/models/biomes-flat-opt/temperateRainforest.glb similarity index 100% rename from client/public/models/biomes-flat-opt/temperateRainforest.glb rename to client/common/public/models/biomes-flat-opt/temperateRainforest.glb diff --git a/client/public/models/biomes-flat-opt/tropicalRainforest.glb b/client/common/public/models/biomes-flat-opt/tropicalRainforest.glb similarity index 100% rename from client/public/models/biomes-flat-opt/tropicalRainforest.glb rename to client/common/public/models/biomes-flat-opt/tropicalRainforest.glb diff --git a/client/public/models/biomes-flat-opt/tropicalSeasonalForest.glb b/client/common/public/models/biomes-flat-opt/tropicalSeasonalForest.glb similarity index 100% rename from client/public/models/biomes-flat-opt/tropicalSeasonalForest.glb rename to client/common/public/models/biomes-flat-opt/tropicalSeasonalForest.glb diff --git a/client/public/models/biomes-flat-opt/tundra.glb b/client/common/public/models/biomes-flat-opt/tundra.glb similarity index 100% rename from client/public/models/biomes-flat-opt/tundra.glb rename to client/common/public/models/biomes-flat-opt/tundra.glb diff --git a/client/public/models/biomes-flat/bare.glb b/client/common/public/models/biomes-flat/bare.glb similarity index 100% rename from client/public/models/biomes-flat/bare.glb rename to client/common/public/models/biomes-flat/bare.glb diff --git a/client/public/models/biomes-flat/beach.glb b/client/common/public/models/biomes-flat/beach.glb similarity index 100% rename from client/public/models/biomes-flat/beach.glb rename to client/common/public/models/biomes-flat/beach.glb diff --git a/client/public/models/biomes-flat/deciduousForest.glb b/client/common/public/models/biomes-flat/deciduousForest.glb similarity index 100% rename from client/public/models/biomes-flat/deciduousForest.glb rename to client/common/public/models/biomes-flat/deciduousForest.glb diff --git a/client/public/models/biomes-flat/deepOcean.glb b/client/common/public/models/biomes-flat/deepOcean.glb similarity index 100% rename from client/public/models/biomes-flat/deepOcean.glb rename to client/common/public/models/biomes-flat/deepOcean.glb diff --git a/client/public/models/biomes-flat/grassland.glb b/client/common/public/models/biomes-flat/grassland.glb similarity index 100% rename from client/public/models/biomes-flat/grassland.glb rename to client/common/public/models/biomes-flat/grassland.glb diff --git a/client/public/models/biomes-flat/ocean.glb b/client/common/public/models/biomes-flat/ocean.glb similarity index 100% rename from client/public/models/biomes-flat/ocean.glb rename to client/common/public/models/biomes-flat/ocean.glb diff --git a/client/public/models/biomes-flat/scorched.glb b/client/common/public/models/biomes-flat/scorched.glb similarity index 100% rename from client/public/models/biomes-flat/scorched.glb rename to client/common/public/models/biomes-flat/scorched.glb diff --git a/client/public/models/biomes-flat/scorchedVolcano.glb b/client/common/public/models/biomes-flat/scorchedVolcano.glb similarity index 100% rename from client/public/models/biomes-flat/scorchedVolcano.glb rename to client/common/public/models/biomes-flat/scorchedVolcano.glb diff --git a/client/public/models/biomes-flat/shrubland.glb b/client/common/public/models/biomes-flat/shrubland.glb similarity index 100% rename from client/public/models/biomes-flat/shrubland.glb rename to client/common/public/models/biomes-flat/shrubland.glb diff --git a/client/public/models/biomes-flat/snow.glb b/client/common/public/models/biomes-flat/snow.glb similarity index 100% rename from client/public/models/biomes-flat/snow.glb rename to client/common/public/models/biomes-flat/snow.glb diff --git a/client/public/models/biomes-flat/subtropicalDesert.glb b/client/common/public/models/biomes-flat/subtropicalDesert.glb similarity index 100% rename from client/public/models/biomes-flat/subtropicalDesert.glb rename to client/common/public/models/biomes-flat/subtropicalDesert.glb diff --git a/client/public/models/biomes-flat/taiga.glb b/client/common/public/models/biomes-flat/taiga.glb similarity index 100% rename from client/public/models/biomes-flat/taiga.glb rename to client/common/public/models/biomes-flat/taiga.glb diff --git a/client/public/models/biomes-flat/temperateDesert.glb b/client/common/public/models/biomes-flat/temperateDesert.glb similarity index 100% rename from client/public/models/biomes-flat/temperateDesert.glb rename to client/common/public/models/biomes-flat/temperateDesert.glb diff --git a/client/public/models/biomes-flat/temperateRainforest.glb b/client/common/public/models/biomes-flat/temperateRainforest.glb similarity index 100% rename from client/public/models/biomes-flat/temperateRainforest.glb rename to client/common/public/models/biomes-flat/temperateRainforest.glb diff --git a/client/public/models/biomes-flat/tropicalRainforest.glb b/client/common/public/models/biomes-flat/tropicalRainforest.glb similarity index 100% rename from client/public/models/biomes-flat/tropicalRainforest.glb rename to client/common/public/models/biomes-flat/tropicalRainforest.glb diff --git a/client/public/models/biomes-flat/tropicalSeasonalForest.glb b/client/common/public/models/biomes-flat/tropicalSeasonalForest.glb similarity index 100% rename from client/public/models/biomes-flat/tropicalSeasonalForest.glb rename to client/common/public/models/biomes-flat/tropicalSeasonalForest.glb diff --git a/client/public/models/biomes-flat/tundra.glb b/client/common/public/models/biomes-flat/tundra.glb similarity index 100% rename from client/public/models/biomes-flat/tundra.glb rename to client/common/public/models/biomes-flat/tundra.glb diff --git a/client/apps/game/public/models/biomes-opt/bare.glb b/client/common/public/models/biomes-opt/bare.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/bare.glb rename to client/common/public/models/biomes-opt/bare.glb diff --git a/client/apps/game/public/models/biomes-opt/beach.glb b/client/common/public/models/biomes-opt/beach.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/beach.glb rename to client/common/public/models/biomes-opt/beach.glb diff --git a/client/apps/game/public/models/biomes-opt/deciduousForest.glb b/client/common/public/models/biomes-opt/deciduousForest.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/deciduousForest.glb rename to client/common/public/models/biomes-opt/deciduousForest.glb diff --git a/client/apps/game/public/models/biomes-opt/deepOcean.glb b/client/common/public/models/biomes-opt/deepOcean.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/deepOcean.glb rename to client/common/public/models/biomes-opt/deepOcean.glb diff --git a/client/apps/game/public/models/biomes-opt/grassland.glb b/client/common/public/models/biomes-opt/grassland.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/grassland.glb rename to client/common/public/models/biomes-opt/grassland.glb diff --git a/client/apps/game/public/models/biomes-opt/ocean.glb b/client/common/public/models/biomes-opt/ocean.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/ocean.glb rename to client/common/public/models/biomes-opt/ocean.glb diff --git a/client/apps/game/public/models/biomes-opt/outline.glb b/client/common/public/models/biomes-opt/outline.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/outline.glb rename to client/common/public/models/biomes-opt/outline.glb diff --git a/client/apps/game/public/models/biomes-opt/scorched.glb b/client/common/public/models/biomes-opt/scorched.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/scorched.glb rename to client/common/public/models/biomes-opt/scorched.glb diff --git a/client/apps/game/public/models/biomes-opt/scorchedVolcano.glb b/client/common/public/models/biomes-opt/scorchedVolcano.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/scorchedVolcano.glb rename to client/common/public/models/biomes-opt/scorchedVolcano.glb diff --git a/client/apps/game/public/models/biomes-opt/shrubland.glb b/client/common/public/models/biomes-opt/shrubland.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/shrubland.glb rename to client/common/public/models/biomes-opt/shrubland.glb diff --git a/client/apps/game/public/models/biomes-opt/snow.glb b/client/common/public/models/biomes-opt/snow.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/snow.glb rename to client/common/public/models/biomes-opt/snow.glb diff --git a/client/apps/game/public/models/biomes-opt/subtropicalDesert.glb b/client/common/public/models/biomes-opt/subtropicalDesert.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/subtropicalDesert.glb rename to client/common/public/models/biomes-opt/subtropicalDesert.glb diff --git a/client/apps/game/public/models/biomes-opt/taiga.glb b/client/common/public/models/biomes-opt/taiga.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/taiga.glb rename to client/common/public/models/biomes-opt/taiga.glb diff --git a/client/apps/game/public/models/biomes-opt/temperateDesert.glb b/client/common/public/models/biomes-opt/temperateDesert.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/temperateDesert.glb rename to client/common/public/models/biomes-opt/temperateDesert.glb diff --git a/client/apps/game/public/models/biomes-opt/temperateRainforest.glb b/client/common/public/models/biomes-opt/temperateRainforest.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/temperateRainforest.glb rename to client/common/public/models/biomes-opt/temperateRainforest.glb diff --git a/client/apps/game/public/models/biomes-opt/tropicalRainforest.glb b/client/common/public/models/biomes-opt/tropicalRainforest.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/tropicalRainforest.glb rename to client/common/public/models/biomes-opt/tropicalRainforest.glb diff --git a/client/apps/game/public/models/biomes-opt/tropicalSeasonalForest.glb b/client/common/public/models/biomes-opt/tropicalSeasonalForest.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/tropicalSeasonalForest.glb rename to client/common/public/models/biomes-opt/tropicalSeasonalForest.glb diff --git a/client/apps/game/public/models/biomes-opt/tundra.glb b/client/common/public/models/biomes-opt/tundra.glb similarity index 100% rename from client/apps/game/public/models/biomes-opt/tundra.glb rename to client/common/public/models/biomes-opt/tundra.glb diff --git a/client/apps/game/public/models/biomes/bare.glb b/client/common/public/models/biomes/bare.glb similarity index 100% rename from client/apps/game/public/models/biomes/bare.glb rename to client/common/public/models/biomes/bare.glb diff --git a/client/apps/game/public/models/biomes/beach.glb b/client/common/public/models/biomes/beach.glb similarity index 100% rename from client/apps/game/public/models/biomes/beach.glb rename to client/common/public/models/biomes/beach.glb diff --git a/client/apps/game/public/models/biomes/deciduousForest.glb b/client/common/public/models/biomes/deciduousForest.glb similarity index 100% rename from client/apps/game/public/models/biomes/deciduousForest.glb rename to client/common/public/models/biomes/deciduousForest.glb diff --git a/client/apps/game/public/models/biomes/deepOcean.glb b/client/common/public/models/biomes/deepOcean.glb similarity index 100% rename from client/apps/game/public/models/biomes/deepOcean.glb rename to client/common/public/models/biomes/deepOcean.glb diff --git a/client/apps/game/public/models/biomes/grassland.glb b/client/common/public/models/biomes/grassland.glb similarity index 100% rename from client/apps/game/public/models/biomes/grassland.glb rename to client/common/public/models/biomes/grassland.glb diff --git a/client/apps/game/public/models/biomes/ocean.glb b/client/common/public/models/biomes/ocean.glb similarity index 100% rename from client/apps/game/public/models/biomes/ocean.glb rename to client/common/public/models/biomes/ocean.glb diff --git a/client/apps/game/public/models/biomes/outline.glb b/client/common/public/models/biomes/outline.glb similarity index 100% rename from client/apps/game/public/models/biomes/outline.glb rename to client/common/public/models/biomes/outline.glb diff --git a/client/apps/game/public/models/biomes/scorched.glb b/client/common/public/models/biomes/scorched.glb similarity index 100% rename from client/apps/game/public/models/biomes/scorched.glb rename to client/common/public/models/biomes/scorched.glb diff --git a/client/apps/game/public/models/biomes/scorchedVolcano.glb b/client/common/public/models/biomes/scorchedVolcano.glb similarity index 100% rename from client/apps/game/public/models/biomes/scorchedVolcano.glb rename to client/common/public/models/biomes/scorchedVolcano.glb diff --git a/client/apps/game/public/models/biomes/shrubland.glb b/client/common/public/models/biomes/shrubland.glb similarity index 100% rename from client/apps/game/public/models/biomes/shrubland.glb rename to client/common/public/models/biomes/shrubland.glb diff --git a/client/apps/game/public/models/biomes/snow.glb b/client/common/public/models/biomes/snow.glb similarity index 100% rename from client/apps/game/public/models/biomes/snow.glb rename to client/common/public/models/biomes/snow.glb diff --git a/client/apps/game/public/models/biomes/subtropicalDesert.glb b/client/common/public/models/biomes/subtropicalDesert.glb similarity index 100% rename from client/apps/game/public/models/biomes/subtropicalDesert.glb rename to client/common/public/models/biomes/subtropicalDesert.glb diff --git a/client/apps/game/public/models/biomes/taiga.glb b/client/common/public/models/biomes/taiga.glb similarity index 100% rename from client/apps/game/public/models/biomes/taiga.glb rename to client/common/public/models/biomes/taiga.glb diff --git a/client/apps/game/public/models/biomes/temperateDesert.glb b/client/common/public/models/biomes/temperateDesert.glb similarity index 100% rename from client/apps/game/public/models/biomes/temperateDesert.glb rename to client/common/public/models/biomes/temperateDesert.glb diff --git a/client/apps/game/public/models/biomes/temperateRainforest.glb b/client/common/public/models/biomes/temperateRainforest.glb similarity index 100% rename from client/apps/game/public/models/biomes/temperateRainforest.glb rename to client/common/public/models/biomes/temperateRainforest.glb diff --git a/client/apps/game/public/models/biomes/tropicalRainforest.glb b/client/common/public/models/biomes/tropicalRainforest.glb similarity index 100% rename from client/apps/game/public/models/biomes/tropicalRainforest.glb rename to client/common/public/models/biomes/tropicalRainforest.glb diff --git a/client/apps/game/public/models/biomes/tropicalSeasonalForest.glb b/client/common/public/models/biomes/tropicalSeasonalForest.glb similarity index 100% rename from client/apps/game/public/models/biomes/tropicalSeasonalForest.glb rename to client/common/public/models/biomes/tropicalSeasonalForest.glb diff --git a/client/apps/game/public/models/biomes/tundra.glb b/client/common/public/models/biomes/tundra.glb similarity index 100% rename from client/apps/game/public/models/biomes/tundra.glb rename to client/common/public/models/biomes/tundra.glb diff --git a/client/apps/game/public/models/boat.glb b/client/common/public/models/boat.glb similarity index 100% rename from client/apps/game/public/models/boat.glb rename to client/common/public/models/boat.glb diff --git a/client/apps/game/public/models/buildings-opt/archerrange.glb b/client/common/public/models/buildings-opt/archerrange.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/archerrange.glb rename to client/common/public/models/buildings-opt/archerrange.glb diff --git a/client/apps/game/public/models/buildings-opt/bank.glb b/client/common/public/models/buildings-opt/bank.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/bank.glb rename to client/common/public/models/buildings-opt/bank.glb diff --git a/client/apps/game/public/models/buildings-opt/bank_lite.glb b/client/common/public/models/buildings-opt/bank_lite.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/bank_lite.glb rename to client/common/public/models/buildings-opt/bank_lite.glb diff --git a/client/apps/game/public/models/buildings-opt/barracks.glb b/client/common/public/models/buildings-opt/barracks.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/barracks.glb rename to client/common/public/models/buildings-opt/barracks.glb diff --git a/client/apps/game/public/models/buildings-opt/castle.glb b/client/common/public/models/buildings-opt/castle.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/castle.glb rename to client/common/public/models/buildings-opt/castle.glb diff --git a/client/apps/game/public/models/buildings-opt/castle0.glb b/client/common/public/models/buildings-opt/castle0.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/castle0.glb rename to client/common/public/models/buildings-opt/castle0.glb diff --git a/client/apps/game/public/models/buildings-opt/castle1.glb b/client/common/public/models/buildings-opt/castle1.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/castle1.glb rename to client/common/public/models/buildings-opt/castle1.glb diff --git a/client/apps/game/public/models/buildings-opt/castle2.glb b/client/common/public/models/buildings-opt/castle2.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/castle2.glb rename to client/common/public/models/buildings-opt/castle2.glb diff --git a/client/apps/game/public/models/buildings-opt/castle3.glb b/client/common/public/models/buildings-opt/castle3.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/castle3.glb rename to client/common/public/models/buildings-opt/castle3.glb diff --git a/client/apps/game/public/models/buildings-opt/castle_lite.glb b/client/common/public/models/buildings-opt/castle_lite.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/castle_lite.glb rename to client/common/public/models/buildings-opt/castle_lite.glb diff --git a/client/apps/game/public/models/buildings-opt/city_tile.glb b/client/common/public/models/buildings-opt/city_tile.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/city_tile.glb rename to client/common/public/models/buildings-opt/city_tile.glb diff --git a/client/apps/game/public/models/buildings-opt/dragonhide.glb b/client/common/public/models/buildings-opt/dragonhide.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/dragonhide.glb rename to client/common/public/models/buildings-opt/dragonhide.glb diff --git a/client/apps/game/public/models/buildings-opt/empty.glb b/client/common/public/models/buildings-opt/empty.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/empty.glb rename to client/common/public/models/buildings-opt/empty.glb diff --git a/client/apps/game/public/models/buildings-opt/farm.glb b/client/common/public/models/buildings-opt/farm.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/farm.glb rename to client/common/public/models/buildings-opt/farm.glb diff --git a/client/apps/game/public/models/buildings-opt/fishery.glb b/client/common/public/models/buildings-opt/fishery.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/fishery.glb rename to client/common/public/models/buildings-opt/fishery.glb diff --git a/client/apps/game/public/models/buildings-opt/forge.glb b/client/common/public/models/buildings-opt/forge.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/forge.glb rename to client/common/public/models/buildings-opt/forge.glb diff --git a/client/apps/game/public/models/buildings-opt/hyperstructure.glb b/client/common/public/models/buildings-opt/hyperstructure.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/hyperstructure.glb rename to client/common/public/models/buildings-opt/hyperstructure.glb diff --git a/client/apps/game/public/models/buildings-opt/hyperstructureAnimated.glb b/client/common/public/models/buildings-opt/hyperstructureAnimated.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/hyperstructureAnimated.glb rename to client/common/public/models/buildings-opt/hyperstructureAnimated.glb diff --git a/client/apps/game/public/models/buildings-opt/hyperstructure_final.glb b/client/common/public/models/buildings-opt/hyperstructure_final.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/hyperstructure_final.glb rename to client/common/public/models/buildings-opt/hyperstructure_final.glb diff --git a/client/apps/game/public/models/buildings-opt/hyperstructure_half.glb b/client/common/public/models/buildings-opt/hyperstructure_half.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/hyperstructure_half.glb rename to client/common/public/models/buildings-opt/hyperstructure_half.glb diff --git a/client/apps/game/public/models/buildings-opt/hyperstructure_init.glb b/client/common/public/models/buildings-opt/hyperstructure_init.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/hyperstructure_init.glb rename to client/common/public/models/buildings-opt/hyperstructure_init.glb diff --git a/client/apps/game/public/models/buildings-opt/lumber_mill.glb b/client/common/public/models/buildings-opt/lumber_mill.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/lumber_mill.glb rename to client/common/public/models/buildings-opt/lumber_mill.glb diff --git a/client/apps/game/public/models/buildings-opt/market.glb b/client/common/public/models/buildings-opt/market.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/market.glb rename to client/common/public/models/buildings-opt/market.glb diff --git a/client/apps/game/public/models/buildings-opt/mine.glb b/client/common/public/models/buildings-opt/mine.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/mine.glb rename to client/common/public/models/buildings-opt/mine.glb diff --git a/client/apps/game/public/models/buildings-opt/mine_2.glb b/client/common/public/models/buildings-opt/mine_2.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/mine_2.glb rename to client/common/public/models/buildings-opt/mine_2.glb diff --git a/client/apps/game/public/models/buildings-opt/stable.glb b/client/common/public/models/buildings-opt/stable.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/stable.glb rename to client/common/public/models/buildings-opt/stable.glb diff --git a/client/apps/game/public/models/buildings-opt/storehouse.glb b/client/common/public/models/buildings-opt/storehouse.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/storehouse.glb rename to client/common/public/models/buildings-opt/storehouse.glb diff --git a/client/apps/game/public/models/buildings-opt/wonder.glb b/client/common/public/models/buildings-opt/wonder.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/wonder.glb rename to client/common/public/models/buildings-opt/wonder.glb diff --git a/client/apps/game/public/models/buildings-opt/wonder2.glb b/client/common/public/models/buildings-opt/wonder2.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/wonder2.glb rename to client/common/public/models/buildings-opt/wonder2.glb diff --git a/client/apps/game/public/models/buildings-opt/workers_hut.glb b/client/common/public/models/buildings-opt/workers_hut.glb similarity index 100% rename from client/apps/game/public/models/buildings-opt/workers_hut.glb rename to client/common/public/models/buildings-opt/workers_hut.glb diff --git a/client/apps/game/public/models/buildings/archerrange.glb b/client/common/public/models/buildings/archerrange.glb similarity index 100% rename from client/apps/game/public/models/buildings/archerrange.glb rename to client/common/public/models/buildings/archerrange.glb diff --git a/client/apps/game/public/models/buildings/bank.glb b/client/common/public/models/buildings/bank.glb similarity index 100% rename from client/apps/game/public/models/buildings/bank.glb rename to client/common/public/models/buildings/bank.glb diff --git a/client/apps/game/public/models/buildings/bank_lite.glb b/client/common/public/models/buildings/bank_lite.glb similarity index 100% rename from client/apps/game/public/models/buildings/bank_lite.glb rename to client/common/public/models/buildings/bank_lite.glb diff --git a/client/apps/game/public/models/buildings/barracks.glb b/client/common/public/models/buildings/barracks.glb similarity index 100% rename from client/apps/game/public/models/buildings/barracks.glb rename to client/common/public/models/buildings/barracks.glb diff --git a/client/apps/game/public/models/buildings/castle.glb b/client/common/public/models/buildings/castle.glb similarity index 100% rename from client/apps/game/public/models/buildings/castle.glb rename to client/common/public/models/buildings/castle.glb diff --git a/client/apps/game/public/models/buildings/castle0.glb b/client/common/public/models/buildings/castle0.glb similarity index 100% rename from client/apps/game/public/models/buildings/castle0.glb rename to client/common/public/models/buildings/castle0.glb diff --git a/client/apps/game/public/models/buildings/castle1.glb b/client/common/public/models/buildings/castle1.glb similarity index 100% rename from client/apps/game/public/models/buildings/castle1.glb rename to client/common/public/models/buildings/castle1.glb diff --git a/client/apps/game/public/models/buildings/castle2.glb b/client/common/public/models/buildings/castle2.glb similarity index 100% rename from client/apps/game/public/models/buildings/castle2.glb rename to client/common/public/models/buildings/castle2.glb diff --git a/client/apps/game/public/models/buildings/castle3.glb b/client/common/public/models/buildings/castle3.glb similarity index 100% rename from client/apps/game/public/models/buildings/castle3.glb rename to client/common/public/models/buildings/castle3.glb diff --git a/client/apps/game/public/models/buildings/castle_lite.glb b/client/common/public/models/buildings/castle_lite.glb similarity index 100% rename from client/apps/game/public/models/buildings/castle_lite.glb rename to client/common/public/models/buildings/castle_lite.glb diff --git a/client/apps/game/public/models/buildings/city_tile.glb b/client/common/public/models/buildings/city_tile.glb similarity index 100% rename from client/apps/game/public/models/buildings/city_tile.glb rename to client/common/public/models/buildings/city_tile.glb diff --git a/client/apps/game/public/models/buildings/dragonhide.glb b/client/common/public/models/buildings/dragonhide.glb similarity index 100% rename from client/apps/game/public/models/buildings/dragonhide.glb rename to client/common/public/models/buildings/dragonhide.glb diff --git a/client/apps/game/public/models/buildings/empty.glb b/client/common/public/models/buildings/empty.glb similarity index 100% rename from client/apps/game/public/models/buildings/empty.glb rename to client/common/public/models/buildings/empty.glb diff --git a/client/apps/game/public/models/buildings/farm.glb b/client/common/public/models/buildings/farm.glb similarity index 100% rename from client/apps/game/public/models/buildings/farm.glb rename to client/common/public/models/buildings/farm.glb diff --git a/client/apps/game/public/models/buildings/fishery.glb b/client/common/public/models/buildings/fishery.glb similarity index 100% rename from client/apps/game/public/models/buildings/fishery.glb rename to client/common/public/models/buildings/fishery.glb diff --git a/client/apps/game/public/models/buildings/forge.glb b/client/common/public/models/buildings/forge.glb similarity index 100% rename from client/apps/game/public/models/buildings/forge.glb rename to client/common/public/models/buildings/forge.glb diff --git a/client/apps/game/public/models/buildings/hyperstructure.glb b/client/common/public/models/buildings/hyperstructure.glb similarity index 100% rename from client/apps/game/public/models/buildings/hyperstructure.glb rename to client/common/public/models/buildings/hyperstructure.glb diff --git a/client/apps/game/public/models/buildings/hyperstructureAnimated.glb b/client/common/public/models/buildings/hyperstructureAnimated.glb similarity index 100% rename from client/apps/game/public/models/buildings/hyperstructureAnimated.glb rename to client/common/public/models/buildings/hyperstructureAnimated.glb diff --git a/client/apps/game/public/models/buildings/hyperstructure_final.glb b/client/common/public/models/buildings/hyperstructure_final.glb similarity index 100% rename from client/apps/game/public/models/buildings/hyperstructure_final.glb rename to client/common/public/models/buildings/hyperstructure_final.glb diff --git a/client/apps/game/public/models/buildings/hyperstructure_half.glb b/client/common/public/models/buildings/hyperstructure_half.glb similarity index 100% rename from client/apps/game/public/models/buildings/hyperstructure_half.glb rename to client/common/public/models/buildings/hyperstructure_half.glb diff --git a/client/apps/game/public/models/buildings/hyperstructure_init.glb b/client/common/public/models/buildings/hyperstructure_init.glb similarity index 100% rename from client/apps/game/public/models/buildings/hyperstructure_init.glb rename to client/common/public/models/buildings/hyperstructure_init.glb diff --git a/client/apps/game/public/models/buildings/lumber_mill.glb b/client/common/public/models/buildings/lumber_mill.glb similarity index 100% rename from client/apps/game/public/models/buildings/lumber_mill.glb rename to client/common/public/models/buildings/lumber_mill.glb diff --git a/client/apps/game/public/models/buildings/market.glb b/client/common/public/models/buildings/market.glb similarity index 100% rename from client/apps/game/public/models/buildings/market.glb rename to client/common/public/models/buildings/market.glb diff --git a/client/apps/game/public/models/buildings/mine.glb b/client/common/public/models/buildings/mine.glb similarity index 100% rename from client/apps/game/public/models/buildings/mine.glb rename to client/common/public/models/buildings/mine.glb diff --git a/client/apps/game/public/models/buildings/mine_2.glb b/client/common/public/models/buildings/mine_2.glb similarity index 100% rename from client/apps/game/public/models/buildings/mine_2.glb rename to client/common/public/models/buildings/mine_2.glb diff --git a/client/apps/game/public/models/buildings/stable.glb b/client/common/public/models/buildings/stable.glb similarity index 100% rename from client/apps/game/public/models/buildings/stable.glb rename to client/common/public/models/buildings/stable.glb diff --git a/client/apps/game/public/models/buildings/storehouse.glb b/client/common/public/models/buildings/storehouse.glb similarity index 100% rename from client/apps/game/public/models/buildings/storehouse.glb rename to client/common/public/models/buildings/storehouse.glb diff --git a/client/apps/game/public/models/buildings/workers_hut.glb b/client/common/public/models/buildings/workers_hut.glb similarity index 100% rename from client/apps/game/public/models/buildings/workers_hut.glb rename to client/common/public/models/buildings/workers_hut.glb diff --git a/client/apps/game/public/models/dark_knight.glb b/client/common/public/models/dark_knight.glb similarity index 100% rename from client/apps/game/public/models/dark_knight.glb rename to client/common/public/models/dark_knight.glb diff --git a/client/apps/game/public/models/flag_single.glb b/client/common/public/models/flag_single.glb similarity index 100% rename from client/apps/game/public/models/flag_single.glb rename to client/common/public/models/flag_single.glb diff --git a/client/apps/game/public/models/flags.glb b/client/common/public/models/flags.glb similarity index 100% rename from client/apps/game/public/models/flags.glb rename to client/common/public/models/flags.glb diff --git a/client/apps/game/public/models/knight.glb b/client/common/public/models/knight.glb similarity index 100% rename from client/apps/game/public/models/knight.glb rename to client/common/public/models/knight.glb diff --git a/client/apps/game/public/models/warrior.glb b/client/common/public/models/warrior.glb similarity index 100% rename from client/apps/game/public/models/warrior.glb rename to client/common/public/models/warrior.glb diff --git a/client/apps/game/public/resource_addresses/local/resource_addresses.json b/client/common/public/resource_addresses/local/resource_addresses.json similarity index 100% rename from client/apps/game/public/resource_addresses/local/resource_addresses.json rename to client/common/public/resource_addresses/local/resource_addresses.json diff --git a/client/apps/game/public/resource_addresses/mainnet/resource_addresses.json b/client/common/public/resource_addresses/mainnet/resource_addresses.json similarity index 100% rename from client/apps/game/public/resource_addresses/mainnet/resource_addresses.json rename to client/common/public/resource_addresses/mainnet/resource_addresses.json diff --git a/client/apps/game/public/resource_addresses/sepolia/resource_addresses.json b/client/common/public/resource_addresses/sepolia/resource_addresses.json similarity index 96% rename from client/apps/game/public/resource_addresses/sepolia/resource_addresses.json rename to client/common/public/resource_addresses/sepolia/resource_addresses.json index 141db8956f..2e58d7103c 100644 --- a/client/apps/game/public/resource_addresses/sepolia/resource_addresses.json +++ b/client/common/public/resource_addresses/sepolia/resource_addresses.json @@ -21,7 +21,6 @@ "SAPPHIRE": [20, "0x62feb496f301b27bbda2389463d1ca06ef9f22d4208aecef2e85da1e4c90c4f"], "ETHEREALSILICA": [21, "0x25eb12bb5298a2b14ceb9109086d330810d55c5e9a8c17e60fc956453b30d14"], "DRAGONHIDE": [22, "0x463ebcc1b9ac911930a471fb9b608e9e7ca07ed81aab66f8889dd45b41c28b2"], - "DEMONHIDE": [28, "0x9613c7e4c04929c616a81f150006bc1a96bb77426851d300ef3dfaf2d0c318"], "ANCIENTFRAGMENT": [29, "0x403c764fd76f926eec43218f46f79cfb5fe86dfeb1ae76010027697f65733f1"], "DONKEY": [249, "0x6b6c4437543e46a8a80835fa50643fbd32275d3836396d8cd9c1d7c987f4ea9"], "KNIGHT": [250, "0x298cba6b152d04fd54195dbae0e74512ff740d14946d2d65f26d0c039feffe2"], diff --git a/client/apps/game/public/robots.txt b/client/common/public/robots.txt similarity index 100% rename from client/apps/game/public/robots.txt rename to client/common/public/robots.txt diff --git a/client/apps/game/public/sound/buildings/archer_range.mp3 b/client/common/public/sound/buildings/archer_range.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/archer_range.mp3 rename to client/common/public/sound/buildings/archer_range.mp3 diff --git a/client/apps/game/public/sound/buildings/barracks.mp3 b/client/common/public/sound/buildings/barracks.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/barracks.mp3 rename to client/common/public/sound/buildings/barracks.mp3 diff --git a/client/apps/game/public/sound/buildings/castle.mp3 b/client/common/public/sound/buildings/castle.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/castle.mp3 rename to client/common/public/sound/buildings/castle.mp3 diff --git a/client/apps/game/public/sound/buildings/construction_finish.mp3 b/client/common/public/sound/buildings/construction_finish.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/construction_finish.mp3 rename to client/common/public/sound/buildings/construction_finish.mp3 diff --git a/client/apps/game/public/sound/buildings/destroy_stone.mp3 b/client/common/public/sound/buildings/destroy_stone.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/destroy_stone.mp3 rename to client/common/public/sound/buildings/destroy_stone.mp3 diff --git a/client/apps/game/public/sound/buildings/destroy_wooden.mp3 b/client/common/public/sound/buildings/destroy_wooden.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/destroy_wooden.mp3 rename to client/common/public/sound/buildings/destroy_wooden.mp3 diff --git a/client/apps/game/public/sound/buildings/farm.mp3 b/client/common/public/sound/buildings/farm.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/farm.mp3 rename to client/common/public/sound/buildings/farm.mp3 diff --git a/client/apps/game/public/sound/buildings/fishing_village.mp3 b/client/common/public/sound/buildings/fishing_village.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/fishing_village.mp3 rename to client/common/public/sound/buildings/fishing_village.mp3 diff --git a/client/apps/game/public/sound/buildings/lumber_mill.mp3 b/client/common/public/sound/buildings/lumber_mill.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/lumber_mill.mp3 rename to client/common/public/sound/buildings/lumber_mill.mp3 diff --git a/client/apps/game/public/sound/buildings/mage_tower.mp3 b/client/common/public/sound/buildings/mage_tower.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/mage_tower.mp3 rename to client/common/public/sound/buildings/mage_tower.mp3 diff --git a/client/apps/game/public/sound/buildings/market.mp3 b/client/common/public/sound/buildings/market.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/market.mp3 rename to client/common/public/sound/buildings/market.mp3 diff --git a/client/apps/game/public/sound/buildings/military.mp3 b/client/common/public/sound/buildings/military.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/military.mp3 rename to client/common/public/sound/buildings/military.mp3 diff --git a/client/apps/game/public/sound/buildings/mine.mp3 b/client/common/public/sound/buildings/mine.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/mine.mp3 rename to client/common/public/sound/buildings/mine.mp3 diff --git a/client/apps/game/public/sound/buildings/stables.mp3 b/client/common/public/sound/buildings/stables.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/stables.mp3 rename to client/common/public/sound/buildings/stables.mp3 diff --git a/client/apps/game/public/sound/buildings/storehouse.mp3 b/client/common/public/sound/buildings/storehouse.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/storehouse.mp3 rename to client/common/public/sound/buildings/storehouse.mp3 diff --git a/client/apps/game/public/sound/buildings/workhut.mp3 b/client/common/public/sound/buildings/workhut.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/workhut.mp3 rename to client/common/public/sound/buildings/workhut.mp3 diff --git a/client/apps/game/public/sound/buildings/workhuts.mp3 b/client/common/public/sound/buildings/workhuts.mp3 similarity index 100% rename from client/apps/game/public/sound/buildings/workhuts.mp3 rename to client/common/public/sound/buildings/workhuts.mp3 diff --git a/client/apps/game/public/sound/events/battle_defeat.mp3 b/client/common/public/sound/events/battle_defeat.mp3 similarity index 100% rename from client/apps/game/public/sound/events/battle_defeat.mp3 rename to client/common/public/sound/events/battle_defeat.mp3 diff --git a/client/apps/game/public/sound/events/battle_victory.mp3 b/client/common/public/sound/events/battle_victory.mp3 similarity index 100% rename from client/apps/game/public/sound/events/battle_victory.mp3 rename to client/common/public/sound/events/battle_victory.mp3 diff --git a/client/apps/game/public/sound/events/gong.mp3 b/client/common/public/sound/events/gong.mp3 similarity index 100% rename from client/apps/game/public/sound/events/gong.mp3 rename to client/common/public/sound/events/gong.mp3 diff --git a/client/apps/game/public/sound/music/BeyondTheHorizon.mp3 b/client/common/public/sound/music/BeyondTheHorizon.mp3 similarity index 100% rename from client/apps/game/public/sound/music/BeyondTheHorizon.mp3 rename to client/common/public/sound/music/BeyondTheHorizon.mp3 diff --git a/client/apps/game/public/sound/music/CelestialShores.mp3 b/client/common/public/sound/music/CelestialShores.mp3 similarity index 100% rename from client/apps/game/public/sound/music/CelestialShores.mp3 rename to client/common/public/sound/music/CelestialShores.mp3 diff --git a/client/apps/game/public/sound/music/DayBreak.mp3 b/client/common/public/sound/music/DayBreak.mp3 similarity index 100% rename from client/apps/game/public/sound/music/DayBreak.mp3 rename to client/common/public/sound/music/DayBreak.mp3 diff --git a/client/apps/game/public/sound/music/Frostfall.mp3 b/client/common/public/sound/music/Frostfall.mp3 similarity index 100% rename from client/apps/game/public/sound/music/Frostfall.mp3 rename to client/common/public/sound/music/Frostfall.mp3 diff --git a/client/apps/game/public/sound/music/MorningEmber.mp3 b/client/common/public/sound/music/MorningEmber.mp3 similarity index 100% rename from client/apps/game/public/sound/music/MorningEmber.mp3 rename to client/common/public/sound/music/MorningEmber.mp3 diff --git a/client/apps/game/public/sound/music/NomadsBallad.mp3 b/client/common/public/sound/music/NomadsBallad.mp3 similarity index 100% rename from client/apps/game/public/sound/music/NomadsBallad.mp3 rename to client/common/public/sound/music/NomadsBallad.mp3 diff --git a/client/apps/game/public/sound/music/RainPool.mp3 b/client/common/public/sound/music/RainPool.mp3 similarity index 100% rename from client/apps/game/public/sound/music/RainPool.mp3 rename to client/common/public/sound/music/RainPool.mp3 diff --git a/client/apps/game/public/sound/music/ShadowSong.mp3 b/client/common/public/sound/music/ShadowSong.mp3 similarity index 100% rename from client/apps/game/public/sound/music/ShadowSong.mp3 rename to client/common/public/sound/music/ShadowSong.mp3 diff --git a/client/apps/game/public/sound/music/ShiningRealms.mp3 b/client/common/public/sound/music/ShiningRealms.mp3 similarity index 100% rename from client/apps/game/public/sound/music/ShiningRealms.mp3 rename to client/common/public/sound/music/ShiningRealms.mp3 diff --git a/client/apps/game/public/sound/music/StrangersArrival.mp3 b/client/common/public/sound/music/StrangersArrival.mp3 similarity index 100% rename from client/apps/game/public/sound/music/StrangersArrival.mp3 rename to client/common/public/sound/music/StrangersArrival.mp3 diff --git a/client/apps/game/public/sound/music/TwilightHarvest.mp3 b/client/common/public/sound/music/TwilightHarvest.mp3 similarity index 100% rename from client/apps/game/public/sound/music/TwilightHarvest.mp3 rename to client/common/public/sound/music/TwilightHarvest.mp3 diff --git a/client/apps/game/public/sound/music/WanderersChronicle.mp3 b/client/common/public/sound/music/WanderersChronicle.mp3 similarity index 100% rename from client/apps/game/public/sound/music/WanderersChronicle.mp3 rename to client/common/public/sound/music/WanderersChronicle.mp3 diff --git a/client/apps/game/public/sound/music/happy_realm.mp3 b/client/common/public/sound/music/happy_realm.mp3 similarity index 100% rename from client/apps/game/public/sound/music/happy_realm.mp3 rename to client/common/public/sound/music/happy_realm.mp3 diff --git a/client/apps/game/public/sound/resources/adamantine.mp3 b/client/common/public/sound/resources/adamantine.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/adamantine.mp3 rename to client/common/public/sound/resources/adamantine.mp3 diff --git a/client/apps/game/public/sound/resources/alchemical_silver.mp3 b/client/common/public/sound/resources/alchemical_silver.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/alchemical_silver.mp3 rename to client/common/public/sound/resources/alchemical_silver.mp3 diff --git a/client/apps/game/public/sound/resources/burn_donkey.mp3 b/client/common/public/sound/resources/burn_donkey.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/burn_donkey.mp3 rename to client/common/public/sound/resources/burn_donkey.mp3 diff --git a/client/apps/game/public/sound/resources/coal.mp3 b/client/common/public/sound/resources/coal.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/coal.mp3 rename to client/common/public/sound/resources/coal.mp3 diff --git a/client/apps/game/public/sound/resources/cold_iron.mp3 b/client/common/public/sound/resources/cold_iron.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/cold_iron.mp3 rename to client/common/public/sound/resources/cold_iron.mp3 diff --git a/client/apps/game/public/sound/resources/copper.mp3 b/client/common/public/sound/resources/copper.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/copper.mp3 rename to client/common/public/sound/resources/copper.mp3 diff --git a/client/apps/game/public/sound/resources/deep_crystal.mp3 b/client/common/public/sound/resources/deep_crystal.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/deep_crystal.mp3 rename to client/common/public/sound/resources/deep_crystal.mp3 diff --git a/client/apps/game/public/sound/resources/diamonds.mp3 b/client/common/public/sound/resources/diamonds.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/diamonds.mp3 rename to client/common/public/sound/resources/diamonds.mp3 diff --git a/client/apps/game/public/sound/resources/dragonhide.mp3 b/client/common/public/sound/resources/dragonhide.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/dragonhide.mp3 rename to client/common/public/sound/resources/dragonhide.mp3 diff --git a/client/apps/game/public/sound/resources/ethereal_silica.mp3 b/client/common/public/sound/resources/ethereal_silica.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/ethereal_silica.mp3 rename to client/common/public/sound/resources/ethereal_silica.mp3 diff --git a/client/apps/game/public/sound/resources/fish.mp3 b/client/common/public/sound/resources/fish.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/fish.mp3 rename to client/common/public/sound/resources/fish.mp3 diff --git a/client/apps/game/public/sound/resources/gold.mp3 b/client/common/public/sound/resources/gold.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/gold.mp3 rename to client/common/public/sound/resources/gold.mp3 diff --git a/client/apps/game/public/sound/resources/hartwood.mp3 b/client/common/public/sound/resources/hartwood.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/hartwood.mp3 rename to client/common/public/sound/resources/hartwood.mp3 diff --git a/client/apps/game/public/sound/resources/ignium.mp3 b/client/common/public/sound/resources/ignium.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/ignium.mp3 rename to client/common/public/sound/resources/ignium.mp3 diff --git a/client/apps/game/public/sound/resources/ironwood.mp3 b/client/common/public/sound/resources/ironwood.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/ironwood.mp3 rename to client/common/public/sound/resources/ironwood.mp3 diff --git a/client/apps/game/public/sound/resources/lords.mp3 b/client/common/public/sound/resources/lords.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/lords.mp3 rename to client/common/public/sound/resources/lords.mp3 diff --git a/client/apps/game/public/sound/resources/mithral.mp3 b/client/common/public/sound/resources/mithral.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/mithral.mp3 rename to client/common/public/sound/resources/mithral.mp3 diff --git a/client/apps/game/public/sound/resources/obsidian.mp3 b/client/common/public/sound/resources/obsidian.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/obsidian.mp3 rename to client/common/public/sound/resources/obsidian.mp3 diff --git a/client/apps/game/public/sound/resources/ruby.mp3 b/client/common/public/sound/resources/ruby.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/ruby.mp3 rename to client/common/public/sound/resources/ruby.mp3 diff --git a/client/apps/game/public/sound/resources/sapphire.mp3 b/client/common/public/sound/resources/sapphire.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/sapphire.mp3 rename to client/common/public/sound/resources/sapphire.mp3 diff --git a/client/apps/game/public/sound/resources/silver.mp3 b/client/common/public/sound/resources/silver.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/silver.mp3 rename to client/common/public/sound/resources/silver.mp3 diff --git a/client/apps/game/public/sound/resources/stone.mp3 b/client/common/public/sound/resources/stone.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/stone.mp3 rename to client/common/public/sound/resources/stone.mp3 diff --git a/client/apps/game/public/sound/resources/true_ice.mp3 b/client/common/public/sound/resources/true_ice.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/true_ice.mp3 rename to client/common/public/sound/resources/true_ice.mp3 diff --git a/client/apps/game/public/sound/resources/twilight_quartz.mp3 b/client/common/public/sound/resources/twilight_quartz.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/twilight_quartz.mp3 rename to client/common/public/sound/resources/twilight_quartz.mp3 diff --git a/client/apps/game/public/sound/resources/wheat.mp3 b/client/common/public/sound/resources/wheat.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/wheat.mp3 rename to client/common/public/sound/resources/wheat.mp3 diff --git a/client/apps/game/public/sound/resources/wood.mp3 b/client/common/public/sound/resources/wood.mp3 similarity index 100% rename from client/apps/game/public/sound/resources/wood.mp3 rename to client/common/public/sound/resources/wood.mp3 diff --git a/client/apps/game/public/sound/ui/click-2.wav b/client/common/public/sound/ui/click-2.wav similarity index 100% rename from client/apps/game/public/sound/ui/click-2.wav rename to client/common/public/sound/ui/click-2.wav diff --git a/client/apps/game/public/sound/ui/explore.mp3 b/client/common/public/sound/ui/explore.mp3 similarity index 100% rename from client/apps/game/public/sound/ui/explore.mp3 rename to client/common/public/sound/ui/explore.mp3 diff --git a/client/apps/game/public/sound/ui/level-up.mp3 b/client/common/public/sound/ui/level-up.mp3 similarity index 100% rename from client/apps/game/public/sound/ui/level-up.mp3 rename to client/common/public/sound/ui/level-up.mp3 diff --git a/client/apps/game/public/sound/ui/shovel_1.mp3 b/client/common/public/sound/ui/shovel_1.mp3 similarity index 100% rename from client/apps/game/public/sound/ui/shovel_1.mp3 rename to client/common/public/sound/ui/shovel_1.mp3 diff --git a/client/apps/game/public/sound/ui/shovel_2.mp3 b/client/common/public/sound/ui/shovel_2.mp3 similarity index 100% rename from client/apps/game/public/sound/ui/shovel_2.mp3 rename to client/common/public/sound/ui/shovel_2.mp3 diff --git a/client/apps/game/public/sound/ui/sign.mp3 b/client/common/public/sound/ui/sign.mp3 similarity index 100% rename from client/apps/game/public/sound/ui/sign.mp3 rename to client/common/public/sound/ui/sign.mp3 diff --git a/client/apps/game/public/sound/ui/summon.mp3 b/client/common/public/sound/ui/summon.mp3 similarity index 100% rename from client/apps/game/public/sound/ui/summon.mp3 rename to client/common/public/sound/ui/summon.mp3 diff --git a/client/apps/game/public/sound/ui/ui-click-1.wav b/client/common/public/sound/ui/ui-click-1.wav similarity index 100% rename from client/apps/game/public/sound/ui/ui-click-1.wav rename to client/common/public/sound/ui/ui-click-1.wav diff --git a/client/apps/game/public/sound/ui/whoosh.mp3 b/client/common/public/sound/ui/whoosh.mp3 similarity index 100% rename from client/apps/game/public/sound/ui/whoosh.mp3 rename to client/common/public/sound/ui/whoosh.mp3 diff --git a/client/apps/game/public/sound/units/army_selected1.mp3 b/client/common/public/sound/units/army_selected1.mp3 similarity index 100% rename from client/apps/game/public/sound/units/army_selected1.mp3 rename to client/common/public/sound/units/army_selected1.mp3 diff --git a/client/apps/game/public/sound/units/army_selected2.mp3 b/client/common/public/sound/units/army_selected2.mp3 similarity index 100% rename from client/apps/game/public/sound/units/army_selected2.mp3 rename to client/common/public/sound/units/army_selected2.mp3 diff --git a/client/apps/game/public/sound/units/army_selected3.mp3 b/client/common/public/sound/units/army_selected3.mp3 similarity index 100% rename from client/apps/game/public/sound/units/army_selected3.mp3 rename to client/common/public/sound/units/army_selected3.mp3 diff --git a/client/apps/game/public/sound/units/marching1.mp3 b/client/common/public/sound/units/marching1.mp3 similarity index 100% rename from client/apps/game/public/sound/units/marching1.mp3 rename to client/common/public/sound/units/marching1.mp3 diff --git a/client/apps/game/public/sound/units/marching2.mp3 b/client/common/public/sound/units/marching2.mp3 similarity index 100% rename from client/apps/game/public/sound/units/marching2.mp3 rename to client/common/public/sound/units/marching2.mp3 diff --git a/client/apps/game/public/sound/units/running.mp3 b/client/common/public/sound/units/running.mp3 similarity index 100% rename from client/apps/game/public/sound/units/running.mp3 rename to client/common/public/sound/units/running.mp3 diff --git a/client/apps/game/public/sound/units/running_2.mp3 b/client/common/public/sound/units/running_2.mp3 similarity index 100% rename from client/apps/game/public/sound/units/running_2.mp3 rename to client/common/public/sound/units/running_2.mp3 diff --git a/client/apps/game/public/sound/units/snap_1.mp3 b/client/common/public/sound/units/snap_1.mp3 similarity index 100% rename from client/apps/game/public/sound/units/snap_1.mp3 rename to client/common/public/sound/units/snap_1.mp3 diff --git a/client/apps/game/public/sound/units/subtle_drum_tap_1.mp3 b/client/common/public/sound/units/subtle_drum_tap_1.mp3 similarity index 100% rename from client/apps/game/public/sound/units/subtle_drum_tap_1.mp3 rename to client/common/public/sound/units/subtle_drum_tap_1.mp3 diff --git a/client/apps/game/public/sound/units/sword_1.mp3 b/client/common/public/sound/units/sword_1.mp3 similarity index 100% rename from client/apps/game/public/sound/units/sword_1.mp3 rename to client/common/public/sound/units/sword_1.mp3 diff --git a/client/apps/game/public/textures/army_label.png b/client/common/public/textures/army_label.png similarity index 100% rename from client/apps/game/public/textures/army_label.png rename to client/common/public/textures/army_label.png diff --git a/client/apps/game/public/textures/aura.png b/client/common/public/textures/aura.png similarity index 100% rename from client/apps/game/public/textures/aura.png rename to client/common/public/textures/aura.png diff --git a/client/apps/game/public/textures/battle_label.png b/client/common/public/textures/battle_label.png similarity index 100% rename from client/apps/game/public/textures/battle_label.png rename to client/common/public/textures/battle_label.png diff --git a/client/apps/game/public/textures/environment/models_env.hdr b/client/common/public/textures/environment/models_env.hdr similarity index 100% rename from client/apps/game/public/textures/environment/models_env.hdr rename to client/common/public/textures/environment/models_env.hdr diff --git a/client/apps/game/public/textures/fragment_mine_label.png b/client/common/public/textures/fragment_mine_label.png similarity index 100% rename from client/apps/game/public/textures/fragment_mine_label.png rename to client/common/public/textures/fragment_mine_label.png diff --git a/client/apps/game/public/textures/hyper_label.png b/client/common/public/textures/hyper_label.png similarity index 100% rename from client/apps/game/public/textures/hyper_label.png rename to client/common/public/textures/hyper_label.png diff --git a/client/apps/game/public/textures/my_army_label.png b/client/common/public/textures/my_army_label.png similarity index 100% rename from client/apps/game/public/textures/my_army_label.png rename to client/common/public/textures/my_army_label.png diff --git a/client/apps/game/public/textures/my_realm_label.png b/client/common/public/textures/my_realm_label.png similarity index 100% rename from client/apps/game/public/textures/my_realm_label.png rename to client/common/public/textures/my_realm_label.png diff --git a/client/apps/game/public/textures/my_realm_wonder_label.png b/client/common/public/textures/my_realm_wonder_label.png similarity index 100% rename from client/apps/game/public/textures/my_realm_wonder_label.png rename to client/common/public/textures/my_realm_wonder_label.png diff --git a/client/apps/game/public/textures/paper/worldmap-bg.png b/client/common/public/textures/paper/worldmap-bg.png similarity index 100% rename from client/apps/game/public/textures/paper/worldmap-bg.png rename to client/common/public/textures/paper/worldmap-bg.png diff --git a/client/apps/game/public/textures/realm_label.png b/client/common/public/textures/realm_label.png similarity index 100% rename from client/apps/game/public/textures/realm_label.png rename to client/common/public/textures/realm_label.png diff --git a/client/apps/game/public/textures/realm_wonder_label.png b/client/common/public/textures/realm_wonder_label.png similarity index 100% rename from client/apps/game/public/textures/realm_wonder_label.png rename to client/common/public/textures/realm_wonder_label.png diff --git a/client/common/utils.ts b/client/common/utils.ts new file mode 100644 index 0000000000..2f1291dbe0 --- /dev/null +++ b/client/common/utils.ts @@ -0,0 +1,61 @@ +/** + * Interface representing season contract addresses and resources + * @interface SeasonAddresses + */ +export interface SeasonAddresses { + /** Address of the season pass contract */ + seasonPass: string; + /** Address of the realms contract */ + realms: string; + /** Address of the LORDS token contract */ + lords: string; + /** Map of resource name to [resourceId, contractAddress] */ + resources: { + [key: string]: [number, string]; + }; +} + +/** Valid chain identifiers */ +export type Chain = "local" | "sepolia" | "mainnet" | "slot"; + +/** + * Retrieves the season addresses for a specific chain + * @param chain - The chain identifier + * @returns The contract addresses for the specified chain + * @throws Error if addresses cannot be loaded + */ +export async function getSeasonAddresses(chain: Chain): Promise { + const ADDRESSES_FILE = `../../contracts/common/addresses/${chain}.json`; + try { + const seasonAddressesJson = (await import(ADDRESSES_FILE)) + .default; + + return seasonAddressesJson; + } catch (error) { + throw new Error(`Failed to load season addresses for chain ${chain}: ${error}`); + } +} + +/** + * Interface representing the game manifest configuration + * @interface GameManifest + */ +interface GameManifest { + [key: string]: unknown; +} + +/** + * Retrieves the game manifest for a specific chain + * @param chain - The chain identifier + * @returns The game manifest configuration + * @throws Error if manifest cannot be loaded + */ +export async function getGameManifest(chain: Chain): Promise { + const MANIFEST_FILE = `../../contracts/game/manifest_${chain}.json`; + try { + const manifest = (await import(MANIFEST_FILE)).default; + return manifest; + } catch (error) { + throw new Error(`Failed to load game manifest for chain ${chain}: ${error}`); + } +} \ No newline at end of file diff --git a/client/config/.gitignore b/client/config/.gitignore index 468f82a1aa..4f877be723 100644 --- a/client/config/.gitignore +++ b/client/config/.gitignore @@ -9,6 +9,7 @@ yarn-debug.log* yarn-error.log* lerna-debug.log* .pnpm-debug.log* +environments/data/local.json # Caches diff --git a/client/config/bun.lockb b/client/config/bun.lockb new file mode 100755 index 0000000000..dfe3727f2b Binary files /dev/null and b/client/config/bun.lockb differ diff --git a/client/config/deployer/config.ts b/client/config/deployer/config.ts new file mode 100644 index 0000000000..ae78325ba8 --- /dev/null +++ b/client/config/deployer/config.ts @@ -0,0 +1,1175 @@ +import { + ADMIN_BANK_ENTITY_ID, ARMY_ENTITY_TYPE, + BuildingType, CapacityConfigCategory, + DONKEY_ENTITY_TYPE, + EternumProvider, + FELT_CENTER, + QuestType, ResourcesIds, + ResourceTier, + scaleResourceCostMinMax, + scaleResourceInputs, + scaleResourceOutputs, + scaleResources, + TickIds, + TravelTypes, + type Config as EternumConfig, type ResourceInputs, type ResourceOutputs, type ResourceWhitelistConfig, +} from "@bibliothecadao/eternum"; + +import chalk from 'chalk'; +import { Account } from "starknet"; +import { BRIDGE_FEE_DENOMINATOR, SHARDS_MINES_WIN_PROBABILITY } from "../environments/_shared_"; +import { addCommas, hourMinutesSeconds, inGameAmount, shortHexAddress } from "../utils/formatting"; + +interface Config { + account: Account; + provider: EternumProvider; + config: EternumConfig; +} + + +export class GameConfigDeployer { + public globalConfig: EternumConfig; + + constructor(config: EternumConfig) { + this.globalConfig = config; + } + + + async setupAll(account: Account, provider: EternumProvider) { + await this.setupNonBank(account, provider); + await this.setupBank(account, provider); + } + + async setupNonBank(account: Account, provider: EternumProvider) { + const config = { account, provider, config: this.globalConfig }; + await setProductionConfig(config); + await setResourceBridgeWhitelistConfig(config); + await setQuestRewardConfig(config); + await setSeasonConfig(config); + await setVRFConfig(config); + await setResourceBridgeFeesConfig(config); + await setBuildingCategoryPopConfig(config); + await setPopulationConfig(config); + await setBuildingConfig(config); + await setWeightConfig(config); + await setBattleConfig(config); + await setCombatConfig(config); + await setRealmUpgradeConfig(config); + await setRealmMaxLevelConfig(config); + await setupGlobals(config); + await setCapacityConfig(config); + await setSpeedConfig(config); + await setHyperstructureConfig(config); + await setStaminaConfig(config); + await setStaminaRefillConfig(config); + await setMercenariesConfig(config); + await setBuildingGeneralConfig(config); + await setSettlementConfig(config); + + } + + async setupBank(account: Account, provider: EternumProvider) { + const config = { account, provider, config: this.globalConfig }; + await createAdminBank(config); + await mintResources(config); + await addLiquidity(config); + } + + getResourceBuildingCostsScaled(): ResourceInputs { + return scaleResourceInputs( + this.globalConfig.resources.resourceBuildingCosts, + this.globalConfig.resources.resourcePrecision, + ); + } + + getResourceOutputsScaled(): ResourceOutputs { + return scaleResourceOutputs( + this.globalConfig.resources.resourceOutputs, + this.globalConfig.resources.resourcePrecision, + ); + } + + getBuildingCostsScaled(): ResourceInputs { + return scaleResourceInputs( + this.globalConfig.buildings.buildingCosts, + this.globalConfig.resources.resourcePrecision, + ); + } + + getResourceInputsScaled(): ResourceInputs { + return scaleResourceInputs( + this.globalConfig.resources.resourceInputs, + this.globalConfig.resources.resourcePrecision, + ); + } + + getHyperstructureConstructionCostsScaled(): { resource: number; amount: number }[] { + return scaleResources( + this.globalConfig.hyperstructures.hyperstructureConstructionCosts, + this.globalConfig.resources.resourcePrecision, + ); + } + + getHyperstructureCreationCostsScaled(): { resource: number; amount: number }[] { + return scaleResources( + this.globalConfig.hyperstructures.hyperstructureCreationCosts, + this.globalConfig.resources.resourcePrecision, + ); + } + + getHyperstructureTotalCostsScaled(): { resource: number; amount: number }[] { + return scaleResources( + this.globalConfig.hyperstructures.hyperstructureTotalCosts, + this.globalConfig.resources.resourcePrecision, + ); + } +} + + +export const setQuestRewardConfig = async (config: Config) => { + console.log(chalk.cyan(` + 🏆 Quest Rewards Configuration + ═══════════════════════════════`)); + + const calldataArray = []; + let scaledQuestResources = scaleResourceInputs( + config.config.questResources, + config.config.resources.resourcePrecision, + ); + + for (const questId of Object.keys(scaledQuestResources) as unknown as QuestType[]) { + const resources = scaledQuestResources[questId]; + const calldata = { + quest_id: questId, + resources: resources, + } + + console.log(chalk.cyan(` + ✧ Quest ${chalk.yellow(calldata.quest_id)} Rewards:`)); + + calldata.resources.forEach(r => { + console.log(chalk.cyan(` ∙ ${chalk.cyan(inGameAmount(r.amount, config.config))} ${chalk.yellow(ResourcesIds[r.resource])}`)); + }); + + calldataArray.push(calldata); + } + + const tx = await config.provider.set_quest_reward_config({ + signer: config.account, + calls: calldataArray + }); + + console.log(chalk.gray(`\n ⚡ Transaction: ${tx.statusReceipt}\n`)); +}; + +export const setProductionConfig = async (config: Config) => { + console.log(chalk.cyan(` + ⚡ RESOURCE PRODUCTION CONFIGURATION ⚡ + ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`)); + + const calldataArray = []; + const scaledResourceInputs = scaleResourceInputs(config.config.resources.resourceInputs, config.config.resources.resourcePrecision); + const scaledResourceOutputs = scaleResourceOutputs(config.config.resources.resourceOutputs, config.config.resources.resourcePrecision); + + for (const resourceId of Object.keys(scaledResourceInputs) as unknown as ResourcesIds[]) { + const outputAmountPerLabor = scaledResourceOutputs[resourceId]; + const resourceCostPerLabor = scaledResourceInputs[resourceId]; + const calldata = { + amount: outputAmountPerLabor, + resource_type: resourceId, + cost: resourceCostPerLabor, + } + calldataArray.push(calldata); + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow(ResourcesIds[calldata.resource_type])} + │ ${chalk.gray(`${ResourcesIds[calldata.resource_type]} produced per labor:`)} ${chalk.white(`${inGameAmount(calldata.amount, config.config)} ${chalk.yellow(ResourcesIds[calldata.resource_type])}`)} + │ ${chalk.gray(`Cost of producing 1 ${ResourcesIds[calldata.resource_type]} labor:`)} ${calldata.cost.length > 0 ? calldata.cost.map(c => ` + │ ${chalk.white(`${inGameAmount(c.amount, config.config)} ${ResourcesIds[c.resource]}`)}`) + .join('') : chalk.blue('Can\'t be produced with resources')} + └────────────────────────────────`)); + } + + const tx = await config.provider.set_production_config({ signer: config.account, calls: calldataArray }); + + console.log(chalk.cyan(` + ${chalk.green('✨ Configuration successfully deployed')} + ${chalk.gray('Transaction:')} ${chalk.white(tx.statusReceipt)} + ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + `)); +}; + + +export const setResourceBridgeWhitelistConfig = async (config: Config) => { + console.log(chalk.cyan('\n⚡ BRIDGE WHITELIST CONFIGURATION')); + console.log(chalk.gray('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')); + + let resourceWhitelistConfigs: ResourceWhitelistConfig[] = []; + for (const [resourceName, resourceData] of Object.entries(config.config.setup!.addresses.resources)) { + const [resourceId, tokenAddress] = resourceData as unknown as [string, string]; + const data = { + token: tokenAddress, + resource_type: resourceId, + } + resourceWhitelistConfigs.push(data); + + console.log( + chalk.yellow(' ➔ ') + + chalk.white(resourceName.padEnd(12)) + + chalk.gray('[') + chalk.cyan(`#${data.resource_type}`.padEnd(4)) + chalk.gray(']') + + chalk.gray(' ⟶ ') + + chalk.white(shortHexAddress(data.token)) + ); + } + + const tx = await config.provider.set_resource_bridge_whitlelist_config({ + signer: config.account, + resource_whitelist_configs: resourceWhitelistConfigs, + }); + + console.log(chalk.gray('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')); + console.log(chalk.green('✔ ') + chalk.white('Configuration complete ') + chalk.gray(tx.statusReceipt) + '\n'); +}; + + +export const setBuildingCategoryPopConfig = async (config: Config) => { + console.log(chalk.cyan(` + 👥 Building Population Configuration + ══════════════════════════════════`)); + + const calldataArray: { building_category: BuildingType; population: number; capacity: number }[] = []; + const buildingPopulation = config.config.buildings.buildingPopulation; + const buildingCapacity = config.config.buildings.buildingCapacity; + + for (const buildingId of Object.keys(buildingPopulation) as unknown as BuildingType[]) { + if (buildingPopulation[buildingId] !== 0 || buildingCapacity[buildingId] !== 0) { + const calldata = { + building_category: buildingId, + population: buildingPopulation[buildingId] ?? 0, + capacity: buildingCapacity[buildingId] ?? 0, + } + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow(BuildingType[calldata.building_category])} + │ ${chalk.gray('Consumes')} ${chalk.white(calldata.population)} ${chalk.gray('population')} + │ ${chalk.gray('Adds')} ${chalk.white(calldata.capacity)} ${chalk.gray('capacity')} + └────────────────────────────────`)); + + calldataArray.push(calldata); + } + } + + const tx = await config.provider.set_building_category_pop_config({ + signer: config.account, + calls: calldataArray, + }); + + console.log(chalk.green(`\n ✔ Configuration complete `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const setPopulationConfig = async (config: Config) => { + const calldata = { + signer: config.account, + base_population: config.config.populationCapacity.basePopulation, + } + + console.log(chalk.cyan(` + 👥 Population Configuration + ══════════════════════════`)); + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Base Parameters')} + │ ${chalk.gray('Starting Population:')} ${chalk.white(calldata.base_population)} + └────────────────────────────────`)); + + const tx = await config.provider.set_population_config(calldata); + + console.log(chalk.green(`\n ✔ Configuration complete `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const setBuildingGeneralConfig = async (config: Config) => { + + const calldata = { + signer: config.account, + base_cost_percent_increase: config.config.buildings.buildingFixedCostScalePercent, + } + + console.log(chalk.cyan(` + 🏗️ Building General Configuration + ══════════════════════════════════`)); + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Cost Parameters')} + │ ${chalk.gray('Base Cost Increase:')} ${chalk.white(calldata.base_cost_percent_increase / 10_000 * 100 + '%')} + └────────────────────────────────`)); + + const tx = await config.provider.set_building_general_config(calldata); + + console.log(chalk.green(`\n ✔ Configuration complete `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const setBuildingConfig = async (config: Config) => { + console.log(chalk.cyan(` + 🏗️ Building Configuration + ═══════════════════════════`)); + + const calldataArray = []; + const buildingResourceProduced = config.config.buildings.buildingResourceProduced; + const buildingCosts = config.config.buildings.buildingCosts; + const scaledNonResourceBuildingCosts = scaleResourceInputs(buildingCosts, config.config.resources.resourcePrecision); + const BUILDING_COST_DISPLAY_ROWS = 6; + + + // Non Resource Building Config + for (const buildingId of Object.keys(buildingResourceProduced) as unknown as BuildingType[]) { + if (scaledNonResourceBuildingCosts[buildingId].length !== 0) { + const costs = scaledNonResourceBuildingCosts[buildingId]; + const calldata = { + building_category: buildingId, + building_resource_type: buildingResourceProduced[buildingId] as ResourcesIds, + cost_of_building: costs + }; + calldataArray.push(calldata); + + // buildingScalePercent only used for display logic. not part of the calldata + const buildingScalePercent = config.config.buildings.buildingFixedCostScalePercent; + console.log(chalk.cyan(` + ┌─ ${chalk.yellow(BuildingType[buildingId])} + │ ${chalk.gray('Produces:')} ${chalk.white(ResourcesIds[calldata.building_resource_type as ResourcesIds])} + │ ${chalk.gray('Building Costs (with ')}${chalk.white(buildingScalePercent / 10_000 * 100 + '%')}${chalk.gray(' increase per building):')} + │ + │ ${chalk.gray('┌──────────')}${calldata.cost_of_building.map(c => '─'.repeat(12)).join('')} + │ ${chalk.gray('│')} Building ${calldata.cost_of_building.map(c => chalk.white(ResourcesIds[c.resource].padEnd(12))).join('')} + │ ${chalk.gray('├──────────')}${calldata.cost_of_building.map(c => '─'.repeat(12)).join('')}${Array.from({length: BUILDING_COST_DISPLAY_ROWS}, (_, i) => { + const buildingNum = i + 1; + const costsStr = calldata.cost_of_building.map(c => { + const multiplier = Math.pow(1 + buildingScalePercent / 10_000, buildingNum - 1); + return chalk.white(inGameAmount(c.amount * multiplier, config.config).padEnd(12)); + }).join(''); + return ` + │ ${chalk.yellow(('No #' + buildingNum).padEnd(8))}${chalk.gray('│')} ${costsStr}`; + }).join('')} + │ ${chalk.gray('└──────────')}${calldata.cost_of_building.map(c => '─'.repeat(12)).join('')} + └────────────────────────────────`)); + + } + } + + + // Resource Building Config + const scaledResourceBuildingCosts = scaleResourceInputs( + config.config.resources.resourceBuildingCosts, + config.config.resources.resourcePrecision, + ); + for (const resourceId of Object.keys(scaledResourceBuildingCosts) as unknown as ResourcesIds[]) { + const costs = scaledResourceBuildingCosts[resourceId]; + const calldata = { + building_category: BuildingType.Resource, + building_resource_type: resourceId, + cost_of_building: costs, + }; + + const buildingScalePercent = config.config.buildings.buildingFixedCostScalePercent; + console.log(chalk.cyan(` + ┌─ ${chalk.yellow(ResourcesIds[resourceId])} Building + │ ${chalk.gray('Produces:')} ${chalk.white(ResourcesIds[calldata.building_resource_type as ResourcesIds])} + │ ${chalk.gray('Building Costs:')}${costs.map(c => ` + │ ${chalk.white(`${inGameAmount(c.amount, config.config)} ${ResourcesIds[c.resource]}`)}`) + .join('')} + + │ ${chalk.gray('┌──────────')}${calldata.cost_of_building.map(c => '─'.repeat(12)).join('')} + │ ${chalk.gray('│')} Building ${calldata.cost_of_building.map(c => chalk.white(ResourcesIds[c.resource].padEnd(12))).join('')} + │ ${chalk.gray('├──────────')}${calldata.cost_of_building.map(c => '─'.repeat(12)).join('')}${Array.from({length: BUILDING_COST_DISPLAY_ROWS}, (_, i) => { + const buildingNum = i + 1; + const costsStr = calldata.cost_of_building.map(c => { + const multiplier = Math.pow(1 + buildingScalePercent / 10_000, buildingNum - 1); + return chalk.white(inGameAmount(c.amount * multiplier, config.config).padEnd(12)); + }).join(''); + return ` + │ ${chalk.yellow(('No #' + buildingNum).padEnd(8))}${chalk.gray('│')} ${costsStr}`; + }).join('')} + │ ${chalk.gray('└──────────')}${calldata.cost_of_building.map(c => '─'.repeat(12)).join('')} + └────────────────────────────────`)); + + calldataArray.push(calldata); + } + + const tx = await config.provider.set_building_config({ signer: config.account, calls: calldataArray }); + console.log(chalk.green(`\n ✔ Configuration complete `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const setRealmUpgradeConfig = async (config: Config) => { + console.log(chalk.cyan(` + 🏰 Realm Upgrade Configuration + ═══════════════════════════════`)); + + const calldataArray = []; + const REALM_UPGRADE_COSTS_SCALED = scaleResourceInputs( + config.config.realmUpgradeCosts, + config.config.resources.resourcePrecision, + ); + + for (const level of Object.keys(REALM_UPGRADE_COSTS_SCALED) as unknown as number[]) { + if (REALM_UPGRADE_COSTS_SCALED[level].length !== 0) { + const costs = REALM_UPGRADE_COSTS_SCALED[level]; + const calldata = { + level, + cost_of_level: costs.map((cost) => ({ + ...cost, + amount: cost.amount, + })), + }; + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow(`Level ${calldata.level}`)} + │ ${chalk.gray('Upgrade Costs:')}${calldata.cost_of_level.map(c => ` + │ ${chalk.white(`${inGameAmount(c.amount, config.config)} ${ResourcesIds[c.resource]}`)}`) + .join('')} + └────────────────────────────────`)); + + + calldataArray.push(calldata); + } + } + + const tx = await config.provider.set_realm_level_config({ signer: config.account, calls: calldataArray }); + console.log(chalk.green(`\n ✔ Configuration complete `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const setRealmMaxLevelConfig = async (config: Config) => { + console.log(chalk.cyan(` + 👑 Realm Level Configuration + ═══════════════════════════`)); + + const new_max_level = config.config.realmMaxLevel - 1; + const calldata = { + signer: config.account, + new_max_level, + } + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Level Cap')} + │ ${chalk.gray('Maximum Level:')} ${chalk.white(calldata.new_max_level)} + └────────────────────────────────`)); + + const tx = await config.provider.set_realm_max_level_config(calldata); + + console.log(chalk.green(`\n ✔ Configuration complete `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + + +export const setWeightConfig = async (config: Config) => { + console.log(chalk.cyan(` + ⚖️ Resource Weight Configuration + ═══════════════════════════════`)); + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Resource Weights')}`)); + + const calldataArray = Object.entries(config.config.resources.resourceWeightsGrams).map(([resourceId, weight]) => { + const calldata = { + entity_type: resourceId, + weight_gram: weight, + } + console.log(chalk.cyan(` │ ${chalk.gray(String(ResourcesIds[calldata.entity_type as keyof typeof ResourcesIds]).padEnd(12))} ${chalk.white(addCommas(calldata.weight_gram / 1000))} kg`)); + return calldata; + }); + console.log(chalk.cyan(` └────────────────────────────────`)); + + const tx = await config.provider.set_weight_config({ + signer: config.account, + calls: calldataArray, + }); + + console.log(chalk.green(`\n ✔ Configuration complete `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const setBattleConfig = async (config: Config) => { + console.log(chalk.cyan(` + ⚔️ Battle System Configuration + ═══════════════════════════════`)); + + const { + graceTickCount: regular_immunity_ticks, + graceTickCountHyp: hyperstructure_immunity_ticks, + delaySeconds: battle_delay_seconds, + } = config.config.battle; + + const calldata = { + signer: config.account, + config_id: 0, + regular_immunity_ticks, + hyperstructure_immunity_ticks, + battle_delay_seconds, + } + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Battle Parameters')} + │ ${chalk.gray('Regular Immunity:')} ${chalk.white(calldata.regular_immunity_ticks + ' ticks')} + │ ${chalk.gray('Structure Immunity:')} ${chalk.white(calldata.hyperstructure_immunity_ticks + ' ticks')} + │ ${chalk.gray('Battle Seige Delay:')} ${chalk.white(hourMinutesSeconds(calldata.battle_delay_seconds))} + └────────────────────────────────`)); + + const tx = await config.provider.set_battle_config(calldata); + + console.log(chalk.green(`\n ✔ Configuration complete `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const setCombatConfig = async (config: Config) => { + console.log(chalk.cyan(` + ⚔️ Combat System Configuration + ═══════════════════════════════`)); + + const { + health, + knightStrength: knight_strength, + paladinStrength: paladin_strength, + crossbowmanStrength: crossbowman_strength, + advantagePercent: advantage_percent, + disadvantagePercent: disadvantage_percent, + maxTroopCount: max_troop_count, + pillageHealthDivisor: pillage_health_divisor, + baseArmyNumberForStructure: army_free_per_structure, + armyExtraPerMilitaryBuilding: army_extra_per_military_building, + maxArmiesPerStructure: max_armies_per_structure, + battleLeaveSlashNum: battle_leave_slash_num, + battleLeaveSlashDenom: battle_leave_slash_denom, + battleTimeReductionScale: battle_time_scale, + battleMaxTimeSeconds: battle_max_time_seconds, + } = config.config.troop; + + + const calldata = { + signer: config.account, + config_id: 0, + health, + knight_strength, + paladin_strength, + crossbowman_strength, + advantage_percent, + disadvantage_percent, + max_troop_count: max_troop_count * config.config.resources.resourcePrecision, + pillage_health_divisor: pillage_health_divisor, + army_free_per_structure: army_free_per_structure, + army_extra_per_military_building: army_extra_per_military_building, + army_max_per_structure: max_armies_per_structure, + battle_leave_slash_num, + battle_leave_slash_denom, + battle_time_scale, + battle_max_time_seconds, + } + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Unit Stats')} + │ ${chalk.gray('Base Health:')} ${chalk.white(calldata.health)} + │ ${chalk.gray('Knight Strength:')} ${chalk.white(calldata.knight_strength)} + │ ${chalk.gray('Paladin Strength:')} ${chalk.white(calldata.paladin_strength)} + │ ${chalk.gray('Crossbow Strength:')} ${chalk.white(calldata.crossbowman_strength)} + │ + │ ${chalk.yellow('Combat Modifiers')} + │ ${chalk.gray('Advantage:')} ${chalk.white(calldata.advantage_percent / 10_000 * 100 + '%')} + │ ${chalk.gray('Disadvantage:')} ${chalk.white(calldata.disadvantage_percent / 10_000 * 100 + '%')} + │ ${chalk.gray('Max Troop Count Per Army:')} ${chalk.white(inGameAmount(calldata.max_troop_count, config.config))} + │ + │ ${chalk.yellow('Army Parameters')} + │ ${chalk.gray('Free per Structure:')} ${chalk.white(calldata.army_free_per_structure)} + │ ${chalk.gray('Extra per Military:')} ${chalk.white(calldata.army_extra_per_military_building)} + │ ${chalk.gray('Max per Structure:')} ${chalk.white(calldata.army_max_per_structure)} + │ + │ ${chalk.yellow('Battle Mechanics')} + │ ${chalk.gray('Pillage Divisor:')} ${chalk.white(calldata.pillage_health_divisor)} + │ ${chalk.gray('Early Battle Leave Troop Slash:')} ${chalk.white(`${calldata.battle_leave_slash_num}/${calldata.battle_leave_slash_denom}`)} + │ ${chalk.gray('Time Scale:')} ${chalk.white(calldata.battle_time_scale)} + │ ${chalk.gray('Max Duration:')} ${chalk.white(hourMinutesSeconds(calldata.battle_max_time_seconds))} + └────────────────────────────────`)); + + const tx = await config.provider.set_troop_config(calldata); + + console.log(chalk.green(`\n ✔ Configuration complete `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const setupGlobals = async (config: Config) => { + const bankCalldata = { + signer: config.account, + lords_cost: config.config.banks.lordsCost * config.config.resources.resourcePrecision, + lp_fee_num: config.config.banks.lpFeesNumerator, + lp_fee_denom: config.config.banks.lpFeesDenominator, + } + console.log(chalk.cyan(` + 🌍 Global Configuration + ═══════════════════════`)); + + // Bank Config + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Bank Parameters')} + │ ${chalk.gray('LORDS Cost:')} ${chalk.white(inGameAmount(bankCalldata.lords_cost, config.config))} + │ ${chalk.gray('LP Fee Rate:')} ${chalk.white(`${bankCalldata.lp_fee_num}/${bankCalldata.lp_fee_denom}`)} + └────────────────────────────────`)); + + const txBank = await config.provider.set_bank_config(bankCalldata); + console.log(chalk.green(` ✔ Bank configured `) + chalk.gray(txBank.statusReceipt)); + + // Tick Configs + + const defaultTickCalldata = { + signer: config.account, + tick_id: TickIds.Default, + tick_interval_in_seconds: config.config.tick.defaultTickIntervalInSeconds, + } + + const armiesTickCalldata = { + signer: config.account, + tick_id: TickIds.Armies, + tick_interval_in_seconds: config.config.tick.armiesTickIntervalInSeconds, + } + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Tick Intervals')} + │ ${chalk.gray('Default:')} ${chalk.white(hourMinutesSeconds(defaultTickCalldata.tick_interval_in_seconds))} + │ ${chalk.gray('Armies:')} ${chalk.white(hourMinutesSeconds(armiesTickCalldata.tick_interval_in_seconds))} + └────────────────────────────────`)); + + const txDefaultTick = await config.provider.set_tick_config(defaultTickCalldata); + console.log(chalk.green(` ✔ Default tick configured `) + chalk.gray(txDefaultTick.statusReceipt)); + + const txArmiesTick = await config.provider.set_tick_config(armiesTickCalldata); + console.log(chalk.green(` ✔ Armies tick configured `) + chalk.gray(txArmiesTick.statusReceipt)); + + // Map Config + const mapCalldata = { + signer: config.account, + config_id: 0, + reward_amount: config.config.exploration.reward * config.config.resources.resourcePrecision, + shards_mines_fail_probability: config.config.exploration.shardsMinesFailProbability, + } + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Map Parameters')} + │ ${chalk.gray('Exploration Reward:')} ${chalk.white(inGameAmount(mapCalldata.reward_amount, config.config))} + │ ${chalk.gray('Shards Mines Reward Fail Rate:')} ${chalk.white((mapCalldata.shards_mines_fail_probability / (mapCalldata.shards_mines_fail_probability + SHARDS_MINES_WIN_PROBABILITY) * 100).toFixed(2) + '%')} + └────────────────────────────────`)); + + const txMap = await config.provider.set_map_config(mapCalldata); + console.log(chalk.green(` ✔ Map configured `) + chalk.gray(txMap.statusReceipt)); + + // Stamina Costs + const explorationStaminaCalldata = { + signer: config.account, + travel_type: TravelTypes.Explore, + cost: config.config.stamina.exploreCost, + } + + const travelStaminaCalldata = { + signer: config.account, + travel_type: TravelTypes.Travel, + cost: config.config.stamina.travelCost, + } + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Stamina Costs')} + │ ${chalk.gray('For Exploration:')} ${chalk.white(explorationStaminaCalldata.cost)} stamina + │ ${chalk.gray('For Travel:')} ${chalk.white(travelStaminaCalldata.cost)} stamina + └────────────────────────────────`)); + + const txExploreStaminaCost = await config.provider.set_travel_stamina_cost_config(explorationStaminaCalldata); + console.log(chalk.green(` ✔ Explore Stamina costs configured `) + chalk.gray(txExploreStaminaCost.statusReceipt)); + + const txTravelStaminaCost = await config.provider.set_travel_stamina_cost_config(travelStaminaCalldata); + console.log(chalk.green(` ✔ Travel Stamina costs configured `) + chalk.gray(txTravelStaminaCost.statusReceipt)); + + // Food Consumption + const foodConsumptionCalldata = Object.entries(config.config.troop.troopFoodConsumption).map(([unit_type, costs]) => { + return { + signer: config.account, + config_id: 0, + unit_type, + explore_wheat_burn_amount: costs.explore_wheat_burn_amount * config.config.resources.resourcePrecision, + explore_fish_burn_amount: costs.explore_fish_burn_amount * config.config.resources.resourcePrecision, + travel_wheat_burn_amount: costs.travel_wheat_burn_amount * config.config.resources.resourcePrecision, + travel_fish_burn_amount: costs.travel_fish_burn_amount * config.config.resources.resourcePrecision, + } + }); + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Unit Food Consumption')}`)); + + for (const calldata of foodConsumptionCalldata) { + console.log(chalk.cyan(` │ ${chalk.gray(ResourcesIds[calldata.unit_type as keyof typeof ResourcesIds])} + │ ${chalk.gray('Explore:')} ${chalk.white(`${inGameAmount(calldata.explore_wheat_burn_amount, config.config)} wheat, ${inGameAmount(calldata.explore_fish_burn_amount, config.config)} fish`)} + │ ${chalk.gray('Travel:')} ${chalk.white(`${inGameAmount(calldata.travel_wheat_burn_amount, config.config)} wheat, ${inGameAmount(calldata.travel_fish_burn_amount, config.config)} fish`)}`)); + + const tx = await config.provider.set_travel_food_cost_config(calldata); + console.log(chalk.green(` │ ✔ ${ResourcesIds[calldata.unit_type as keyof typeof ResourcesIds]} configured `) + chalk.gray(tx.statusReceipt)); + }; + console.log(chalk.cyan(` └────────────────────────────────`)); +}; + +export const setCapacityConfig = async (config: Config) => { + const calldata = Object.entries(config.config.carryCapacityGram).map(([category, weight]) => { + return { + signer: config.account, + category, + weight_gram: weight, + } + }); + console.log(chalk.cyan(` + 📦 Carry Capacity Configuration + ═══════════════════════════════`)); + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Max Weight Per Category')}${calldata.map(({category, weight_gram}) => ` + │ ${chalk.gray(String(CapacityConfigCategory[category as keyof typeof CapacityConfigCategory]).padEnd(12))} ${chalk.white(addCommas(BigInt(weight_gram)))} ${chalk.gray('grams')} + │ ${chalk.gray('').padEnd(12)} ${chalk.gray('i.e (')} ${chalk.white(addCommas(BigInt(weight_gram) / BigInt(1000)))} ${chalk.gray('kg')} ${chalk.gray(')')})`) + .join('')} + └────────────────────────────────`)); + + for (const data of calldata) { + const tx = await config.provider.set_capacity_config(data); + console.log(chalk.green(` ✔ ${CapacityConfigCategory[data.category as keyof typeof CapacityConfigCategory]} weight configured `) + chalk.gray(tx.statusReceipt)); + } + console.log(); +}; + +export const setSeasonConfig = async (config: Config) => { + console.log(chalk.cyan(` + 🎮 Season Configuration + ═══════════════════════`)); + + const now = Math.floor(new Date().getTime() / 1000); + const startAt = now + config.config.season.startAfterSeconds; + + const seasonCalldata = { + signer: config.account, + season_pass_address: config.config.setup!.addresses.seasonPass, + realms_address: config.config.setup!.addresses.realms, + lords_address: config.config.setup!.addresses.lords, + start_at: startAt, + } + + const seasonBridgeCalldata = { + signer: config.account, + close_after_end_seconds: config.config.season.bridgeCloseAfterEndSeconds, + } + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Season Parameters')} + │ ${chalk.gray('Start Time:')} ${chalk.white(new Date(seasonCalldata.start_at * 1000).toLocaleString('en-US', { + dateStyle: 'full', + timeStyle: 'short', + timeZone: 'UTC' + }))} UTC + │ ${chalk.gray('Bridge Closes:')} ${chalk.white(hourMinutesSeconds(seasonBridgeCalldata.close_after_end_seconds))} after game ends + │ + │ ${chalk.yellow('Contract Addresses')} + │ ${chalk.gray('Season Pass:')} ${chalk.white(shortHexAddress(seasonCalldata.season_pass_address))} + │ ${chalk.gray('Realms:')} ${chalk.white(shortHexAddress(seasonCalldata.realms_address))} + │ ${chalk.gray('LORDS:')} ${chalk.white(shortHexAddress(seasonCalldata.lords_address))} + └────────────────────────────────`)); + + const setSeasonTx = await config.provider.set_season_config(seasonCalldata); + const setSeasonBridgeTx = await config.provider.set_season_bridge_config(seasonBridgeCalldata); + + console.log(chalk.green(` ✔ Season configured `) + chalk.gray(setSeasonTx.statusReceipt)); + console.log(chalk.green(` ✔ Bridge configured `) + chalk.gray(setSeasonBridgeTx.statusReceipt) + '\n'); +}; + +export const setVRFConfig = async (config: Config) => { + console.log(chalk.cyan(` + 🎲 VRF Configuration + ═══════════════════════`)); + + if (BigInt(config.config.vrf.vrfProviderAddress) === BigInt(0)) { + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Status')} + │ ${chalk.gray('Provider:')} ${chalk.red('Not configured')} + └────────────────────────────────`)); + return; + } + + const vrfCalldata = { + signer: config.account, + vrf_provider_address: config.config.vrf.vrfProviderAddress, + } + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('VRF Provider')} + │ ${chalk.gray('Address:')} ${chalk.white(shortHexAddress(vrfCalldata.vrf_provider_address))} + └────────────────────────────────`)); + + const tx = await config.provider.set_vrf_config(vrfCalldata); + console.log(chalk.green(` ✔ VRF configured `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const setResourceBridgeFeesConfig = async (config: Config) => { + const bridgeFeesCalldata = { + signer: config.account, + velords_fee_on_dpt_percent: config.config.bridge.velords_fee_on_dpt_percent, + velords_fee_on_wtdr_percent: config.config.bridge.velords_fee_on_wtdr_percent, + season_pool_fee_on_dpt_percent: config.config.bridge.season_pool_fee_on_dpt_percent, + season_pool_fee_on_wtdr_percent: config.config.bridge.season_pool_fee_on_wtdr_percent, + client_fee_on_dpt_percent: config.config.bridge.client_fee_on_dpt_percent, + client_fee_on_wtdr_percent: config.config.bridge.client_fee_on_wtdr_percent, + velords_fee_recipient: config.config.bridge.velords_fee_recipient, + season_pool_fee_recipient: config.config.bridge.season_pool_fee_recipient, + max_bank_fee_dpt_percent: config.config.bridge.max_bank_fee_dpt_percent, + max_bank_fee_wtdr_percent: config.config.bridge.max_bank_fee_wtdr_percent, + } + console.log(chalk.cyan(` + 🌉 Bridge Fees Configuration + ══════════════════════════`)); + + const fees = { + deposits: { + 'veLORDS Deposit': bridgeFeesCalldata.velords_fee_on_dpt_percent / BRIDGE_FEE_DENOMINATOR * 100 + '%', + 'Season Pool Deposit': bridgeFeesCalldata.season_pool_fee_on_dpt_percent / BRIDGE_FEE_DENOMINATOR * 100 + '%', + 'Client Deposit': bridgeFeesCalldata.client_fee_on_dpt_percent / BRIDGE_FEE_DENOMINATOR * 100 + '%', + 'Max Bank Fee on Deposit': bridgeFeesCalldata.max_bank_fee_dpt_percent / BRIDGE_FEE_DENOMINATOR * 100 + '%', + }, + withdrawals: { + 'veLORDS Withdraw': bridgeFeesCalldata.velords_fee_on_wtdr_percent / BRIDGE_FEE_DENOMINATOR * 100 + '%', + 'Season Pool Withdraw': bridgeFeesCalldata.season_pool_fee_on_wtdr_percent / BRIDGE_FEE_DENOMINATOR * 100 + '%', + 'Client Withdraw': bridgeFeesCalldata.client_fee_on_wtdr_percent / BRIDGE_FEE_DENOMINATOR * 100 + '%', + 'Max Bank Fee on Withdraw': bridgeFeesCalldata.max_bank_fee_wtdr_percent / BRIDGE_FEE_DENOMINATOR * 100 + '%' + } + }; + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Deposit Fee Structure')}${Object.entries(fees.deposits).map(([name, value]) => ` + │ ${chalk.gray(name.padEnd(20))} ${chalk.white(value)}`) + .join('')} + │ + │ ${chalk.yellow('Withdrawal Fee Structure')}${Object.entries(fees.withdrawals).map(([name, value]) => ` + │ ${chalk.gray(name.padEnd(20))} ${chalk.white(value)}`) + .join('')} + │ + │ ${chalk.yellow('Recipients')} + │ ${chalk.gray('veLORDS:')} ${chalk.white(shortHexAddress(config.config.bridge.velords_fee_recipient.toString()))} + │ ${chalk.gray('Season Pool:')} ${chalk.white(shortHexAddress(config.config.bridge.season_pool_fee_recipient.toString()))} + └────────────────────────────────`)); + + const tx = await config.provider.set_resource_bridge_fees_config(bridgeFeesCalldata); + console.log(chalk.green(`\n ✔ Configuration complete `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const setSpeedConfig = async (config: Config) => { + console.log(chalk.cyan(` + 🏃 Movement Speed Configuration + ════════════════════════════`)); + + const speeds = [ + { type: 'Donkey', speed: config.config.speed.donkey }, + { type: 'Army', speed: config.config.speed.army } + ]; + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Travel Speeds')}${speeds.map(({type, speed}) => ` + │ ${chalk.gray(type.padEnd(8))} ${chalk.white(speed.toString())} ${chalk.gray('seconds/km')}`) + .join('')} + └────────────────────────────────`)); + + for (const {type, speed} of speeds) { + const tx = await config.provider.set_speed_config({ + signer: config.account, + entity_type: type === 'Donkey' ? DONKEY_ENTITY_TYPE : ARMY_ENTITY_TYPE, + sec_per_km: speed, + }); + console.log(chalk.green(` ✔ ${type} speed configured `) + chalk.gray(tx.statusReceipt)); + } + console.log(); +}; + +export const setHyperstructureConfig = async (config: Config) => { + console.log(chalk.cyan(` + 🏛️ Hyperstructure Configuration + ═══════════════════════════════`)); + + const { + hyperstructurePointsPerCycle, + hyperstructurePointsOnCompletion, + hyperstructureTimeBetweenSharesChangeSeconds, + hyperstructurePointsForWin, + hyperstructureTotalCosts, + } = config.config.hyperstructures; + + const costs = scaleResourceCostMinMax( + hyperstructureTotalCosts, + config.config.resources.resourcePrecision, + ); + + const hyperstructureCalldata = { + signer: config.account, + resources_for_completion: costs, + time_between_shares_change: hyperstructureTimeBetweenSharesChangeSeconds, + points_per_cycle: hyperstructurePointsPerCycle, + points_for_win: hyperstructurePointsForWin, + points_on_completion: hyperstructurePointsOnCompletion, + } + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Points System')} + │ ${chalk.gray('Per Cycle:')} ${chalk.white(addCommas(hyperstructureCalldata.points_per_cycle))} + │ ${chalk.gray('On Completion:')} ${chalk.white(addCommas(hyperstructureCalldata.points_on_completion))} + │ ${chalk.gray('For Win:')} ${chalk.white(addCommas(hyperstructureCalldata.points_for_win))} + │ + │ ${chalk.yellow('Timing')} + │ ${chalk.gray('Minimum Time Between Share Changes:')} ${chalk.white(hourMinutesSeconds(hyperstructureCalldata.time_between_shares_change))} + │ + │ ${chalk.yellow('Resource Tier')}${hyperstructureCalldata.resources_for_completion.map(c => ` + │ ${chalk.gray(ResourceTier[c.resource_tier].padEnd(12))} ${chalk.white(inGameAmount(c.min_amount, config.config))} ${chalk.gray('to')} ${chalk.white(inGameAmount(c.max_amount, config.config))}`) + .join('')} + └────────────────────────────────`)); + const tx = await config.provider.set_hyperstructure_config(hyperstructureCalldata); + + console.log(chalk.green(`\n ✔ Configuration complete `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const setStaminaConfig = async (config: Config) => { + console.log(chalk.cyan(` + ⚡ Stamina Configuration + ═══════════════════════`)); + + const { troopStaminas } = config.config.troop; + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Unit Stamina Caps')}${Object.entries(troopStaminas).map(([unit, stamina]) => ` + │ ${chalk.gray(String(ResourcesIds[unit as keyof typeof ResourcesIds]).padEnd(12))} ${chalk.white(stamina)}`) + .join('')} + └────────────────────────────────`)); + + for (const [unit_type, stamina] of Object.entries(troopStaminas)) { + const tx = await config.provider.set_stamina_config({ + signer: config.account, + unit_type: unit_type, + max_stamina: stamina, + }); + console.log(chalk.green(` ✔ ${ResourcesIds[unit_type as keyof typeof ResourcesIds]} configured `) + chalk.gray(tx.statusReceipt)); + } + console.log(); +}; + +export const setStaminaRefillConfig = async (config: Config) => { + const staminaRefillCalldata = { + signer: config.account, + amount_per_tick: config.config.stamina.refillPerTick, + start_boost_tick_count: config.config.stamina.startBoostTickCount, + } + + console.log(chalk.cyan(` + 🔋 Stamina Refill Configuration + ══════════════════════════════`)); + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Refill Parameters')} + │ ${chalk.gray('Amount per Tick:')} ${chalk.white(staminaRefillCalldata.amount_per_tick)} + │ ${chalk.gray('Initial Boost:')} ${chalk.white(staminaRefillCalldata.start_boost_tick_count + ' ticks worth of stamina immediately after army creation')} + └────────────────────────────────`)); + + const tx = await config.provider.set_stamina_refill_config(staminaRefillCalldata); + console.log(chalk.green(`\n ✔ Configuration complete `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const setMercenariesConfig = async (config: Config) => { + console.log(chalk.cyan(` + ⚔️ Mercenaries Configuration + ═══════════════════════════════`)); + + + const calldata = { + signer: config.account, + knights_lower_bound: config.config.mercenaries.knights_lower_bound * config.config.resources.resourcePrecision, + knights_upper_bound: config.config.mercenaries.knights_upper_bound * config.config.resources.resourcePrecision, + paladins_lower_bound: config.config.mercenaries.paladins_lower_bound * config.config.resources.resourcePrecision, + paladins_upper_bound: config.config.mercenaries.paladins_upper_bound * config.config.resources.resourcePrecision, + crossbowmen_lower_bound: config.config.mercenaries.crossbowmen_lower_bound * config.config.resources.resourcePrecision, + crossbowmen_upper_bound: config.config.mercenaries.crossbowmen_upper_bound * config.config.resources.resourcePrecision, + rewards: config.config.mercenaries.rewards.map((reward) => ({ + resource: reward.resource, + amount: reward.amount * config.config.resources.resourcePrecision + })), + }; + const bounds = { + Knights: { + lower: calldata.knights_lower_bound, + upper: calldata.knights_upper_bound + }, + Paladins: { + lower: calldata.paladins_lower_bound, + upper: calldata.paladins_upper_bound + }, + Crossbowmen: { + lower: calldata.crossbowmen_lower_bound, + upper: calldata.crossbowmen_upper_bound + } + }; + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Unit Bounds')}${Object.entries(bounds).map(([unit, {lower, upper}]) => ` + │ ${chalk.gray(unit.padEnd(12))} ${chalk.white(inGameAmount(lower, config.config))} ${chalk.gray('to')} ${chalk.white(inGameAmount(upper, config.config))}`) + .join('')} + │ + │ ${chalk.yellow('Rewards:')}${calldata.rewards.map(r => ` + │ ${chalk.white(`${inGameAmount(r.amount, config.config)} ${ResourcesIds[r.resource]}`)}`) + .join('')} + └────────────────────────────────`)); + + const tx = await config.provider.set_mercenaries_config(calldata); + + console.log(chalk.green(`\n ✔ Configuration complete `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const setSettlementConfig = async (config: Config) => { + console.log(chalk.cyan(` + 🏘️ Settlement Configuration + ═══════════════════════════`)); + + const { + center, + base_distance, + min_first_layer_distance, + points_placed, + current_layer, + current_side, + current_point_on_side, + } = config.config.settlement; + + const calldata = { + signer: config.account, + center, + base_distance, + min_first_layer_distance, + points_placed, + current_layer, + current_side, + current_point_on_side, + } + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Layout Parameters')} + │ ${chalk.gray('Center:')} ${chalk.white(`(${calldata.center}, ${calldata.center})`)} + │ ${chalk.gray('Base Distance:')} ${chalk.white(calldata.base_distance)} + │ ${chalk.gray('Min First Layer:')} ${chalk.white(calldata.min_first_layer_distance)} + │ + │ ${chalk.yellow('Current State')} + │ ${chalk.gray('Points Placed:')} ${chalk.white(calldata.points_placed)} + │ ${chalk.gray('Current Layer:')} ${chalk.white(calldata.current_layer)} + │ ${chalk.gray('Current Side:')} ${chalk.white(calldata.current_side)} + │ ${chalk.gray('Point on Side:')} ${chalk.white(calldata.current_point_on_side)} + └────────────────────────────────`)); + + const tx = await config.provider.set_settlement_config(calldata); + + console.log(chalk.green(`\n ✔ Configuration complete `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const createAdminBank = async (config: Config) => { + console.log(chalk.cyan(` + 🏦 Admin Bank Creation + ═══════════════════════`)); + + const calldata = { + signer: config.account, + name: config.config.banks.name, + coord: { x: FELT_CENTER, y: FELT_CENTER }, + owner_fee_num: config.config.banks.ownerFeesNumerator, + owner_fee_denom: config.config.banks.ownerFeesDenominator, + owner_bridge_fee_dpt_percent: config.config.banks.ownerBridgeFeeOnDepositPercent, + owner_bridge_fee_wtdr_percent: config.config.banks.ownerBridgeFeeOnWithdrawalPercent, + } + + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Bank Parameters')} + │ ${chalk.gray('Name:')} ${chalk.white(calldata.name)} + │ ${chalk.gray('Location:')} ${chalk.white(`(${FELT_CENTER}, ${FELT_CENTER})`)} + │ ${chalk.gray('Owner Fee Rate:')} ${chalk.white(`${calldata.owner_fee_num}/${calldata.owner_fee_denom}`)} + │ ${chalk.gray('Bridge Fee (In):')} ${chalk.white(calldata.owner_bridge_fee_dpt_percent / BRIDGE_FEE_DENOMINATOR * 100 + '%')} + │ ${chalk.gray('Bridge Fee (Out):')} ${chalk.white(calldata.owner_bridge_fee_wtdr_percent / BRIDGE_FEE_DENOMINATOR * 100 + '%')} + └────────────────────────────────`)); + + const tx = await config.provider.create_admin_bank(calldata); + console.log(chalk.green(`\n ✔ Bank created successfully `) + chalk.gray(tx.statusReceipt) + '\n'); +}; + +export const mintResources = async (config: Config) => { + console.log(chalk.cyan(` + 💰 Minting Resources + ══════════════════════════`)); + + const { ammStartingLiquidity, lordsLiquidityPerResource } = config.config.banks; + const ammResourceIds = Object.keys(ammStartingLiquidity).map(Number); + const totalResourceCount = ammResourceIds.length; + + // Mint LORDS + const lordsAmount = config.config.resources.resourcePrecision * lordsLiquidityPerResource * totalResourceCount; + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Minting LORDS')} + │ ${chalk.gray('Amount:')} ${chalk.white(inGameAmount(lordsAmount, config.config))} + │ ${chalk.gray('To:')} ${chalk.white(`Bank #${ADMIN_BANK_ENTITY_ID}`)} + └────────────────────────────────`)); + + await config.provider.mint_resources({ + signer: config.account, + receiver_id: ADMIN_BANK_ENTITY_ID, + resources: [ResourcesIds.Lords, lordsAmount], + }); + + // Mint other resources + console.log(chalk.cyan(` + ┌─ ${chalk.yellow('Minting Resources')}`)); + + const resources = ammResourceIds.flatMap((resourceId) => { + const amount = ammStartingLiquidity[resourceId as keyof typeof ammStartingLiquidity]! * + config.config.resources.resourcePrecision; + console.log(chalk.cyan(` │ ${chalk.gray(ResourcesIds[resourceId].padEnd(12))} ${chalk.white(inGameAmount(amount, config.config))}`)); + return [resourceId, amount]; + }); + + console.log(chalk.cyan(` └────────────────────────────────`)); + + await config.provider.mint_resources({ + signer: config.account, + receiver_id: ADMIN_BANK_ENTITY_ID, + resources, + }); + + console.log(chalk.green(`\n ✔ Resources minted successfully\n`)); +}; + +export const addLiquidity = async (config: Config) => { + console.log(chalk.cyan(` + 💧 Adding Initial Liquidity + ══════════════════════════`)); + + const { ammStartingLiquidity, lordsLiquidityPerResource } = config.config.banks; + let calls = []; + + for (const [resourceId, amount] of Object.entries(ammStartingLiquidity)) { + const resourceAmount = amount * config.config.resources.resourcePrecision; + const lordsAmount = lordsLiquidityPerResource * config.config.resources.resourcePrecision; + + const calldata = { + resource_type: resourceId, + resource_amount: resourceAmount, + lords_amount: lordsAmount, + }; + + + console.log(chalk.cyan(` + ┌─ ${chalk.yellow(ResourcesIds[calldata.resource_type as keyof typeof ResourcesIds])} Pool + │ ${chalk.gray('Resource Amount:')} ${chalk.white(inGameAmount(calldata.resource_amount, config.config))} + │ ${chalk.gray('LORDS Amount:')} ${chalk.white(inGameAmount(calldata.lords_amount, config.config))} + └────────────────────────────────`)); + + calls.push(calldata); + } + + try { + const tx = await config.provider.add_liquidity({ + signer: config.account, + bank_entity_id: ADMIN_BANK_ENTITY_ID, + entity_id: ADMIN_BANK_ENTITY_ID, + calls, + }); + console.log(chalk.green(`\n ✔ Liquidity added successfully `) + chalk.gray(tx.statusReceipt) + '\n'); + } catch (e) { + console.log(chalk.red(`\n ✖ Failed to add liquidity: `) + chalk.gray(e) + '\n'); + } +}; diff --git a/client/config/deployer/index.ts b/client/config/deployer/index.ts new file mode 100644 index 0000000000..69b3f7f441 --- /dev/null +++ b/client/config/deployer/index.ts @@ -0,0 +1,36 @@ +import { + EternumProvider +} from "@bibliothecadao/eternum"; +import { Account } from "starknet"; +import { getGameManifest, type Chain } from "../../common/utils"; +import { confirmNonLocalDeployment } from "../utils/confirmation"; +import { getConfigFromNetwork, logNetwork, saveConfigJsonFromConfigTsFile, type NetworkType } from "../utils/environment"; +import { GameConfigDeployer } from "./config"; + +const { + VITE_PUBLIC_MASTER_ADDRESS, + VITE_PUBLIC_MASTER_PRIVATE_KEY, + VITE_PUBLIC_NODE_URL, + VITE_PUBLIC_CHAIN, + VITE_PUBLIC_VRF_PROVIDER_ADDRESS, +} = process.env; + +// =============== SETUP ETERNUM CONFIG =============== + +// prompt user to confirm non-local deployment +confirmNonLocalDeployment(VITE_PUBLIC_CHAIN!); + +const manifest = await getGameManifest(VITE_PUBLIC_CHAIN! as Chain); +const provider = new EternumProvider(manifest, VITE_PUBLIC_NODE_URL, VITE_PUBLIC_VRF_PROVIDER_ADDRESS); +const account = new Account(provider.provider, VITE_PUBLIC_MASTER_ADDRESS!, VITE_PUBLIC_MASTER_PRIVATE_KEY!); +await saveConfigJsonFromConfigTsFile(VITE_PUBLIC_CHAIN! as NetworkType); +const configuration = await getConfigFromNetwork(VITE_PUBLIC_CHAIN! as NetworkType); +export const config = new GameConfigDeployer(configuration); + +// Deploy configurations +logNetwork(VITE_PUBLIC_CHAIN! as NetworkType); +await config.setupAll(account, provider); +logNetwork(VITE_PUBLIC_CHAIN! as NetworkType); + + + diff --git a/client/sdk/packages/eternum/src/constants/global.ts b/client/config/environments/_shared_.ts similarity index 84% rename from client/sdk/packages/eternum/src/constants/global.ts rename to client/config/environments/_shared_.ts index f9f6b05e5f..e5bf9fc8c6 100644 --- a/client/sdk/packages/eternum/src/constants/global.ts +++ b/client/config/environments/_shared_.ts @@ -1,28 +1,24 @@ -import { Config } from "../types"; -import { BUILDING_CAPACITY, BUILDING_COSTS, BUILDING_POPULATION, BUILDING_RESOURCE_PRODUCED } from "./buildings"; import { - HYPERSTRUCTURE_CONSTRUCTION_COSTS, - HYPERSTRUCTURE_CREATION_COSTS, - HYPERSTRUCTURE_TOTAL_COSTS, -} from "./hyperstructure"; -import { AMM_STARTING_LIQUIDITY, LORDS_LIQUIDITY_PER_RESOURCE } from "./market"; -import { QUEST_RESOURCES } from "./quests"; -import { REALM_MAX_LEVEL, REALM_UPGRADE_COSTS } from "./realmLevels"; -import { RESOURCE_BUILDING_COSTS, RESOURCE_INPUTS, RESOURCE_OUTPUTS, RESOURCE_RARITY, WEIGHTS_GRAM } from "./resources"; -import { CapacityConfigCategory } from "./structures"; -import { TROOPS_FOOD_CONSUMPTION, TROOPS_STAMINAS } from "./troops"; + CapacityConfigCategory, + getContractByName, + NAMESPACE, + RESOURCE_PRECISION, + RESOURCE_RARITY, + ResourcesIds, + type Config +} from "@bibliothecadao/eternum"; +import { getGameManifest, getSeasonAddresses, type Chain } from "../../common/utils"; +import { AMM_STARTING_LIQUIDITY, LORDS_LIQUIDITY_PER_RESOURCE } from "./utils/amm"; +import { BUILDING_CAPACITY, BUILDING_POPULATION, BUILDING_RESOURCE_PRODUCED, NON_RESOURCE_BUILDING_COSTS, RESOURCE_BUILDING_COSTS } from "./utils/building"; +import { HYPERSTRUCTURE_CONSTRUCTION_COSTS, HYPERSTRUCTURE_CREATION_COSTS, HYPERSTRUCTURE_TOTAL_COSTS } from "./utils/hyperstructure"; +import { REALM_MAX_LEVEL, REALM_UPGRADE_COSTS } from "./utils/levels"; +import { QUEST_RESOURCES } from "./utils/quest"; +import { RESOURCE_PRODUCTION_INPUT_RESOURCES, RESOURCE_PRODUCTION_OUTPUT_AMOUNTS, RESOURCES_WEIGHTS_GRAM } from "./utils/resource"; +import { TROOPS_FOOD_CONSUMPTION, TROOPS_STAMINAS } from "./utils/troop"; -import { ResourcesIds } from "."; -export const MIN_TROOPS_BATTLE = 100_000; -export const FELT_CENTER = 2147483646; -export const WORLD_CONFIG_ID = 999999999n; -export const HYPERSTRUCTURE_CONFIG_ID = 999999992n; -export const BUILDING_CATEGORY_POPULATION_CONFIG_ID = 999999990n; -export const POPULATION_CONFIG_ID = 999999989n; -export const U32_MAX = 4294967295; -export const MAX_NAME_LENGTH = 31; -export const ONE_MONTH = 2628000; + +const manifest = await getGameManifest(process.env.VITE_PUBLIC_CHAIN! as Chain); // ----- Buildings ----- // // This scales the costs of the buildings @@ -34,10 +30,6 @@ export const HYPERSTRUCTURE_POINTS_ON_COMPLETION = 500_000; export const HYPERSTRUCTURE_TIME_BETWEEN_SHARES_CHANGE_S = 17280; // 2 days export const HYPERSTRUCTURE_POINTS_FOR_WIN = 9_620_000; -// ----- Entity Types ----- // -export const DONKEY_ENTITY_TYPE = 256; -export const REALM_ENTITY_TYPE = 257; -export const ARMY_ENTITY_TYPE = 258; // ----- Stamina ----- // export const STAMINA_REFILL_PER_TICK = 20; @@ -46,8 +38,6 @@ export const STAMINA_TRAVEL_COST = 10; export const STAMINA_EXPLORE_COST = 20; // ----- Resources ----- // -export const RESOURCE_PRECISION = 1_000_000_000; -export const RESOURCE_MULTIPLIER = 1_000_000_000; export const RESOURCE_AMOUNT_PER_TICK = 10; export const STARTING_RESOURCES_INPUT_PRODUCTION_FACTOR = 6; @@ -68,6 +58,7 @@ export const BASE_POPULATION_CAPACITY = 5; // ----- Exploration ----- // export const EXPLORATION_REWARD = 750; export const SHARDS_MINES_FAIL_PROBABILITY = 99000; +export const SHARDS_MINES_WIN_PROBABILITY = 1000; // ----- Tick ----- // export const DEFAULT_TICK_INTERVAL_SECONDS = 1; @@ -135,7 +126,7 @@ export const SEASON_POOL_FEE_ON_WITHDRAWAL = 400; // 4% export const CLIENT_FEE_ON_DEPOSIT = 200; // 2% export const CLIENT_FEE_ON_WITHDRAWAL = 200; // 2% export const VELORDS_FEE_RECIPIENT = "0x045c587318c9ebcf2fbe21febf288ee2e3597a21cd48676005a5770a50d433c5"; -export const SEASON_POOL_FEE_RECIPIENT = "0x1a3e37c77be7de91a9177c6b57956faa6da25607e567b10a25cf64fea5e533b"; +export const SEASON_POOL_FEE_RECIPIENT = BigInt(getContractByName(manifest, `${NAMESPACE}-season_systems`)); export const MAX_BANK_FEE_ON_DEPOSIT = 0; // 10% export const MAX_BANK_FEE_ON_WITHDRAWAL = 0; // 10% @@ -151,14 +142,14 @@ export const EternumGlobalConfig: Config = { }, resources: { resourcePrecision: RESOURCE_PRECISION, - resourceMultiplier: RESOURCE_MULTIPLIER, + resourceMultiplier: RESOURCE_PRECISION, resourceAmountPerTick: RESOURCE_AMOUNT_PER_TICK, startingResourcesInputProductionFactor: STARTING_RESOURCES_INPUT_PRODUCTION_FACTOR, - resourceInputs: RESOURCE_INPUTS, - resourceOutputs: RESOURCE_OUTPUTS, - resourceWeightsGrams: WEIGHTS_GRAM, - resourceBuildingCosts: RESOURCE_BUILDING_COSTS, + resourceInputs: RESOURCE_PRODUCTION_INPUT_RESOURCES, + resourceOutputs: RESOURCE_PRODUCTION_OUTPUT_AMOUNTS, + resourceWeightsGrams: RESOURCES_WEIGHTS_GRAM, resourceRarity: RESOURCE_RARITY, + resourceBuildingCosts: RESOURCE_BUILDING_COSTS, }, banks: { name: BANK_NAME, @@ -244,7 +235,7 @@ export const EternumGlobalConfig: Config = { buildingCapacity: BUILDING_CAPACITY, buildingPopulation: BUILDING_POPULATION, buildingResourceProduced: BUILDING_RESOURCE_PRODUCED, - buildingCosts: BUILDING_COSTS, + buildingCosts: NON_RESOURCE_BUILDING_COSTS, buildingFixedCostScalePercent: BUILDING_FIXED_COST_SCALE_PERCENT, }, hyperstructures: { @@ -257,9 +248,6 @@ export const EternumGlobalConfig: Config = { hyperstructurePointsForWin: HYPERSTRUCTURE_POINTS_FOR_WIN, }, season: { - seasonPassAddress: SEASON_PASS_ADDRESS, - realmsAddress: REALMS_ADDRESS, - lordsAddress: LORDS_ADDRESS, startAfterSeconds: SEASON_START_AFTER_SECONDS, bridgeCloseAfterEndSeconds: SEASON_BRIDGE_CLOSE_AFTER_END_SECONDS, }, @@ -276,9 +264,14 @@ export const EternumGlobalConfig: Config = { max_bank_fee_wtdr_percent: MAX_BANK_FEE_ON_WITHDRAWAL, }, vrf: { - vrfProviderAddress: "0x0", // set in config/index.ts + vrfProviderAddress: process.env.VITE_PUBLIC_VRF_PROVIDER_ADDRESS!, }, questResources: QUEST_RESOURCES, realmUpgradeCosts: REALM_UPGRADE_COSTS, realmMaxLevel: REALM_MAX_LEVEL, + setup: { + chain: process.env.VITE_PUBLIC_CHAIN!, + addresses: await getSeasonAddresses(process.env.VITE_PUBLIC_CHAIN! as Chain), + manifest: manifest, + }, }; diff --git a/client/config/environments/data/mainnet.json b/client/config/environments/data/mainnet.json new file mode 100644 index 0000000000..ef4d7e46e1 --- /dev/null +++ b/client/config/environments/data/mainnet.json @@ -0,0 +1,11321 @@ +{ + "generatedFromTsFile": true, + "message": "This file was generated from the .ts file and should not be edited manually", + "configuration": { + "stamina": { + "travelCost": 10, + "exploreCost": 20, + "refillPerTick": 20, + "startBoostTickCount": 2 + }, + "resources": { + "resourcePrecision": 1000000000, + "resourceMultiplier": 1000000000, + "resourceAmountPerTick": 10, + "startingResourcesInputProductionFactor": 6, + "resourceInputs": { + "1": [ + { + "resource": 3, + "amount": 5 + }, + { + "resource": 2, + "amount": 3.8 + }, + { + "resource": 29, + "amount": 5 + } + ], + "2": [ + { + "resource": 1, + "amount": 4.2 + }, + { + "resource": 4, + "amount": 2.8 + }, + { + "resource": 29, + "amount": 5 + } + ], + "3": [ + { + "resource": 1, + "amount": 3 + }, + { + "resource": 2, + "amount": 3.2 + }, + { + "resource": 29, + "amount": 5 + } + ], + "4": [ + { + "resource": 2, + "amount": 5.8 + }, + { + "resource": 6, + "amount": 3.4 + }, + { + "resource": 29, + "amount": 5 + } + ], + "5": [ + { + "resource": 8, + "amount": 6 + }, + { + "resource": 11, + "amount": 3.2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "6": [ + { + "resource": 4, + "amount": 4.8 + }, + { + "resource": 8, + "amount": 3.2 + }, + { + "resource": 29, + "amount": 5 + } + ], + "7": [ + { + "resource": 11, + "amount": 4.2 + }, + { + "resource": 15, + "amount": 2.6 + }, + { + "resource": 30, + "amount": 4 + } + ], + "8": [ + { + "resource": 6, + "amount": 5 + }, + { + "resource": 5, + "amount": 2.8 + }, + { + "resource": 30, + "amount": 4 + } + ], + "9": [ + { + "resource": 19, + "amount": 6 + }, + { + "resource": 22, + "amount": 2.4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "10": [ + { + "resource": 17, + "amount": 4.8 + }, + { + "resource": 19, + "amount": 2.4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "11": [ + { + "resource": 5, + "amount": 5 + }, + { + "resource": 7, + "amount": 3.8 + }, + { + "resource": 30, + "amount": 4 + } + ], + "12": [ + { + "resource": 13, + "amount": 4 + }, + { + "resource": 16, + "amount": 4.2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "13": [ + { + "resource": 20, + "amount": 4.2 + }, + { + "resource": 12, + "amount": 4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "14": [ + { + "resource": 15, + "amount": 8 + }, + { + "resource": 20, + "amount": 3.2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "15": [ + { + "resource": 7, + "amount": 6.2 + }, + { + "resource": 14, + "amount": 2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "16": [ + { + "resource": 12, + "amount": 5.6 + }, + { + "resource": 21, + "amount": 3.8 + }, + { + "resource": 30, + "amount": 4 + } + ], + "17": [ + { + "resource": 18, + "amount": 5 + }, + { + "resource": 10, + "amount": 3.4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "18": [ + { + "resource": 21, + "amount": 4.6 + }, + { + "resource": 17, + "amount": 3.2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "19": [ + { + "resource": 10, + "amount": 6.8 + }, + { + "resource": 9, + "amount": 2.6 + }, + { + "resource": 30, + "amount": 4 + } + ], + "20": [ + { + "resource": 14, + "amount": 4.8 + }, + { + "resource": 13, + "amount": 3.8 + }, + { + "resource": 30, + "amount": 4 + } + ], + "21": [ + { + "resource": 16, + "amount": 4.2 + }, + { + "resource": 18, + "amount": 3.4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "22": [ + { + "resource": 9, + "amount": 6.4 + }, + { + "resource": 19, + "amount": 4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "24": [], + "25": [ + { + "resource": 29, + "amount": 25 + }, + { + "resource": 31, + "amount": 0.01 + } + ], + "26": [ + { + "resource": 29, + "amount": 50 + }, + { + "resource": 30, + "amount": 50 + }, + { + "resource": 8, + "amount": 2 + }, + { + "resource": 5, + "amount": 5 + } + ], + "27": [ + { + "resource": 29, + "amount": 50 + }, + { + "resource": 30, + "amount": 50 + }, + { + "resource": 6, + "amount": 2 + }, + { + "resource": 11, + "amount": 5 + } + ], + "28": [ + { + "resource": 29, + "amount": 50 + }, + { + "resource": 30, + "amount": 50 + }, + { + "resource": 4, + "amount": 2 + }, + { + "resource": 7, + "amount": 5 + } + ], + "29": [], + "30": [], + "31": [] + }, + "resourceOutputs": { + "1": 30, + "2": 30, + "3": 30, + "4": 30, + "5": 30, + "6": 30, + "7": 30, + "8": 30, + "9": 30, + "10": 30, + "11": 30, + "12": 30, + "13": 30, + "14": 30, + "15": 30, + "16": 30, + "17": 30, + "18": 30, + "19": 30, + "20": 30, + "21": 30, + "22": 30, + "24": 1, + "25": 0.5, + "26": 0.04, + "27": 0.04, + "28": 0.04, + "29": 50, + "30": 50, + "31": 0 + }, + "resourceWeightsGrams": { + "1": 1000, + "2": 1000, + "3": 1000, + "4": 1000, + "5": 1000, + "6": 1000, + "7": 1000, + "8": 1000, + "9": 1000, + "10": 1000, + "11": 1000, + "12": 1000, + "13": 1000, + "14": 1000, + "15": 1000, + "16": 1000, + "17": 1000, + "18": 1000, + "19": 1000, + "20": 1000, + "21": 1000, + "22": 1000, + "24": 1000, + "25": 0, + "26": 5000, + "27": 3000, + "28": 5000, + "29": 100, + "30": 100, + "31": 0 + }, + "resourceRarity": { + "1": 1.27, + "2": 1.31, + "3": 1, + "4": 1.9, + "5": 4.25, + "6": 2.26, + "7": 5.49, + "8": 2.88, + "9": 135.53, + "10": 53.92, + "11": 5.24, + "12": 20.98, + "13": 20.98, + "14": 16.72, + "15": 8.44, + "16": 29.15, + "17": 45.18, + "18": 36.06, + "19": 91.2, + "20": 20.3, + "21": 30.95, + "22": 217.92, + "24": 20.98, + "25": 1, + "26": 1, + "27": 1, + "28": 1, + "29": 1, + "30": 1, + "31": 1 + }, + "resourceBuildingCosts": { + "1": [ + { + "resource": 30, + "amount": 750000 + } + ], + "2": [ + { + "resource": 29, + "amount": 750000 + } + ], + "3": [ + { + "resource": 29, + "amount": 750000 + } + ], + "4": [ + { + "resource": 30, + "amount": 750000 + } + ], + "5": [ + { + "resource": 29, + "amount": 750000 + } + ], + "6": [ + { + "resource": 29, + "amount": 750000 + } + ], + "7": [ + { + "resource": 29, + "amount": 750000 + } + ], + "8": [ + { + "resource": 30, + "amount": 750000 + } + ], + "9": [ + { + "resource": 29, + "amount": 750000 + } + ], + "10": [ + { + "resource": 29, + "amount": 750000 + } + ], + "11": [ + { + "resource": 30, + "amount": 750000 + } + ], + "12": [ + { + "resource": 30, + "amount": 750000 + } + ], + "13": [ + { + "resource": 29, + "amount": 750000 + } + ], + "14": [ + { + "resource": 29, + "amount": 750000 + } + ], + "15": [ + { + "resource": 30, + "amount": 750000 + } + ], + "16": [ + { + "resource": 29, + "amount": 750 + } + ], + "17": [ + { + "resource": 30, + "amount": 750000 + } + ], + "18": [ + { + "resource": 29, + "amount": 750000 + } + ], + "19": [ + { + "resource": 30, + "amount": 750000 + } + ], + "20": [ + { + "resource": 30, + "amount": 750000 + } + ], + "21": [ + { + "resource": 30, + "amount": 750000 + } + ], + "22": [ + { + "resource": 30, + "amount": 750000 + } + ], + "24": [ + { + "resource": 30, + "amount": 750000 + } + ], + "25": [ + { + "resource": 29, + "amount": 750000 + } + ], + "26": [ + { + "resource": 30, + "amount": 750000 + } + ], + "27": [ + { + "resource": 29, + "amount": 750000 + } + ], + "28": [ + { + "resource": 30, + "amount": 750000 + } + ], + "29": [ + { + "resource": 29, + "amount": 750000 + } + ], + "30": [ + { + "resource": 30, + "amount": 750000 + } + ], + "31": [ + { + "resource": 29, + "amount": 750000 + } + ] + } + }, + "banks": { + "name": "Central Bank", + "lordsCost": 1000, + "lpFeesNumerator": 15, + "lpFeesDenominator": 100, + "ownerFeesNumerator": 15, + "ownerFeesDenominator": 100, + "ownerBridgeFeeOnDepositPercent": 1000, + "ownerBridgeFeeOnWithdrawalPercent": 1000, + "ammStartingLiquidity": { + "1": 500000, + "2": 500000, + "3": 500000, + "4": 500000, + "5": 200000, + "6": 500000, + "7": 200000, + "8": 500000, + "9": 50000, + "10": 50000, + "11": 200000, + "12": 75000, + "13": 100000, + "14": 100000, + "15": 200000, + "16": 75000, + "17": 50000, + "18": 50000, + "19": 50000, + "20": 100000, + "21": 50000, + "22": 50000, + "25": 10000 + }, + "lordsLiquidityPerResource": 1000 + }, + "populationCapacity": { + "workerHuts": 5, + "basePopulation": 5 + }, + "exploration": { + "reward": 750, + "shardsMinesFailProbability": 99000 + }, + "tick": { + "defaultTickIntervalInSeconds": 1, + "armiesTickIntervalInSeconds": 3600 + }, + "carryCapacityGram": { + "0": 0, + "1": "340282366920938463463374607431768211455", + "2": 500000, + "3": 10000, + "4": 300000000 + }, + "speed": { + "donkey": 9, + "army": 1 + }, + "battle": { + "graceTickCount": 24, + "graceTickCountHyp": 1, + "delaySeconds": 28800 + }, + "troop": { + "health": 1, + "knightStrength": 1, + "paladinStrength": 1, + "crossbowmanStrength": 1, + "advantagePercent": 1000, + "disadvantagePercent": 1000, + "maxTroopCount": 500000, + "baseArmyNumberForStructure": 3, + "armyExtraPerMilitaryBuilding": 1, + "maxArmiesPerStructure": 7, + "pillageHealthDivisor": 8, + "battleLeaveSlashNum": 25, + "battleLeaveSlashDenom": 100, + "battleTimeReductionScale": 1000, + "battleMaxTimeSeconds": 172800, + "troopStaminas": { + "26": 80, + "27": 80, + "28": 100 + }, + "troopFoodConsumption": { + "26": { + "explore_wheat_burn_amount": 10, + "explore_fish_burn_amount": 10, + "travel_wheat_burn_amount": 5, + "travel_fish_burn_amount": 5 + }, + "27": { + "explore_wheat_burn_amount": 6, + "explore_fish_burn_amount": 6, + "travel_wheat_burn_amount": 3, + "travel_fish_burn_amount": 3 + }, + "28": { + "explore_wheat_burn_amount": 10, + "explore_fish_burn_amount": 10, + "travel_wheat_burn_amount": 4, + "travel_fish_burn_amount": 4 + } + } + }, + "mercenaries": { + "knights_lower_bound": 1000000, + "knights_upper_bound": 4000000, + "paladins_lower_bound": 1000000, + "paladins_upper_bound": 4000000, + "crossbowmen_lower_bound": 1000000, + "crossbowmen_upper_bound": 4000000, + "rewards": [ + { + "resource": 29, + "amount": 0 + }, + { + "resource": 30, + "amount": 0 + } + ] + }, + "settlement": { + "center": 2147483646, + "base_distance": 10, + "min_first_layer_distance": 30, + "points_placed": 0, + "current_layer": 1, + "current_side": 1, + "current_point_on_side": 0 + }, + "buildings": { + "buildingCapacity": { + "0": 0, + "1": 5, + "2": 0, + "3": 0, + "4": 0, + "5": 0, + "6": 0, + "7": 0, + "8": 0, + "9": 0, + "10": 5, + "11": 0, + "12": 0, + "13": 0, + "14": 0, + "15": 0 + }, + "buildingPopulation": { + "0": 0, + "1": 0, + "2": 2, + "3": 1, + "4": 1, + "5": 2, + "6": 3, + "7": 2, + "8": 3, + "9": 2, + "10": 0, + "11": 2, + "12": 2, + "13": 2, + "14": 0, + "15": 0 + }, + "buildingResourceProduced": { + "0": 0, + "1": 0, + "2": 0, + "3": 29, + "4": 30, + "5": 26, + "6": 25, + "7": 27, + "8": 28, + "9": 0, + "10": 0, + "11": 0, + "12": 0, + "13": 0, + "14": 0, + "15": 24 + }, + "buildingCosts": { + "0": [], + "1": [], + "2": [], + "3": [ + { + "resource": 30, + "amount": 450000 + } + ], + "4": [ + { + "resource": 29, + "amount": 450000 + } + ], + "5": [ + { + "resource": 29, + "amount": 1000000 + }, + { + "resource": 3, + "amount": 75000 + }, + { + "resource": 2, + "amount": 75000 + }, + { + "resource": 8, + "amount": 50000 + }, + { + "resource": 7, + "amount": 45000 + } + ], + "6": [ + { + "resource": 30, + "amount": 750000 + }, + { + "resource": 1, + "amount": 125000 + }, + { + "resource": 6, + "amount": 50000 + }, + { + "resource": 13, + "amount": 25000 + }, + { + "resource": 12, + "amount": 5000 + } + ], + "7": [ + { + "resource": 30, + "amount": 1000000 + }, + { + "resource": 3, + "amount": 75000 + }, + { + "resource": 6, + "amount": 75000 + }, + { + "resource": 7, + "amount": 25000 + }, + { + "resource": 15, + "amount": 25000 + } + ], + "8": [ + { + "resource": 29, + "amount": 1000000 + }, + { + "resource": 3, + "amount": 75000 + }, + { + "resource": 8, + "amount": 75000 + }, + { + "resource": 5, + "amount": 35000 + }, + { + "resource": 7, + "amount": 25000 + } + ], + "9": [], + "10": [ + { + "resource": 29, + "amount": 300000 + }, + { + "resource": 1, + "amount": 75000 + }, + { + "resource": 3, + "amount": 75000 + }, + { + "resource": 2, + "amount": 75000 + } + ], + "11": [], + "12": [], + "13": [ + { + "resource": 30, + "amount": 1000000 + }, + { + "resource": 2, + "amount": 75000 + }, + { + "resource": 1, + "amount": 75000 + }, + { + "resource": 20, + "amount": 10000 + } + ], + "14": [], + "15": [] + }, + "buildingFixedCostScalePercent": 5000 + }, + "hyperstructures": { + "hyperstructureCreationCosts": [ + { + "resource_tier": 1, + "min_amount": 3000000, + "max_amount": 3000000 + } + ], + "hyperstructureConstructionCosts": [ + { + "resource_tier": 2, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 3, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 4, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 5, + "min_amount": 120000000, + "max_amount": 240000000 + }, + { + "resource_tier": 6, + "min_amount": 90000000, + "max_amount": 180000000 + }, + { + "resource_tier": 7, + "min_amount": 40000000, + "max_amount": 80000000 + }, + { + "resource_tier": 8, + "min_amount": 20000000, + "max_amount": 40000000 + }, + { + "resource_tier": 9, + "min_amount": 7000000, + "max_amount": 14000000 + } + ], + "hyperstructureTotalCosts": [ + { + "resource_tier": 2, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 3, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 4, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 5, + "min_amount": 120000000, + "max_amount": 240000000 + }, + { + "resource_tier": 6, + "min_amount": 90000000, + "max_amount": 180000000 + }, + { + "resource_tier": 7, + "min_amount": 40000000, + "max_amount": 80000000 + }, + { + "resource_tier": 8, + "min_amount": 20000000, + "max_amount": 40000000 + }, + { + "resource_tier": 9, + "min_amount": 7000000, + "max_amount": 14000000 + }, + { + "resource_tier": 1, + "min_amount": 3000000, + "max_amount": 3000000 + } + ], + "hyperstructurePointsPerCycle": 7, + "hyperstructurePointsOnCompletion": 500000, + "hyperstructureTimeBetweenSharesChangeSeconds": 17280, + "hyperstructurePointsForWin": 9620000 + }, + "season": { + "startAfterSeconds": 60, + "bridgeCloseAfterEndSeconds": 172800 + }, + "bridge": { + "velords_fee_on_dpt_percent": 400, + "velords_fee_on_wtdr_percent": 400, + "season_pool_fee_on_dpt_percent": 400, + "season_pool_fee_on_wtdr_percent": 400, + "client_fee_on_dpt_percent": 200, + "client_fee_on_wtdr_percent": 200, + "velords_fee_recipient": "1972411780975621738773701578535203409474110909068539627767144719329707439045", + "season_pool_fee_recipient": "503293414928177394940437649405074149076671770497433743375852137577831059233", + "max_bank_fee_dpt_percent": 0, + "max_bank_fee_wtdr_percent": 0 + }, + "vrf": { + "vrfProviderAddress": "0x0" + }, + "questResources": { + "1": [ + { + "resource": 29, + "amount": 1200000 + }, + { + "resource": 30, + "amount": 1200000 + } + ], + "2": [ + { + "resource": 3, + "amount": 5000 + }, + { + "resource": 1, + "amount": 5000 + }, + { + "resource": 2, + "amount": 5000 + }, + { + "resource": 4, + "amount": 5000 + }, + { + "resource": 6, + "amount": 5000 + }, + { + "resource": 8, + "amount": 5000 + }, + { + "resource": 5, + "amount": 5000 + }, + { + "resource": 11, + "amount": 5000 + }, + { + "resource": 7, + "amount": 5000 + }, + { + "resource": 15, + "amount": 5000 + }, + { + "resource": 14, + "amount": 5000 + }, + { + "resource": 20, + "amount": 5000 + }, + { + "resource": 13, + "amount": 5000 + }, + { + "resource": 12, + "amount": 5000 + }, + { + "resource": 16, + "amount": 5000 + }, + { + "resource": 21, + "amount": 5000 + }, + { + "resource": 18, + "amount": 5000 + }, + { + "resource": 17, + "amount": 5000 + }, + { + "resource": 10, + "amount": 5000 + }, + { + "resource": 19, + "amount": 5000 + }, + { + "resource": 9, + "amount": 5000 + }, + { + "resource": 22, + "amount": 5000 + } + ], + "3": [ + { + "resource": 25, + "amount": 200 + } + ], + "4": [ + { + "resource": 26, + "amount": 500 + }, + { + "resource": 27, + "amount": 500 + }, + { + "resource": 28, + "amount": 500 + } + ], + "5": [ + { + "resource": 25, + "amount": 200 + } + ], + "6": [ + { + "resource": 26, + "amount": 500 + }, + { + "resource": 28, + "amount": 500 + }, + { + "resource": 27, + "amount": 500 + } + ], + "7": [ + { + "resource": 25, + "amount": 200 + } + ], + "8": [ + { + "resource": 25, + "amount": 200 + }, + { + "resource": 28, + "amount": 200 + }, + { + "resource": 26, + "amount": 200 + }, + { + "resource": 27, + "amount": 200 + }, + { + "resource": 24, + "amount": 200 + } + ] + }, + "realmUpgradeCosts": { + "0": [], + "1": [ + { + "resource": 29, + "amount": 3000000 + }, + { + "resource": 30, + "amount": 3000000 + } + ], + "2": [ + { + "resource": 11, + "amount": 600000 + }, + { + "resource": 15, + "amount": 600000 + }, + { + "resource": 14, + "amount": 600000 + }, + { + "resource": 20, + "amount": 600000 + }, + { + "resource": 12, + "amount": 600000 + }, + { + "resource": 29, + "amount": 5000000 + }, + { + "resource": 30, + "amount": 5000000 + } + ], + "3": [ + { + "resource": 10, + "amount": 50000 + }, + { + "resource": 19, + "amount": 50000 + }, + { + "resource": 9, + "amount": 50000 + }, + { + "resource": 22, + "amount": 50000 + }, + { + "resource": 29, + "amount": 9000000 + }, + { + "resource": 30, + "amount": 9000000 + } + ] + }, + "realmMaxLevel": 4, + "setup": { + "chain": "local", + "addresses": { + "seasonPass": "0x6b16a2eaaaf67ab12b521541e49bdccbda984ae668716f09c9dc573e4176939", + "realms": "0x67c7cdf4895de0ff9ead55c934aafbbf3406ed791633d695d202b2ed332ff1d", + "lords": "0x2061f58899d0c48274295712bc8a2e383f2f0fcc3bf86e01319926ad6500081", + "resources": { + "STONE": [ + 1, + "0x10201cb67728c2eb6ed38e48b2b9232f1bcc49abd47f0438393c47cb1dcd7e7" + ], + "COAL": [ + 2, + "0x7ab4d56e0247d161c46ea2df1c78129be6f82ef0d38cbae06868c0d96b81965" + ], + "WOOD": [ + 3, + "0x419fb8394ad7d31fa8cfe41c1e04bcba340acf516986e9e4052f253031d19c2" + ], + "COPPER": [ + 4, + "0x7054f48f083b939a48611b80a3723dcca39e67e78c0d0973c7801beee562cfd" + ], + "IRONWOOD": [ + 5, + "0x12d5032c812f1d95fb8aa5932ef4af801480caddb6e1a0c653d280452d75dd0" + ], + "OBSIDIAN": [ + 6, + "0x4ee77d19a27675d680beb975dc81599f6ed4c5ff5afa835f9a361a6b1f0eaa3" + ], + "GOLD": [ + 7, + "0x2b8aa7839e2df3079ec45473ea1f6a551924e40ec3e3a198b3373eeb0bd97aa" + ], + "SILVER": [ + 8, + "0xdc7f395ebff7a904ac7444cc835b9556ec2703ca3ecc9a32721cf27d304057" + ], + "MITHRAL": [ + 9, + "0x7ab934a3fb535ddb493fb8ebec6633781c95893d21a9bb6c3907d0542606b6" + ], + "ALCHEMICALSILVER": [ + 10, + "0x109bae66b457de3a2f90fc0f0437c18ac78cb64e1f0b487fad7c2ad965f9fd6" + ], + "COLDIRON": [ + 11, + "0x75454e76e6756fed13a862e274e9c2c5d1ef338f4233ff32f607bf31047c84c" + ], + "DEEPCRYSTAL": [ + 12, + "0x5fe0353a1ccc141b01f5ad28a46735e4018e0027a99064a59e8f58bc5f686b4" + ], + "RUBY": [ + 13, + "0x64e545b009366748faea9b88919683785e1f2a4658e35ad94f64c9d8145eb04" + ], + "DIAMONDS": [ + 14, + "0x59879bf38404e60a3297b6a18cc2bb089a952a157317eeaa4c0337622351cb0" + ], + "HARTWOOD": [ + 15, + "0x29713bcec04e8c8e628824c3a85bafd8158a2205d970377e374bce1f3da3c0b" + ], + "IGNIUM": [ + 16, + "0x7f2b0bb46c8446e83454c0a527fc248a95b81774528da9d454299b5d197eb41" + ], + "TWILIGHTQUARTZ": [ + 17, + "0x6de3f8e40a158518e26e06f5a82ec21579489e0c1dfdebeb2e5d1c1f539a1ea" + ], + "TRUEICE": [ + 18, + "0x41ed8b4e5b7a04d7d7a51b2c2de03504e3853be52f01d3e1670bdcdffae62e3" + ], + "ADAMANTINE": [ + 19, + "0x6dcf1c7b514b92b25d0072d8575f3fae27a6369cc5f080466a4321f1676a95b" + ], + "SAPPHIRE": [ + 20, + "0x6dbdfddef0497e91dc0e9e3b3b1c2ca2f3a76d6b0c0ffa5bf82011de57a1263" + ], + "ETHEREALSILICA": [ + 21, + "0x4ba5dbded1a8439812be33d3a3f38a968059c87aa6b613dd9294134fc15277b" + ], + "DRAGONHIDE": [ + 22, + "0x6dda537140b0de42a41783a8a91483387100557c129bff7ed982fa7826ec926" + ], + "ANCIENTFRAGMENT": [ + 24, + "0x5e0d02bfafa0a02a08e232382c36940a7422724c906572856664acff26a1cc2" + ], + "DONKEY": [ + 25, + "0x3dd5f15c3c941ee5a42b1e2011094faf397d8c2d5fdb4d751469928b21b4aa4" + ], + "KNIGHT": [ + 26, + "0xbf0803b982e5a0fc98a2e5b3dda8e5222de3c46152f9194dbfecb427842c3b" + ], + "CROSSBOWMAN": [ + 27, + "0x235e07f4ac22ed6ad4bcd45affdf99903bc14a4ea945097a842e50821990f79" + ], + "PALADIN": [ + 28, + "0x222039bf663fd7b8af8bda5efcbb81e0d561e8662da941c23d6c88664f725d8" + ], + "WHEAT": [ + 29, + "0x10cd4ee48e15d50515aee8ac2645ef6f779c867035adace07378e53c66704a9" + ], + "FISH": [ + 30, + "0x20be4adb7f73829679f076fca4ad050e28a3eb4f9280369e511cd54af9d9cfa" + ], + "LORDS": [ + 31, + "0x2061f58899d0c48274295712bc8a2e383f2f0fcc3bf86e01319926ad6500081" + ] + } + }, + "manifest": { + "world": { + "class_hash": "0x45575a88cc5cef1e444c77ce60b7b4c9e73a01cbbe20926d5a4c72a94011410", + "address": "0x0009dd5e66cfa83f893c2a70b9ea5221e2df18aaf52a111fe9003264f948c7aa", + "seed": "s1_eternum", + "name": "Realms: Eternum", + "entrypoints": [ + "uuid", + "set_metadata", + "register_namespace", + "register_event", + "register_model", + "register_contract", + "init_contract", + "upgrade_event", + "upgrade_model", + "upgrade_contract", + "emit_event", + "emit_events", + "set_entity", + "set_entities", + "delete_entity", + "delete_entities", + "grant_owner", + "revoke_owner", + "grant_writer", + "revoke_writer", + "upgrade" + ], + "abi": [ + { + "type": "impl", + "name": "World", + "interface_name": "dojo::world::iworld::IWorld" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "enum", + "name": "dojo::world::resource::Resource", + "variants": [ + { + "name": "Model", + "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" + }, + { + "name": "Event", + "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" + }, + { + "name": "Contract", + "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" + }, + { + "name": "Namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "World", + "type": "()" + }, + { + "name": "Unregistered", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "dojo::model::metadata::ResourceMetadata", + "members": [ + { + "name": "resource_id", + "type": "core::felt252" + }, + { + "name": "metadata_uri", + "type": "core::byte_array::ByteArray" + }, + { + "name": "metadata_hash", + "type": "core::felt252" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "enum", + "name": "dojo::model::definition::ModelIndex", + "variants": [ + { + "name": "Keys", + "type": "core::array::Span::" + }, + { + "name": "Id", + "type": "core::felt252" + }, + { + "name": "MemberId", + "type": "(core::felt252, core::felt252)" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "dojo::meta::layout::FieldLayout", + "members": [ + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "dojo::meta::layout::Layout", + "variants": [ + { + "name": "Fixed", + "type": "core::array::Span::" + }, + { + "name": "Struct", + "type": "core::array::Span::" + }, + { + "name": "Tuple", + "type": "core::array::Span::" + }, + { + "name": "Array", + "type": "core::array::Span::" + }, + { + "name": "ByteArray", + "type": "()" + }, + { + "name": "Enum", + "type": "core::array::Span::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "dojo::world::iworld::IWorld", + "items": [ + { + "type": "function", + "name": "resource", + "inputs": [ + { + "name": "selector", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "dojo::world::resource::Resource" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "uuid", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "metadata", + "inputs": [ + { + "name": "resource_selector", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "dojo::model::metadata::ResourceMetadata" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_metadata", + "inputs": [ + { + "name": "metadata", + "type": "dojo::model::metadata::ResourceMetadata" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "register_namespace", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "register_event", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "register_model", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "register_contract", + "inputs": [ + { + "name": "salt", + "type": "core::felt252" + }, + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "init_contract", + "inputs": [ + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "init_calldata", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "upgrade_event", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "upgrade_model", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "upgrade_contract", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [ + { + "type": "core::starknet::class_hash::ClassHash" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "emit_event", + "inputs": [ + { + "name": "event_selector", + "type": "core::felt252" + }, + { + "name": "keys", + "type": "core::array::Span::" + }, + { + "name": "values", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "emit_events", + "inputs": [ + { + "name": "event_selector", + "type": "core::felt252" + }, + { + "name": "keys", + "type": "core::array::Span::>" + }, + { + "name": "values", + "type": "core::array::Span::>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "entity", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "index", + "type": "dojo::model::definition::ModelIndex" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "entities", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "indexes", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [ + { + "type": "core::array::Span::>" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_entity", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "index", + "type": "dojo::model::definition::ModelIndex" + }, + { + "name": "values", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_entities", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "indexes", + "type": "core::array::Span::" + }, + { + "name": "values", + "type": "core::array::Span::>" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "delete_entity", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "index", + "type": "dojo::model::definition::ModelIndex" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "delete_entities", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "indexes", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "is_owner", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "grant_owner", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "revoke_owner", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "is_writer", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "grant_writer", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "revoke_writer", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableWorld", + "interface_name": "dojo::world::iworld::IUpgradeableWorld" + }, + { + "type": "interface", + "name": "dojo::world::iworld::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": "world_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::WorldSpawned", + "kind": "struct", + "members": [ + { + "name": "creator", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::WorldUpgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::NamespaceRegistered", + "kind": "struct", + "members": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ModelRegistered", + "kind": "struct", + "members": [ + { + "name": "name", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "namespace", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::EventRegistered", + "kind": "struct", + "members": [ + { + "name": "name", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "namespace", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ContractRegistered", + "kind": "struct", + "members": [ + { + "name": "name", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "namespace", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "salt", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ModelUpgraded", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "prev_address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::EventUpgraded", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "prev_address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ContractUpgraded", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ContractInitialized", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "init_calldata", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::EventEmitted", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "system_address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "keys", + "type": "core::array::Span::", + "kind": "data" + }, + { + "name": "values", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::MetadataUpdate", + "kind": "struct", + "members": [ + { + "name": "resource", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "uri", + "type": "core::byte_array::ByteArray", + "kind": "data" + }, + { + "name": "hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::StoreSetRecord", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "entity_id", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "keys", + "type": "core::array::Span::", + "kind": "data" + }, + { + "name": "values", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::StoreUpdateRecord", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "entity_id", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "values", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::StoreUpdateMember", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "entity_id", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "member_selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "values", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::StoreDelRecord", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "entity_id", + "type": "core::felt252", + "kind": "key" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::WriterUpdated", + "kind": "struct", + "members": [ + { + "name": "resource", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "value", + "type": "core::bool", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::OwnerUpdated", + "kind": "struct", + "members": [ + { + "name": "resource", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "value", + "type": "core::bool", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::Event", + "kind": "enum", + "variants": [ + { + "name": "WorldSpawned", + "type": "dojo::world::world_contract::world::WorldSpawned", + "kind": "nested" + }, + { + "name": "WorldUpgraded", + "type": "dojo::world::world_contract::world::WorldUpgraded", + "kind": "nested" + }, + { + "name": "NamespaceRegistered", + "type": "dojo::world::world_contract::world::NamespaceRegistered", + "kind": "nested" + }, + { + "name": "ModelRegistered", + "type": "dojo::world::world_contract::world::ModelRegistered", + "kind": "nested" + }, + { + "name": "EventRegistered", + "type": "dojo::world::world_contract::world::EventRegistered", + "kind": "nested" + }, + { + "name": "ContractRegistered", + "type": "dojo::world::world_contract::world::ContractRegistered", + "kind": "nested" + }, + { + "name": "ModelUpgraded", + "type": "dojo::world::world_contract::world::ModelUpgraded", + "kind": "nested" + }, + { + "name": "EventUpgraded", + "type": "dojo::world::world_contract::world::EventUpgraded", + "kind": "nested" + }, + { + "name": "ContractUpgraded", + "type": "dojo::world::world_contract::world::ContractUpgraded", + "kind": "nested" + }, + { + "name": "ContractInitialized", + "type": "dojo::world::world_contract::world::ContractInitialized", + "kind": "nested" + }, + { + "name": "EventEmitted", + "type": "dojo::world::world_contract::world::EventEmitted", + "kind": "nested" + }, + { + "name": "MetadataUpdate", + "type": "dojo::world::world_contract::world::MetadataUpdate", + "kind": "nested" + }, + { + "name": "StoreSetRecord", + "type": "dojo::world::world_contract::world::StoreSetRecord", + "kind": "nested" + }, + { + "name": "StoreUpdateRecord", + "type": "dojo::world::world_contract::world::StoreUpdateRecord", + "kind": "nested" + }, + { + "name": "StoreUpdateMember", + "type": "dojo::world::world_contract::world::StoreUpdateMember", + "kind": "nested" + }, + { + "name": "StoreDelRecord", + "type": "dojo::world::world_contract::world::StoreDelRecord", + "kind": "nested" + }, + { + "name": "WriterUpdated", + "type": "dojo::world::world_contract::world::WriterUpdated", + "kind": "nested" + }, + { + "name": "OwnerUpdated", + "type": "dojo::world::world_contract::world::OwnerUpdated", + "kind": "nested" + } + ] + } + ] + }, + "contracts": [ + { + "address": "0x7f4862123d52dffae89ec3fb4557690cd7fe2e92c9bf48d3bf8e44abfeafcf4", + "class_hash": "0x78b9f6c5bf71c8f9fc992f0c3a955dfc17fa6384bd2857d5ba32206a354ff9b", + "abi": [ + { + "type": "impl", + "name": "bank_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "bank_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BankSystemsImpl", + "interface_name": "s1_eternum::systems::bank::contracts::bank::IBankSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::bank::contracts::bank::IBankSystems", + "items": [ + { + "type": "function", + "name": "change_owner_amm_fee", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "new_owner_fee_num", + "type": "core::integer::u128" + }, + { + "name": "new_owner_fee_denom", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "change_owner_bridge_fee", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "owner_bridge_fee_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "owner_bridge_fee_wtdr_percent", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::bank::contracts::bank::bank_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-bank_systems", + "selector": "0x16cf356882260a01771aedaab01f8e3afdab764944c3c4d41c617cd76b91e6a", + "systems": [ + "change_owner_amm_fee", + "change_owner_bridge_fee", + "upgrade" + ] + }, + { + "address": "0x117560271d47312986c4d035d1e47831de5b481e4972312c133c9906a7422db", + "class_hash": "0x6188bc68291181c0cb9ca030c0ebc02bfadfa15f6a90da55cfeb6b8cbad0861", + "abi": [ + { + "type": "impl", + "name": "battle_pillage_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "battle_pillage_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BattlePillageContractImpl", + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract" + }, + { + "type": "interface", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract", + "items": [ + { + "type": "function", + "name": "battle_pillage", + "inputs": [ + { + "name": "army_id", + "type": "core::integer::u32" + }, + { + "name": "structure_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_pillage_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-battle_pillage_systems", + "selector": "0x9861172f7b864354b6e23d8971f0b054c518337a3cea854724658c43f9f580", + "systems": [ + "battle_pillage", + "upgrade" + ] + }, + { + "address": "0x7eb9c890214b5220230284162e8fe44789176ec789ca55abb807be49e3f3e91", + "class_hash": "0x6a30acbb2c446376fcb8d09bdbd2b2294ca8e6fa275592f3900a3aceeb1acd7", + "abi": [ + { + "type": "impl", + "name": "battle_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "battle_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BattleContractImpl", + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleContract" + }, + { + "type": "enum", + "name": "s1_eternum::models::combat::BattleSide", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Attack", + "type": "()" + }, + { + "name": "Defence", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleContract", + "items": [ + { + "type": "function", + "name": "battle_start", + "inputs": [ + { + "name": "attacking_army_id", + "type": "core::integer::u32" + }, + { + "name": "defending_army_id", + "type": "core::integer::u32" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_force_start", + "inputs": [ + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "defending_army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_join", + "inputs": [ + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "battle_side", + "type": "s1_eternum::models::combat::BattleSide" + }, + { + "name": "army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_leave", + "inputs": [ + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_claim", + "inputs": [ + { + "name": "army_id", + "type": "core::integer::u32" + }, + { + "name": "structure_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_resolve", + "inputs": [ + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-battle_systems", + "selector": "0x28fc8bb4b5e0140b71566a257468e491e41a12f2f284cae6d4e731abd862067", + "systems": [ + "battle_start", + "battle_force_start", + "battle_join", + "battle_leave", + "battle_claim", + "battle_resolve", + "upgrade" + ] + }, + { + "address": "0x2681ced2797e2f91332e049f7b7e8695f7c54183ebacc46827588a7aad022c9", + "class_hash": "0x53887e941bdd199bc27cf9adc9f776688cc2cec517f751324d918f6b36345ac", + "abi": [ + { + "type": "impl", + "name": "battle_utils_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "battle_utils_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BattleUtilsContractImpl", + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract" + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::Troops", + "members": [ + { + "name": "knight_count", + "type": "core::integer::u64" + }, + { + "name": "paladin_count", + "type": "core::integer::u64" + }, + { + "name": "crossbowman_count", + "type": "core::integer::u64" + } + ] + }, + { + "type": "enum", + "name": "s1_eternum::models::combat::BattleSide", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Attack", + "type": "()" + }, + { + "name": "Defence", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::BattleArmy", + "members": [ + { + "name": "troops", + "type": "s1_eternum::models::combat::Troops" + }, + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "battle_side", + "type": "s1_eternum::models::combat::BattleSide" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::BattleHealth", + "members": [ + { + "name": "current", + "type": "core::integer::u128" + }, + { + "name": "lifetime", + "type": "core::integer::u128" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::Battle", + "members": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "attack_army", + "type": "s1_eternum::models::combat::BattleArmy" + }, + { + "name": "attack_army_lifetime", + "type": "s1_eternum::models::combat::BattleArmy" + }, + { + "name": "defence_army", + "type": "s1_eternum::models::combat::BattleArmy" + }, + { + "name": "defence_army_lifetime", + "type": "s1_eternum::models::combat::BattleArmy" + }, + { + "name": "attackers_resources_escrow_id", + "type": "core::integer::u32" + }, + { + "name": "defenders_resources_escrow_id", + "type": "core::integer::u32" + }, + { + "name": "attack_army_health", + "type": "s1_eternum::models::combat::BattleHealth" + }, + { + "name": "defence_army_health", + "type": "s1_eternum::models::combat::BattleHealth" + }, + { + "name": "attack_delta", + "type": "core::integer::u64" + }, + { + "name": "defence_delta", + "type": "core::integer::u64" + }, + { + "name": "last_updated", + "type": "core::integer::u64" + }, + { + "name": "duration_left", + "type": "core::integer::u64" + }, + { + "name": "start_at", + "type": "core::integer::u64" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::Army", + "members": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "troops", + "type": "s1_eternum::models::combat::Troops" + }, + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "battle_side", + "type": "s1_eternum::models::combat::BattleSide" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract", + "items": [ + { + "type": "function", + "name": "leave_battle", + "inputs": [ + { + "name": "battle", + "type": "s1_eternum::models::combat::Battle" + }, + { + "name": "army", + "type": "s1_eternum::models::combat::Army" + } + ], + "outputs": [ + { + "type": "(s1_eternum::models::combat::Battle, s1_eternum::models::combat::Army)" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "leave_battle_if_ended", + "inputs": [ + { + "name": "battle", + "type": "s1_eternum::models::combat::Battle" + }, + { + "name": "army", + "type": "s1_eternum::models::combat::Army" + } + ], + "outputs": [ + { + "type": "(s1_eternum::models::combat::Battle, s1_eternum::models::combat::Army)" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_utils_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-battle_utils_systems", + "selector": "0x4199f9a24edfc349a8a16e338daaaea77af951bcc40d636e85107731d52d2b7", + "systems": [ + "leave_battle", + "leave_battle_if_ended", + "upgrade" + ] + }, + { + "address": "0x7edd2f2b330a6524e0cf002b582d2776a138a25892b0e5e2e206466cec2f3ed", + "class_hash": "0x3382fd74de14dbe7cc172adb1d7688b94c1e79ab91d393b7cb72f8f0f4d7738", + "abi": [ + { + "type": "impl", + "name": "config_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "config_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IWorldConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IWorldConfig", + "items": [ + { + "type": "function", + "name": "set_world_config", + "inputs": [ + { + "name": "admin_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "realm_l2_contract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "SeasonConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ISeasonConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ISeasonConfig", + "items": [ + { + "type": "function", + "name": "set_season_config", + "inputs": [ + { + "name": "season_pass_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "realms_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "lords_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "start_at", + "type": "core::integer::u64" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_season_bridge_config", + "inputs": [ + { + "name": "close_after_end_seconds", + "type": "core::integer::u64" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "VRFConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IVRFConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IVRFConfig", + "items": [ + { + "type": "function", + "name": "set_vrf_config", + "inputs": [ + { + "name": "vrf_provider_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "QuestConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IQuestConfig" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IQuestConfig", + "items": [ + { + "type": "function", + "name": "set_quest_config", + "inputs": [ + { + "name": "production_material_multiplier", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_quest_reward_config", + "inputs": [ + { + "name": "quest_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "MapConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IMapConfig" + }, + { + "type": "struct", + "name": "s1_eternum::models::config::MapConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "reward_resource_amount", + "type": "core::integer::u128" + }, + { + "name": "shards_mines_fail_probability", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IMapConfig", + "items": [ + { + "type": "function", + "name": "set_map_config", + "inputs": [ + { + "name": "map_config", + "type": "s1_eternum::models::config::MapConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "CapacityConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ICapacityConfig" + }, + { + "type": "enum", + "name": "s1_eternum::models::config::CapacityConfigCategory", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Structure", + "type": "()" + }, + { + "name": "Donkey", + "type": "()" + }, + { + "name": "Army", + "type": "()" + }, + { + "name": "Storehouse", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::config::CapacityConfig", + "members": [ + { + "name": "category", + "type": "s1_eternum::models::config::CapacityConfigCategory" + }, + { + "name": "weight_gram", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ICapacityConfig", + "items": [ + { + "type": "function", + "name": "set_capacity_config", + "inputs": [ + { + "name": "capacity_config", + "type": "s1_eternum::models::config::CapacityConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TravelStaminaCostConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITravelStaminaCostConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITravelStaminaCostConfig", + "items": [ + { + "type": "function", + "name": "set_travel_stamina_cost_config", + "inputs": [ + { + "name": "travel_type", + "type": "core::integer::u8" + }, + { + "name": "cost", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "WeightConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IWeightConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IWeightConfig", + "items": [ + { + "type": "function", + "name": "set_weight_config", + "inputs": [ + { + "name": "entity_type", + "type": "core::integer::u32" + }, + { + "name": "weight_gram", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "BattleConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IBattleConfig" + }, + { + "type": "struct", + "name": "s1_eternum::models::config::BattleConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "regular_immunity_ticks", + "type": "core::integer::u8" + }, + { + "name": "hyperstructure_immunity_ticks", + "type": "core::integer::u8" + }, + { + "name": "battle_delay_seconds", + "type": "core::integer::u64" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IBattleConfig", + "items": [ + { + "type": "function", + "name": "set_battle_config", + "inputs": [ + { + "name": "battle_config", + "type": "s1_eternum::models::config::BattleConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TickConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITickConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITickConfig", + "items": [ + { + "type": "function", + "name": "set_tick_config", + "inputs": [ + { + "name": "tick_id", + "type": "core::integer::u8" + }, + { + "name": "tick_interval_in_seconds", + "type": "core::integer::u64" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "StaminaConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IStaminaConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IStaminaConfig", + "items": [ + { + "type": "function", + "name": "set_stamina_config", + "inputs": [ + { + "name": "unit_type", + "type": "core::integer::u8" + }, + { + "name": "max_stamina", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TravelFoodCostConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITravelFoodCostConfig" + }, + { + "type": "struct", + "name": "s1_eternum::models::config::TravelFoodCostConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "unit_type", + "type": "core::integer::u8" + }, + { + "name": "explore_wheat_burn_amount", + "type": "core::integer::u128" + }, + { + "name": "explore_fish_burn_amount", + "type": "core::integer::u128" + }, + { + "name": "travel_wheat_burn_amount", + "type": "core::integer::u128" + }, + { + "name": "travel_fish_burn_amount", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITravelFoodCostConfig", + "items": [ + { + "type": "function", + "name": "set_travel_food_cost_config", + "inputs": [ + { + "name": "travel_food_cost_config", + "type": "s1_eternum::models::config::TravelFoodCostConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "StaminaRefillConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IStaminaRefillConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IStaminaRefillConfig", + "items": [ + { + "type": "function", + "name": "set_stamina_refill_config", + "inputs": [ + { + "name": "amount_per_tick", + "type": "core::integer::u16" + }, + { + "name": "start_boost_tick_count", + "type": "core::integer::u8" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "LevelingConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ILevelingConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ILevelingConfig", + "items": [ + { + "type": "function", + "name": "set_leveling_config", + "inputs": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "decay_interval", + "type": "core::integer::u64" + }, + { + "name": "max_level", + "type": "core::integer::u64" + }, + { + "name": "decay_scaled", + "type": "core::integer::u128" + }, + { + "name": "cost_percentage_scaled", + "type": "core::integer::u128" + }, + { + "name": "base_multiplier", + "type": "core::integer::u128" + }, + { + "name": "wheat_base_amount", + "type": "core::integer::u128" + }, + { + "name": "fish_base_amount", + "type": "core::integer::u128" + }, + { + "name": "resource_1_costs", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "resource_2_costs", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "resource_3_costs", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "ProductionConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IProductionConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IProductionConfig", + "items": [ + { + "type": "function", + "name": "set_production_config", + "inputs": [ + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "produced_amount", + "type": "core::integer::u128" + }, + { + "name": "labor_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "LaborConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ILaborConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ILaborConfig", + "items": [ + { + "type": "function", + "name": "set_labor_config", + "inputs": [ + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "cost", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TransportConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITransportConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITransportConfig", + "items": [ + { + "type": "function", + "name": "set_speed_config", + "inputs": [ + { + "name": "entity_type", + "type": "core::integer::u32" + }, + { + "name": "sec_per_km", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "HyperstructureConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IHyperstructureConfig" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IHyperstructureConfig", + "items": [ + { + "type": "function", + "name": "set_hyperstructure_config", + "inputs": [ + { + "name": "resources_for_completion", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128, core::integer::u128)>" + }, + { + "name": "time_between_shares_change", + "type": "core::integer::u64" + }, + { + "name": "points_per_cycle", + "type": "core::integer::u128" + }, + { + "name": "points_for_win", + "type": "core::integer::u128" + }, + { + "name": "points_on_completion", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "BankConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IBankConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IBankConfig", + "items": [ + { + "type": "function", + "name": "set_bank_config", + "inputs": [ + { + "name": "lords_cost", + "type": "core::integer::u128" + }, + { + "name": "lp_fee_num", + "type": "core::integer::u128" + }, + { + "name": "lp_fee_denom", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TroopConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITroopConfig" + }, + { + "type": "struct", + "name": "s1_eternum::models::config::TroopConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "health", + "type": "core::integer::u32" + }, + { + "name": "knight_strength", + "type": "core::integer::u8" + }, + { + "name": "paladin_strength", + "type": "core::integer::u8" + }, + { + "name": "crossbowman_strength", + "type": "core::integer::u16" + }, + { + "name": "advantage_percent", + "type": "core::integer::u16" + }, + { + "name": "disadvantage_percent", + "type": "core::integer::u16" + }, + { + "name": "max_troop_count", + "type": "core::integer::u64" + }, + { + "name": "pillage_health_divisor", + "type": "core::integer::u8" + }, + { + "name": "army_free_per_structure", + "type": "core::integer::u8" + }, + { + "name": "army_extra_per_building", + "type": "core::integer::u8" + }, + { + "name": "army_max_per_structure", + "type": "core::integer::u8" + }, + { + "name": "battle_leave_slash_num", + "type": "core::integer::u8" + }, + { + "name": "battle_leave_slash_denom", + "type": "core::integer::u8" + }, + { + "name": "battle_time_scale", + "type": "core::integer::u16" + }, + { + "name": "battle_max_time_seconds", + "type": "core::integer::u64" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITroopConfig", + "items": [ + { + "type": "function", + "name": "set_troop_config", + "inputs": [ + { + "name": "troop_config", + "type": "s1_eternum::models::config::TroopConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "BuildingCategoryPopulationConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IBuildingCategoryPopConfig" + }, + { + "type": "enum", + "name": "s1_eternum::models::resource::production::building::BuildingCategory", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Castle", + "type": "()" + }, + { + "name": "Resource", + "type": "()" + }, + { + "name": "Farm", + "type": "()" + }, + { + "name": "FishingVillage", + "type": "()" + }, + { + "name": "Barracks", + "type": "()" + }, + { + "name": "Market", + "type": "()" + }, + { + "name": "ArcheryRange", + "type": "()" + }, + { + "name": "Stable", + "type": "()" + }, + { + "name": "TradingPost", + "type": "()" + }, + { + "name": "WorkersHut", + "type": "()" + }, + { + "name": "WatchTower", + "type": "()" + }, + { + "name": "Walls", + "type": "()" + }, + { + "name": "Storehouse", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IBuildingCategoryPopConfig", + "items": [ + { + "type": "function", + "name": "set_building_category_pop_config", + "inputs": [ + { + "name": "building_category", + "type": "s1_eternum::models::resource::production::building::BuildingCategory" + }, + { + "name": "population", + "type": "core::integer::u32" + }, + { + "name": "capacity", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "PopulationConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IPopulationConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IPopulationConfig", + "items": [ + { + "type": "function", + "name": "set_population_config", + "inputs": [ + { + "name": "base_population", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "BuildingConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IBuildingConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IBuildingConfig", + "items": [ + { + "type": "function", + "name": "set_building_general_config", + "inputs": [ + { + "name": "base_cost_percent_increase", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_building_config", + "inputs": [ + { + "name": "building_category", + "type": "s1_eternum::models::resource::production::building::BuildingCategory" + }, + { + "name": "building_resource_type", + "type": "core::integer::u8" + }, + { + "name": "cost_of_building", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "IMercenariesConfig", + "interface_name": "s1_eternum::systems::config::contracts::IMercenariesConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IMercenariesConfig", + "items": [ + { + "type": "function", + "name": "set_mercenaries_config", + "inputs": [ + { + "name": "knights_lower_bound", + "type": "core::integer::u64" + }, + { + "name": "knights_upper_bound", + "type": "core::integer::u64" + }, + { + "name": "paladins_lower_bound", + "type": "core::integer::u64" + }, + { + "name": "paladins_upper_bound", + "type": "core::integer::u64" + }, + { + "name": "crossbowmen_lower_bound", + "type": "core::integer::u64" + }, + { + "name": "crossbowmen_upper_bound", + "type": "core::integer::u64" + }, + { + "name": "rewards", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "IResourceBridgeConfig", + "interface_name": "s1_eternum::systems::config::contracts::IResourceBridgeConfig" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::config::ResourceBridgeConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "deposit_paused", + "type": "core::bool" + }, + { + "name": "withdraw_paused", + "type": "core::bool" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::config::ResourceBridgeFeeSplitConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "velords_fee_on_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "velords_fee_on_wtdr_percent", + "type": "core::integer::u16" + }, + { + "name": "season_pool_fee_on_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "season_pool_fee_on_wtdr_percent", + "type": "core::integer::u16" + }, + { + "name": "client_fee_on_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "client_fee_on_wtdr_percent", + "type": "core::integer::u16" + }, + { + "name": "velords_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "season_pool_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "max_bank_fee_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "max_bank_fee_wtdr_percent", + "type": "core::integer::u16" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::config::ResourceBridgeWhitelistConfig", + "members": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IResourceBridgeConfig", + "items": [ + { + "type": "function", + "name": "set_resource_bridge_config", + "inputs": [ + { + "name": "resource_bridge_config", + "type": "s1_eternum::models::config::ResourceBridgeConfig" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_resource_bridge_fee_split_config", + "inputs": [ + { + "name": "resource_bridge_fee_split_config", + "type": "s1_eternum::models::config::ResourceBridgeFeeSplitConfig" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_resource_bridge_whitelist_config", + "inputs": [ + { + "name": "resource_bridge_whitelist_config", + "type": "s1_eternum::models::config::ResourceBridgeWhitelistConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "RealmLevelConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IRealmLevelConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IRealmLevelConfig", + "items": [ + { + "type": "function", + "name": "set_realm_max_level_config", + "inputs": [ + { + "name": "new_max_level", + "type": "core::integer::u8" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_realm_level_config", + "inputs": [ + { + "name": "level", + "type": "core::integer::u8" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "ISettlementConfig", + "interface_name": "s1_eternum::systems::config::contracts::ISettlementConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ISettlementConfig", + "items": [ + { + "type": "function", + "name": "set_settlement_config", + "inputs": [ + { + "name": "center", + "type": "core::integer::u32" + }, + { + "name": "base_distance", + "type": "core::integer::u32" + }, + { + "name": "min_first_layer_distance", + "type": "core::integer::u32" + }, + { + "name": "points_placed", + "type": "core::integer::u32" + }, + { + "name": "current_layer", + "type": "core::integer::u32" + }, + { + "name": "current_side", + "type": "core::integer::u32" + }, + { + "name": "current_point_on_side", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "achievement::components::achievable::AchievableComponent::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::config::contracts::config_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + }, + { + "name": "AchievableEvent", + "type": "achievement::components::achievable::AchievableComponent::Event", + "kind": "flat" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-config_systems", + "selector": "0x4deb9db2b1005876b689d07a98673dacb6beea64ef9f564a19a38228d798204", + "systems": [ + "set_world_config", + "set_season_config", + "set_season_bridge_config", + "set_vrf_config", + "set_quest_config", + "set_quest_reward_config", + "set_map_config", + "set_capacity_config", + "set_travel_stamina_cost_config", + "set_weight_config", + "set_battle_config", + "set_tick_config", + "set_stamina_config", + "set_travel_food_cost_config", + "set_stamina_refill_config", + "set_leveling_config", + "set_production_config", + "set_labor_config", + "set_speed_config", + "set_hyperstructure_config", + "set_bank_config", + "set_troop_config", + "set_building_category_pop_config", + "set_population_config", + "set_building_general_config", + "set_building_config", + "set_mercenaries_config", + "set_resource_bridge_config", + "set_resource_bridge_fee_split_config", + "set_resource_bridge_whitelist_config", + "set_realm_max_level_config", + "set_realm_level_config", + "set_settlement_config", + "upgrade" + ] + }, + { + "address": "0xee829901be444844e0771a0c793b106c3192c312c8e58685f7c6941893b5f9", + "class_hash": "0x5ffed6c73f9f2219e87b2fc6b2a35c14e50c0ee70a0c914b098049ab86ea228", + "abi": [ + { + "type": "impl", + "name": "dev_bank_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "dev_bank_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BankSystemsImpl", + "interface_name": "s1_eternum::systems::dev::contracts::bank::IBankSystems" + }, + { + "type": "struct", + "name": "s1_eternum::models::position::Coord", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::dev::contracts::bank::IBankSystems", + "items": [ + { + "type": "function", + "name": "create_admin_bank", + "inputs": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "coord", + "type": "s1_eternum::models::position::Coord" + }, + { + "name": "owner_fee_num", + "type": "core::integer::u128" + }, + { + "name": "owner_fee_denom", + "type": "core::integer::u128" + }, + { + "name": "owner_bridge_fee_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "owner_bridge_fee_wtdr_percent", + "type": "core::integer::u16" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::dev::contracts::bank::dev_bank_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-dev_bank_systems", + "selector": "0x436d7ef5fa5753c742f95b4fd3a7722399b309251363684474bfcba389fb607", + "systems": [ + "create_admin_bank", + "upgrade" + ] + }, + { + "address": "0x729222a8e3757daec72d37dd434a3a44d3c0bddbec95cf087fb1b983b166b1a", + "class_hash": "0x1b92ab9641011892a0ee9b70dd142bbe52b53bef66ae2ff5e92a20e445375f4", + "abi": [ + { + "type": "impl", + "name": "dev_realm_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "dev_realm_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "DevRealmSystemsImpl", + "interface_name": "s1_eternum::systems::dev::contracts::realm::IDevRealmSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::dev::contracts::realm::IDevRealmSystems", + "items": [ + { + "type": "function", + "name": "create", + "inputs": [ + { + "name": "realm_id", + "type": "core::integer::u32" + }, + { + "name": "frontend", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::dev::contracts::realm::dev_realm_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-dev_realm_systems", + "selector": "0x2a2f52f1a66a15e1e6bee3b5ea2d104bc146e82c1625c5421f6f45c44640824", + "systems": [ + "create", + "upgrade" + ] + }, + { + "address": "0x307080fd4791b42fb76e74d07247eaa9d4601ab683b78b4683d19b0e7616f1b", + "class_hash": "0x1ae4771a978cb4194e36d77c020065b4bf171b1cb46d744bffde32b99347d0f", + "abi": [ + { + "type": "impl", + "name": "dev_resource_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "dev_resource_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ResourceSystemsImpl", + "interface_name": "s1_eternum::systems::dev::contracts::resource::IResourceSystems" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::dev::contracts::resource::IResourceSystems", + "items": [ + { + "type": "function", + "name": "mint", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::dev::contracts::resource::dev_resource_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-dev_resource_systems", + "selector": "0x6125379dcbb305b4f4b955271c3c4d472ece9852c3592d9d38a9fbc63fe9025", + "systems": [ + "mint", + "upgrade" + ] + }, + { + "address": "0x68a2cb801dc504acb121c7609d13f1f4bea6739dc80c31d789868ebda339067", + "class_hash": "0x2727b507b2d724b109bc2f969ccb090ee75e78b4c0d2d685e5e8cbce47f07f7", + "abi": [ + { + "type": "impl", + "name": "donkey_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "donkey_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::transport::contracts::donkey_systems::donkey_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-donkey_systems", + "selector": "0x76a0f4e4cdc01c969350b612c38d49d38689d5fde54e4afb3205a4629db83b6", + "systems": [ + "upgrade" + ] + }, + { + "address": "0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4", + "class_hash": "0x2107679161457e3f08fcd5bbb8f8473983e5c8b3c48c1ef67840958e994547c", + "abi": [ + { + "type": "impl", + "name": "guild_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "guild_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "GuildSystemsImpl", + "interface_name": "s1_eternum::systems::guild::contracts::IGuildSystems" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::guild::contracts::IGuildSystems", + "items": [ + { + "type": "function", + "name": "create_guild", + "inputs": [ + { + "name": "is_public", + "type": "core::bool" + }, + { + "name": "guild_name", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "join_guild", + "inputs": [ + { + "name": "guild_entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "whitelist_player", + "inputs": [ + { + "name": "player_address_to_whitelist", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "guild_entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "transfer_guild_ownership", + "inputs": [ + { + "name": "guild_entity_id", + "type": "core::integer::u32" + }, + { + "name": "to_player_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "remove_guild_member", + "inputs": [ + { + "name": "player_address_to_remove", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "remove_player_from_whitelist", + "inputs": [ + { + "name": "player_address_to_remove", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "guild_entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::guild::contracts::guild_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-guild_systems", + "selector": "0x6b2e6f3912853c9745b74266fe1d344bfe8ba99561982c5b4c3ac0e081f956b", + "systems": [ + "create_guild", + "join_guild", + "whitelist_player", + "transfer_guild_ownership", + "remove_guild_member", + "remove_player_from_whitelist", + "upgrade" + ] + }, + { + "address": "0x49db643bbe9557daf31efd0d753c209ef5cf7febcb050fa3b6ac94d20f95e23", + "class_hash": "0x4d90b47d492b438e4c43d610da56628ef3c4a39414062202693adef16757f43", + "abi": [ + { + "type": "impl", + "name": "hyperstructure_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "hyperstructure_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "HyperstructureSystemsImpl", + "interface_name": "s1_eternum::systems::hyperstructure::contracts::IHyperstructureSystems" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u32, core::integer::u16)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u32, core::integer::u16)>" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::position::Coord", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>" + } + ] + }, + { + "type": "enum", + "name": "s1_eternum::models::hyperstructure::Access", + "variants": [ + { + "name": "Public", + "type": "()" + }, + { + "name": "Private", + "type": "()" + }, + { + "name": "GuildOnly", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::hyperstructure::contracts::IHyperstructureSystems", + "items": [ + { + "type": "function", + "name": "get_points", + "inputs": [ + { + "name": "player_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "hyperstructures_contributed_to", + "type": "core::array::Span::" + }, + { + "name": "hyperstructure_shareholder_epochs", + "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" + } + ], + "outputs": [ + { + "type": "(core::integer::u128, core::integer::u128, core::integer::u128, core::integer::u128)" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "create", + "inputs": [ + { + "name": "creator_entity_id", + "type": "core::integer::u32" + }, + { + "name": "coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "contribute_to_construction", + "inputs": [ + { + "name": "hyperstructure_entity_id", + "type": "core::integer::u32" + }, + { + "name": "contributor_entity_id", + "type": "core::integer::u32" + }, + { + "name": "contributions", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_co_owners", + "inputs": [ + { + "name": "hyperstructure_entity_id", + "type": "core::integer::u32" + }, + { + "name": "co_owners", + "type": "core::array::Span::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "end_game", + "inputs": [ + { + "name": "hyperstructures_contributed_to", + "type": "core::array::Span::" + }, + { + "name": "hyperstructure_shareholder_epochs", + "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_access", + "inputs": [ + { + "name": "hyperstructure_entity_id", + "type": "core::integer::u32" + }, + { + "name": "access", + "type": "s1_eternum::models::hyperstructure::Access" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::hyperstructure::contracts::hyperstructure_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-hyperstructure_systems", + "selector": "0x44f825ffb89246cbeda203107846db0efad60bbedb24dc67dbd4a42593e6c82", + "systems": [ + "get_points", + "create", + "contribute_to_construction", + "set_co_owners", + "end_game", + "set_access", + "upgrade" + ] + }, + { + "address": "0x2e025f19895cbb4f9fd2ca441c16ff9c79883d9c8aba65aed04719c9914be5", + "class_hash": "0xc4d330fb90c925dc955acf07d31aac9117fc6e1e395e7ad5c176d5ef6f162c", + "abi": [ + { + "type": "impl", + "name": "liquidity_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "liquidity_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "LiquiditySystemsImpl", + "interface_name": "s1_eternum::systems::bank::contracts::liquidity::ILiquiditySystems" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "cubit::f128::types::fixed::Fixed", + "members": [ + { + "name": "mag", + "type": "core::integer::u128" + }, + { + "name": "sign", + "type": "core::bool" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::bank::contracts::liquidity::ILiquiditySystems", + "items": [ + { + "type": "function", + "name": "add", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "resource_amount", + "type": "core::integer::u128" + }, + { + "name": "lords_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "remove", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "shares", + "type": "cubit::f128::types::fixed::Fixed" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::bank::contracts::liquidity::liquidity_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-liquidity_systems", + "selector": "0x3cc30307c653c6c1ba1a6e99364f57c94360b8f73787d1518eaab02e9d0d6b", + "systems": [ + "add", + "remove", + "upgrade" + ] + }, + { + "address": "0x58ac8650760361b31b4b5bf48d158fde038c4f9c28bc91dca3513dfe2435a48", + "class_hash": "0x43006776e4cc65a3f69ec5f1600f1c58a9e5c4e85dcbb240e543f642f71096a", + "abi": [ + { + "type": "impl", + "name": "map_generation_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "map_generation_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "MapGenerationSystemsImpl", + "interface_name": "s1_eternum::systems::map::map_generation::IMapGenerationSystems" + }, + { + "type": "struct", + "name": "s1_eternum::models::owner::EntityOwner", + "members": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_owner_id", + "type": "core::integer::u32" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::position::Coord", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "core::integer::u256", + "members": [ + { + "name": "low", + "type": "core::integer::u128" + }, + { + "name": "high", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::map::map_generation::IMapGenerationSystems", + "items": [ + { + "type": "function", + "name": "discover_shards_mine", + "inputs": [ + { + "name": "unit_entity_owner", + "type": "s1_eternum::models::owner::EntityOwner" + }, + { + "name": "coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "add_mercenaries_to_structure", + "inputs": [ + { + "name": "randomness", + "type": "core::integer::u256" + }, + { + "name": "structure_entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::map::map_generation::map_generation_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-map_generation_systems", + "selector": "0x29daec1bf7e70863ae1f9a4b455a1e12030394562eb21b214c9037f9fb71424", + "systems": [ + "discover_shards_mine", + "add_mercenaries_to_structure", + "upgrade" + ] + }, + { + "address": "0x1d75cae93cadd00f7e917549aeb103be0316e5aa515e9a3c5b950306d40d402", + "class_hash": "0x33cb596c0b6664436780c838a97fd00046dd71f8be5bed812d4ff1fe480faf9", + "abi": [ + { + "type": "impl", + "name": "map_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "map_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "MapSystemsImpl", + "interface_name": "s1_eternum::systems::map::contracts::IMapSystems" + }, + { + "type": "enum", + "name": "s1_eternum::models::position::Direction", + "variants": [ + { + "name": "East", + "type": "()" + }, + { + "name": "NorthEast", + "type": "()" + }, + { + "name": "NorthWest", + "type": "()" + }, + { + "name": "West", + "type": "()" + }, + { + "name": "SouthWest", + "type": "()" + }, + { + "name": "SouthEast", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::map::contracts::IMapSystems", + "items": [ + { + "type": "function", + "name": "explore", + "inputs": [ + { + "name": "unit_id", + "type": "core::integer::u32" + }, + { + "name": "direction", + "type": "s1_eternum::models::position::Direction" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::map::contracts::map_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-map_systems", + "selector": "0x27a92961f46c5ac43e19fa2b7d50d169c2776dbb98478a96a8a3050647431cd", + "systems": [ + "explore", + "upgrade" + ] + }, + { + "address": "0x7e3bae0e253a0131063b63ee4d7b27b50329c617ae88b82d529a70f1a11c63", + "class_hash": "0x288d58cd0a2fa003e18768537e62f72649c451a647fd704096a4b1dae4bdcae", + "abi": [ + { + "type": "impl", + "name": "name_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "name_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "NameSystemsImpl", + "interface_name": "s1_eternum::systems::name::contracts::INameSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::name::contracts::INameSystems", + "items": [ + { + "type": "function", + "name": "set_address_name", + "inputs": [ + { + "name": "name", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_entity_name", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "name", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::name::contracts::name_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-name_systems", + "selector": "0x57061191efce4db08b753f5d6119a16595a3ac2b91db70e971630c34ff5e16e", + "systems": [ + "set_address_name", + "set_entity_name", + "upgrade" + ] + }, + { + "address": "0x30516789ee1b822d7b448f01be67cec7bf383d3ac4b2380a09f85ad0765f846", + "class_hash": "0x1896883a09bb110c705be2685eacb0b0e6ae67fde76602982f7f32daceb7fa7", + "abi": [ + { + "type": "impl", + "name": "ownership_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "ownership_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "OwnershipSystemsImpl", + "interface_name": "s1_eternum::systems::ownership::contracts::IOwnershipSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::ownership::contracts::IOwnershipSystems", + "items": [ + { + "type": "function", + "name": "transfer_ownership", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "new_owner", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::ownership::contracts::ownership_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-ownership_systems", + "selector": "0x419b9f1d9d3cbe8dd78cb553b0e1895fa2d3cfb9e7e578866056fca72f9108b", + "systems": [ + "transfer_ownership", + "upgrade" + ] + }, + { + "address": "0x11fb20f4742dd6a0f6de3113140f162824367c32410b2c1c7c6a62c334f4465", + "class_hash": "0x117c75b4ceb735f2a7b8619866ac5646f7e6b829b47ab661ecdf0411fa80e97", + "abi": [ + { + "type": "impl", + "name": "production_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "production_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ProductionContractImpl", + "interface_name": "s1_eternum::systems::production::contracts::IProductionContract" + }, + { + "type": "enum", + "name": "s1_eternum::models::position::Direction", + "variants": [ + { + "name": "East", + "type": "()" + }, + { + "name": "NorthEast", + "type": "()" + }, + { + "name": "NorthWest", + "type": "()" + }, + { + "name": "West", + "type": "()" + }, + { + "name": "SouthWest", + "type": "()" + }, + { + "name": "SouthEast", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "s1_eternum::models::resource::production::building::BuildingCategory", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Castle", + "type": "()" + }, + { + "name": "Resource", + "type": "()" + }, + { + "name": "Farm", + "type": "()" + }, + { + "name": "FishingVillage", + "type": "()" + }, + { + "name": "Barracks", + "type": "()" + }, + { + "name": "Market", + "type": "()" + }, + { + "name": "ArcheryRange", + "type": "()" + }, + { + "name": "Stable", + "type": "()" + }, + { + "name": "TradingPost", + "type": "()" + }, + { + "name": "WorkersHut", + "type": "()" + }, + { + "name": "WatchTower", + "type": "()" + }, + { + "name": "Walls", + "type": "()" + }, + { + "name": "Storehouse", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "core::option::Option::", + "variants": [ + { + "name": "Some", + "type": "core::integer::u8" + }, + { + "name": "None", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::position::Coord", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::production::contracts::IProductionContract", + "items": [ + { + "type": "function", + "name": "create_building", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "directions", + "type": "core::array::Span::" + }, + { + "name": "building_category", + "type": "s1_eternum::models::resource::production::building::BuildingCategory" + }, + { + "name": "produce_resource_type", + "type": "core::option::Option::" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "destroy_building", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "building_coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "pause_building_production", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "building_coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "resume_building_production", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "building_coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "make_production_labor", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "labor_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "burn_production_labor", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "labor_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::production::contracts::production_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-production_systems", + "selector": "0x3a77cbb8431a07abf2872ee61e8941c594c6455bd76143ef8222e2bb02d6faf", + "systems": [ + "create_building", + "destroy_building", + "pause_building_production", + "resume_building_production", + "make_production_labor", + "burn_production_labor", + "upgrade" + ] + }, + { + "address": "0x13c118237c33b68a4f583f58cbb4f622c66b1e6afa99a5be329e6f26ea4775", + "class_hash": "0x474c4ff6f76937c10a58d542abd39366d78062432f39e72bdfba6ec7edbc147", + "abi": [ + { + "type": "impl", + "name": "realm_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "realm_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "RealmSystemsImpl", + "interface_name": "s1_eternum::systems::realm::contracts::IRealmSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::realm::contracts::IRealmSystems", + "items": [ + { + "type": "function", + "name": "create", + "inputs": [ + { + "name": "owner", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "realm_id", + "type": "core::integer::u32" + }, + { + "name": "frontend", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "upgrade_level", + "inputs": [ + { + "name": "realm_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "quest_claim", + "inputs": [ + { + "name": "quest_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::realm::contracts::realm_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-realm_systems", + "selector": "0x6ae6691704d5df34326545ad7d15afebdd83066596af8c0dcb5d216d1ede909", + "systems": [ + "create", + "upgrade_level", + "quest_claim", + "upgrade" + ] + }, + { + "address": "0x3e5ff980675bf1265c3a9bd1465dbb8029a5c51e7d25cfaa0c634eca06788c0", + "class_hash": "0x2abcf356dc9c580a4d6b9967b10d9623f5503f9a92790ad46cd7ad4f24d3c49", + "abi": [ + { + "type": "impl", + "name": "resource_bridge_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "resource_bridge_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ResourceBridgeImpl", + "interface_name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems" + }, + { + "type": "struct", + "name": "core::integer::u256", + "members": [ + { + "name": "low", + "type": "core::integer::u128" + }, + { + "name": "high", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems", + "items": [ + { + "type": "function", + "name": "deposit_initial", + "inputs": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "recipient_realm_id", + "type": "core::integer::u32" + }, + { + "name": "amount", + "type": "core::integer::u256" + }, + { + "name": "client_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "deposit", + "inputs": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "through_bank_id", + "type": "core::integer::u32" + }, + { + "name": "recipient_realm_id", + "type": "core::integer::u32" + }, + { + "name": "amount", + "type": "core::integer::u256" + }, + { + "name": "client_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "start_withdraw", + "inputs": [ + { + "name": "through_bank_id", + "type": "core::integer::u32" + }, + { + "name": "from_realm_id", + "type": "core::integer::u32" + }, + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "finish_withdraw", + "inputs": [ + { + "name": "through_bank_id", + "type": "core::integer::u32" + }, + { + "name": "from_entity_id", + "type": "core::integer::u32" + }, + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "recipient_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "client_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::resource_bridge_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-resource_bridge_systems", + "selector": "0x5916a4c5e4fb7f1105244015fcc1e9950efab35919af199a4a2c1aef2c3aa61", + "systems": [ + "deposit_initial", + "deposit", + "start_withdraw", + "finish_withdraw", + "upgrade" + ] + }, + { + "address": "0x1ca0dd377a30b23e3d5d13d4db04dd53650c0216c23385db7f59410a28f446e", + "class_hash": "0x18274bc5d90f9638268e6cd7ee82f9cd1c201ee09d04936b3b0b401b33316a2", + "abi": [ + { + "type": "impl", + "name": "resource_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "resource_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ResourceSystemsImpl", + "interface_name": "s1_eternum::systems::resources::contracts::resource_systems::IResourceSystems" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::resources::contracts::resource_systems::IResourceSystems", + "items": [ + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "recipient_entity_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "send", + "inputs": [ + { + "name": "sender_entity_id", + "type": "core::integer::u32" + }, + { + "name": "recipient_entity_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "pickup", + "inputs": [ + { + "name": "recipient_entity_id", + "type": "core::integer::u32" + }, + { + "name": "owner_entity_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::resources::contracts::resource_systems::resource_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-resource_systems", + "selector": "0x31e8be63af9c072934c219dd6cbd2fea3b49fce2311adceb8a8a8870a760b62", + "systems": [ + "approve", + "send", + "pickup", + "upgrade" + ] + }, + { + "address": "0x11cda9e4d71ff79447152bd0081a0a611a81580199ad2722a6bc846493dcf21", + "class_hash": "0x9621841c4e410eb3d47a12a1cf0faade35402936b3939e4177e9a31d2786ba", + "abi": [ + { + "type": "impl", + "name": "season_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "season_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "SeasonSystemsImpl", + "interface_name": "s1_eternum::systems::season::contracts::ISeasonSystems" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u32, core::integer::u16)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u32, core::integer::u16)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::season::contracts::ISeasonSystems", + "items": [ + { + "type": "function", + "name": "register_to_leaderboard", + "inputs": [ + { + "name": "hyperstructures_contributed_to", + "type": "core::array::Span::" + }, + { + "name": "hyperstructure_shareholder_epochs", + "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "claim_leaderboard_rewards", + "inputs": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::season::contracts::season_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-season_systems", + "selector": "0x384e61da11b2e476dc992c9556f8d1d42814136a36400b5cb34175de183ac9", + "systems": [ + "register_to_leaderboard", + "claim_leaderboard_rewards", + "upgrade" + ] + }, + { + "address": "0xad2497bc1ab2f553880ed9177205f5a11d43c9700e48e6b2d5a077f8e30b46", + "class_hash": "0x1c83cf51cc23f95245b6ad9da84b939c9452722a2d56c5af4b58d3fce40cae4", + "abi": [ + { + "type": "impl", + "name": "swap_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "swap_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "SwapSystemsImpl", + "interface_name": "s1_eternum::systems::bank::contracts::swap::ISwapSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::bank::contracts::swap::ISwapSystems", + "items": [ + { + "type": "function", + "name": "buy", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "amount", + "type": "core::integer::u128" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "sell", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "amount", + "type": "core::integer::u128" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::bank::contracts::swap::swap_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-swap_systems", + "selector": "0x14a06d11e0f26724e8e61c141842f95425009d07620b3c369f9f517d568e591", + "systems": [ + "buy", + "sell", + "upgrade" + ] + }, + { + "address": "0x21b4abad8d9d0b141ad9a5520bdd952f0668d2c5e57cca372251faae16330f7", + "class_hash": "0x18adbc75988a8338394488b0060703ad375879483fc98d0443a22caf03c9edb", + "abi": [ + { + "type": "impl", + "name": "trade_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "trade_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "TradeSystemsImpl", + "interface_name": "s1_eternum::systems::trade::contracts::trade_systems::ITradeSystems" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::trade::contracts::trade_systems::ITradeSystems", + "items": [ + { + "type": "function", + "name": "create_order", + "inputs": [ + { + "name": "maker_id", + "type": "core::integer::u32" + }, + { + "name": "maker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "taker_id", + "type": "core::integer::u32" + }, + { + "name": "taker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "expires_at", + "type": "core::integer::u64" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "accept_order", + "inputs": [ + { + "name": "taker_id", + "type": "core::integer::u32" + }, + { + "name": "trade_id", + "type": "core::integer::u32" + }, + { + "name": "maker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "taker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "accept_partial_order", + "inputs": [ + { + "name": "taker_id", + "type": "core::integer::u32" + }, + { + "name": "trade_id", + "type": "core::integer::u32" + }, + { + "name": "maker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "taker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "taker_gives_actual_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "cancel_order", + "inputs": [ + { + "name": "trade_id", + "type": "core::integer::u32" + }, + { + "name": "return_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::trade::contracts::trade_systems::trade_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-trade_systems", + "selector": "0x5272cd9b34062cb8bd8ec92ecca87f92a884d4bd2f5bf6c563265a018ac22a5", + "systems": [ + "create_order", + "accept_order", + "accept_partial_order", + "cancel_order", + "upgrade" + ] + }, + { + "address": "0x303f3d052ee80edf5c82f3dde037715e8b6577e3d272caf1344f53eb1246612", + "class_hash": "0x7473c801f429284cdbba4b78978d1a898b75e09c8c162c447cf68da8e620f38", + "abi": [ + { + "type": "impl", + "name": "travel_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "travel_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "TravelSystemsImpl", + "interface_name": "s1_eternum::systems::transport::contracts::travel_systems::ITravelSystems" + }, + { + "type": "enum", + "name": "s1_eternum::models::position::Direction", + "variants": [ + { + "name": "East", + "type": "()" + }, + { + "name": "NorthEast", + "type": "()" + }, + { + "name": "NorthWest", + "type": "()" + }, + { + "name": "West", + "type": "()" + }, + { + "name": "SouthWest", + "type": "()" + }, + { + "name": "SouthEast", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::transport::contracts::travel_systems::ITravelSystems", + "items": [ + { + "type": "function", + "name": "travel_hex", + "inputs": [ + { + "name": "travelling_entity_id", + "type": "core::integer::u32" + }, + { + "name": "directions", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::transport::contracts::travel_systems::travel_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-travel_systems", + "selector": "0x4928d4294639e944ff93869e10cee7533ffd910f5791fc486c04b91f2fcf8fe", + "systems": [ + "travel_hex", + "upgrade" + ] + }, + { + "address": "0x112f75317324bc053eeb1e0bd581942c7a94c6e219d2773f35f5c4bb7e5eea2", + "class_hash": "0x13df0206567ef6f323a2aa4abd00e7d043b9e87f87e73a42e411b2db8d2ffce", + "abi": [ + { + "type": "impl", + "name": "troop_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "troop_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "TroopContractImpl", + "interface_name": "s1_eternum::systems::combat::contracts::troop_systems::ITroopContract" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::Troops", + "members": [ + { + "name": "knight_count", + "type": "core::integer::u64" + }, + { + "name": "paladin_count", + "type": "core::integer::u64" + }, + { + "name": "crossbowman_count", + "type": "core::integer::u64" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::combat::contracts::troop_systems::ITroopContract", + "items": [ + { + "type": "function", + "name": "army_create", + "inputs": [ + { + "name": "army_owner_id", + "type": "core::integer::u32" + }, + { + "name": "is_defensive_army", + "type": "core::bool" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "army_delete", + "inputs": [ + { + "name": "army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "army_buy_troops", + "inputs": [ + { + "name": "army_id", + "type": "core::integer::u32" + }, + { + "name": "payer_id", + "type": "core::integer::u32" + }, + { + "name": "troops", + "type": "s1_eternum::models::combat::Troops" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "army_merge_troops", + "inputs": [ + { + "name": "from_army_id", + "type": "core::integer::u32" + }, + { + "name": "to_army_id", + "type": "core::integer::u32" + }, + { + "name": "troops", + "type": "s1_eternum::models::combat::Troops" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::combat::contracts::troop_systems::troop_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-troop_systems", + "selector": "0x5f97ab78613558d9346649708e6829b417ad55826ba2e4f7b0fc79ad276180a", + "systems": [ + "army_create", + "army_delete", + "army_buy_troops", + "army_merge_troops", + "upgrade" + ] + } + ], + "models": [ + { + "members": [], + "class_hash": "0x25603f4597c7b9476318af1bf26c9e0f9f7a3f24b8aa4fd4aa095289c74e2bb", + "tag": "s1_eternum-AddressName", + "selector": "0x2a33e6e963e8f80fb8f00a69a8b55ec9834adda81bbb305024500c4b4356e24" + }, + { + "members": [], + "class_hash": "0x7c8598486eb6f5bc890ccac17cc5c4f7400998f5c50247d90e5df0f643f9f2b", + "tag": "s1_eternum-Army", + "selector": "0x34cab5fd09c4f5f5b8624e52c883afec2462c2fc2e7227121f70de648e68dcc" + }, + { + "members": [], + "class_hash": "0x7833dddc0296ff97ec9f1dc202d471ed80888935579f156737927c9207e0417", + "tag": "s1_eternum-ArrivalTime", + "selector": "0xd334451a97858d6173423408cd0c4da2a3878f6ec4f3909e134193d07682c4" + }, + { + "members": [], + "class_hash": "0x189b3d6d05402af89cfefc45b6c6ce579ab81ee7da7cce1fdf08ecb881de732", + "tag": "s1_eternum-Bank", + "selector": "0x6f71dd64e5e14a5ab47d15cfabd84490061490c8c203993790f30cafd5d117e" + }, + { + "members": [], + "class_hash": "0xa7a02d408072e5f97ebf3f0d69acb4fb176223379091948a452c10c314a0d2", + "tag": "s1_eternum-BankConfig", + "selector": "0x2a507ce5bff2ddf50eced9c753dc0a160ba64fc6efe3be4cb26ce51210e2b81" + }, + { + "members": [], + "class_hash": "0x809fe36ec53a3cfa77f64648430007c5bc0bb148c31652b3956bb318a8f7ae", + "tag": "s1_eternum-Battle", + "selector": "0x28394f9c3c874b586a25bf96d137256eab0a702fc3f66aa83464a5a0e062172" + }, + { + "members": [], + "class_hash": "0x715169dd601b742605451b231c47de8970be609fb85f48115b01333766bedf4", + "tag": "s1_eternum-BattleConfig", + "selector": "0x224e4f9b37ed3d9cc06297ea8507e62538b864a92232f0ec53a4c7a4cf6ccfd" + }, + { + "members": [], + "class_hash": "0x5a87072c500c421ec08026f486175327cbf8f35b6797f5cc045a7e372e63d6e", + "tag": "s1_eternum-Building", + "selector": "0x74f3912ea921e93e11f5c8267c29d94f367b3c52840c0ec93292ff5d2374d6c" + }, + { + "members": [], + "class_hash": "0x48e8c8797f3711aaedddf2aa729d78d41cc81172300077548359fdad8cfad3d", + "tag": "s1_eternum-BuildingCategoryPopConfig", + "selector": "0x7713338d5bb53067dd8a10c158385c2744d0dfba8260ddb0658394359b6b5e2" + }, + { + "members": [], + "class_hash": "0x42c28ee06acb3b9279acf780f347d9e93cfe7e792aab26966d6e2865cad9214", + "tag": "s1_eternum-BuildingConfig", + "selector": "0x1f8462fbfd271244b0144b93124ee213e9ef6edec50e6fc4b0ea41d2b756d87" + }, + { + "members": [], + "class_hash": "0x2fdd5ae262983f3645779ab454a188dd555dcbc3dc3ceb438bf1ee7958b6c5f", + "tag": "s1_eternum-BuildingGeneralConfig", + "selector": "0x1fc4af90bddbc3edb2446f5839d3274131bd7023a2bde3aeddbe29769c0be84" + }, + { + "members": [], + "class_hash": "0x7941dd9a080f955665119b95efafe138e70f5d69530c35cc52020325f4070b9", + "tag": "s1_eternum-BuildingQuantityv2", + "selector": "0xe74ab1d939c8b4763331ecee9187cc91e4a363228e596e0a655667aeedb117" + }, + { + "members": [], + "class_hash": "0x6cafd04dceeb148a4f3cdb0fc76083c74677f11a046f3be2a50cc22279a8074", + "tag": "s1_eternum-CapacityCategory", + "selector": "0x166cc667881fc0d333660d7668601cf536082cc577b720cea8be0f24549473c" + }, + { + "members": [], + "class_hash": "0x3a19b4d090591b5be5a300e1fd02e3b0d52bc20b30b47d7a0255a48a678e29d", + "tag": "s1_eternum-CapacityConfig", + "selector": "0x4bb69cf85cfa897830312e40bb75ab1c0f58c01cbbadf4e835ee5fa37d1bb2e" + }, + { + "members": [], + "class_hash": "0x105a94789b0a8342a90b8878fa4f06553af01b9416d86a0a80d65fc169d3092", + "tag": "s1_eternum-Contribution", + "selector": "0x48fb552387fed5f3f7bcb55468f85ac92efeb06817e5f5e329358b69b4a7d6" + }, + { + "members": [], + "class_hash": "0x6df9258e6f5c08cfe8cedd415dba12448c3405df370e1c94d114225c8d53d6b", + "tag": "s1_eternum-DetachedResource", + "selector": "0x34cc163b0f7a78e671da441bbbfe6dd3632f7f62cbee8e1734c6dec2971478c" + }, + { + "members": [], + "class_hash": "0x71b9c7843ab6be7de6ade56f21be309f9bf08a6e4fc33318dd9f43307e1008", + "tag": "s1_eternum-EntityName", + "selector": "0x4ea8f072e356080ed18f016cbb7f0c43807c733d037c3ad9e52da5fd98e11f0" + }, + { + "members": [], + "class_hash": "0x2d0dd3c37fa25edc072c4fd231c6ec51dbed2ea0304a334a8b47568d9a1ec4f", + "tag": "s1_eternum-EntityOwner", + "selector": "0x19fbc5ce760d680c185bbefb04a4b1870a4f23bc8fda0fbf77b4a241b7ce04a" + }, + { + "members": [], + "class_hash": "0x76ab75f20ec824383b34afe1315ec9e59fe9f23599086b354f43e3c08aa8e24", + "tag": "s1_eternum-Epoch", + "selector": "0x62827d2605e74e8c4ea2f40a6407477a0eae355a2e6485261acbc95e3219fc3" + }, + { + "members": [], + "class_hash": "0x22001c3a27555a192b0a134e76a443707ca89af8fb7a01265473cd609b04a41", + "tag": "s1_eternum-Guild", + "selector": "0x49ac80c25fa65d45250f4dd7a253dd79561a9460e108c173aa413ef246c3e6b" + }, + { + "members": [], + "class_hash": "0x2ba8f917f23ee021008384816f0ad038a1cae8b004c53e18f6bac455ec9efa6", + "tag": "s1_eternum-GuildMember", + "selector": "0x517c08e6a498a5a56742edce432fd533bc4cb16589acf1bb025999a5cec0e66" + }, + { + "members": [], + "class_hash": "0x2f72606313ed3fca8c1d6ec0257466e6b9301cc9fba8ec67d114f7fab0dc23a", + "tag": "s1_eternum-GuildWhitelist", + "selector": "0x5da3d8f80bab03feaa3c5158e1e4584b6b5e213a0feb4d4125798f73b4a528a" + }, + { + "members": [], + "class_hash": "0x111b1a81032822367c6d57b2fe7b2baaaf8304ec0f8075bda6dd83b0827f35d", + "tag": "s1_eternum-Health", + "selector": "0x1aa97583b6abc29f779ed14e03d820d29e64168389ca94367abf35ea7f103a1" + }, + { + "members": [], + "class_hash": "0x6277bc0b34ccf11b00b086ca2c7e83a5ac144532b6b4f843caddfcf01c02327", + "tag": "s1_eternum-Hyperstructure", + "selector": "0x5a47c8b59e367cc045b847bd4f63955ceeeffbc43055ecd11d2d77796bddd73" + }, + { + "members": [], + "class_hash": "0x1f90aa30d9d5d978f71b991daa57bc5ce51070034c3c3749c3378eae720e1b5", + "tag": "s1_eternum-HyperstructureConfig", + "selector": "0x538fcd59a65ece056337c3f4563a41b0922e14c0892d9e0f2e9980716487be3" + }, + { + "members": [], + "class_hash": "0x4f85a565011171be648bda2095b1448773804f29d967448aa2fa81554cbfab1", + "tag": "s1_eternum-HyperstructureResourceConfig", + "selector": "0x3841ccb4835caa2dd2433ed893d593a63d74afea4ec67eccb905df41d6b95b1" + }, + { + "members": [], + "class_hash": "0x2a1a2073e89fb80b9b141aef8c9c01c4d559005f4861e8e8340ecab5afc7232", + "tag": "s1_eternum-LaborConfig", + "selector": "0x64275c9f3052fd539cb5039a789a08f23cb65d6a4f4f49c89a5ef944534162e" + }, + { + "members": [], + "class_hash": "0x7dfe538eaecf8e98fc578ef98c8766c050d1e6fd853f2a663a42d99813b4e23", + "tag": "s1_eternum-Leaderboard", + "selector": "0x2feedf0fc0a7bb2c53a51fee44e1c8a2cbf182ed000b57865c108eaaa463bcf" + }, + { + "members": [], + "class_hash": "0x792ff7a8ffffbaff0859d84e2d87ee5a71996bfeb349248cbf63d7dd1b8a1f4", + "tag": "s1_eternum-LeaderboardEntry", + "selector": "0x446f6cb1881e354935007b6a51033216f2f66cab52573d1bb2a03d7bc7fb4fb" + }, + { + "members": [], + "class_hash": "0x3d74e8cac527985922387788dbf8d902a90ae15d21468719ba2d5f7b74cc881", + "tag": "s1_eternum-LeaderboardRegisterContribution", + "selector": "0x751fee2d8620c3b1f24b201044ac4414a808e5cc57cbf99b305a66ac3dc6334" + }, + { + "members": [], + "class_hash": "0x671185f10d3a8d6917e10b6c8686fbc556755e8eb7fe8b871e9660db26a16db", + "tag": "s1_eternum-LeaderboardRegisterShare", + "selector": "0x2781c647b95b04aba3e293318e83e5ab139e95a13630336badd83197225f679" + }, + { + "members": [], + "class_hash": "0x6a6b0e38324523a4d7c9406ad059adc0244353ae86fdb28589419643152d42a", + "tag": "s1_eternum-LeaderboardRegistered", + "selector": "0x3d2cbb167883a8ff584dad6276fc1df0b7757d5e2282f1658d746a8c936116b" + }, + { + "members": [], + "class_hash": "0x19baf80e6ba59bfb8c94643f2ed7c15e902d00d313ac92c90f4071e3ddf0129", + "tag": "s1_eternum-LeaderboardRewardClaimed", + "selector": "0xc7744e31a4ae5a2f24008b6147fac5c735bfa7fc4bbff8224f2833f73a8e93" + }, + { + "members": [], + "class_hash": "0x1a812bd54f7a074e8a1289ab1d7e41e659ef15c607d934abfeda35d987a834", + "tag": "s1_eternum-LevelingConfig", + "selector": "0x57307c2d18e8c1e060fcb4cc9d63ce0abfa90f9e9bca63f00fb08a8b6a6584d" + }, + { + "members": [], + "class_hash": "0x465e09976306288f9d5ba76464636aa3570b50d3dd537e62df642524007eab8", + "tag": "s1_eternum-Liquidity", + "selector": "0x88855562f77d4da524f33db24ad881dd1c3b4d809fa37d2508b5ab1fd4310e" + }, + { + "members": [], + "class_hash": "0x3acaf90122ee7bec0d7e0c29b9d227fb3f7576661157acf5817d2875acdeb24", + "tag": "s1_eternum-MapConfig", + "selector": "0x1c44934bf878736b0ffd224a4d0065ca92072daa6e846de657f58b7b5a4374a" + }, + { + "members": [], + "class_hash": "0x1c99e7ffe68d55ac3fc421eb979fd5d7d197d6dc99cc8893fcaae5abbaedfa9", + "tag": "s1_eternum-Market", + "selector": "0x18457324069342b71d49b485b3b2ced814726c5a978581a172dd806de3d9bac" + }, + { + "members": [], + "class_hash": "0x16eef0d1d4096a35efebc74a9c8254cb8c1af27a8c7d22fda96edc796b4cdac", + "tag": "s1_eternum-MercenariesConfig", + "selector": "0x7983d4a611b82abb59e4320d8032fcb84f3c372c60c83a01d680f14f64bd3c6" + }, + { + "members": [], + "class_hash": "0x247307d7e5299e6b3ce6377a08a9d41497229eaa6a9e591858d0a088c61af4a", + "tag": "s1_eternum-Message", + "selector": "0x3262fb0b2f51323ea7116e1ef4735a6e1be97bc86bbe19fcba298d0edfa0c5c" + }, + { + "members": [], + "class_hash": "0x355984d124ab086115f9b6855c05a7c6ab416e01a45e57a08e13b28ec7db02d", + "tag": "s1_eternum-Movable", + "selector": "0x354103241a35f6b87bb0e9c4ac055975dd5324a93ab74b5b30edcce0067c59" + }, + { + "members": [], + "class_hash": "0x51b6a84422ddfda104af1cb45bbce0609edd265d2b909237ec37dc7aa5a2afd", + "tag": "s1_eternum-Orders", + "selector": "0x2b8ed5e03d3934c534f66fc8194cd3cc112003028691019c9d1dd5ceacf6bc" + }, + { + "members": [], + "class_hash": "0x679efc4b50ec8cdaeb215964fbbcef65e6f1ca8b9eadde20fe8d5b30acd0379", + "tag": "s1_eternum-OwnedResourcesTracker", + "selector": "0x50b64757716328c2639f72f641130df11177b01695167ec2ffb63f4c5ac8c93" + }, + { + "members": [], + "class_hash": "0x6943ea1c8aee5d7749a85d2e333a8d97dce8d1d661e5bba0d93c850ab33d7da", + "tag": "s1_eternum-Owner", + "selector": "0x2ac70068901471291f27e386276bb51ce50c89e144a6e8e11d4f91b78236241" + }, + { + "members": [], + "class_hash": "0x77effa7d6e9cdaf053e31ddb864c29cc587e756673d8a2bdc8b919ac8eb0373", + "tag": "s1_eternum-Population", + "selector": "0x999f9ad8790ee0ec873b5e149fa1ef1054039e90bba49ac4975ba2cdb54429" + }, + { + "members": [], + "class_hash": "0x58397e297c6e9d5fb96965dd7241321667199c25918efeb27bbb830ab0948c3", + "tag": "s1_eternum-PopulationConfig", + "selector": "0x5cd485b0e678c36a4a14b0fcf5880e58e206c5b8199c9640d88f5ea86efe9b5" + }, + { + "members": [], + "class_hash": "0x4953b4f720c6479aae4d8b84b2d749ad5ab816f03e6ce500d5bcf609c59e77c", + "tag": "s1_eternum-Position", + "selector": "0x77c1a504cea841ea9ee0819e994d66d453d0652ecb7a51e80682ff8abd57f65" + }, + { + "members": [], + "class_hash": "0x712d40d99f865ae27041a4e8af1044d9a589cfdae1d1bae4c734041312659fb", + "tag": "s1_eternum-Production", + "selector": "0x12c4d44e2b854c8481b4da2b2dcc648b3a9d4e9006b4143acfedbd6aa8641db" + }, + { + "members": [], + "class_hash": "0xfe2f61b4cd61a63d2180cbf2238a0e90be72534ebc205a70a0daf05e098ca9", + "tag": "s1_eternum-ProductionConfig", + "selector": "0x520a8a0dec76799ca6b1198154f32247aa76da785d2cc7a56dabe401f80416c" + }, + { + "members": [], + "class_hash": "0x3736456c345cc770abd64231513bd58269d6fb382e48c411be7bb5c66a54322", + "tag": "s1_eternum-Progress", + "selector": "0x2b63dd696d82b19fa1421e9e47be1c573b761c39f6b58c0d14ed0c562f26b3f" + }, + { + "members": [], + "class_hash": "0x375116ae74219639eab6fd408cdd263e4c6c93fb0b544d3ba3ef8e876ef561", + "tag": "s1_eternum-Protectee", + "selector": "0x2ac4b9ed0d69ae66f6feff3272811293fa6e8196bd602183271d07ae7a5d3bb" + }, + { + "members": [], + "class_hash": "0x3eff2b8014606f2522063b0803a9f0456c0be34f4ec6b7f31d2b0948a4aa0c1", + "tag": "s1_eternum-Protector", + "selector": "0x72426f978a43c915d92511ce3efb7fdd6c962f4344e37d38ed00d0d95eb37b5" + }, + { + "members": [], + "class_hash": "0x7577aac22db1cb4db007701d6292ed0edddb54a27a947f2fdbce4615cb0c178", + "tag": "s1_eternum-Quantity", + "selector": "0x399416904300b2d9bc98601f480dcdd403fac4845279504082f1775505fb41" + }, + { + "members": [], + "class_hash": "0x2c17a1b5a72fc1c99fcc98629008b8cf539162e67a39813fadb9f407e20b2fb", + "tag": "s1_eternum-QuantityTracker", + "selector": "0x29c1ad2966a8d135fb73179ff12b872776a13fef4e7dcc14955f71950ad65aa" + }, + { + "members": [], + "class_hash": "0x3c9e64e617d829d6ef52f3cc63ee1872892697641ece5c3562494655751ee92", + "tag": "s1_eternum-Quest", + "selector": "0x7be72bb5626ead15f8756586fc89f32ca4e65fcbe00e8d49a222d94460b40ac" + }, + { + "members": [], + "class_hash": "0x6d7d41fa73f6a0cafcc95b905c394f420dbe512afb245f63c5aaf9d440c1c90", + "tag": "s1_eternum-QuestBonus", + "selector": "0x3e946c05a7448654a3f0f8e3983c98daca1d6727d3a595076b232f21aa9bf61" + }, + { + "members": [], + "class_hash": "0x6d7fa03d466e40e61eb5f9e8920ed1723e386147ece32faabfe48a3d96d8acb", + "tag": "s1_eternum-QuestConfig", + "selector": "0x10baf692d4bb6ab5fa51d3bcdb33b443bbb89178f74ad35c0f39df34972d97a" + }, + { + "members": [], + "class_hash": "0x5c8dbcc5c43eef6f7bebe035cfab3f0d97fc98cb7468c27494032ee7c477682", + "tag": "s1_eternum-QuestRewardConfig", + "selector": "0x1ee6b0ff29db9cdeecda6f947a65007ef951ac7b80242fe22cbc641bfcd24c5" + }, + { + "members": [], + "class_hash": "0x654d5810e1c19ceb5fb9f3fe5ca9de42fd729ca71bbe3b084da162536f93aab", + "tag": "s1_eternum-Realm", + "selector": "0x73d618f4cfd6974371417e6fbe450ff219d703d52cd92acd3e0362d18754876" + }, + { + "members": [], + "class_hash": "0x37903a2f2a111216ca18f3d52cd3b7ac241700c929d0f532d82c8d0eef0db26", + "tag": "s1_eternum-RealmLevelConfig", + "selector": "0x7430cd339058f757d8da2972d4609124b232fac288cd84efb4975ef17783fa3" + }, + { + "members": [], + "class_hash": "0xb05b9f8bd0de85e837c571d3b7555c1dd54b8601049eb250f25193581a3813", + "tag": "s1_eternum-RealmMaxLevelConfig", + "selector": "0x454f0915256598d53f9fdd192a32a5886d2b006532ea05b1981694951e62fb7" + }, + { + "members": [], + "class_hash": "0x243a2e78c7742b4b4392fce84a08836d8a00d5042e692284ed7939b13de7a18", + "tag": "s1_eternum-Resource", + "selector": "0x6d9f80d9fc8d932eaf382b0dc61539511e229b2dec5a275dfb836095d8f0521" + }, + { + "members": [], + "class_hash": "0x22170ce2c9a3447b19d7c4555ae8eb4e9cd7c765f6ead3af5eb106e0115e763", + "tag": "s1_eternum-ResourceAllowance", + "selector": "0x5d040dde8317e13b9643f324a18afc64c5044e79569552f8496e919c312b44a" + }, + { + "members": [], + "class_hash": "0x2e09899ffdc52704cf7d5881b2b9576b99ac5d1a0939caaa79ba005f941ef8c", + "tag": "s1_eternum-ResourceBridgeConfig", + "selector": "0x462f28b5568fb3e258400d85241d45cd31e053723d029bb0a3542da9ef2ece6" + }, + { + "members": [], + "class_hash": "0x7773a272288d8f6746b61d40015b44f451a5f4418785ebb893cdd8a3f101924", + "tag": "s1_eternum-ResourceBridgeFeeSplitConfig", + "selector": "0x33b2e568d65393f26dffa1e9fcb1c8e5aac80bf8ecd96a62c56fa7626d08d4a" + }, + { + "members": [], + "class_hash": "0x69f85789f3cd09073415acea848b4121fb7ab57660d65efc0902f9b9088cfec", + "tag": "s1_eternum-ResourceBridgeWhitelistConfig", + "selector": "0x291a767dc981735be14609c8ef267d33c389f58393358ce20f757680d065bbb" + }, + { + "members": [], + "class_hash": "0x240b65d5c97f9409445b6a38891f5ef00e60ddd04b83c98ffb954ea3f1199f8", + "tag": "s1_eternum-ResourceCost", + "selector": "0x15d8989d3b9ba9d2d089e1e920d2d0c428811ec0ac77b09ab12bfc3b42121d" + }, + { + "members": [], + "class_hash": "0x2f43ad0e8e78df05e470c36da11157bb756eee2e6faabf2cd6ed16c4419c0c3", + "tag": "s1_eternum-ResourceTransferLock", + "selector": "0x7deca04dad26fe5bed5def8be8e9fc199906496dfe2aa982e9cd11fe35300b" + }, + { + "members": [], + "class_hash": "0x1661ce7179939f89588fcf3d6ea91416e265772e6cdca45dac1441e4b3db807", + "tag": "s1_eternum-Season", + "selector": "0x4f8865388e8136115c535f8be3bca980cc55ce5cde180fdf43877a9ac42cf10" + }, + { + "members": [], + "class_hash": "0x5908399449b220b2799f9c6c1d90531548d6a921676a73d5b18e3c73211349c", + "tag": "s1_eternum-SeasonAddressesConfig", + "selector": "0x2d1f2883267358910522f3abc2d86e377bf44b7a85eb1ce9a9a936af9872400" + }, + { + "members": [], + "class_hash": "0x6f19a8e8f55464fb398bf457038b10a01d6cfcf5051aa6c7a7296024fc78f9c", + "tag": "s1_eternum-SeasonBridgeConfig", + "selector": "0x67d6487b53941b5d6614c1f8f8fd0c620904fffed74e740a95f99485854896e" + }, + { + "members": [], + "class_hash": "0x68dbc517a95bd1643828c7f03c53b34cc6a2b9ab364825b676b19245380bec4", + "tag": "s1_eternum-SettlementConfig", + "selector": "0x2df09676383e67499863f6671e25031b67c0344b2d3e2177081d16640cef28b" + }, + { + "members": [], + "class_hash": "0x5a674566f968363982331c6e454e8046e123ce141cbe9ccb031a6f44d7fab3a", + "tag": "s1_eternum-SpeedConfig", + "selector": "0x7f66a20a5fc5f3b3a3b77fa1a3f8c30cc0a5e7fe03eed54a4c1f3a50d3421a4" + }, + { + "members": [], + "class_hash": "0x5c31bd0ec3923ca88f01ac658fcdfc8e8e73d22f4362b96a5ee55ae5232a2c8", + "tag": "s1_eternum-Stamina", + "selector": "0x39518c19003fa9f7525361cc92b886b541122d0ef323ad02f0a5ab8baf1dd4b" + }, + { + "members": [], + "class_hash": "0x4e57c7bc107c4d7f740589732138414790b76320bb831fc912d0ac30d699738", + "tag": "s1_eternum-StaminaConfig", + "selector": "0x72604cb9cc861ecdb0e70b00137564390c5ccafde0d9d37ba014122e9288df9" + }, + { + "members": [], + "class_hash": "0x68eaa4e6a99462bf94073ba9b2e3a580b4db9170d28f47cfdefb47023e91eb7", + "tag": "s1_eternum-StaminaRefillConfig", + "selector": "0x269f27b58ce568cd0a1187c785445f746a959f915fc35b999aaf2afa95c04b9" + }, + { + "members": [], + "class_hash": "0x6d8349a51048775ad58a5e14c77606d882ab3a4d18f5a1b59138d973156b8f6", + "tag": "s1_eternum-Status", + "selector": "0x6819b601c22df29790f76f061612ee4c23e6d77cf850a685fa8c7ea6defe1bb" + }, + { + "members": [], + "class_hash": "0x3669757d103c83f6fca79bd6c75a49d8a273fb92dcf6bba1ab4ccaafa6137ea", + "tag": "s1_eternum-Structure", + "selector": "0x67d49b2755ef1c37f1efaa29dcd3b4c483691d9a969211f49bae940e757b033" + }, + { + "members": [], + "class_hash": "0x6e04e36fce10b6885b2180899d40134304afd733807bf45183839c37276d44d", + "tag": "s1_eternum-StructureCount", + "selector": "0x2add29083cc23bb0da9d45470d574877e3a63de4eca3730bfc35fc32d7256bd" + }, + { + "members": [], + "class_hash": "0x229093b1da22e9f70eb9818a6873854bc5f7a9c3c254b32e33b8ac8ef7e6a78", + "tag": "s1_eternum-TickConfig", + "selector": "0x3dacec234467fc19b55d08363ec6c5128d40513e9c785cc8d6fa96a10e1e2fe" + }, + { + "members": [], + "class_hash": "0x4789f1e5905969a83009f355f5e2bc6882f5228f2dff1beae21f6c315f4d3f1", + "tag": "s1_eternum-Tile", + "selector": "0x2be20d4e39863a5ae902d8a1d7d218f011bc5fd0b144656c1ec555e95939d7a" + }, + { + "members": [], + "class_hash": "0x4a83f3518a2a3b7fd4a69303275fc35dc9d5b08d3b3bf19a6ec9cb8779b34b9", + "tag": "s1_eternum-Trade", + "selector": "0xb8f1c0b8b5c9b646a2275babf4f493a4dd50440775aa1a52f07612a3f699bf" + }, + { + "members": [], + "class_hash": "0x35b1c94e4a2c44b7484df407cba0df8042fd2c8bb2cb7c14e3a54b5c78f9724", + "tag": "s1_eternum-TravelFoodCostConfig", + "selector": "0x5effa64ae71be8b1d19c231fefb1056039306d3b1d8885baed5f774d4da2a9a" + }, + { + "members": [], + "class_hash": "0x24f902eba1a1f00afbb06c6d6358a5b9d9831e5f01fa19d20d54e4610d266e2", + "tag": "s1_eternum-TravelStaminaCostConfig", + "selector": "0x49e464fb66d305b9b58610bfb89bed1df4e2cde87f523936e71e5fa5562f9cf" + }, + { + "members": [], + "class_hash": "0x13787b670988065ecde86c7622e4dfc79e9752b1b093e22e81cb9797af3eaa0", + "tag": "s1_eternum-TroopConfig", + "selector": "0x6ae523bfd49a164bfc5949f568674f7b4e09cca39f55d389d398f159b363178" + }, + { + "members": [], + "class_hash": "0x6effa334a8558bcffbb55620d842fe9fc355a497100768c7ebeb1e5f01c85d2", + "tag": "s1_eternum-VRFConfig", + "selector": "0x325d18df666336f28e2027292fb9164e890d520368b4e150d3fffddb95b2304" + }, + { + "members": [], + "class_hash": "0x239c7e9007b36b7105d01e2d5fb2cc87a2f0123cf02308d78299fb1b2c0286b", + "tag": "s1_eternum-Weight", + "selector": "0x3af9b99c6bed5e58f52a76ef3616395e8ae96acee151395134ab5199fe5b36a" + }, + { + "members": [], + "class_hash": "0x342088461be2657e2281e9f5a773aa8e7c6584dd62e125edf4ca71e39400e57", + "tag": "s1_eternum-WeightConfig", + "selector": "0x5b42c2cdd790597f7f8125e69d38f2db0469a37ba2a436c5fbc6f54ab16f2a6" + }, + { + "members": [], + "class_hash": "0x3f493c16b07f9edf224672fd7d0a1766b42863e70e08e4ce21f8b9368a95486", + "tag": "s1_eternum-WorldConfig", + "selector": "0x2640c924e58d9c307bff3a21564eeccf889b9d22e9d1b99eaf3d3ca79ba29e9" + } + ], + "events": [ + { + "members": [], + "class_hash": "0x308165ad0fe528e9f62f91851e42cd02186c284133e0f716bf618e2a89a064", + "tag": "s1_eternum-AcceptOrder", + "selector": "0x34724f2592dc93feb914074bbe4e6abc093e7ca15f6755824c7f694662853fc" + }, + { + "members": [], + "class_hash": "0x4fca4dcdf02fdc00635fdbdbfa78b928f907e5a82f58e24f17e95ec9d9e2475", + "tag": "s1_eternum-AcceptPartialOrder", + "selector": "0x34b84575baeaa398556ab0a3889fabb7b08d2520d8838734eaf12282776900b" + }, + { + "members": [], + "class_hash": "0x56a5736da894e6774c628874b21f414a2c4f035065b75e36f1c7facd27420ee", + "tag": "s1_eternum-BattleClaimData", + "selector": "0x41d29e106dc5491be952bbe2faaddf7f61d2822a533f17116600e7ef9c76c18" + }, + { + "members": [], + "class_hash": "0x1aab9d5811dd52241b604e734cd3527f3723320d2e8a16d8d2f9ab9657cf07a", + "tag": "s1_eternum-BattleJoinData", + "selector": "0x4410ca9a121bdc7bd8847dc77b08361cc88574ae4ff18bdfb1f56ebd168a377" + }, + { + "members": [], + "class_hash": "0x483a25c8985f722179db7ab176625c2f0415004e315c89ddd569a546c0ff352", + "tag": "s1_eternum-BattleLeaveData", + "selector": "0x817ae7123b2cf2c241e4a1cee0acb2a6537270d32f68da46c222a19b7a6b7e" + }, + { + "members": [], + "class_hash": "0x21704b4e421430ae75b71230238bc9693d74ba1ed97ca30594dfa1a5e6b1a9f", + "tag": "s1_eternum-BattlePillageData", + "selector": "0x1e6374e36d81091d4c72eb16936e2afc86ed695397fb5fc54780a01187bfbe2" + }, + { + "members": [], + "class_hash": "0x75e03d907604ffc855f6fa954001870813f8731f049aa1a65b4fc0335b53989", + "tag": "s1_eternum-BattleStartData", + "selector": "0x39cee4993b5b6698ea69be399295a54faabb31613ddc297bd452b7db0c79081" + }, + { + "members": [], + "class_hash": "0x53ea30ee96d0e5b7eefcd0b3c5ff8ec23062b6a8af282c235dbd06db0c4d77", + "tag": "s1_eternum-BurnDonkey", + "selector": "0x61be67037fa3f9fa7655102f1fe0c3f35d352d5919aba6a204b0af556649e55" + }, + { + "members": [], + "class_hash": "0x3cd551d7e4b53f2b4afcab56040f3dfff20f2dd3e75f346c4f86f15d6f2aab8", + "tag": "s1_eternum-CancelOrder", + "selector": "0x37baed7c5d5da7ddcfe014daac5b3f37b4b959b832e8c4c70df06c8b530478" + }, + { + "members": [], + "class_hash": "0x54ebf96034d04a3febfaaa17372961a8746cdb440f451d4e3acfcedd4992db6", + "tag": "s1_eternum-CreateGuild", + "selector": "0x55a0213c9d81381326def8de071ea32d31f412ae525cb58b8b2a29cdbf3821" + }, + { + "members": [], + "class_hash": "0x3da4824e6b15595ea7c4906de6ae545f1de3c6997655c55fa040d9bc466fbcb", + "tag": "s1_eternum-CreateOrder", + "selector": "0x6cd5deb58306ff9ed529e7e496193ac3b8dadc4927768951a16afd5cee79291" + }, + { + "members": [], + "class_hash": "0x6e3e1e9e62a28db9b293c60cd5bb48db433b5d14b6b46d034cb901877fe4eb", + "tag": "s1_eternum-FragmentMineDiscovered", + "selector": "0x5afb247cb5972fc84d96b10c69f31a96666642065816bfa74f4d0fdd715fac6" + }, + { + "members": [], + "class_hash": "0xf00b2af42e9108761ad47e50a2605c55203a83b342235def07252a85d6db85", + "tag": "s1_eternum-GameEnded", + "selector": "0x7552b1455aaf939a5cee7dfe7d65ef0341647b2b1dc97bbdac22e38f81b6f75" + }, + { + "members": [], + "class_hash": "0x5cddcd628958870243552341afbf5859b87d5f623d9ccec87fc217218301da", + "tag": "s1_eternum-HyperstructureCoOwnersChange", + "selector": "0x16aa9c3ff1e2229ec3989607dee034c26f555386c3fda2f57ae23a5da08bcd2" + }, + { + "members": [], + "class_hash": "0x5bf722c02c026a13863bc061f7f31d3e9a94a409e60a0b020355c621b3c8848", + "tag": "s1_eternum-HyperstructureContribution", + "selector": "0x11b57482819f44946c794b42bb3d6f9b5111e416abddd5590e48933db4e8c1c" + }, + { + "members": [], + "class_hash": "0x3a5f236a8854f32ed034b3f68bda881b3a28be9b2f5563fbd479ee415fa489b", + "tag": "s1_eternum-HyperstructureFinished", + "selector": "0x18188e073773854e47229a73718f205c22955838714d847ff4bab4ed315852c" + }, + { + "members": [], + "class_hash": "0x19167b2efb0019a2d2547e6b97653c2e44eaa0648110a8d0492857d48f7628", + "tag": "s1_eternum-HyperstructureStarted", + "selector": "0x524d52c11289b16c879df0675bb7168b4556196e805130884ff7399568955f4" + }, + { + "members": [], + "class_hash": "0x10489827f673705da04f7c52b54164e01679958dec37bf8c97f45b6229adde", + "tag": "s1_eternum-JoinGuild", + "selector": "0x490fb23242de6839d879e576254121a224786783b288f05e8e57e942f0d0c44" + }, + { + "members": [], + "class_hash": "0x1de238739f2586354bfefc4c7d49a8e392b3c911515c9ad6445e96027a0dcb3", + "tag": "s1_eternum-LiquidityEvent", + "selector": "0x5ca594f7a676a13c4b15d34ffd0e922bf64e127d0fa6b6a9bd29a4bb6dcfd19" + }, + { + "members": [], + "class_hash": "0x6f57b19aaa43496f97785e8d6b18e21dc116bbd690e54a4fd03ccbb98ae760b", + "tag": "s1_eternum-MapExplored", + "selector": "0x5238d4838007cb371e0a62aff2a2d4241868fa579edc867125fa71c493fb2c8" + }, + { + "members": [], + "class_hash": "0x65b91709428bb484001943f1662d614fb4b6318b3fca1c4ed4b2fe53d822f6", + "tag": "s1_eternum-SettleRealmData", + "selector": "0x11b4babbcafbf1834c8e535877d14f1fc5dc0bd0b126a97a98bb1093d30e873" + }, + { + "members": [], + "class_hash": "0x4db6f101a1cff37f8e4709053f1ae4c1d8b8ec3dda5a2284b606439d051fb86", + "tag": "s1_eternum-SwapEvent", + "selector": "0x783a3cc6562fe31ae83bac3e69e636d8b58c357d5d3621c6d2e5d74da51e5db" + }, + { + "members": [], + "class_hash": "0x6059f5ee6fd551e038f65eac650a50c7af4401d3ce90cf257693b3eab27b8a3", + "tag": "s1_eternum-Transfer", + "selector": "0x4ff88ec4fe7fc992e29c980b4c0abfb2c35ecacce7e63248c2731984995fcbd" + }, + { + "members": [], + "class_hash": "0x40aee82a2213fb870290370044eeafec0c98eb8953299883251f870a9fd1e4c", + "tag": "s1_eternum-Travel", + "selector": "0x4e45f9632599eeb9a25d0977cd5aebf8a4aa209fea4134a862e592d31e387c0" + }, + { + "members": [], + "class_hash": "0x6b38999d987627835d4c20e7e571c73d32ddc856786d9790a131bdb3372a246", + "tag": "s1_eternum-TrophyCreation", + "selector": "0x5633ebee65e16c483940f284a816ac8b31e08ddd3932f80db960a40573d4dc2" + }, + { + "members": [], + "class_hash": "0xf05f290a704ad2671544b391f0c33d50d6d43d468d52791282852a833a00c7", + "tag": "s1_eternum-TrophyProgression", + "selector": "0x5a8f3fedb72efc9d358b86574cf362f8ed1ec12a02ca9f276e6190f49191217" + } + ] + } + } +} + } \ No newline at end of file diff --git a/client/config/environments/data/sepolia.json b/client/config/environments/data/sepolia.json new file mode 100644 index 0000000000..ef4d7e46e1 --- /dev/null +++ b/client/config/environments/data/sepolia.json @@ -0,0 +1,11321 @@ +{ + "generatedFromTsFile": true, + "message": "This file was generated from the .ts file and should not be edited manually", + "configuration": { + "stamina": { + "travelCost": 10, + "exploreCost": 20, + "refillPerTick": 20, + "startBoostTickCount": 2 + }, + "resources": { + "resourcePrecision": 1000000000, + "resourceMultiplier": 1000000000, + "resourceAmountPerTick": 10, + "startingResourcesInputProductionFactor": 6, + "resourceInputs": { + "1": [ + { + "resource": 3, + "amount": 5 + }, + { + "resource": 2, + "amount": 3.8 + }, + { + "resource": 29, + "amount": 5 + } + ], + "2": [ + { + "resource": 1, + "amount": 4.2 + }, + { + "resource": 4, + "amount": 2.8 + }, + { + "resource": 29, + "amount": 5 + } + ], + "3": [ + { + "resource": 1, + "amount": 3 + }, + { + "resource": 2, + "amount": 3.2 + }, + { + "resource": 29, + "amount": 5 + } + ], + "4": [ + { + "resource": 2, + "amount": 5.8 + }, + { + "resource": 6, + "amount": 3.4 + }, + { + "resource": 29, + "amount": 5 + } + ], + "5": [ + { + "resource": 8, + "amount": 6 + }, + { + "resource": 11, + "amount": 3.2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "6": [ + { + "resource": 4, + "amount": 4.8 + }, + { + "resource": 8, + "amount": 3.2 + }, + { + "resource": 29, + "amount": 5 + } + ], + "7": [ + { + "resource": 11, + "amount": 4.2 + }, + { + "resource": 15, + "amount": 2.6 + }, + { + "resource": 30, + "amount": 4 + } + ], + "8": [ + { + "resource": 6, + "amount": 5 + }, + { + "resource": 5, + "amount": 2.8 + }, + { + "resource": 30, + "amount": 4 + } + ], + "9": [ + { + "resource": 19, + "amount": 6 + }, + { + "resource": 22, + "amount": 2.4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "10": [ + { + "resource": 17, + "amount": 4.8 + }, + { + "resource": 19, + "amount": 2.4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "11": [ + { + "resource": 5, + "amount": 5 + }, + { + "resource": 7, + "amount": 3.8 + }, + { + "resource": 30, + "amount": 4 + } + ], + "12": [ + { + "resource": 13, + "amount": 4 + }, + { + "resource": 16, + "amount": 4.2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "13": [ + { + "resource": 20, + "amount": 4.2 + }, + { + "resource": 12, + "amount": 4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "14": [ + { + "resource": 15, + "amount": 8 + }, + { + "resource": 20, + "amount": 3.2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "15": [ + { + "resource": 7, + "amount": 6.2 + }, + { + "resource": 14, + "amount": 2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "16": [ + { + "resource": 12, + "amount": 5.6 + }, + { + "resource": 21, + "amount": 3.8 + }, + { + "resource": 30, + "amount": 4 + } + ], + "17": [ + { + "resource": 18, + "amount": 5 + }, + { + "resource": 10, + "amount": 3.4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "18": [ + { + "resource": 21, + "amount": 4.6 + }, + { + "resource": 17, + "amount": 3.2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "19": [ + { + "resource": 10, + "amount": 6.8 + }, + { + "resource": 9, + "amount": 2.6 + }, + { + "resource": 30, + "amount": 4 + } + ], + "20": [ + { + "resource": 14, + "amount": 4.8 + }, + { + "resource": 13, + "amount": 3.8 + }, + { + "resource": 30, + "amount": 4 + } + ], + "21": [ + { + "resource": 16, + "amount": 4.2 + }, + { + "resource": 18, + "amount": 3.4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "22": [ + { + "resource": 9, + "amount": 6.4 + }, + { + "resource": 19, + "amount": 4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "24": [], + "25": [ + { + "resource": 29, + "amount": 25 + }, + { + "resource": 31, + "amount": 0.01 + } + ], + "26": [ + { + "resource": 29, + "amount": 50 + }, + { + "resource": 30, + "amount": 50 + }, + { + "resource": 8, + "amount": 2 + }, + { + "resource": 5, + "amount": 5 + } + ], + "27": [ + { + "resource": 29, + "amount": 50 + }, + { + "resource": 30, + "amount": 50 + }, + { + "resource": 6, + "amount": 2 + }, + { + "resource": 11, + "amount": 5 + } + ], + "28": [ + { + "resource": 29, + "amount": 50 + }, + { + "resource": 30, + "amount": 50 + }, + { + "resource": 4, + "amount": 2 + }, + { + "resource": 7, + "amount": 5 + } + ], + "29": [], + "30": [], + "31": [] + }, + "resourceOutputs": { + "1": 30, + "2": 30, + "3": 30, + "4": 30, + "5": 30, + "6": 30, + "7": 30, + "8": 30, + "9": 30, + "10": 30, + "11": 30, + "12": 30, + "13": 30, + "14": 30, + "15": 30, + "16": 30, + "17": 30, + "18": 30, + "19": 30, + "20": 30, + "21": 30, + "22": 30, + "24": 1, + "25": 0.5, + "26": 0.04, + "27": 0.04, + "28": 0.04, + "29": 50, + "30": 50, + "31": 0 + }, + "resourceWeightsGrams": { + "1": 1000, + "2": 1000, + "3": 1000, + "4": 1000, + "5": 1000, + "6": 1000, + "7": 1000, + "8": 1000, + "9": 1000, + "10": 1000, + "11": 1000, + "12": 1000, + "13": 1000, + "14": 1000, + "15": 1000, + "16": 1000, + "17": 1000, + "18": 1000, + "19": 1000, + "20": 1000, + "21": 1000, + "22": 1000, + "24": 1000, + "25": 0, + "26": 5000, + "27": 3000, + "28": 5000, + "29": 100, + "30": 100, + "31": 0 + }, + "resourceRarity": { + "1": 1.27, + "2": 1.31, + "3": 1, + "4": 1.9, + "5": 4.25, + "6": 2.26, + "7": 5.49, + "8": 2.88, + "9": 135.53, + "10": 53.92, + "11": 5.24, + "12": 20.98, + "13": 20.98, + "14": 16.72, + "15": 8.44, + "16": 29.15, + "17": 45.18, + "18": 36.06, + "19": 91.2, + "20": 20.3, + "21": 30.95, + "22": 217.92, + "24": 20.98, + "25": 1, + "26": 1, + "27": 1, + "28": 1, + "29": 1, + "30": 1, + "31": 1 + }, + "resourceBuildingCosts": { + "1": [ + { + "resource": 30, + "amount": 750000 + } + ], + "2": [ + { + "resource": 29, + "amount": 750000 + } + ], + "3": [ + { + "resource": 29, + "amount": 750000 + } + ], + "4": [ + { + "resource": 30, + "amount": 750000 + } + ], + "5": [ + { + "resource": 29, + "amount": 750000 + } + ], + "6": [ + { + "resource": 29, + "amount": 750000 + } + ], + "7": [ + { + "resource": 29, + "amount": 750000 + } + ], + "8": [ + { + "resource": 30, + "amount": 750000 + } + ], + "9": [ + { + "resource": 29, + "amount": 750000 + } + ], + "10": [ + { + "resource": 29, + "amount": 750000 + } + ], + "11": [ + { + "resource": 30, + "amount": 750000 + } + ], + "12": [ + { + "resource": 30, + "amount": 750000 + } + ], + "13": [ + { + "resource": 29, + "amount": 750000 + } + ], + "14": [ + { + "resource": 29, + "amount": 750000 + } + ], + "15": [ + { + "resource": 30, + "amount": 750000 + } + ], + "16": [ + { + "resource": 29, + "amount": 750 + } + ], + "17": [ + { + "resource": 30, + "amount": 750000 + } + ], + "18": [ + { + "resource": 29, + "amount": 750000 + } + ], + "19": [ + { + "resource": 30, + "amount": 750000 + } + ], + "20": [ + { + "resource": 30, + "amount": 750000 + } + ], + "21": [ + { + "resource": 30, + "amount": 750000 + } + ], + "22": [ + { + "resource": 30, + "amount": 750000 + } + ], + "24": [ + { + "resource": 30, + "amount": 750000 + } + ], + "25": [ + { + "resource": 29, + "amount": 750000 + } + ], + "26": [ + { + "resource": 30, + "amount": 750000 + } + ], + "27": [ + { + "resource": 29, + "amount": 750000 + } + ], + "28": [ + { + "resource": 30, + "amount": 750000 + } + ], + "29": [ + { + "resource": 29, + "amount": 750000 + } + ], + "30": [ + { + "resource": 30, + "amount": 750000 + } + ], + "31": [ + { + "resource": 29, + "amount": 750000 + } + ] + } + }, + "banks": { + "name": "Central Bank", + "lordsCost": 1000, + "lpFeesNumerator": 15, + "lpFeesDenominator": 100, + "ownerFeesNumerator": 15, + "ownerFeesDenominator": 100, + "ownerBridgeFeeOnDepositPercent": 1000, + "ownerBridgeFeeOnWithdrawalPercent": 1000, + "ammStartingLiquidity": { + "1": 500000, + "2": 500000, + "3": 500000, + "4": 500000, + "5": 200000, + "6": 500000, + "7": 200000, + "8": 500000, + "9": 50000, + "10": 50000, + "11": 200000, + "12": 75000, + "13": 100000, + "14": 100000, + "15": 200000, + "16": 75000, + "17": 50000, + "18": 50000, + "19": 50000, + "20": 100000, + "21": 50000, + "22": 50000, + "25": 10000 + }, + "lordsLiquidityPerResource": 1000 + }, + "populationCapacity": { + "workerHuts": 5, + "basePopulation": 5 + }, + "exploration": { + "reward": 750, + "shardsMinesFailProbability": 99000 + }, + "tick": { + "defaultTickIntervalInSeconds": 1, + "armiesTickIntervalInSeconds": 3600 + }, + "carryCapacityGram": { + "0": 0, + "1": "340282366920938463463374607431768211455", + "2": 500000, + "3": 10000, + "4": 300000000 + }, + "speed": { + "donkey": 9, + "army": 1 + }, + "battle": { + "graceTickCount": 24, + "graceTickCountHyp": 1, + "delaySeconds": 28800 + }, + "troop": { + "health": 1, + "knightStrength": 1, + "paladinStrength": 1, + "crossbowmanStrength": 1, + "advantagePercent": 1000, + "disadvantagePercent": 1000, + "maxTroopCount": 500000, + "baseArmyNumberForStructure": 3, + "armyExtraPerMilitaryBuilding": 1, + "maxArmiesPerStructure": 7, + "pillageHealthDivisor": 8, + "battleLeaveSlashNum": 25, + "battleLeaveSlashDenom": 100, + "battleTimeReductionScale": 1000, + "battleMaxTimeSeconds": 172800, + "troopStaminas": { + "26": 80, + "27": 80, + "28": 100 + }, + "troopFoodConsumption": { + "26": { + "explore_wheat_burn_amount": 10, + "explore_fish_burn_amount": 10, + "travel_wheat_burn_amount": 5, + "travel_fish_burn_amount": 5 + }, + "27": { + "explore_wheat_burn_amount": 6, + "explore_fish_burn_amount": 6, + "travel_wheat_burn_amount": 3, + "travel_fish_burn_amount": 3 + }, + "28": { + "explore_wheat_burn_amount": 10, + "explore_fish_burn_amount": 10, + "travel_wheat_burn_amount": 4, + "travel_fish_burn_amount": 4 + } + } + }, + "mercenaries": { + "knights_lower_bound": 1000000, + "knights_upper_bound": 4000000, + "paladins_lower_bound": 1000000, + "paladins_upper_bound": 4000000, + "crossbowmen_lower_bound": 1000000, + "crossbowmen_upper_bound": 4000000, + "rewards": [ + { + "resource": 29, + "amount": 0 + }, + { + "resource": 30, + "amount": 0 + } + ] + }, + "settlement": { + "center": 2147483646, + "base_distance": 10, + "min_first_layer_distance": 30, + "points_placed": 0, + "current_layer": 1, + "current_side": 1, + "current_point_on_side": 0 + }, + "buildings": { + "buildingCapacity": { + "0": 0, + "1": 5, + "2": 0, + "3": 0, + "4": 0, + "5": 0, + "6": 0, + "7": 0, + "8": 0, + "9": 0, + "10": 5, + "11": 0, + "12": 0, + "13": 0, + "14": 0, + "15": 0 + }, + "buildingPopulation": { + "0": 0, + "1": 0, + "2": 2, + "3": 1, + "4": 1, + "5": 2, + "6": 3, + "7": 2, + "8": 3, + "9": 2, + "10": 0, + "11": 2, + "12": 2, + "13": 2, + "14": 0, + "15": 0 + }, + "buildingResourceProduced": { + "0": 0, + "1": 0, + "2": 0, + "3": 29, + "4": 30, + "5": 26, + "6": 25, + "7": 27, + "8": 28, + "9": 0, + "10": 0, + "11": 0, + "12": 0, + "13": 0, + "14": 0, + "15": 24 + }, + "buildingCosts": { + "0": [], + "1": [], + "2": [], + "3": [ + { + "resource": 30, + "amount": 450000 + } + ], + "4": [ + { + "resource": 29, + "amount": 450000 + } + ], + "5": [ + { + "resource": 29, + "amount": 1000000 + }, + { + "resource": 3, + "amount": 75000 + }, + { + "resource": 2, + "amount": 75000 + }, + { + "resource": 8, + "amount": 50000 + }, + { + "resource": 7, + "amount": 45000 + } + ], + "6": [ + { + "resource": 30, + "amount": 750000 + }, + { + "resource": 1, + "amount": 125000 + }, + { + "resource": 6, + "amount": 50000 + }, + { + "resource": 13, + "amount": 25000 + }, + { + "resource": 12, + "amount": 5000 + } + ], + "7": [ + { + "resource": 30, + "amount": 1000000 + }, + { + "resource": 3, + "amount": 75000 + }, + { + "resource": 6, + "amount": 75000 + }, + { + "resource": 7, + "amount": 25000 + }, + { + "resource": 15, + "amount": 25000 + } + ], + "8": [ + { + "resource": 29, + "amount": 1000000 + }, + { + "resource": 3, + "amount": 75000 + }, + { + "resource": 8, + "amount": 75000 + }, + { + "resource": 5, + "amount": 35000 + }, + { + "resource": 7, + "amount": 25000 + } + ], + "9": [], + "10": [ + { + "resource": 29, + "amount": 300000 + }, + { + "resource": 1, + "amount": 75000 + }, + { + "resource": 3, + "amount": 75000 + }, + { + "resource": 2, + "amount": 75000 + } + ], + "11": [], + "12": [], + "13": [ + { + "resource": 30, + "amount": 1000000 + }, + { + "resource": 2, + "amount": 75000 + }, + { + "resource": 1, + "amount": 75000 + }, + { + "resource": 20, + "amount": 10000 + } + ], + "14": [], + "15": [] + }, + "buildingFixedCostScalePercent": 5000 + }, + "hyperstructures": { + "hyperstructureCreationCosts": [ + { + "resource_tier": 1, + "min_amount": 3000000, + "max_amount": 3000000 + } + ], + "hyperstructureConstructionCosts": [ + { + "resource_tier": 2, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 3, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 4, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 5, + "min_amount": 120000000, + "max_amount": 240000000 + }, + { + "resource_tier": 6, + "min_amount": 90000000, + "max_amount": 180000000 + }, + { + "resource_tier": 7, + "min_amount": 40000000, + "max_amount": 80000000 + }, + { + "resource_tier": 8, + "min_amount": 20000000, + "max_amount": 40000000 + }, + { + "resource_tier": 9, + "min_amount": 7000000, + "max_amount": 14000000 + } + ], + "hyperstructureTotalCosts": [ + { + "resource_tier": 2, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 3, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 4, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 5, + "min_amount": 120000000, + "max_amount": 240000000 + }, + { + "resource_tier": 6, + "min_amount": 90000000, + "max_amount": 180000000 + }, + { + "resource_tier": 7, + "min_amount": 40000000, + "max_amount": 80000000 + }, + { + "resource_tier": 8, + "min_amount": 20000000, + "max_amount": 40000000 + }, + { + "resource_tier": 9, + "min_amount": 7000000, + "max_amount": 14000000 + }, + { + "resource_tier": 1, + "min_amount": 3000000, + "max_amount": 3000000 + } + ], + "hyperstructurePointsPerCycle": 7, + "hyperstructurePointsOnCompletion": 500000, + "hyperstructureTimeBetweenSharesChangeSeconds": 17280, + "hyperstructurePointsForWin": 9620000 + }, + "season": { + "startAfterSeconds": 60, + "bridgeCloseAfterEndSeconds": 172800 + }, + "bridge": { + "velords_fee_on_dpt_percent": 400, + "velords_fee_on_wtdr_percent": 400, + "season_pool_fee_on_dpt_percent": 400, + "season_pool_fee_on_wtdr_percent": 400, + "client_fee_on_dpt_percent": 200, + "client_fee_on_wtdr_percent": 200, + "velords_fee_recipient": "1972411780975621738773701578535203409474110909068539627767144719329707439045", + "season_pool_fee_recipient": "503293414928177394940437649405074149076671770497433743375852137577831059233", + "max_bank_fee_dpt_percent": 0, + "max_bank_fee_wtdr_percent": 0 + }, + "vrf": { + "vrfProviderAddress": "0x0" + }, + "questResources": { + "1": [ + { + "resource": 29, + "amount": 1200000 + }, + { + "resource": 30, + "amount": 1200000 + } + ], + "2": [ + { + "resource": 3, + "amount": 5000 + }, + { + "resource": 1, + "amount": 5000 + }, + { + "resource": 2, + "amount": 5000 + }, + { + "resource": 4, + "amount": 5000 + }, + { + "resource": 6, + "amount": 5000 + }, + { + "resource": 8, + "amount": 5000 + }, + { + "resource": 5, + "amount": 5000 + }, + { + "resource": 11, + "amount": 5000 + }, + { + "resource": 7, + "amount": 5000 + }, + { + "resource": 15, + "amount": 5000 + }, + { + "resource": 14, + "amount": 5000 + }, + { + "resource": 20, + "amount": 5000 + }, + { + "resource": 13, + "amount": 5000 + }, + { + "resource": 12, + "amount": 5000 + }, + { + "resource": 16, + "amount": 5000 + }, + { + "resource": 21, + "amount": 5000 + }, + { + "resource": 18, + "amount": 5000 + }, + { + "resource": 17, + "amount": 5000 + }, + { + "resource": 10, + "amount": 5000 + }, + { + "resource": 19, + "amount": 5000 + }, + { + "resource": 9, + "amount": 5000 + }, + { + "resource": 22, + "amount": 5000 + } + ], + "3": [ + { + "resource": 25, + "amount": 200 + } + ], + "4": [ + { + "resource": 26, + "amount": 500 + }, + { + "resource": 27, + "amount": 500 + }, + { + "resource": 28, + "amount": 500 + } + ], + "5": [ + { + "resource": 25, + "amount": 200 + } + ], + "6": [ + { + "resource": 26, + "amount": 500 + }, + { + "resource": 28, + "amount": 500 + }, + { + "resource": 27, + "amount": 500 + } + ], + "7": [ + { + "resource": 25, + "amount": 200 + } + ], + "8": [ + { + "resource": 25, + "amount": 200 + }, + { + "resource": 28, + "amount": 200 + }, + { + "resource": 26, + "amount": 200 + }, + { + "resource": 27, + "amount": 200 + }, + { + "resource": 24, + "amount": 200 + } + ] + }, + "realmUpgradeCosts": { + "0": [], + "1": [ + { + "resource": 29, + "amount": 3000000 + }, + { + "resource": 30, + "amount": 3000000 + } + ], + "2": [ + { + "resource": 11, + "amount": 600000 + }, + { + "resource": 15, + "amount": 600000 + }, + { + "resource": 14, + "amount": 600000 + }, + { + "resource": 20, + "amount": 600000 + }, + { + "resource": 12, + "amount": 600000 + }, + { + "resource": 29, + "amount": 5000000 + }, + { + "resource": 30, + "amount": 5000000 + } + ], + "3": [ + { + "resource": 10, + "amount": 50000 + }, + { + "resource": 19, + "amount": 50000 + }, + { + "resource": 9, + "amount": 50000 + }, + { + "resource": 22, + "amount": 50000 + }, + { + "resource": 29, + "amount": 9000000 + }, + { + "resource": 30, + "amount": 9000000 + } + ] + }, + "realmMaxLevel": 4, + "setup": { + "chain": "local", + "addresses": { + "seasonPass": "0x6b16a2eaaaf67ab12b521541e49bdccbda984ae668716f09c9dc573e4176939", + "realms": "0x67c7cdf4895de0ff9ead55c934aafbbf3406ed791633d695d202b2ed332ff1d", + "lords": "0x2061f58899d0c48274295712bc8a2e383f2f0fcc3bf86e01319926ad6500081", + "resources": { + "STONE": [ + 1, + "0x10201cb67728c2eb6ed38e48b2b9232f1bcc49abd47f0438393c47cb1dcd7e7" + ], + "COAL": [ + 2, + "0x7ab4d56e0247d161c46ea2df1c78129be6f82ef0d38cbae06868c0d96b81965" + ], + "WOOD": [ + 3, + "0x419fb8394ad7d31fa8cfe41c1e04bcba340acf516986e9e4052f253031d19c2" + ], + "COPPER": [ + 4, + "0x7054f48f083b939a48611b80a3723dcca39e67e78c0d0973c7801beee562cfd" + ], + "IRONWOOD": [ + 5, + "0x12d5032c812f1d95fb8aa5932ef4af801480caddb6e1a0c653d280452d75dd0" + ], + "OBSIDIAN": [ + 6, + "0x4ee77d19a27675d680beb975dc81599f6ed4c5ff5afa835f9a361a6b1f0eaa3" + ], + "GOLD": [ + 7, + "0x2b8aa7839e2df3079ec45473ea1f6a551924e40ec3e3a198b3373eeb0bd97aa" + ], + "SILVER": [ + 8, + "0xdc7f395ebff7a904ac7444cc835b9556ec2703ca3ecc9a32721cf27d304057" + ], + "MITHRAL": [ + 9, + "0x7ab934a3fb535ddb493fb8ebec6633781c95893d21a9bb6c3907d0542606b6" + ], + "ALCHEMICALSILVER": [ + 10, + "0x109bae66b457de3a2f90fc0f0437c18ac78cb64e1f0b487fad7c2ad965f9fd6" + ], + "COLDIRON": [ + 11, + "0x75454e76e6756fed13a862e274e9c2c5d1ef338f4233ff32f607bf31047c84c" + ], + "DEEPCRYSTAL": [ + 12, + "0x5fe0353a1ccc141b01f5ad28a46735e4018e0027a99064a59e8f58bc5f686b4" + ], + "RUBY": [ + 13, + "0x64e545b009366748faea9b88919683785e1f2a4658e35ad94f64c9d8145eb04" + ], + "DIAMONDS": [ + 14, + "0x59879bf38404e60a3297b6a18cc2bb089a952a157317eeaa4c0337622351cb0" + ], + "HARTWOOD": [ + 15, + "0x29713bcec04e8c8e628824c3a85bafd8158a2205d970377e374bce1f3da3c0b" + ], + "IGNIUM": [ + 16, + "0x7f2b0bb46c8446e83454c0a527fc248a95b81774528da9d454299b5d197eb41" + ], + "TWILIGHTQUARTZ": [ + 17, + "0x6de3f8e40a158518e26e06f5a82ec21579489e0c1dfdebeb2e5d1c1f539a1ea" + ], + "TRUEICE": [ + 18, + "0x41ed8b4e5b7a04d7d7a51b2c2de03504e3853be52f01d3e1670bdcdffae62e3" + ], + "ADAMANTINE": [ + 19, + "0x6dcf1c7b514b92b25d0072d8575f3fae27a6369cc5f080466a4321f1676a95b" + ], + "SAPPHIRE": [ + 20, + "0x6dbdfddef0497e91dc0e9e3b3b1c2ca2f3a76d6b0c0ffa5bf82011de57a1263" + ], + "ETHEREALSILICA": [ + 21, + "0x4ba5dbded1a8439812be33d3a3f38a968059c87aa6b613dd9294134fc15277b" + ], + "DRAGONHIDE": [ + 22, + "0x6dda537140b0de42a41783a8a91483387100557c129bff7ed982fa7826ec926" + ], + "ANCIENTFRAGMENT": [ + 24, + "0x5e0d02bfafa0a02a08e232382c36940a7422724c906572856664acff26a1cc2" + ], + "DONKEY": [ + 25, + "0x3dd5f15c3c941ee5a42b1e2011094faf397d8c2d5fdb4d751469928b21b4aa4" + ], + "KNIGHT": [ + 26, + "0xbf0803b982e5a0fc98a2e5b3dda8e5222de3c46152f9194dbfecb427842c3b" + ], + "CROSSBOWMAN": [ + 27, + "0x235e07f4ac22ed6ad4bcd45affdf99903bc14a4ea945097a842e50821990f79" + ], + "PALADIN": [ + 28, + "0x222039bf663fd7b8af8bda5efcbb81e0d561e8662da941c23d6c88664f725d8" + ], + "WHEAT": [ + 29, + "0x10cd4ee48e15d50515aee8ac2645ef6f779c867035adace07378e53c66704a9" + ], + "FISH": [ + 30, + "0x20be4adb7f73829679f076fca4ad050e28a3eb4f9280369e511cd54af9d9cfa" + ], + "LORDS": [ + 31, + "0x2061f58899d0c48274295712bc8a2e383f2f0fcc3bf86e01319926ad6500081" + ] + } + }, + "manifest": { + "world": { + "class_hash": "0x45575a88cc5cef1e444c77ce60b7b4c9e73a01cbbe20926d5a4c72a94011410", + "address": "0x0009dd5e66cfa83f893c2a70b9ea5221e2df18aaf52a111fe9003264f948c7aa", + "seed": "s1_eternum", + "name": "Realms: Eternum", + "entrypoints": [ + "uuid", + "set_metadata", + "register_namespace", + "register_event", + "register_model", + "register_contract", + "init_contract", + "upgrade_event", + "upgrade_model", + "upgrade_contract", + "emit_event", + "emit_events", + "set_entity", + "set_entities", + "delete_entity", + "delete_entities", + "grant_owner", + "revoke_owner", + "grant_writer", + "revoke_writer", + "upgrade" + ], + "abi": [ + { + "type": "impl", + "name": "World", + "interface_name": "dojo::world::iworld::IWorld" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "enum", + "name": "dojo::world::resource::Resource", + "variants": [ + { + "name": "Model", + "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" + }, + { + "name": "Event", + "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" + }, + { + "name": "Contract", + "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" + }, + { + "name": "Namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "World", + "type": "()" + }, + { + "name": "Unregistered", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "dojo::model::metadata::ResourceMetadata", + "members": [ + { + "name": "resource_id", + "type": "core::felt252" + }, + { + "name": "metadata_uri", + "type": "core::byte_array::ByteArray" + }, + { + "name": "metadata_hash", + "type": "core::felt252" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "enum", + "name": "dojo::model::definition::ModelIndex", + "variants": [ + { + "name": "Keys", + "type": "core::array::Span::" + }, + { + "name": "Id", + "type": "core::felt252" + }, + { + "name": "MemberId", + "type": "(core::felt252, core::felt252)" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "dojo::meta::layout::FieldLayout", + "members": [ + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "dojo::meta::layout::Layout", + "variants": [ + { + "name": "Fixed", + "type": "core::array::Span::" + }, + { + "name": "Struct", + "type": "core::array::Span::" + }, + { + "name": "Tuple", + "type": "core::array::Span::" + }, + { + "name": "Array", + "type": "core::array::Span::" + }, + { + "name": "ByteArray", + "type": "()" + }, + { + "name": "Enum", + "type": "core::array::Span::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "dojo::world::iworld::IWorld", + "items": [ + { + "type": "function", + "name": "resource", + "inputs": [ + { + "name": "selector", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "dojo::world::resource::Resource" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "uuid", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "metadata", + "inputs": [ + { + "name": "resource_selector", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "dojo::model::metadata::ResourceMetadata" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_metadata", + "inputs": [ + { + "name": "metadata", + "type": "dojo::model::metadata::ResourceMetadata" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "register_namespace", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "register_event", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "register_model", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "register_contract", + "inputs": [ + { + "name": "salt", + "type": "core::felt252" + }, + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "init_contract", + "inputs": [ + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "init_calldata", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "upgrade_event", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "upgrade_model", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "upgrade_contract", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [ + { + "type": "core::starknet::class_hash::ClassHash" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "emit_event", + "inputs": [ + { + "name": "event_selector", + "type": "core::felt252" + }, + { + "name": "keys", + "type": "core::array::Span::" + }, + { + "name": "values", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "emit_events", + "inputs": [ + { + "name": "event_selector", + "type": "core::felt252" + }, + { + "name": "keys", + "type": "core::array::Span::>" + }, + { + "name": "values", + "type": "core::array::Span::>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "entity", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "index", + "type": "dojo::model::definition::ModelIndex" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "entities", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "indexes", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [ + { + "type": "core::array::Span::>" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_entity", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "index", + "type": "dojo::model::definition::ModelIndex" + }, + { + "name": "values", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_entities", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "indexes", + "type": "core::array::Span::" + }, + { + "name": "values", + "type": "core::array::Span::>" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "delete_entity", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "index", + "type": "dojo::model::definition::ModelIndex" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "delete_entities", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "indexes", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "is_owner", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "grant_owner", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "revoke_owner", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "is_writer", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "grant_writer", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "revoke_writer", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableWorld", + "interface_name": "dojo::world::iworld::IUpgradeableWorld" + }, + { + "type": "interface", + "name": "dojo::world::iworld::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": "world_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::WorldSpawned", + "kind": "struct", + "members": [ + { + "name": "creator", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::WorldUpgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::NamespaceRegistered", + "kind": "struct", + "members": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ModelRegistered", + "kind": "struct", + "members": [ + { + "name": "name", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "namespace", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::EventRegistered", + "kind": "struct", + "members": [ + { + "name": "name", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "namespace", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ContractRegistered", + "kind": "struct", + "members": [ + { + "name": "name", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "namespace", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "salt", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ModelUpgraded", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "prev_address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::EventUpgraded", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "prev_address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ContractUpgraded", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ContractInitialized", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "init_calldata", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::EventEmitted", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "system_address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "keys", + "type": "core::array::Span::", + "kind": "data" + }, + { + "name": "values", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::MetadataUpdate", + "kind": "struct", + "members": [ + { + "name": "resource", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "uri", + "type": "core::byte_array::ByteArray", + "kind": "data" + }, + { + "name": "hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::StoreSetRecord", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "entity_id", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "keys", + "type": "core::array::Span::", + "kind": "data" + }, + { + "name": "values", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::StoreUpdateRecord", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "entity_id", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "values", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::StoreUpdateMember", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "entity_id", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "member_selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "values", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::StoreDelRecord", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "entity_id", + "type": "core::felt252", + "kind": "key" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::WriterUpdated", + "kind": "struct", + "members": [ + { + "name": "resource", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "value", + "type": "core::bool", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::OwnerUpdated", + "kind": "struct", + "members": [ + { + "name": "resource", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "value", + "type": "core::bool", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::Event", + "kind": "enum", + "variants": [ + { + "name": "WorldSpawned", + "type": "dojo::world::world_contract::world::WorldSpawned", + "kind": "nested" + }, + { + "name": "WorldUpgraded", + "type": "dojo::world::world_contract::world::WorldUpgraded", + "kind": "nested" + }, + { + "name": "NamespaceRegistered", + "type": "dojo::world::world_contract::world::NamespaceRegistered", + "kind": "nested" + }, + { + "name": "ModelRegistered", + "type": "dojo::world::world_contract::world::ModelRegistered", + "kind": "nested" + }, + { + "name": "EventRegistered", + "type": "dojo::world::world_contract::world::EventRegistered", + "kind": "nested" + }, + { + "name": "ContractRegistered", + "type": "dojo::world::world_contract::world::ContractRegistered", + "kind": "nested" + }, + { + "name": "ModelUpgraded", + "type": "dojo::world::world_contract::world::ModelUpgraded", + "kind": "nested" + }, + { + "name": "EventUpgraded", + "type": "dojo::world::world_contract::world::EventUpgraded", + "kind": "nested" + }, + { + "name": "ContractUpgraded", + "type": "dojo::world::world_contract::world::ContractUpgraded", + "kind": "nested" + }, + { + "name": "ContractInitialized", + "type": "dojo::world::world_contract::world::ContractInitialized", + "kind": "nested" + }, + { + "name": "EventEmitted", + "type": "dojo::world::world_contract::world::EventEmitted", + "kind": "nested" + }, + { + "name": "MetadataUpdate", + "type": "dojo::world::world_contract::world::MetadataUpdate", + "kind": "nested" + }, + { + "name": "StoreSetRecord", + "type": "dojo::world::world_contract::world::StoreSetRecord", + "kind": "nested" + }, + { + "name": "StoreUpdateRecord", + "type": "dojo::world::world_contract::world::StoreUpdateRecord", + "kind": "nested" + }, + { + "name": "StoreUpdateMember", + "type": "dojo::world::world_contract::world::StoreUpdateMember", + "kind": "nested" + }, + { + "name": "StoreDelRecord", + "type": "dojo::world::world_contract::world::StoreDelRecord", + "kind": "nested" + }, + { + "name": "WriterUpdated", + "type": "dojo::world::world_contract::world::WriterUpdated", + "kind": "nested" + }, + { + "name": "OwnerUpdated", + "type": "dojo::world::world_contract::world::OwnerUpdated", + "kind": "nested" + } + ] + } + ] + }, + "contracts": [ + { + "address": "0x7f4862123d52dffae89ec3fb4557690cd7fe2e92c9bf48d3bf8e44abfeafcf4", + "class_hash": "0x78b9f6c5bf71c8f9fc992f0c3a955dfc17fa6384bd2857d5ba32206a354ff9b", + "abi": [ + { + "type": "impl", + "name": "bank_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "bank_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BankSystemsImpl", + "interface_name": "s1_eternum::systems::bank::contracts::bank::IBankSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::bank::contracts::bank::IBankSystems", + "items": [ + { + "type": "function", + "name": "change_owner_amm_fee", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "new_owner_fee_num", + "type": "core::integer::u128" + }, + { + "name": "new_owner_fee_denom", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "change_owner_bridge_fee", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "owner_bridge_fee_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "owner_bridge_fee_wtdr_percent", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::bank::contracts::bank::bank_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-bank_systems", + "selector": "0x16cf356882260a01771aedaab01f8e3afdab764944c3c4d41c617cd76b91e6a", + "systems": [ + "change_owner_amm_fee", + "change_owner_bridge_fee", + "upgrade" + ] + }, + { + "address": "0x117560271d47312986c4d035d1e47831de5b481e4972312c133c9906a7422db", + "class_hash": "0x6188bc68291181c0cb9ca030c0ebc02bfadfa15f6a90da55cfeb6b8cbad0861", + "abi": [ + { + "type": "impl", + "name": "battle_pillage_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "battle_pillage_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BattlePillageContractImpl", + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract" + }, + { + "type": "interface", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract", + "items": [ + { + "type": "function", + "name": "battle_pillage", + "inputs": [ + { + "name": "army_id", + "type": "core::integer::u32" + }, + { + "name": "structure_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_pillage_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-battle_pillage_systems", + "selector": "0x9861172f7b864354b6e23d8971f0b054c518337a3cea854724658c43f9f580", + "systems": [ + "battle_pillage", + "upgrade" + ] + }, + { + "address": "0x7eb9c890214b5220230284162e8fe44789176ec789ca55abb807be49e3f3e91", + "class_hash": "0x6a30acbb2c446376fcb8d09bdbd2b2294ca8e6fa275592f3900a3aceeb1acd7", + "abi": [ + { + "type": "impl", + "name": "battle_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "battle_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BattleContractImpl", + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleContract" + }, + { + "type": "enum", + "name": "s1_eternum::models::combat::BattleSide", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Attack", + "type": "()" + }, + { + "name": "Defence", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleContract", + "items": [ + { + "type": "function", + "name": "battle_start", + "inputs": [ + { + "name": "attacking_army_id", + "type": "core::integer::u32" + }, + { + "name": "defending_army_id", + "type": "core::integer::u32" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_force_start", + "inputs": [ + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "defending_army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_join", + "inputs": [ + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "battle_side", + "type": "s1_eternum::models::combat::BattleSide" + }, + { + "name": "army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_leave", + "inputs": [ + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_claim", + "inputs": [ + { + "name": "army_id", + "type": "core::integer::u32" + }, + { + "name": "structure_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_resolve", + "inputs": [ + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-battle_systems", + "selector": "0x28fc8bb4b5e0140b71566a257468e491e41a12f2f284cae6d4e731abd862067", + "systems": [ + "battle_start", + "battle_force_start", + "battle_join", + "battle_leave", + "battle_claim", + "battle_resolve", + "upgrade" + ] + }, + { + "address": "0x2681ced2797e2f91332e049f7b7e8695f7c54183ebacc46827588a7aad022c9", + "class_hash": "0x53887e941bdd199bc27cf9adc9f776688cc2cec517f751324d918f6b36345ac", + "abi": [ + { + "type": "impl", + "name": "battle_utils_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "battle_utils_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BattleUtilsContractImpl", + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract" + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::Troops", + "members": [ + { + "name": "knight_count", + "type": "core::integer::u64" + }, + { + "name": "paladin_count", + "type": "core::integer::u64" + }, + { + "name": "crossbowman_count", + "type": "core::integer::u64" + } + ] + }, + { + "type": "enum", + "name": "s1_eternum::models::combat::BattleSide", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Attack", + "type": "()" + }, + { + "name": "Defence", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::BattleArmy", + "members": [ + { + "name": "troops", + "type": "s1_eternum::models::combat::Troops" + }, + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "battle_side", + "type": "s1_eternum::models::combat::BattleSide" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::BattleHealth", + "members": [ + { + "name": "current", + "type": "core::integer::u128" + }, + { + "name": "lifetime", + "type": "core::integer::u128" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::Battle", + "members": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "attack_army", + "type": "s1_eternum::models::combat::BattleArmy" + }, + { + "name": "attack_army_lifetime", + "type": "s1_eternum::models::combat::BattleArmy" + }, + { + "name": "defence_army", + "type": "s1_eternum::models::combat::BattleArmy" + }, + { + "name": "defence_army_lifetime", + "type": "s1_eternum::models::combat::BattleArmy" + }, + { + "name": "attackers_resources_escrow_id", + "type": "core::integer::u32" + }, + { + "name": "defenders_resources_escrow_id", + "type": "core::integer::u32" + }, + { + "name": "attack_army_health", + "type": "s1_eternum::models::combat::BattleHealth" + }, + { + "name": "defence_army_health", + "type": "s1_eternum::models::combat::BattleHealth" + }, + { + "name": "attack_delta", + "type": "core::integer::u64" + }, + { + "name": "defence_delta", + "type": "core::integer::u64" + }, + { + "name": "last_updated", + "type": "core::integer::u64" + }, + { + "name": "duration_left", + "type": "core::integer::u64" + }, + { + "name": "start_at", + "type": "core::integer::u64" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::Army", + "members": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "troops", + "type": "s1_eternum::models::combat::Troops" + }, + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "battle_side", + "type": "s1_eternum::models::combat::BattleSide" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract", + "items": [ + { + "type": "function", + "name": "leave_battle", + "inputs": [ + { + "name": "battle", + "type": "s1_eternum::models::combat::Battle" + }, + { + "name": "army", + "type": "s1_eternum::models::combat::Army" + } + ], + "outputs": [ + { + "type": "(s1_eternum::models::combat::Battle, s1_eternum::models::combat::Army)" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "leave_battle_if_ended", + "inputs": [ + { + "name": "battle", + "type": "s1_eternum::models::combat::Battle" + }, + { + "name": "army", + "type": "s1_eternum::models::combat::Army" + } + ], + "outputs": [ + { + "type": "(s1_eternum::models::combat::Battle, s1_eternum::models::combat::Army)" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_utils_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-battle_utils_systems", + "selector": "0x4199f9a24edfc349a8a16e338daaaea77af951bcc40d636e85107731d52d2b7", + "systems": [ + "leave_battle", + "leave_battle_if_ended", + "upgrade" + ] + }, + { + "address": "0x7edd2f2b330a6524e0cf002b582d2776a138a25892b0e5e2e206466cec2f3ed", + "class_hash": "0x3382fd74de14dbe7cc172adb1d7688b94c1e79ab91d393b7cb72f8f0f4d7738", + "abi": [ + { + "type": "impl", + "name": "config_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "config_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IWorldConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IWorldConfig", + "items": [ + { + "type": "function", + "name": "set_world_config", + "inputs": [ + { + "name": "admin_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "realm_l2_contract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "SeasonConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ISeasonConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ISeasonConfig", + "items": [ + { + "type": "function", + "name": "set_season_config", + "inputs": [ + { + "name": "season_pass_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "realms_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "lords_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "start_at", + "type": "core::integer::u64" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_season_bridge_config", + "inputs": [ + { + "name": "close_after_end_seconds", + "type": "core::integer::u64" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "VRFConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IVRFConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IVRFConfig", + "items": [ + { + "type": "function", + "name": "set_vrf_config", + "inputs": [ + { + "name": "vrf_provider_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "QuestConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IQuestConfig" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IQuestConfig", + "items": [ + { + "type": "function", + "name": "set_quest_config", + "inputs": [ + { + "name": "production_material_multiplier", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_quest_reward_config", + "inputs": [ + { + "name": "quest_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "MapConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IMapConfig" + }, + { + "type": "struct", + "name": "s1_eternum::models::config::MapConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "reward_resource_amount", + "type": "core::integer::u128" + }, + { + "name": "shards_mines_fail_probability", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IMapConfig", + "items": [ + { + "type": "function", + "name": "set_map_config", + "inputs": [ + { + "name": "map_config", + "type": "s1_eternum::models::config::MapConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "CapacityConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ICapacityConfig" + }, + { + "type": "enum", + "name": "s1_eternum::models::config::CapacityConfigCategory", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Structure", + "type": "()" + }, + { + "name": "Donkey", + "type": "()" + }, + { + "name": "Army", + "type": "()" + }, + { + "name": "Storehouse", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::config::CapacityConfig", + "members": [ + { + "name": "category", + "type": "s1_eternum::models::config::CapacityConfigCategory" + }, + { + "name": "weight_gram", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ICapacityConfig", + "items": [ + { + "type": "function", + "name": "set_capacity_config", + "inputs": [ + { + "name": "capacity_config", + "type": "s1_eternum::models::config::CapacityConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TravelStaminaCostConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITravelStaminaCostConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITravelStaminaCostConfig", + "items": [ + { + "type": "function", + "name": "set_travel_stamina_cost_config", + "inputs": [ + { + "name": "travel_type", + "type": "core::integer::u8" + }, + { + "name": "cost", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "WeightConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IWeightConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IWeightConfig", + "items": [ + { + "type": "function", + "name": "set_weight_config", + "inputs": [ + { + "name": "entity_type", + "type": "core::integer::u32" + }, + { + "name": "weight_gram", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "BattleConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IBattleConfig" + }, + { + "type": "struct", + "name": "s1_eternum::models::config::BattleConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "regular_immunity_ticks", + "type": "core::integer::u8" + }, + { + "name": "hyperstructure_immunity_ticks", + "type": "core::integer::u8" + }, + { + "name": "battle_delay_seconds", + "type": "core::integer::u64" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IBattleConfig", + "items": [ + { + "type": "function", + "name": "set_battle_config", + "inputs": [ + { + "name": "battle_config", + "type": "s1_eternum::models::config::BattleConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TickConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITickConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITickConfig", + "items": [ + { + "type": "function", + "name": "set_tick_config", + "inputs": [ + { + "name": "tick_id", + "type": "core::integer::u8" + }, + { + "name": "tick_interval_in_seconds", + "type": "core::integer::u64" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "StaminaConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IStaminaConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IStaminaConfig", + "items": [ + { + "type": "function", + "name": "set_stamina_config", + "inputs": [ + { + "name": "unit_type", + "type": "core::integer::u8" + }, + { + "name": "max_stamina", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TravelFoodCostConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITravelFoodCostConfig" + }, + { + "type": "struct", + "name": "s1_eternum::models::config::TravelFoodCostConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "unit_type", + "type": "core::integer::u8" + }, + { + "name": "explore_wheat_burn_amount", + "type": "core::integer::u128" + }, + { + "name": "explore_fish_burn_amount", + "type": "core::integer::u128" + }, + { + "name": "travel_wheat_burn_amount", + "type": "core::integer::u128" + }, + { + "name": "travel_fish_burn_amount", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITravelFoodCostConfig", + "items": [ + { + "type": "function", + "name": "set_travel_food_cost_config", + "inputs": [ + { + "name": "travel_food_cost_config", + "type": "s1_eternum::models::config::TravelFoodCostConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "StaminaRefillConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IStaminaRefillConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IStaminaRefillConfig", + "items": [ + { + "type": "function", + "name": "set_stamina_refill_config", + "inputs": [ + { + "name": "amount_per_tick", + "type": "core::integer::u16" + }, + { + "name": "start_boost_tick_count", + "type": "core::integer::u8" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "LevelingConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ILevelingConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ILevelingConfig", + "items": [ + { + "type": "function", + "name": "set_leveling_config", + "inputs": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "decay_interval", + "type": "core::integer::u64" + }, + { + "name": "max_level", + "type": "core::integer::u64" + }, + { + "name": "decay_scaled", + "type": "core::integer::u128" + }, + { + "name": "cost_percentage_scaled", + "type": "core::integer::u128" + }, + { + "name": "base_multiplier", + "type": "core::integer::u128" + }, + { + "name": "wheat_base_amount", + "type": "core::integer::u128" + }, + { + "name": "fish_base_amount", + "type": "core::integer::u128" + }, + { + "name": "resource_1_costs", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "resource_2_costs", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "resource_3_costs", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "ProductionConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IProductionConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IProductionConfig", + "items": [ + { + "type": "function", + "name": "set_production_config", + "inputs": [ + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "produced_amount", + "type": "core::integer::u128" + }, + { + "name": "labor_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "LaborConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ILaborConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ILaborConfig", + "items": [ + { + "type": "function", + "name": "set_labor_config", + "inputs": [ + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "cost", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TransportConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITransportConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITransportConfig", + "items": [ + { + "type": "function", + "name": "set_speed_config", + "inputs": [ + { + "name": "entity_type", + "type": "core::integer::u32" + }, + { + "name": "sec_per_km", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "HyperstructureConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IHyperstructureConfig" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IHyperstructureConfig", + "items": [ + { + "type": "function", + "name": "set_hyperstructure_config", + "inputs": [ + { + "name": "resources_for_completion", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128, core::integer::u128)>" + }, + { + "name": "time_between_shares_change", + "type": "core::integer::u64" + }, + { + "name": "points_per_cycle", + "type": "core::integer::u128" + }, + { + "name": "points_for_win", + "type": "core::integer::u128" + }, + { + "name": "points_on_completion", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "BankConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IBankConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IBankConfig", + "items": [ + { + "type": "function", + "name": "set_bank_config", + "inputs": [ + { + "name": "lords_cost", + "type": "core::integer::u128" + }, + { + "name": "lp_fee_num", + "type": "core::integer::u128" + }, + { + "name": "lp_fee_denom", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TroopConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITroopConfig" + }, + { + "type": "struct", + "name": "s1_eternum::models::config::TroopConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "health", + "type": "core::integer::u32" + }, + { + "name": "knight_strength", + "type": "core::integer::u8" + }, + { + "name": "paladin_strength", + "type": "core::integer::u8" + }, + { + "name": "crossbowman_strength", + "type": "core::integer::u16" + }, + { + "name": "advantage_percent", + "type": "core::integer::u16" + }, + { + "name": "disadvantage_percent", + "type": "core::integer::u16" + }, + { + "name": "max_troop_count", + "type": "core::integer::u64" + }, + { + "name": "pillage_health_divisor", + "type": "core::integer::u8" + }, + { + "name": "army_free_per_structure", + "type": "core::integer::u8" + }, + { + "name": "army_extra_per_building", + "type": "core::integer::u8" + }, + { + "name": "army_max_per_structure", + "type": "core::integer::u8" + }, + { + "name": "battle_leave_slash_num", + "type": "core::integer::u8" + }, + { + "name": "battle_leave_slash_denom", + "type": "core::integer::u8" + }, + { + "name": "battle_time_scale", + "type": "core::integer::u16" + }, + { + "name": "battle_max_time_seconds", + "type": "core::integer::u64" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITroopConfig", + "items": [ + { + "type": "function", + "name": "set_troop_config", + "inputs": [ + { + "name": "troop_config", + "type": "s1_eternum::models::config::TroopConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "BuildingCategoryPopulationConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IBuildingCategoryPopConfig" + }, + { + "type": "enum", + "name": "s1_eternum::models::resource::production::building::BuildingCategory", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Castle", + "type": "()" + }, + { + "name": "Resource", + "type": "()" + }, + { + "name": "Farm", + "type": "()" + }, + { + "name": "FishingVillage", + "type": "()" + }, + { + "name": "Barracks", + "type": "()" + }, + { + "name": "Market", + "type": "()" + }, + { + "name": "ArcheryRange", + "type": "()" + }, + { + "name": "Stable", + "type": "()" + }, + { + "name": "TradingPost", + "type": "()" + }, + { + "name": "WorkersHut", + "type": "()" + }, + { + "name": "WatchTower", + "type": "()" + }, + { + "name": "Walls", + "type": "()" + }, + { + "name": "Storehouse", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IBuildingCategoryPopConfig", + "items": [ + { + "type": "function", + "name": "set_building_category_pop_config", + "inputs": [ + { + "name": "building_category", + "type": "s1_eternum::models::resource::production::building::BuildingCategory" + }, + { + "name": "population", + "type": "core::integer::u32" + }, + { + "name": "capacity", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "PopulationConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IPopulationConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IPopulationConfig", + "items": [ + { + "type": "function", + "name": "set_population_config", + "inputs": [ + { + "name": "base_population", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "BuildingConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IBuildingConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IBuildingConfig", + "items": [ + { + "type": "function", + "name": "set_building_general_config", + "inputs": [ + { + "name": "base_cost_percent_increase", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_building_config", + "inputs": [ + { + "name": "building_category", + "type": "s1_eternum::models::resource::production::building::BuildingCategory" + }, + { + "name": "building_resource_type", + "type": "core::integer::u8" + }, + { + "name": "cost_of_building", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "IMercenariesConfig", + "interface_name": "s1_eternum::systems::config::contracts::IMercenariesConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IMercenariesConfig", + "items": [ + { + "type": "function", + "name": "set_mercenaries_config", + "inputs": [ + { + "name": "knights_lower_bound", + "type": "core::integer::u64" + }, + { + "name": "knights_upper_bound", + "type": "core::integer::u64" + }, + { + "name": "paladins_lower_bound", + "type": "core::integer::u64" + }, + { + "name": "paladins_upper_bound", + "type": "core::integer::u64" + }, + { + "name": "crossbowmen_lower_bound", + "type": "core::integer::u64" + }, + { + "name": "crossbowmen_upper_bound", + "type": "core::integer::u64" + }, + { + "name": "rewards", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "IResourceBridgeConfig", + "interface_name": "s1_eternum::systems::config::contracts::IResourceBridgeConfig" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::config::ResourceBridgeConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "deposit_paused", + "type": "core::bool" + }, + { + "name": "withdraw_paused", + "type": "core::bool" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::config::ResourceBridgeFeeSplitConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "velords_fee_on_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "velords_fee_on_wtdr_percent", + "type": "core::integer::u16" + }, + { + "name": "season_pool_fee_on_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "season_pool_fee_on_wtdr_percent", + "type": "core::integer::u16" + }, + { + "name": "client_fee_on_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "client_fee_on_wtdr_percent", + "type": "core::integer::u16" + }, + { + "name": "velords_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "season_pool_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "max_bank_fee_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "max_bank_fee_wtdr_percent", + "type": "core::integer::u16" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::config::ResourceBridgeWhitelistConfig", + "members": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IResourceBridgeConfig", + "items": [ + { + "type": "function", + "name": "set_resource_bridge_config", + "inputs": [ + { + "name": "resource_bridge_config", + "type": "s1_eternum::models::config::ResourceBridgeConfig" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_resource_bridge_fee_split_config", + "inputs": [ + { + "name": "resource_bridge_fee_split_config", + "type": "s1_eternum::models::config::ResourceBridgeFeeSplitConfig" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_resource_bridge_whitelist_config", + "inputs": [ + { + "name": "resource_bridge_whitelist_config", + "type": "s1_eternum::models::config::ResourceBridgeWhitelistConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "RealmLevelConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IRealmLevelConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IRealmLevelConfig", + "items": [ + { + "type": "function", + "name": "set_realm_max_level_config", + "inputs": [ + { + "name": "new_max_level", + "type": "core::integer::u8" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_realm_level_config", + "inputs": [ + { + "name": "level", + "type": "core::integer::u8" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "ISettlementConfig", + "interface_name": "s1_eternum::systems::config::contracts::ISettlementConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ISettlementConfig", + "items": [ + { + "type": "function", + "name": "set_settlement_config", + "inputs": [ + { + "name": "center", + "type": "core::integer::u32" + }, + { + "name": "base_distance", + "type": "core::integer::u32" + }, + { + "name": "min_first_layer_distance", + "type": "core::integer::u32" + }, + { + "name": "points_placed", + "type": "core::integer::u32" + }, + { + "name": "current_layer", + "type": "core::integer::u32" + }, + { + "name": "current_side", + "type": "core::integer::u32" + }, + { + "name": "current_point_on_side", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "achievement::components::achievable::AchievableComponent::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::config::contracts::config_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + }, + { + "name": "AchievableEvent", + "type": "achievement::components::achievable::AchievableComponent::Event", + "kind": "flat" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-config_systems", + "selector": "0x4deb9db2b1005876b689d07a98673dacb6beea64ef9f564a19a38228d798204", + "systems": [ + "set_world_config", + "set_season_config", + "set_season_bridge_config", + "set_vrf_config", + "set_quest_config", + "set_quest_reward_config", + "set_map_config", + "set_capacity_config", + "set_travel_stamina_cost_config", + "set_weight_config", + "set_battle_config", + "set_tick_config", + "set_stamina_config", + "set_travel_food_cost_config", + "set_stamina_refill_config", + "set_leveling_config", + "set_production_config", + "set_labor_config", + "set_speed_config", + "set_hyperstructure_config", + "set_bank_config", + "set_troop_config", + "set_building_category_pop_config", + "set_population_config", + "set_building_general_config", + "set_building_config", + "set_mercenaries_config", + "set_resource_bridge_config", + "set_resource_bridge_fee_split_config", + "set_resource_bridge_whitelist_config", + "set_realm_max_level_config", + "set_realm_level_config", + "set_settlement_config", + "upgrade" + ] + }, + { + "address": "0xee829901be444844e0771a0c793b106c3192c312c8e58685f7c6941893b5f9", + "class_hash": "0x5ffed6c73f9f2219e87b2fc6b2a35c14e50c0ee70a0c914b098049ab86ea228", + "abi": [ + { + "type": "impl", + "name": "dev_bank_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "dev_bank_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BankSystemsImpl", + "interface_name": "s1_eternum::systems::dev::contracts::bank::IBankSystems" + }, + { + "type": "struct", + "name": "s1_eternum::models::position::Coord", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::dev::contracts::bank::IBankSystems", + "items": [ + { + "type": "function", + "name": "create_admin_bank", + "inputs": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "coord", + "type": "s1_eternum::models::position::Coord" + }, + { + "name": "owner_fee_num", + "type": "core::integer::u128" + }, + { + "name": "owner_fee_denom", + "type": "core::integer::u128" + }, + { + "name": "owner_bridge_fee_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "owner_bridge_fee_wtdr_percent", + "type": "core::integer::u16" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::dev::contracts::bank::dev_bank_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-dev_bank_systems", + "selector": "0x436d7ef5fa5753c742f95b4fd3a7722399b309251363684474bfcba389fb607", + "systems": [ + "create_admin_bank", + "upgrade" + ] + }, + { + "address": "0x729222a8e3757daec72d37dd434a3a44d3c0bddbec95cf087fb1b983b166b1a", + "class_hash": "0x1b92ab9641011892a0ee9b70dd142bbe52b53bef66ae2ff5e92a20e445375f4", + "abi": [ + { + "type": "impl", + "name": "dev_realm_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "dev_realm_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "DevRealmSystemsImpl", + "interface_name": "s1_eternum::systems::dev::contracts::realm::IDevRealmSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::dev::contracts::realm::IDevRealmSystems", + "items": [ + { + "type": "function", + "name": "create", + "inputs": [ + { + "name": "realm_id", + "type": "core::integer::u32" + }, + { + "name": "frontend", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::dev::contracts::realm::dev_realm_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-dev_realm_systems", + "selector": "0x2a2f52f1a66a15e1e6bee3b5ea2d104bc146e82c1625c5421f6f45c44640824", + "systems": [ + "create", + "upgrade" + ] + }, + { + "address": "0x307080fd4791b42fb76e74d07247eaa9d4601ab683b78b4683d19b0e7616f1b", + "class_hash": "0x1ae4771a978cb4194e36d77c020065b4bf171b1cb46d744bffde32b99347d0f", + "abi": [ + { + "type": "impl", + "name": "dev_resource_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "dev_resource_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ResourceSystemsImpl", + "interface_name": "s1_eternum::systems::dev::contracts::resource::IResourceSystems" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::dev::contracts::resource::IResourceSystems", + "items": [ + { + "type": "function", + "name": "mint", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::dev::contracts::resource::dev_resource_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-dev_resource_systems", + "selector": "0x6125379dcbb305b4f4b955271c3c4d472ece9852c3592d9d38a9fbc63fe9025", + "systems": [ + "mint", + "upgrade" + ] + }, + { + "address": "0x68a2cb801dc504acb121c7609d13f1f4bea6739dc80c31d789868ebda339067", + "class_hash": "0x2727b507b2d724b109bc2f969ccb090ee75e78b4c0d2d685e5e8cbce47f07f7", + "abi": [ + { + "type": "impl", + "name": "donkey_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "donkey_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::transport::contracts::donkey_systems::donkey_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-donkey_systems", + "selector": "0x76a0f4e4cdc01c969350b612c38d49d38689d5fde54e4afb3205a4629db83b6", + "systems": [ + "upgrade" + ] + }, + { + "address": "0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4", + "class_hash": "0x2107679161457e3f08fcd5bbb8f8473983e5c8b3c48c1ef67840958e994547c", + "abi": [ + { + "type": "impl", + "name": "guild_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "guild_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "GuildSystemsImpl", + "interface_name": "s1_eternum::systems::guild::contracts::IGuildSystems" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::guild::contracts::IGuildSystems", + "items": [ + { + "type": "function", + "name": "create_guild", + "inputs": [ + { + "name": "is_public", + "type": "core::bool" + }, + { + "name": "guild_name", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "join_guild", + "inputs": [ + { + "name": "guild_entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "whitelist_player", + "inputs": [ + { + "name": "player_address_to_whitelist", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "guild_entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "transfer_guild_ownership", + "inputs": [ + { + "name": "guild_entity_id", + "type": "core::integer::u32" + }, + { + "name": "to_player_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "remove_guild_member", + "inputs": [ + { + "name": "player_address_to_remove", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "remove_player_from_whitelist", + "inputs": [ + { + "name": "player_address_to_remove", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "guild_entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::guild::contracts::guild_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-guild_systems", + "selector": "0x6b2e6f3912853c9745b74266fe1d344bfe8ba99561982c5b4c3ac0e081f956b", + "systems": [ + "create_guild", + "join_guild", + "whitelist_player", + "transfer_guild_ownership", + "remove_guild_member", + "remove_player_from_whitelist", + "upgrade" + ] + }, + { + "address": "0x49db643bbe9557daf31efd0d753c209ef5cf7febcb050fa3b6ac94d20f95e23", + "class_hash": "0x4d90b47d492b438e4c43d610da56628ef3c4a39414062202693adef16757f43", + "abi": [ + { + "type": "impl", + "name": "hyperstructure_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "hyperstructure_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "HyperstructureSystemsImpl", + "interface_name": "s1_eternum::systems::hyperstructure::contracts::IHyperstructureSystems" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u32, core::integer::u16)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u32, core::integer::u16)>" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::position::Coord", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>" + } + ] + }, + { + "type": "enum", + "name": "s1_eternum::models::hyperstructure::Access", + "variants": [ + { + "name": "Public", + "type": "()" + }, + { + "name": "Private", + "type": "()" + }, + { + "name": "GuildOnly", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::hyperstructure::contracts::IHyperstructureSystems", + "items": [ + { + "type": "function", + "name": "get_points", + "inputs": [ + { + "name": "player_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "hyperstructures_contributed_to", + "type": "core::array::Span::" + }, + { + "name": "hyperstructure_shareholder_epochs", + "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" + } + ], + "outputs": [ + { + "type": "(core::integer::u128, core::integer::u128, core::integer::u128, core::integer::u128)" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "create", + "inputs": [ + { + "name": "creator_entity_id", + "type": "core::integer::u32" + }, + { + "name": "coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "contribute_to_construction", + "inputs": [ + { + "name": "hyperstructure_entity_id", + "type": "core::integer::u32" + }, + { + "name": "contributor_entity_id", + "type": "core::integer::u32" + }, + { + "name": "contributions", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_co_owners", + "inputs": [ + { + "name": "hyperstructure_entity_id", + "type": "core::integer::u32" + }, + { + "name": "co_owners", + "type": "core::array::Span::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "end_game", + "inputs": [ + { + "name": "hyperstructures_contributed_to", + "type": "core::array::Span::" + }, + { + "name": "hyperstructure_shareholder_epochs", + "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_access", + "inputs": [ + { + "name": "hyperstructure_entity_id", + "type": "core::integer::u32" + }, + { + "name": "access", + "type": "s1_eternum::models::hyperstructure::Access" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::hyperstructure::contracts::hyperstructure_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-hyperstructure_systems", + "selector": "0x44f825ffb89246cbeda203107846db0efad60bbedb24dc67dbd4a42593e6c82", + "systems": [ + "get_points", + "create", + "contribute_to_construction", + "set_co_owners", + "end_game", + "set_access", + "upgrade" + ] + }, + { + "address": "0x2e025f19895cbb4f9fd2ca441c16ff9c79883d9c8aba65aed04719c9914be5", + "class_hash": "0xc4d330fb90c925dc955acf07d31aac9117fc6e1e395e7ad5c176d5ef6f162c", + "abi": [ + { + "type": "impl", + "name": "liquidity_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "liquidity_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "LiquiditySystemsImpl", + "interface_name": "s1_eternum::systems::bank::contracts::liquidity::ILiquiditySystems" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "cubit::f128::types::fixed::Fixed", + "members": [ + { + "name": "mag", + "type": "core::integer::u128" + }, + { + "name": "sign", + "type": "core::bool" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::bank::contracts::liquidity::ILiquiditySystems", + "items": [ + { + "type": "function", + "name": "add", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "resource_amount", + "type": "core::integer::u128" + }, + { + "name": "lords_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "remove", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "shares", + "type": "cubit::f128::types::fixed::Fixed" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::bank::contracts::liquidity::liquidity_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-liquidity_systems", + "selector": "0x3cc30307c653c6c1ba1a6e99364f57c94360b8f73787d1518eaab02e9d0d6b", + "systems": [ + "add", + "remove", + "upgrade" + ] + }, + { + "address": "0x58ac8650760361b31b4b5bf48d158fde038c4f9c28bc91dca3513dfe2435a48", + "class_hash": "0x43006776e4cc65a3f69ec5f1600f1c58a9e5c4e85dcbb240e543f642f71096a", + "abi": [ + { + "type": "impl", + "name": "map_generation_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "map_generation_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "MapGenerationSystemsImpl", + "interface_name": "s1_eternum::systems::map::map_generation::IMapGenerationSystems" + }, + { + "type": "struct", + "name": "s1_eternum::models::owner::EntityOwner", + "members": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_owner_id", + "type": "core::integer::u32" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::position::Coord", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "core::integer::u256", + "members": [ + { + "name": "low", + "type": "core::integer::u128" + }, + { + "name": "high", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::map::map_generation::IMapGenerationSystems", + "items": [ + { + "type": "function", + "name": "discover_shards_mine", + "inputs": [ + { + "name": "unit_entity_owner", + "type": "s1_eternum::models::owner::EntityOwner" + }, + { + "name": "coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "add_mercenaries_to_structure", + "inputs": [ + { + "name": "randomness", + "type": "core::integer::u256" + }, + { + "name": "structure_entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::map::map_generation::map_generation_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-map_generation_systems", + "selector": "0x29daec1bf7e70863ae1f9a4b455a1e12030394562eb21b214c9037f9fb71424", + "systems": [ + "discover_shards_mine", + "add_mercenaries_to_structure", + "upgrade" + ] + }, + { + "address": "0x1d75cae93cadd00f7e917549aeb103be0316e5aa515e9a3c5b950306d40d402", + "class_hash": "0x33cb596c0b6664436780c838a97fd00046dd71f8be5bed812d4ff1fe480faf9", + "abi": [ + { + "type": "impl", + "name": "map_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "map_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "MapSystemsImpl", + "interface_name": "s1_eternum::systems::map::contracts::IMapSystems" + }, + { + "type": "enum", + "name": "s1_eternum::models::position::Direction", + "variants": [ + { + "name": "East", + "type": "()" + }, + { + "name": "NorthEast", + "type": "()" + }, + { + "name": "NorthWest", + "type": "()" + }, + { + "name": "West", + "type": "()" + }, + { + "name": "SouthWest", + "type": "()" + }, + { + "name": "SouthEast", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::map::contracts::IMapSystems", + "items": [ + { + "type": "function", + "name": "explore", + "inputs": [ + { + "name": "unit_id", + "type": "core::integer::u32" + }, + { + "name": "direction", + "type": "s1_eternum::models::position::Direction" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::map::contracts::map_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-map_systems", + "selector": "0x27a92961f46c5ac43e19fa2b7d50d169c2776dbb98478a96a8a3050647431cd", + "systems": [ + "explore", + "upgrade" + ] + }, + { + "address": "0x7e3bae0e253a0131063b63ee4d7b27b50329c617ae88b82d529a70f1a11c63", + "class_hash": "0x288d58cd0a2fa003e18768537e62f72649c451a647fd704096a4b1dae4bdcae", + "abi": [ + { + "type": "impl", + "name": "name_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "name_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "NameSystemsImpl", + "interface_name": "s1_eternum::systems::name::contracts::INameSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::name::contracts::INameSystems", + "items": [ + { + "type": "function", + "name": "set_address_name", + "inputs": [ + { + "name": "name", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_entity_name", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "name", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::name::contracts::name_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-name_systems", + "selector": "0x57061191efce4db08b753f5d6119a16595a3ac2b91db70e971630c34ff5e16e", + "systems": [ + "set_address_name", + "set_entity_name", + "upgrade" + ] + }, + { + "address": "0x30516789ee1b822d7b448f01be67cec7bf383d3ac4b2380a09f85ad0765f846", + "class_hash": "0x1896883a09bb110c705be2685eacb0b0e6ae67fde76602982f7f32daceb7fa7", + "abi": [ + { + "type": "impl", + "name": "ownership_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "ownership_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "OwnershipSystemsImpl", + "interface_name": "s1_eternum::systems::ownership::contracts::IOwnershipSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::ownership::contracts::IOwnershipSystems", + "items": [ + { + "type": "function", + "name": "transfer_ownership", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "new_owner", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::ownership::contracts::ownership_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-ownership_systems", + "selector": "0x419b9f1d9d3cbe8dd78cb553b0e1895fa2d3cfb9e7e578866056fca72f9108b", + "systems": [ + "transfer_ownership", + "upgrade" + ] + }, + { + "address": "0x11fb20f4742dd6a0f6de3113140f162824367c32410b2c1c7c6a62c334f4465", + "class_hash": "0x117c75b4ceb735f2a7b8619866ac5646f7e6b829b47ab661ecdf0411fa80e97", + "abi": [ + { + "type": "impl", + "name": "production_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "production_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ProductionContractImpl", + "interface_name": "s1_eternum::systems::production::contracts::IProductionContract" + }, + { + "type": "enum", + "name": "s1_eternum::models::position::Direction", + "variants": [ + { + "name": "East", + "type": "()" + }, + { + "name": "NorthEast", + "type": "()" + }, + { + "name": "NorthWest", + "type": "()" + }, + { + "name": "West", + "type": "()" + }, + { + "name": "SouthWest", + "type": "()" + }, + { + "name": "SouthEast", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "s1_eternum::models::resource::production::building::BuildingCategory", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Castle", + "type": "()" + }, + { + "name": "Resource", + "type": "()" + }, + { + "name": "Farm", + "type": "()" + }, + { + "name": "FishingVillage", + "type": "()" + }, + { + "name": "Barracks", + "type": "()" + }, + { + "name": "Market", + "type": "()" + }, + { + "name": "ArcheryRange", + "type": "()" + }, + { + "name": "Stable", + "type": "()" + }, + { + "name": "TradingPost", + "type": "()" + }, + { + "name": "WorkersHut", + "type": "()" + }, + { + "name": "WatchTower", + "type": "()" + }, + { + "name": "Walls", + "type": "()" + }, + { + "name": "Storehouse", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "core::option::Option::", + "variants": [ + { + "name": "Some", + "type": "core::integer::u8" + }, + { + "name": "None", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::position::Coord", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::production::contracts::IProductionContract", + "items": [ + { + "type": "function", + "name": "create_building", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "directions", + "type": "core::array::Span::" + }, + { + "name": "building_category", + "type": "s1_eternum::models::resource::production::building::BuildingCategory" + }, + { + "name": "produce_resource_type", + "type": "core::option::Option::" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "destroy_building", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "building_coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "pause_building_production", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "building_coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "resume_building_production", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "building_coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "make_production_labor", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "labor_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "burn_production_labor", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "labor_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::production::contracts::production_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-production_systems", + "selector": "0x3a77cbb8431a07abf2872ee61e8941c594c6455bd76143ef8222e2bb02d6faf", + "systems": [ + "create_building", + "destroy_building", + "pause_building_production", + "resume_building_production", + "make_production_labor", + "burn_production_labor", + "upgrade" + ] + }, + { + "address": "0x13c118237c33b68a4f583f58cbb4f622c66b1e6afa99a5be329e6f26ea4775", + "class_hash": "0x474c4ff6f76937c10a58d542abd39366d78062432f39e72bdfba6ec7edbc147", + "abi": [ + { + "type": "impl", + "name": "realm_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "realm_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "RealmSystemsImpl", + "interface_name": "s1_eternum::systems::realm::contracts::IRealmSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::realm::contracts::IRealmSystems", + "items": [ + { + "type": "function", + "name": "create", + "inputs": [ + { + "name": "owner", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "realm_id", + "type": "core::integer::u32" + }, + { + "name": "frontend", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "upgrade_level", + "inputs": [ + { + "name": "realm_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "quest_claim", + "inputs": [ + { + "name": "quest_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::realm::contracts::realm_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-realm_systems", + "selector": "0x6ae6691704d5df34326545ad7d15afebdd83066596af8c0dcb5d216d1ede909", + "systems": [ + "create", + "upgrade_level", + "quest_claim", + "upgrade" + ] + }, + { + "address": "0x3e5ff980675bf1265c3a9bd1465dbb8029a5c51e7d25cfaa0c634eca06788c0", + "class_hash": "0x2abcf356dc9c580a4d6b9967b10d9623f5503f9a92790ad46cd7ad4f24d3c49", + "abi": [ + { + "type": "impl", + "name": "resource_bridge_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "resource_bridge_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ResourceBridgeImpl", + "interface_name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems" + }, + { + "type": "struct", + "name": "core::integer::u256", + "members": [ + { + "name": "low", + "type": "core::integer::u128" + }, + { + "name": "high", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems", + "items": [ + { + "type": "function", + "name": "deposit_initial", + "inputs": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "recipient_realm_id", + "type": "core::integer::u32" + }, + { + "name": "amount", + "type": "core::integer::u256" + }, + { + "name": "client_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "deposit", + "inputs": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "through_bank_id", + "type": "core::integer::u32" + }, + { + "name": "recipient_realm_id", + "type": "core::integer::u32" + }, + { + "name": "amount", + "type": "core::integer::u256" + }, + { + "name": "client_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "start_withdraw", + "inputs": [ + { + "name": "through_bank_id", + "type": "core::integer::u32" + }, + { + "name": "from_realm_id", + "type": "core::integer::u32" + }, + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "finish_withdraw", + "inputs": [ + { + "name": "through_bank_id", + "type": "core::integer::u32" + }, + { + "name": "from_entity_id", + "type": "core::integer::u32" + }, + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "recipient_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "client_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::resource_bridge_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-resource_bridge_systems", + "selector": "0x5916a4c5e4fb7f1105244015fcc1e9950efab35919af199a4a2c1aef2c3aa61", + "systems": [ + "deposit_initial", + "deposit", + "start_withdraw", + "finish_withdraw", + "upgrade" + ] + }, + { + "address": "0x1ca0dd377a30b23e3d5d13d4db04dd53650c0216c23385db7f59410a28f446e", + "class_hash": "0x18274bc5d90f9638268e6cd7ee82f9cd1c201ee09d04936b3b0b401b33316a2", + "abi": [ + { + "type": "impl", + "name": "resource_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "resource_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ResourceSystemsImpl", + "interface_name": "s1_eternum::systems::resources::contracts::resource_systems::IResourceSystems" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::resources::contracts::resource_systems::IResourceSystems", + "items": [ + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "recipient_entity_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "send", + "inputs": [ + { + "name": "sender_entity_id", + "type": "core::integer::u32" + }, + { + "name": "recipient_entity_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "pickup", + "inputs": [ + { + "name": "recipient_entity_id", + "type": "core::integer::u32" + }, + { + "name": "owner_entity_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::resources::contracts::resource_systems::resource_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-resource_systems", + "selector": "0x31e8be63af9c072934c219dd6cbd2fea3b49fce2311adceb8a8a8870a760b62", + "systems": [ + "approve", + "send", + "pickup", + "upgrade" + ] + }, + { + "address": "0x11cda9e4d71ff79447152bd0081a0a611a81580199ad2722a6bc846493dcf21", + "class_hash": "0x9621841c4e410eb3d47a12a1cf0faade35402936b3939e4177e9a31d2786ba", + "abi": [ + { + "type": "impl", + "name": "season_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "season_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "SeasonSystemsImpl", + "interface_name": "s1_eternum::systems::season::contracts::ISeasonSystems" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u32, core::integer::u16)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u32, core::integer::u16)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::season::contracts::ISeasonSystems", + "items": [ + { + "type": "function", + "name": "register_to_leaderboard", + "inputs": [ + { + "name": "hyperstructures_contributed_to", + "type": "core::array::Span::" + }, + { + "name": "hyperstructure_shareholder_epochs", + "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "claim_leaderboard_rewards", + "inputs": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::season::contracts::season_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-season_systems", + "selector": "0x384e61da11b2e476dc992c9556f8d1d42814136a36400b5cb34175de183ac9", + "systems": [ + "register_to_leaderboard", + "claim_leaderboard_rewards", + "upgrade" + ] + }, + { + "address": "0xad2497bc1ab2f553880ed9177205f5a11d43c9700e48e6b2d5a077f8e30b46", + "class_hash": "0x1c83cf51cc23f95245b6ad9da84b939c9452722a2d56c5af4b58d3fce40cae4", + "abi": [ + { + "type": "impl", + "name": "swap_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "swap_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "SwapSystemsImpl", + "interface_name": "s1_eternum::systems::bank::contracts::swap::ISwapSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::bank::contracts::swap::ISwapSystems", + "items": [ + { + "type": "function", + "name": "buy", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "amount", + "type": "core::integer::u128" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "sell", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "amount", + "type": "core::integer::u128" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::bank::contracts::swap::swap_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-swap_systems", + "selector": "0x14a06d11e0f26724e8e61c141842f95425009d07620b3c369f9f517d568e591", + "systems": [ + "buy", + "sell", + "upgrade" + ] + }, + { + "address": "0x21b4abad8d9d0b141ad9a5520bdd952f0668d2c5e57cca372251faae16330f7", + "class_hash": "0x18adbc75988a8338394488b0060703ad375879483fc98d0443a22caf03c9edb", + "abi": [ + { + "type": "impl", + "name": "trade_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "trade_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "TradeSystemsImpl", + "interface_name": "s1_eternum::systems::trade::contracts::trade_systems::ITradeSystems" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::trade::contracts::trade_systems::ITradeSystems", + "items": [ + { + "type": "function", + "name": "create_order", + "inputs": [ + { + "name": "maker_id", + "type": "core::integer::u32" + }, + { + "name": "maker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "taker_id", + "type": "core::integer::u32" + }, + { + "name": "taker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "expires_at", + "type": "core::integer::u64" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "accept_order", + "inputs": [ + { + "name": "taker_id", + "type": "core::integer::u32" + }, + { + "name": "trade_id", + "type": "core::integer::u32" + }, + { + "name": "maker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "taker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "accept_partial_order", + "inputs": [ + { + "name": "taker_id", + "type": "core::integer::u32" + }, + { + "name": "trade_id", + "type": "core::integer::u32" + }, + { + "name": "maker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "taker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "taker_gives_actual_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "cancel_order", + "inputs": [ + { + "name": "trade_id", + "type": "core::integer::u32" + }, + { + "name": "return_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::trade::contracts::trade_systems::trade_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-trade_systems", + "selector": "0x5272cd9b34062cb8bd8ec92ecca87f92a884d4bd2f5bf6c563265a018ac22a5", + "systems": [ + "create_order", + "accept_order", + "accept_partial_order", + "cancel_order", + "upgrade" + ] + }, + { + "address": "0x303f3d052ee80edf5c82f3dde037715e8b6577e3d272caf1344f53eb1246612", + "class_hash": "0x7473c801f429284cdbba4b78978d1a898b75e09c8c162c447cf68da8e620f38", + "abi": [ + { + "type": "impl", + "name": "travel_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "travel_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "TravelSystemsImpl", + "interface_name": "s1_eternum::systems::transport::contracts::travel_systems::ITravelSystems" + }, + { + "type": "enum", + "name": "s1_eternum::models::position::Direction", + "variants": [ + { + "name": "East", + "type": "()" + }, + { + "name": "NorthEast", + "type": "()" + }, + { + "name": "NorthWest", + "type": "()" + }, + { + "name": "West", + "type": "()" + }, + { + "name": "SouthWest", + "type": "()" + }, + { + "name": "SouthEast", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::transport::contracts::travel_systems::ITravelSystems", + "items": [ + { + "type": "function", + "name": "travel_hex", + "inputs": [ + { + "name": "travelling_entity_id", + "type": "core::integer::u32" + }, + { + "name": "directions", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::transport::contracts::travel_systems::travel_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-travel_systems", + "selector": "0x4928d4294639e944ff93869e10cee7533ffd910f5791fc486c04b91f2fcf8fe", + "systems": [ + "travel_hex", + "upgrade" + ] + }, + { + "address": "0x112f75317324bc053eeb1e0bd581942c7a94c6e219d2773f35f5c4bb7e5eea2", + "class_hash": "0x13df0206567ef6f323a2aa4abd00e7d043b9e87f87e73a42e411b2db8d2ffce", + "abi": [ + { + "type": "impl", + "name": "troop_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "troop_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "TroopContractImpl", + "interface_name": "s1_eternum::systems::combat::contracts::troop_systems::ITroopContract" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::Troops", + "members": [ + { + "name": "knight_count", + "type": "core::integer::u64" + }, + { + "name": "paladin_count", + "type": "core::integer::u64" + }, + { + "name": "crossbowman_count", + "type": "core::integer::u64" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::combat::contracts::troop_systems::ITroopContract", + "items": [ + { + "type": "function", + "name": "army_create", + "inputs": [ + { + "name": "army_owner_id", + "type": "core::integer::u32" + }, + { + "name": "is_defensive_army", + "type": "core::bool" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "army_delete", + "inputs": [ + { + "name": "army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "army_buy_troops", + "inputs": [ + { + "name": "army_id", + "type": "core::integer::u32" + }, + { + "name": "payer_id", + "type": "core::integer::u32" + }, + { + "name": "troops", + "type": "s1_eternum::models::combat::Troops" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "army_merge_troops", + "inputs": [ + { + "name": "from_army_id", + "type": "core::integer::u32" + }, + { + "name": "to_army_id", + "type": "core::integer::u32" + }, + { + "name": "troops", + "type": "s1_eternum::models::combat::Troops" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::combat::contracts::troop_systems::troop_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-troop_systems", + "selector": "0x5f97ab78613558d9346649708e6829b417ad55826ba2e4f7b0fc79ad276180a", + "systems": [ + "army_create", + "army_delete", + "army_buy_troops", + "army_merge_troops", + "upgrade" + ] + } + ], + "models": [ + { + "members": [], + "class_hash": "0x25603f4597c7b9476318af1bf26c9e0f9f7a3f24b8aa4fd4aa095289c74e2bb", + "tag": "s1_eternum-AddressName", + "selector": "0x2a33e6e963e8f80fb8f00a69a8b55ec9834adda81bbb305024500c4b4356e24" + }, + { + "members": [], + "class_hash": "0x7c8598486eb6f5bc890ccac17cc5c4f7400998f5c50247d90e5df0f643f9f2b", + "tag": "s1_eternum-Army", + "selector": "0x34cab5fd09c4f5f5b8624e52c883afec2462c2fc2e7227121f70de648e68dcc" + }, + { + "members": [], + "class_hash": "0x7833dddc0296ff97ec9f1dc202d471ed80888935579f156737927c9207e0417", + "tag": "s1_eternum-ArrivalTime", + "selector": "0xd334451a97858d6173423408cd0c4da2a3878f6ec4f3909e134193d07682c4" + }, + { + "members": [], + "class_hash": "0x189b3d6d05402af89cfefc45b6c6ce579ab81ee7da7cce1fdf08ecb881de732", + "tag": "s1_eternum-Bank", + "selector": "0x6f71dd64e5e14a5ab47d15cfabd84490061490c8c203993790f30cafd5d117e" + }, + { + "members": [], + "class_hash": "0xa7a02d408072e5f97ebf3f0d69acb4fb176223379091948a452c10c314a0d2", + "tag": "s1_eternum-BankConfig", + "selector": "0x2a507ce5bff2ddf50eced9c753dc0a160ba64fc6efe3be4cb26ce51210e2b81" + }, + { + "members": [], + "class_hash": "0x809fe36ec53a3cfa77f64648430007c5bc0bb148c31652b3956bb318a8f7ae", + "tag": "s1_eternum-Battle", + "selector": "0x28394f9c3c874b586a25bf96d137256eab0a702fc3f66aa83464a5a0e062172" + }, + { + "members": [], + "class_hash": "0x715169dd601b742605451b231c47de8970be609fb85f48115b01333766bedf4", + "tag": "s1_eternum-BattleConfig", + "selector": "0x224e4f9b37ed3d9cc06297ea8507e62538b864a92232f0ec53a4c7a4cf6ccfd" + }, + { + "members": [], + "class_hash": "0x5a87072c500c421ec08026f486175327cbf8f35b6797f5cc045a7e372e63d6e", + "tag": "s1_eternum-Building", + "selector": "0x74f3912ea921e93e11f5c8267c29d94f367b3c52840c0ec93292ff5d2374d6c" + }, + { + "members": [], + "class_hash": "0x48e8c8797f3711aaedddf2aa729d78d41cc81172300077548359fdad8cfad3d", + "tag": "s1_eternum-BuildingCategoryPopConfig", + "selector": "0x7713338d5bb53067dd8a10c158385c2744d0dfba8260ddb0658394359b6b5e2" + }, + { + "members": [], + "class_hash": "0x42c28ee06acb3b9279acf780f347d9e93cfe7e792aab26966d6e2865cad9214", + "tag": "s1_eternum-BuildingConfig", + "selector": "0x1f8462fbfd271244b0144b93124ee213e9ef6edec50e6fc4b0ea41d2b756d87" + }, + { + "members": [], + "class_hash": "0x2fdd5ae262983f3645779ab454a188dd555dcbc3dc3ceb438bf1ee7958b6c5f", + "tag": "s1_eternum-BuildingGeneralConfig", + "selector": "0x1fc4af90bddbc3edb2446f5839d3274131bd7023a2bde3aeddbe29769c0be84" + }, + { + "members": [], + "class_hash": "0x7941dd9a080f955665119b95efafe138e70f5d69530c35cc52020325f4070b9", + "tag": "s1_eternum-BuildingQuantityv2", + "selector": "0xe74ab1d939c8b4763331ecee9187cc91e4a363228e596e0a655667aeedb117" + }, + { + "members": [], + "class_hash": "0x6cafd04dceeb148a4f3cdb0fc76083c74677f11a046f3be2a50cc22279a8074", + "tag": "s1_eternum-CapacityCategory", + "selector": "0x166cc667881fc0d333660d7668601cf536082cc577b720cea8be0f24549473c" + }, + { + "members": [], + "class_hash": "0x3a19b4d090591b5be5a300e1fd02e3b0d52bc20b30b47d7a0255a48a678e29d", + "tag": "s1_eternum-CapacityConfig", + "selector": "0x4bb69cf85cfa897830312e40bb75ab1c0f58c01cbbadf4e835ee5fa37d1bb2e" + }, + { + "members": [], + "class_hash": "0x105a94789b0a8342a90b8878fa4f06553af01b9416d86a0a80d65fc169d3092", + "tag": "s1_eternum-Contribution", + "selector": "0x48fb552387fed5f3f7bcb55468f85ac92efeb06817e5f5e329358b69b4a7d6" + }, + { + "members": [], + "class_hash": "0x6df9258e6f5c08cfe8cedd415dba12448c3405df370e1c94d114225c8d53d6b", + "tag": "s1_eternum-DetachedResource", + "selector": "0x34cc163b0f7a78e671da441bbbfe6dd3632f7f62cbee8e1734c6dec2971478c" + }, + { + "members": [], + "class_hash": "0x71b9c7843ab6be7de6ade56f21be309f9bf08a6e4fc33318dd9f43307e1008", + "tag": "s1_eternum-EntityName", + "selector": "0x4ea8f072e356080ed18f016cbb7f0c43807c733d037c3ad9e52da5fd98e11f0" + }, + { + "members": [], + "class_hash": "0x2d0dd3c37fa25edc072c4fd231c6ec51dbed2ea0304a334a8b47568d9a1ec4f", + "tag": "s1_eternum-EntityOwner", + "selector": "0x19fbc5ce760d680c185bbefb04a4b1870a4f23bc8fda0fbf77b4a241b7ce04a" + }, + { + "members": [], + "class_hash": "0x76ab75f20ec824383b34afe1315ec9e59fe9f23599086b354f43e3c08aa8e24", + "tag": "s1_eternum-Epoch", + "selector": "0x62827d2605e74e8c4ea2f40a6407477a0eae355a2e6485261acbc95e3219fc3" + }, + { + "members": [], + "class_hash": "0x22001c3a27555a192b0a134e76a443707ca89af8fb7a01265473cd609b04a41", + "tag": "s1_eternum-Guild", + "selector": "0x49ac80c25fa65d45250f4dd7a253dd79561a9460e108c173aa413ef246c3e6b" + }, + { + "members": [], + "class_hash": "0x2ba8f917f23ee021008384816f0ad038a1cae8b004c53e18f6bac455ec9efa6", + "tag": "s1_eternum-GuildMember", + "selector": "0x517c08e6a498a5a56742edce432fd533bc4cb16589acf1bb025999a5cec0e66" + }, + { + "members": [], + "class_hash": "0x2f72606313ed3fca8c1d6ec0257466e6b9301cc9fba8ec67d114f7fab0dc23a", + "tag": "s1_eternum-GuildWhitelist", + "selector": "0x5da3d8f80bab03feaa3c5158e1e4584b6b5e213a0feb4d4125798f73b4a528a" + }, + { + "members": [], + "class_hash": "0x111b1a81032822367c6d57b2fe7b2baaaf8304ec0f8075bda6dd83b0827f35d", + "tag": "s1_eternum-Health", + "selector": "0x1aa97583b6abc29f779ed14e03d820d29e64168389ca94367abf35ea7f103a1" + }, + { + "members": [], + "class_hash": "0x6277bc0b34ccf11b00b086ca2c7e83a5ac144532b6b4f843caddfcf01c02327", + "tag": "s1_eternum-Hyperstructure", + "selector": "0x5a47c8b59e367cc045b847bd4f63955ceeeffbc43055ecd11d2d77796bddd73" + }, + { + "members": [], + "class_hash": "0x1f90aa30d9d5d978f71b991daa57bc5ce51070034c3c3749c3378eae720e1b5", + "tag": "s1_eternum-HyperstructureConfig", + "selector": "0x538fcd59a65ece056337c3f4563a41b0922e14c0892d9e0f2e9980716487be3" + }, + { + "members": [], + "class_hash": "0x4f85a565011171be648bda2095b1448773804f29d967448aa2fa81554cbfab1", + "tag": "s1_eternum-HyperstructureResourceConfig", + "selector": "0x3841ccb4835caa2dd2433ed893d593a63d74afea4ec67eccb905df41d6b95b1" + }, + { + "members": [], + "class_hash": "0x2a1a2073e89fb80b9b141aef8c9c01c4d559005f4861e8e8340ecab5afc7232", + "tag": "s1_eternum-LaborConfig", + "selector": "0x64275c9f3052fd539cb5039a789a08f23cb65d6a4f4f49c89a5ef944534162e" + }, + { + "members": [], + "class_hash": "0x7dfe538eaecf8e98fc578ef98c8766c050d1e6fd853f2a663a42d99813b4e23", + "tag": "s1_eternum-Leaderboard", + "selector": "0x2feedf0fc0a7bb2c53a51fee44e1c8a2cbf182ed000b57865c108eaaa463bcf" + }, + { + "members": [], + "class_hash": "0x792ff7a8ffffbaff0859d84e2d87ee5a71996bfeb349248cbf63d7dd1b8a1f4", + "tag": "s1_eternum-LeaderboardEntry", + "selector": "0x446f6cb1881e354935007b6a51033216f2f66cab52573d1bb2a03d7bc7fb4fb" + }, + { + "members": [], + "class_hash": "0x3d74e8cac527985922387788dbf8d902a90ae15d21468719ba2d5f7b74cc881", + "tag": "s1_eternum-LeaderboardRegisterContribution", + "selector": "0x751fee2d8620c3b1f24b201044ac4414a808e5cc57cbf99b305a66ac3dc6334" + }, + { + "members": [], + "class_hash": "0x671185f10d3a8d6917e10b6c8686fbc556755e8eb7fe8b871e9660db26a16db", + "tag": "s1_eternum-LeaderboardRegisterShare", + "selector": "0x2781c647b95b04aba3e293318e83e5ab139e95a13630336badd83197225f679" + }, + { + "members": [], + "class_hash": "0x6a6b0e38324523a4d7c9406ad059adc0244353ae86fdb28589419643152d42a", + "tag": "s1_eternum-LeaderboardRegistered", + "selector": "0x3d2cbb167883a8ff584dad6276fc1df0b7757d5e2282f1658d746a8c936116b" + }, + { + "members": [], + "class_hash": "0x19baf80e6ba59bfb8c94643f2ed7c15e902d00d313ac92c90f4071e3ddf0129", + "tag": "s1_eternum-LeaderboardRewardClaimed", + "selector": "0xc7744e31a4ae5a2f24008b6147fac5c735bfa7fc4bbff8224f2833f73a8e93" + }, + { + "members": [], + "class_hash": "0x1a812bd54f7a074e8a1289ab1d7e41e659ef15c607d934abfeda35d987a834", + "tag": "s1_eternum-LevelingConfig", + "selector": "0x57307c2d18e8c1e060fcb4cc9d63ce0abfa90f9e9bca63f00fb08a8b6a6584d" + }, + { + "members": [], + "class_hash": "0x465e09976306288f9d5ba76464636aa3570b50d3dd537e62df642524007eab8", + "tag": "s1_eternum-Liquidity", + "selector": "0x88855562f77d4da524f33db24ad881dd1c3b4d809fa37d2508b5ab1fd4310e" + }, + { + "members": [], + "class_hash": "0x3acaf90122ee7bec0d7e0c29b9d227fb3f7576661157acf5817d2875acdeb24", + "tag": "s1_eternum-MapConfig", + "selector": "0x1c44934bf878736b0ffd224a4d0065ca92072daa6e846de657f58b7b5a4374a" + }, + { + "members": [], + "class_hash": "0x1c99e7ffe68d55ac3fc421eb979fd5d7d197d6dc99cc8893fcaae5abbaedfa9", + "tag": "s1_eternum-Market", + "selector": "0x18457324069342b71d49b485b3b2ced814726c5a978581a172dd806de3d9bac" + }, + { + "members": [], + "class_hash": "0x16eef0d1d4096a35efebc74a9c8254cb8c1af27a8c7d22fda96edc796b4cdac", + "tag": "s1_eternum-MercenariesConfig", + "selector": "0x7983d4a611b82abb59e4320d8032fcb84f3c372c60c83a01d680f14f64bd3c6" + }, + { + "members": [], + "class_hash": "0x247307d7e5299e6b3ce6377a08a9d41497229eaa6a9e591858d0a088c61af4a", + "tag": "s1_eternum-Message", + "selector": "0x3262fb0b2f51323ea7116e1ef4735a6e1be97bc86bbe19fcba298d0edfa0c5c" + }, + { + "members": [], + "class_hash": "0x355984d124ab086115f9b6855c05a7c6ab416e01a45e57a08e13b28ec7db02d", + "tag": "s1_eternum-Movable", + "selector": "0x354103241a35f6b87bb0e9c4ac055975dd5324a93ab74b5b30edcce0067c59" + }, + { + "members": [], + "class_hash": "0x51b6a84422ddfda104af1cb45bbce0609edd265d2b909237ec37dc7aa5a2afd", + "tag": "s1_eternum-Orders", + "selector": "0x2b8ed5e03d3934c534f66fc8194cd3cc112003028691019c9d1dd5ceacf6bc" + }, + { + "members": [], + "class_hash": "0x679efc4b50ec8cdaeb215964fbbcef65e6f1ca8b9eadde20fe8d5b30acd0379", + "tag": "s1_eternum-OwnedResourcesTracker", + "selector": "0x50b64757716328c2639f72f641130df11177b01695167ec2ffb63f4c5ac8c93" + }, + { + "members": [], + "class_hash": "0x6943ea1c8aee5d7749a85d2e333a8d97dce8d1d661e5bba0d93c850ab33d7da", + "tag": "s1_eternum-Owner", + "selector": "0x2ac70068901471291f27e386276bb51ce50c89e144a6e8e11d4f91b78236241" + }, + { + "members": [], + "class_hash": "0x77effa7d6e9cdaf053e31ddb864c29cc587e756673d8a2bdc8b919ac8eb0373", + "tag": "s1_eternum-Population", + "selector": "0x999f9ad8790ee0ec873b5e149fa1ef1054039e90bba49ac4975ba2cdb54429" + }, + { + "members": [], + "class_hash": "0x58397e297c6e9d5fb96965dd7241321667199c25918efeb27bbb830ab0948c3", + "tag": "s1_eternum-PopulationConfig", + "selector": "0x5cd485b0e678c36a4a14b0fcf5880e58e206c5b8199c9640d88f5ea86efe9b5" + }, + { + "members": [], + "class_hash": "0x4953b4f720c6479aae4d8b84b2d749ad5ab816f03e6ce500d5bcf609c59e77c", + "tag": "s1_eternum-Position", + "selector": "0x77c1a504cea841ea9ee0819e994d66d453d0652ecb7a51e80682ff8abd57f65" + }, + { + "members": [], + "class_hash": "0x712d40d99f865ae27041a4e8af1044d9a589cfdae1d1bae4c734041312659fb", + "tag": "s1_eternum-Production", + "selector": "0x12c4d44e2b854c8481b4da2b2dcc648b3a9d4e9006b4143acfedbd6aa8641db" + }, + { + "members": [], + "class_hash": "0xfe2f61b4cd61a63d2180cbf2238a0e90be72534ebc205a70a0daf05e098ca9", + "tag": "s1_eternum-ProductionConfig", + "selector": "0x520a8a0dec76799ca6b1198154f32247aa76da785d2cc7a56dabe401f80416c" + }, + { + "members": [], + "class_hash": "0x3736456c345cc770abd64231513bd58269d6fb382e48c411be7bb5c66a54322", + "tag": "s1_eternum-Progress", + "selector": "0x2b63dd696d82b19fa1421e9e47be1c573b761c39f6b58c0d14ed0c562f26b3f" + }, + { + "members": [], + "class_hash": "0x375116ae74219639eab6fd408cdd263e4c6c93fb0b544d3ba3ef8e876ef561", + "tag": "s1_eternum-Protectee", + "selector": "0x2ac4b9ed0d69ae66f6feff3272811293fa6e8196bd602183271d07ae7a5d3bb" + }, + { + "members": [], + "class_hash": "0x3eff2b8014606f2522063b0803a9f0456c0be34f4ec6b7f31d2b0948a4aa0c1", + "tag": "s1_eternum-Protector", + "selector": "0x72426f978a43c915d92511ce3efb7fdd6c962f4344e37d38ed00d0d95eb37b5" + }, + { + "members": [], + "class_hash": "0x7577aac22db1cb4db007701d6292ed0edddb54a27a947f2fdbce4615cb0c178", + "tag": "s1_eternum-Quantity", + "selector": "0x399416904300b2d9bc98601f480dcdd403fac4845279504082f1775505fb41" + }, + { + "members": [], + "class_hash": "0x2c17a1b5a72fc1c99fcc98629008b8cf539162e67a39813fadb9f407e20b2fb", + "tag": "s1_eternum-QuantityTracker", + "selector": "0x29c1ad2966a8d135fb73179ff12b872776a13fef4e7dcc14955f71950ad65aa" + }, + { + "members": [], + "class_hash": "0x3c9e64e617d829d6ef52f3cc63ee1872892697641ece5c3562494655751ee92", + "tag": "s1_eternum-Quest", + "selector": "0x7be72bb5626ead15f8756586fc89f32ca4e65fcbe00e8d49a222d94460b40ac" + }, + { + "members": [], + "class_hash": "0x6d7d41fa73f6a0cafcc95b905c394f420dbe512afb245f63c5aaf9d440c1c90", + "tag": "s1_eternum-QuestBonus", + "selector": "0x3e946c05a7448654a3f0f8e3983c98daca1d6727d3a595076b232f21aa9bf61" + }, + { + "members": [], + "class_hash": "0x6d7fa03d466e40e61eb5f9e8920ed1723e386147ece32faabfe48a3d96d8acb", + "tag": "s1_eternum-QuestConfig", + "selector": "0x10baf692d4bb6ab5fa51d3bcdb33b443bbb89178f74ad35c0f39df34972d97a" + }, + { + "members": [], + "class_hash": "0x5c8dbcc5c43eef6f7bebe035cfab3f0d97fc98cb7468c27494032ee7c477682", + "tag": "s1_eternum-QuestRewardConfig", + "selector": "0x1ee6b0ff29db9cdeecda6f947a65007ef951ac7b80242fe22cbc641bfcd24c5" + }, + { + "members": [], + "class_hash": "0x654d5810e1c19ceb5fb9f3fe5ca9de42fd729ca71bbe3b084da162536f93aab", + "tag": "s1_eternum-Realm", + "selector": "0x73d618f4cfd6974371417e6fbe450ff219d703d52cd92acd3e0362d18754876" + }, + { + "members": [], + "class_hash": "0x37903a2f2a111216ca18f3d52cd3b7ac241700c929d0f532d82c8d0eef0db26", + "tag": "s1_eternum-RealmLevelConfig", + "selector": "0x7430cd339058f757d8da2972d4609124b232fac288cd84efb4975ef17783fa3" + }, + { + "members": [], + "class_hash": "0xb05b9f8bd0de85e837c571d3b7555c1dd54b8601049eb250f25193581a3813", + "tag": "s1_eternum-RealmMaxLevelConfig", + "selector": "0x454f0915256598d53f9fdd192a32a5886d2b006532ea05b1981694951e62fb7" + }, + { + "members": [], + "class_hash": "0x243a2e78c7742b4b4392fce84a08836d8a00d5042e692284ed7939b13de7a18", + "tag": "s1_eternum-Resource", + "selector": "0x6d9f80d9fc8d932eaf382b0dc61539511e229b2dec5a275dfb836095d8f0521" + }, + { + "members": [], + "class_hash": "0x22170ce2c9a3447b19d7c4555ae8eb4e9cd7c765f6ead3af5eb106e0115e763", + "tag": "s1_eternum-ResourceAllowance", + "selector": "0x5d040dde8317e13b9643f324a18afc64c5044e79569552f8496e919c312b44a" + }, + { + "members": [], + "class_hash": "0x2e09899ffdc52704cf7d5881b2b9576b99ac5d1a0939caaa79ba005f941ef8c", + "tag": "s1_eternum-ResourceBridgeConfig", + "selector": "0x462f28b5568fb3e258400d85241d45cd31e053723d029bb0a3542da9ef2ece6" + }, + { + "members": [], + "class_hash": "0x7773a272288d8f6746b61d40015b44f451a5f4418785ebb893cdd8a3f101924", + "tag": "s1_eternum-ResourceBridgeFeeSplitConfig", + "selector": "0x33b2e568d65393f26dffa1e9fcb1c8e5aac80bf8ecd96a62c56fa7626d08d4a" + }, + { + "members": [], + "class_hash": "0x69f85789f3cd09073415acea848b4121fb7ab57660d65efc0902f9b9088cfec", + "tag": "s1_eternum-ResourceBridgeWhitelistConfig", + "selector": "0x291a767dc981735be14609c8ef267d33c389f58393358ce20f757680d065bbb" + }, + { + "members": [], + "class_hash": "0x240b65d5c97f9409445b6a38891f5ef00e60ddd04b83c98ffb954ea3f1199f8", + "tag": "s1_eternum-ResourceCost", + "selector": "0x15d8989d3b9ba9d2d089e1e920d2d0c428811ec0ac77b09ab12bfc3b42121d" + }, + { + "members": [], + "class_hash": "0x2f43ad0e8e78df05e470c36da11157bb756eee2e6faabf2cd6ed16c4419c0c3", + "tag": "s1_eternum-ResourceTransferLock", + "selector": "0x7deca04dad26fe5bed5def8be8e9fc199906496dfe2aa982e9cd11fe35300b" + }, + { + "members": [], + "class_hash": "0x1661ce7179939f89588fcf3d6ea91416e265772e6cdca45dac1441e4b3db807", + "tag": "s1_eternum-Season", + "selector": "0x4f8865388e8136115c535f8be3bca980cc55ce5cde180fdf43877a9ac42cf10" + }, + { + "members": [], + "class_hash": "0x5908399449b220b2799f9c6c1d90531548d6a921676a73d5b18e3c73211349c", + "tag": "s1_eternum-SeasonAddressesConfig", + "selector": "0x2d1f2883267358910522f3abc2d86e377bf44b7a85eb1ce9a9a936af9872400" + }, + { + "members": [], + "class_hash": "0x6f19a8e8f55464fb398bf457038b10a01d6cfcf5051aa6c7a7296024fc78f9c", + "tag": "s1_eternum-SeasonBridgeConfig", + "selector": "0x67d6487b53941b5d6614c1f8f8fd0c620904fffed74e740a95f99485854896e" + }, + { + "members": [], + "class_hash": "0x68dbc517a95bd1643828c7f03c53b34cc6a2b9ab364825b676b19245380bec4", + "tag": "s1_eternum-SettlementConfig", + "selector": "0x2df09676383e67499863f6671e25031b67c0344b2d3e2177081d16640cef28b" + }, + { + "members": [], + "class_hash": "0x5a674566f968363982331c6e454e8046e123ce141cbe9ccb031a6f44d7fab3a", + "tag": "s1_eternum-SpeedConfig", + "selector": "0x7f66a20a5fc5f3b3a3b77fa1a3f8c30cc0a5e7fe03eed54a4c1f3a50d3421a4" + }, + { + "members": [], + "class_hash": "0x5c31bd0ec3923ca88f01ac658fcdfc8e8e73d22f4362b96a5ee55ae5232a2c8", + "tag": "s1_eternum-Stamina", + "selector": "0x39518c19003fa9f7525361cc92b886b541122d0ef323ad02f0a5ab8baf1dd4b" + }, + { + "members": [], + "class_hash": "0x4e57c7bc107c4d7f740589732138414790b76320bb831fc912d0ac30d699738", + "tag": "s1_eternum-StaminaConfig", + "selector": "0x72604cb9cc861ecdb0e70b00137564390c5ccafde0d9d37ba014122e9288df9" + }, + { + "members": [], + "class_hash": "0x68eaa4e6a99462bf94073ba9b2e3a580b4db9170d28f47cfdefb47023e91eb7", + "tag": "s1_eternum-StaminaRefillConfig", + "selector": "0x269f27b58ce568cd0a1187c785445f746a959f915fc35b999aaf2afa95c04b9" + }, + { + "members": [], + "class_hash": "0x6d8349a51048775ad58a5e14c77606d882ab3a4d18f5a1b59138d973156b8f6", + "tag": "s1_eternum-Status", + "selector": "0x6819b601c22df29790f76f061612ee4c23e6d77cf850a685fa8c7ea6defe1bb" + }, + { + "members": [], + "class_hash": "0x3669757d103c83f6fca79bd6c75a49d8a273fb92dcf6bba1ab4ccaafa6137ea", + "tag": "s1_eternum-Structure", + "selector": "0x67d49b2755ef1c37f1efaa29dcd3b4c483691d9a969211f49bae940e757b033" + }, + { + "members": [], + "class_hash": "0x6e04e36fce10b6885b2180899d40134304afd733807bf45183839c37276d44d", + "tag": "s1_eternum-StructureCount", + "selector": "0x2add29083cc23bb0da9d45470d574877e3a63de4eca3730bfc35fc32d7256bd" + }, + { + "members": [], + "class_hash": "0x229093b1da22e9f70eb9818a6873854bc5f7a9c3c254b32e33b8ac8ef7e6a78", + "tag": "s1_eternum-TickConfig", + "selector": "0x3dacec234467fc19b55d08363ec6c5128d40513e9c785cc8d6fa96a10e1e2fe" + }, + { + "members": [], + "class_hash": "0x4789f1e5905969a83009f355f5e2bc6882f5228f2dff1beae21f6c315f4d3f1", + "tag": "s1_eternum-Tile", + "selector": "0x2be20d4e39863a5ae902d8a1d7d218f011bc5fd0b144656c1ec555e95939d7a" + }, + { + "members": [], + "class_hash": "0x4a83f3518a2a3b7fd4a69303275fc35dc9d5b08d3b3bf19a6ec9cb8779b34b9", + "tag": "s1_eternum-Trade", + "selector": "0xb8f1c0b8b5c9b646a2275babf4f493a4dd50440775aa1a52f07612a3f699bf" + }, + { + "members": [], + "class_hash": "0x35b1c94e4a2c44b7484df407cba0df8042fd2c8bb2cb7c14e3a54b5c78f9724", + "tag": "s1_eternum-TravelFoodCostConfig", + "selector": "0x5effa64ae71be8b1d19c231fefb1056039306d3b1d8885baed5f774d4da2a9a" + }, + { + "members": [], + "class_hash": "0x24f902eba1a1f00afbb06c6d6358a5b9d9831e5f01fa19d20d54e4610d266e2", + "tag": "s1_eternum-TravelStaminaCostConfig", + "selector": "0x49e464fb66d305b9b58610bfb89bed1df4e2cde87f523936e71e5fa5562f9cf" + }, + { + "members": [], + "class_hash": "0x13787b670988065ecde86c7622e4dfc79e9752b1b093e22e81cb9797af3eaa0", + "tag": "s1_eternum-TroopConfig", + "selector": "0x6ae523bfd49a164bfc5949f568674f7b4e09cca39f55d389d398f159b363178" + }, + { + "members": [], + "class_hash": "0x6effa334a8558bcffbb55620d842fe9fc355a497100768c7ebeb1e5f01c85d2", + "tag": "s1_eternum-VRFConfig", + "selector": "0x325d18df666336f28e2027292fb9164e890d520368b4e150d3fffddb95b2304" + }, + { + "members": [], + "class_hash": "0x239c7e9007b36b7105d01e2d5fb2cc87a2f0123cf02308d78299fb1b2c0286b", + "tag": "s1_eternum-Weight", + "selector": "0x3af9b99c6bed5e58f52a76ef3616395e8ae96acee151395134ab5199fe5b36a" + }, + { + "members": [], + "class_hash": "0x342088461be2657e2281e9f5a773aa8e7c6584dd62e125edf4ca71e39400e57", + "tag": "s1_eternum-WeightConfig", + "selector": "0x5b42c2cdd790597f7f8125e69d38f2db0469a37ba2a436c5fbc6f54ab16f2a6" + }, + { + "members": [], + "class_hash": "0x3f493c16b07f9edf224672fd7d0a1766b42863e70e08e4ce21f8b9368a95486", + "tag": "s1_eternum-WorldConfig", + "selector": "0x2640c924e58d9c307bff3a21564eeccf889b9d22e9d1b99eaf3d3ca79ba29e9" + } + ], + "events": [ + { + "members": [], + "class_hash": "0x308165ad0fe528e9f62f91851e42cd02186c284133e0f716bf618e2a89a064", + "tag": "s1_eternum-AcceptOrder", + "selector": "0x34724f2592dc93feb914074bbe4e6abc093e7ca15f6755824c7f694662853fc" + }, + { + "members": [], + "class_hash": "0x4fca4dcdf02fdc00635fdbdbfa78b928f907e5a82f58e24f17e95ec9d9e2475", + "tag": "s1_eternum-AcceptPartialOrder", + "selector": "0x34b84575baeaa398556ab0a3889fabb7b08d2520d8838734eaf12282776900b" + }, + { + "members": [], + "class_hash": "0x56a5736da894e6774c628874b21f414a2c4f035065b75e36f1c7facd27420ee", + "tag": "s1_eternum-BattleClaimData", + "selector": "0x41d29e106dc5491be952bbe2faaddf7f61d2822a533f17116600e7ef9c76c18" + }, + { + "members": [], + "class_hash": "0x1aab9d5811dd52241b604e734cd3527f3723320d2e8a16d8d2f9ab9657cf07a", + "tag": "s1_eternum-BattleJoinData", + "selector": "0x4410ca9a121bdc7bd8847dc77b08361cc88574ae4ff18bdfb1f56ebd168a377" + }, + { + "members": [], + "class_hash": "0x483a25c8985f722179db7ab176625c2f0415004e315c89ddd569a546c0ff352", + "tag": "s1_eternum-BattleLeaveData", + "selector": "0x817ae7123b2cf2c241e4a1cee0acb2a6537270d32f68da46c222a19b7a6b7e" + }, + { + "members": [], + "class_hash": "0x21704b4e421430ae75b71230238bc9693d74ba1ed97ca30594dfa1a5e6b1a9f", + "tag": "s1_eternum-BattlePillageData", + "selector": "0x1e6374e36d81091d4c72eb16936e2afc86ed695397fb5fc54780a01187bfbe2" + }, + { + "members": [], + "class_hash": "0x75e03d907604ffc855f6fa954001870813f8731f049aa1a65b4fc0335b53989", + "tag": "s1_eternum-BattleStartData", + "selector": "0x39cee4993b5b6698ea69be399295a54faabb31613ddc297bd452b7db0c79081" + }, + { + "members": [], + "class_hash": "0x53ea30ee96d0e5b7eefcd0b3c5ff8ec23062b6a8af282c235dbd06db0c4d77", + "tag": "s1_eternum-BurnDonkey", + "selector": "0x61be67037fa3f9fa7655102f1fe0c3f35d352d5919aba6a204b0af556649e55" + }, + { + "members": [], + "class_hash": "0x3cd551d7e4b53f2b4afcab56040f3dfff20f2dd3e75f346c4f86f15d6f2aab8", + "tag": "s1_eternum-CancelOrder", + "selector": "0x37baed7c5d5da7ddcfe014daac5b3f37b4b959b832e8c4c70df06c8b530478" + }, + { + "members": [], + "class_hash": "0x54ebf96034d04a3febfaaa17372961a8746cdb440f451d4e3acfcedd4992db6", + "tag": "s1_eternum-CreateGuild", + "selector": "0x55a0213c9d81381326def8de071ea32d31f412ae525cb58b8b2a29cdbf3821" + }, + { + "members": [], + "class_hash": "0x3da4824e6b15595ea7c4906de6ae545f1de3c6997655c55fa040d9bc466fbcb", + "tag": "s1_eternum-CreateOrder", + "selector": "0x6cd5deb58306ff9ed529e7e496193ac3b8dadc4927768951a16afd5cee79291" + }, + { + "members": [], + "class_hash": "0x6e3e1e9e62a28db9b293c60cd5bb48db433b5d14b6b46d034cb901877fe4eb", + "tag": "s1_eternum-FragmentMineDiscovered", + "selector": "0x5afb247cb5972fc84d96b10c69f31a96666642065816bfa74f4d0fdd715fac6" + }, + { + "members": [], + "class_hash": "0xf00b2af42e9108761ad47e50a2605c55203a83b342235def07252a85d6db85", + "tag": "s1_eternum-GameEnded", + "selector": "0x7552b1455aaf939a5cee7dfe7d65ef0341647b2b1dc97bbdac22e38f81b6f75" + }, + { + "members": [], + "class_hash": "0x5cddcd628958870243552341afbf5859b87d5f623d9ccec87fc217218301da", + "tag": "s1_eternum-HyperstructureCoOwnersChange", + "selector": "0x16aa9c3ff1e2229ec3989607dee034c26f555386c3fda2f57ae23a5da08bcd2" + }, + { + "members": [], + "class_hash": "0x5bf722c02c026a13863bc061f7f31d3e9a94a409e60a0b020355c621b3c8848", + "tag": "s1_eternum-HyperstructureContribution", + "selector": "0x11b57482819f44946c794b42bb3d6f9b5111e416abddd5590e48933db4e8c1c" + }, + { + "members": [], + "class_hash": "0x3a5f236a8854f32ed034b3f68bda881b3a28be9b2f5563fbd479ee415fa489b", + "tag": "s1_eternum-HyperstructureFinished", + "selector": "0x18188e073773854e47229a73718f205c22955838714d847ff4bab4ed315852c" + }, + { + "members": [], + "class_hash": "0x19167b2efb0019a2d2547e6b97653c2e44eaa0648110a8d0492857d48f7628", + "tag": "s1_eternum-HyperstructureStarted", + "selector": "0x524d52c11289b16c879df0675bb7168b4556196e805130884ff7399568955f4" + }, + { + "members": [], + "class_hash": "0x10489827f673705da04f7c52b54164e01679958dec37bf8c97f45b6229adde", + "tag": "s1_eternum-JoinGuild", + "selector": "0x490fb23242de6839d879e576254121a224786783b288f05e8e57e942f0d0c44" + }, + { + "members": [], + "class_hash": "0x1de238739f2586354bfefc4c7d49a8e392b3c911515c9ad6445e96027a0dcb3", + "tag": "s1_eternum-LiquidityEvent", + "selector": "0x5ca594f7a676a13c4b15d34ffd0e922bf64e127d0fa6b6a9bd29a4bb6dcfd19" + }, + { + "members": [], + "class_hash": "0x6f57b19aaa43496f97785e8d6b18e21dc116bbd690e54a4fd03ccbb98ae760b", + "tag": "s1_eternum-MapExplored", + "selector": "0x5238d4838007cb371e0a62aff2a2d4241868fa579edc867125fa71c493fb2c8" + }, + { + "members": [], + "class_hash": "0x65b91709428bb484001943f1662d614fb4b6318b3fca1c4ed4b2fe53d822f6", + "tag": "s1_eternum-SettleRealmData", + "selector": "0x11b4babbcafbf1834c8e535877d14f1fc5dc0bd0b126a97a98bb1093d30e873" + }, + { + "members": [], + "class_hash": "0x4db6f101a1cff37f8e4709053f1ae4c1d8b8ec3dda5a2284b606439d051fb86", + "tag": "s1_eternum-SwapEvent", + "selector": "0x783a3cc6562fe31ae83bac3e69e636d8b58c357d5d3621c6d2e5d74da51e5db" + }, + { + "members": [], + "class_hash": "0x6059f5ee6fd551e038f65eac650a50c7af4401d3ce90cf257693b3eab27b8a3", + "tag": "s1_eternum-Transfer", + "selector": "0x4ff88ec4fe7fc992e29c980b4c0abfb2c35ecacce7e63248c2731984995fcbd" + }, + { + "members": [], + "class_hash": "0x40aee82a2213fb870290370044eeafec0c98eb8953299883251f870a9fd1e4c", + "tag": "s1_eternum-Travel", + "selector": "0x4e45f9632599eeb9a25d0977cd5aebf8a4aa209fea4134a862e592d31e387c0" + }, + { + "members": [], + "class_hash": "0x6b38999d987627835d4c20e7e571c73d32ddc856786d9790a131bdb3372a246", + "tag": "s1_eternum-TrophyCreation", + "selector": "0x5633ebee65e16c483940f284a816ac8b31e08ddd3932f80db960a40573d4dc2" + }, + { + "members": [], + "class_hash": "0xf05f290a704ad2671544b391f0c33d50d6d43d468d52791282852a833a00c7", + "tag": "s1_eternum-TrophyProgression", + "selector": "0x5a8f3fedb72efc9d358b86574cf362f8ed1ec12a02ca9f276e6190f49191217" + } + ] + } + } +} + } \ No newline at end of file diff --git a/client/config/environments/data/slot.json b/client/config/environments/data/slot.json new file mode 100644 index 0000000000..cbc212cbc7 --- /dev/null +++ b/client/config/environments/data/slot.json @@ -0,0 +1,11290 @@ +{ + "generatedFromTsFile": true, + "message": "This file was generated from the .ts file and should not be edited manually", + "configuration": { + "stamina": { + "travelCost": 10, + "exploreCost": 20, + "refillPerTick": 20, + "startBoostTickCount": 2 + }, + "resources": { + "resourcePrecision": 1000000000, + "resourceMultiplier": 1000000000, + "resourceAmountPerTick": 10, + "startingResourcesInputProductionFactor": 6, + "resourceInputs": { + "1": [ + { + "resource": 3, + "amount": 5 + }, + { + "resource": 2, + "amount": 3.8 + }, + { + "resource": 29, + "amount": 5 + } + ], + "2": [ + { + "resource": 1, + "amount": 4.2 + }, + { + "resource": 4, + "amount": 2.8 + }, + { + "resource": 29, + "amount": 5 + } + ], + "3": [ + { + "resource": 1, + "amount": 3 + }, + { + "resource": 2, + "amount": 3.2 + }, + { + "resource": 29, + "amount": 5 + } + ], + "4": [ + { + "resource": 2, + "amount": 5.8 + }, + { + "resource": 6, + "amount": 3.4 + }, + { + "resource": 29, + "amount": 5 + } + ], + "5": [ + { + "resource": 8, + "amount": 6 + }, + { + "resource": 11, + "amount": 3.2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "6": [ + { + "resource": 4, + "amount": 4.8 + }, + { + "resource": 8, + "amount": 3.2 + }, + { + "resource": 29, + "amount": 5 + } + ], + "7": [ + { + "resource": 11, + "amount": 4.2 + }, + { + "resource": 15, + "amount": 2.6 + }, + { + "resource": 30, + "amount": 4 + } + ], + "8": [ + { + "resource": 6, + "amount": 5 + }, + { + "resource": 5, + "amount": 2.8 + }, + { + "resource": 30, + "amount": 4 + } + ], + "9": [ + { + "resource": 19, + "amount": 6 + }, + { + "resource": 22, + "amount": 2.4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "10": [ + { + "resource": 17, + "amount": 4.8 + }, + { + "resource": 19, + "amount": 2.4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "11": [ + { + "resource": 5, + "amount": 5 + }, + { + "resource": 7, + "amount": 3.8 + }, + { + "resource": 30, + "amount": 4 + } + ], + "12": [ + { + "resource": 13, + "amount": 4 + }, + { + "resource": 16, + "amount": 4.2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "13": [ + { + "resource": 20, + "amount": 4.2 + }, + { + "resource": 12, + "amount": 4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "14": [ + { + "resource": 15, + "amount": 8 + }, + { + "resource": 20, + "amount": 3.2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "15": [ + { + "resource": 7, + "amount": 6.2 + }, + { + "resource": 14, + "amount": 2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "16": [ + { + "resource": 12, + "amount": 5.6 + }, + { + "resource": 21, + "amount": 3.8 + }, + { + "resource": 30, + "amount": 4 + } + ], + "17": [ + { + "resource": 18, + "amount": 5 + }, + { + "resource": 10, + "amount": 3.4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "18": [ + { + "resource": 21, + "amount": 4.6 + }, + { + "resource": 17, + "amount": 3.2 + }, + { + "resource": 30, + "amount": 4 + } + ], + "19": [ + { + "resource": 10, + "amount": 6.8 + }, + { + "resource": 9, + "amount": 2.6 + }, + { + "resource": 30, + "amount": 4 + } + ], + "20": [ + { + "resource": 14, + "amount": 4.8 + }, + { + "resource": 13, + "amount": 3.8 + }, + { + "resource": 30, + "amount": 4 + } + ], + "21": [ + { + "resource": 16, + "amount": 4.2 + }, + { + "resource": 18, + "amount": 3.4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "22": [ + { + "resource": 9, + "amount": 6.4 + }, + { + "resource": 19, + "amount": 4 + }, + { + "resource": 30, + "amount": 4 + } + ], + "24": [], + "25": [ + { + "resource": 29, + "amount": 25 + }, + { + "resource": 31, + "amount": 0.01 + } + ], + "26": [ + { + "resource": 29, + "amount": 50 + }, + { + "resource": 30, + "amount": 50 + }, + { + "resource": 8, + "amount": 2 + }, + { + "resource": 5, + "amount": 5 + } + ], + "27": [ + { + "resource": 29, + "amount": 50 + }, + { + "resource": 30, + "amount": 50 + }, + { + "resource": 6, + "amount": 2 + }, + { + "resource": 11, + "amount": 5 + } + ], + "28": [ + { + "resource": 29, + "amount": 50 + }, + { + "resource": 30, + "amount": 50 + }, + { + "resource": 4, + "amount": 2 + }, + { + "resource": 7, + "amount": 5 + } + ], + "29": [], + "30": [], + "31": [] + }, + "resourceOutputs": { + "1": 30, + "2": 30, + "3": 30, + "4": 30, + "5": 30, + "6": 30, + "7": 30, + "8": 30, + "9": 30, + "10": 30, + "11": 30, + "12": 30, + "13": 30, + "14": 30, + "15": 30, + "16": 30, + "17": 30, + "18": 30, + "19": 30, + "20": 30, + "21": 30, + "22": 30, + "24": 1, + "25": 0.5, + "26": 0.04, + "27": 0.04, + "28": 0.04, + "29": 50, + "30": 50, + "31": 0 + }, + "resourceWeightsGrams": { + "1": 1000, + "2": 1000, + "3": 1000, + "4": 1000, + "5": 1000, + "6": 1000, + "7": 1000, + "8": 1000, + "9": 1000, + "10": 1000, + "11": 1000, + "12": 1000, + "13": 1000, + "14": 1000, + "15": 1000, + "16": 1000, + "17": 1000, + "18": 1000, + "19": 1000, + "20": 1000, + "21": 1000, + "22": 1000, + "24": 1000, + "25": 0, + "26": 5000, + "27": 3000, + "28": 5000, + "29": 100, + "30": 100, + "31": 0 + }, + "resourceRarity": { + "1": 1.27, + "2": 1.31, + "3": 1, + "4": 1.9, + "5": 4.25, + "6": 2.26, + "7": 5.49, + "8": 2.88, + "9": 135.53, + "10": 53.92, + "11": 5.24, + "12": 20.98, + "13": 20.98, + "14": 16.72, + "15": 8.44, + "16": 29.15, + "17": 45.18, + "18": 36.06, + "19": 91.2, + "20": 20.3, + "21": 30.95, + "22": 217.92, + "24": 20.98, + "25": 1, + "26": 1, + "27": 1, + "28": 1, + "29": 1, + "30": 1, + "31": 1 + }, + "resourceBuildingCosts": { + "1": [ + { + "resource": 30, + "amount": 750000 + } + ], + "2": [ + { + "resource": 29, + "amount": 750000 + } + ], + "3": [ + { + "resource": 29, + "amount": 750000 + } + ], + "4": [ + { + "resource": 30, + "amount": 750000 + } + ], + "5": [ + { + "resource": 29, + "amount": 750000 + } + ], + "6": [ + { + "resource": 29, + "amount": 750000 + } + ], + "7": [ + { + "resource": 29, + "amount": 750000 + } + ], + "8": [ + { + "resource": 30, + "amount": 750000 + } + ], + "9": [ + { + "resource": 29, + "amount": 750000 + } + ], + "10": [ + { + "resource": 29, + "amount": 750000 + } + ], + "11": [ + { + "resource": 30, + "amount": 750000 + } + ], + "12": [ + { + "resource": 30, + "amount": 750000 + } + ], + "13": [ + { + "resource": 29, + "amount": 750000 + } + ], + "14": [ + { + "resource": 29, + "amount": 750000 + } + ], + "15": [ + { + "resource": 30, + "amount": 750000 + } + ], + "16": [ + { + "resource": 29, + "amount": 750 + } + ], + "17": [ + { + "resource": 30, + "amount": 750000 + } + ], + "18": [ + { + "resource": 29, + "amount": 750000 + } + ], + "19": [ + { + "resource": 30, + "amount": 750000 + } + ], + "20": [ + { + "resource": 30, + "amount": 750000 + } + ], + "21": [ + { + "resource": 30, + "amount": 750000 + } + ], + "22": [ + { + "resource": 30, + "amount": 750000 + } + ], + "24": [ + { + "resource": 30, + "amount": 750000 + } + ], + "25": [ + { + "resource": 29, + "amount": 750000 + } + ], + "26": [ + { + "resource": 30, + "amount": 750000 + } + ], + "27": [ + { + "resource": 29, + "amount": 750000 + } + ], + "28": [ + { + "resource": 30, + "amount": 750000 + } + ], + "29": [ + { + "resource": 29, + "amount": 750000 + } + ], + "30": [ + { + "resource": 30, + "amount": 750000 + } + ], + "31": [ + { + "resource": 29, + "amount": 750000 + } + ] + } + }, + "banks": { + "name": "Central Bank", + "lordsCost": 1000, + "lpFeesNumerator": 15, + "lpFeesDenominator": 100, + "ownerFeesNumerator": 15, + "ownerFeesDenominator": 100, + "ownerBridgeFeeOnDepositPercent": 1000, + "ownerBridgeFeeOnWithdrawalPercent": 1000, + "ammStartingLiquidity": { + "1": 500000, + "2": 500000, + "3": 500000, + "4": 500000, + "5": 200000, + "6": 500000, + "7": 200000, + "8": 500000, + "9": 50000, + "10": 50000, + "11": 200000, + "12": 75000, + "13": 100000, + "14": 100000, + "15": 200000, + "16": 75000, + "17": 50000, + "18": 50000, + "19": 50000, + "20": 100000, + "21": 50000, + "22": 50000, + "25": 10000 + }, + "lordsLiquidityPerResource": 1000 + }, + "populationCapacity": { + "workerHuts": 5, + "basePopulation": 5 + }, + "exploration": { + "reward": 750, + "shardsMinesFailProbability": 99000 + }, + "tick": { + "defaultTickIntervalInSeconds": 1, + "armiesTickIntervalInSeconds": 3600 + }, + "carryCapacityGram": { + "0": 0, + "1": "340282366920938463463374607431768211455", + "2": 500000, + "3": 10000, + "4": 300000000 + }, + "speed": { + "donkey": 9, + "army": 1 + }, + "battle": { + "graceTickCount": 24, + "graceTickCountHyp": 1, + "delaySeconds": 28800 + }, + "troop": { + "health": 1, + "knightStrength": 1, + "paladinStrength": 1, + "crossbowmanStrength": 1, + "advantagePercent": 1000, + "disadvantagePercent": 1000, + "maxTroopCount": 500000, + "baseArmyNumberForStructure": 3, + "armyExtraPerMilitaryBuilding": 1, + "maxArmiesPerStructure": 7, + "pillageHealthDivisor": 8, + "battleLeaveSlashNum": 25, + "battleLeaveSlashDenom": 100, + "battleTimeReductionScale": 1000, + "battleMaxTimeSeconds": 172800, + "troopStaminas": { + "26": 80, + "27": 80, + "28": 100 + }, + "troopFoodConsumption": { + "26": { + "explore_wheat_burn_amount": 10, + "explore_fish_burn_amount": 10, + "travel_wheat_burn_amount": 5, + "travel_fish_burn_amount": 5 + }, + "27": { + "explore_wheat_burn_amount": 6, + "explore_fish_burn_amount": 6, + "travel_wheat_burn_amount": 3, + "travel_fish_burn_amount": 3 + }, + "28": { + "explore_wheat_burn_amount": 10, + "explore_fish_burn_amount": 10, + "travel_wheat_burn_amount": 4, + "travel_fish_burn_amount": 4 + } + } + }, + "mercenaries": { + "knights_lower_bound": 1000, + "knights_upper_bound": 4000, + "paladins_lower_bound": 1000, + "paladins_upper_bound": 4000, + "crossbowmen_lower_bound": 1000, + "crossbowmen_upper_bound": 4000, + "rewards": [ + { + "resource": 29, + "amount": 0 + }, + { + "resource": 30, + "amount": 0 + } + ] + }, + "settlement": { + "center": 2147483646, + "base_distance": 10, + "min_first_layer_distance": 30, + "points_placed": 0, + "current_layer": 1, + "current_side": 1, + "current_point_on_side": 0 + }, + "buildings": { + "buildingCapacity": { + "0": 0, + "1": 5, + "2": 0, + "3": 0, + "4": 0, + "5": 0, + "6": 0, + "7": 0, + "8": 0, + "9": 0, + "10": 5, + "11": 0, + "12": 0, + "13": 0, + "14": 0, + "15": 0 + }, + "buildingPopulation": { + "0": 0, + "1": 0, + "2": 2, + "3": 1, + "4": 1, + "5": 2, + "6": 3, + "7": 2, + "8": 3, + "9": 2, + "10": 0, + "11": 2, + "12": 2, + "13": 2, + "14": 0, + "15": 0 + }, + "buildingResourceProduced": { + "0": 0, + "1": 0, + "2": 0, + "3": 29, + "4": 30, + "5": 26, + "6": 25, + "7": 27, + "8": 28, + "9": 0, + "10": 0, + "11": 0, + "12": 0, + "13": 0, + "14": 0, + "15": 24 + }, + "buildingCosts": { + "0": [], + "1": [], + "2": [], + "3": [ + { + "resource": 30, + "amount": 450000 + } + ], + "4": [ + { + "resource": 29, + "amount": 450000 + } + ], + "5": [ + { + "resource": 29, + "amount": 1000000 + }, + { + "resource": 3, + "amount": 75000 + }, + { + "resource": 2, + "amount": 75000 + }, + { + "resource": 8, + "amount": 50000 + }, + { + "resource": 7, + "amount": 45000 + } + ], + "6": [ + { + "resource": 30, + "amount": 750000 + }, + { + "resource": 1, + "amount": 125000 + }, + { + "resource": 6, + "amount": 50000 + }, + { + "resource": 13, + "amount": 25000 + }, + { + "resource": 12, + "amount": 5000 + } + ], + "7": [ + { + "resource": 30, + "amount": 1000000 + }, + { + "resource": 3, + "amount": 75000 + }, + { + "resource": 6, + "amount": 75000 + }, + { + "resource": 7, + "amount": 25000 + }, + { + "resource": 15, + "amount": 25000 + } + ], + "8": [ + { + "resource": 29, + "amount": 1000000 + }, + { + "resource": 3, + "amount": 75000 + }, + { + "resource": 8, + "amount": 75000 + }, + { + "resource": 5, + "amount": 35000 + }, + { + "resource": 7, + "amount": 25000 + } + ], + "9": [], + "10": [ + { + "resource": 29, + "amount": 300000 + }, + { + "resource": 1, + "amount": 75000 + }, + { + "resource": 3, + "amount": 75000 + }, + { + "resource": 2, + "amount": 75000 + } + ], + "11": [], + "12": [], + "13": [ + { + "resource": 30, + "amount": 1000000 + }, + { + "resource": 2, + "amount": 75000 + }, + { + "resource": 1, + "amount": 75000 + }, + { + "resource": 20, + "amount": 10000 + } + ], + "14": [], + "15": [] + }, + "buildingFixedCostScalePercent": 5000 + }, + "hyperstructures": { + "hyperstructureCreationCosts": [ + { + "resource_tier": 1, + "min_amount": 3000000, + "max_amount": 3000000 + } + ], + "hyperstructureConstructionCosts": [ + { + "resource_tier": 2, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 3, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 4, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 5, + "min_amount": 120000000, + "max_amount": 240000000 + }, + { + "resource_tier": 6, + "min_amount": 90000000, + "max_amount": 180000000 + }, + { + "resource_tier": 7, + "min_amount": 40000000, + "max_amount": 80000000 + }, + { + "resource_tier": 8, + "min_amount": 20000000, + "max_amount": 40000000 + }, + { + "resource_tier": 9, + "min_amount": 7000000, + "max_amount": 14000000 + } + ], + "hyperstructureTotalCosts": [ + { + "resource_tier": 2, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 3, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 4, + "min_amount": 0, + "max_amount": 0 + }, + { + "resource_tier": 5, + "min_amount": 120000000, + "max_amount": 240000000 + }, + { + "resource_tier": 6, + "min_amount": 90000000, + "max_amount": 180000000 + }, + { + "resource_tier": 7, + "min_amount": 40000000, + "max_amount": 80000000 + }, + { + "resource_tier": 8, + "min_amount": 20000000, + "max_amount": 40000000 + }, + { + "resource_tier": 9, + "min_amount": 7000000, + "max_amount": 14000000 + }, + { + "resource_tier": 1, + "min_amount": 3000000, + "max_amount": 3000000 + } + ], + "hyperstructurePointsPerCycle": 7, + "hyperstructurePointsOnCompletion": 500000, + "hyperstructureTimeBetweenSharesChangeSeconds": 17280, + "hyperstructurePointsForWin": 9620000 + }, + "season": { + "startAfterSeconds": 60, + "bridgeCloseAfterEndSeconds": 172800 + }, + "bridge": { + "velords_fee_on_dpt_percent": 400, + "velords_fee_on_wtdr_percent": 400, + "season_pool_fee_on_dpt_percent": 400, + "season_pool_fee_on_wtdr_percent": 400, + "client_fee_on_dpt_percent": 200, + "client_fee_on_wtdr_percent": 200, + "velords_fee_recipient": "1972411780975621738773701578535203409474110909068539627767144719329707439045", + "season_pool_fee_recipient": "1585932876470681143095409887779312765741910564734761376020979026620136092433", + "max_bank_fee_dpt_percent": 0, + "max_bank_fee_wtdr_percent": 0 + }, + "vrf": { + "vrfProviderAddress": "0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f" + }, + "questResources": { + "1": [ + { + "resource": 29, + "amount": 1200000 + }, + { + "resource": 30, + "amount": 1200000 + } + ], + "2": [ + { + "resource": 3, + "amount": 5000 + }, + { + "resource": 1, + "amount": 5000 + }, + { + "resource": 2, + "amount": 5000 + }, + { + "resource": 4, + "amount": 5000 + }, + { + "resource": 6, + "amount": 5000 + }, + { + "resource": 8, + "amount": 5000 + }, + { + "resource": 5, + "amount": 5000 + }, + { + "resource": 11, + "amount": 5000 + }, + { + "resource": 7, + "amount": 5000 + }, + { + "resource": 15, + "amount": 5000 + }, + { + "resource": 14, + "amount": 5000 + }, + { + "resource": 20, + "amount": 5000 + }, + { + "resource": 13, + "amount": 5000 + }, + { + "resource": 12, + "amount": 5000 + }, + { + "resource": 16, + "amount": 5000 + }, + { + "resource": 21, + "amount": 5000 + }, + { + "resource": 18, + "amount": 5000 + }, + { + "resource": 17, + "amount": 5000 + }, + { + "resource": 10, + "amount": 5000 + }, + { + "resource": 19, + "amount": 5000 + }, + { + "resource": 9, + "amount": 5000 + }, + { + "resource": 22, + "amount": 5000 + } + ], + "3": [ + { + "resource": 25, + "amount": 200 + } + ], + "4": [ + { + "resource": 26, + "amount": 500 + }, + { + "resource": 27, + "amount": 500 + }, + { + "resource": 28, + "amount": 500 + } + ], + "5": [ + { + "resource": 25, + "amount": 200 + } + ], + "6": [ + { + "resource": 26, + "amount": 500 + }, + { + "resource": 28, + "amount": 500 + }, + { + "resource": 27, + "amount": 500 + } + ], + "7": [ + { + "resource": 25, + "amount": 200 + } + ], + "8": [ + { + "resource": 25, + "amount": 200 + }, + { + "resource": 28, + "amount": 200 + }, + { + "resource": 26, + "amount": 200 + }, + { + "resource": 27, + "amount": 200 + }, + { + "resource": 24, + "amount": 200 + } + ] + }, + "realmUpgradeCosts": { + "0": [], + "1": [ + { + "resource": 29, + "amount": 3000000 + }, + { + "resource": 30, + "amount": 3000000 + } + ], + "2": [ + { + "resource": 11, + "amount": 600000 + }, + { + "resource": 15, + "amount": 600000 + }, + { + "resource": 14, + "amount": 600000 + }, + { + "resource": 20, + "amount": 600000 + }, + { + "resource": 12, + "amount": 600000 + }, + { + "resource": 29, + "amount": 5000000 + }, + { + "resource": 30, + "amount": 5000000 + } + ], + "3": [ + { + "resource": 10, + "amount": 50000 + }, + { + "resource": 19, + "amount": 50000 + }, + { + "resource": 9, + "amount": 50000 + }, + { + "resource": 22, + "amount": 50000 + }, + { + "resource": 29, + "amount": 9000000 + }, + { + "resource": 30, + "amount": 9000000 + } + ] + }, + "realmMaxLevel": 4, + "setup": { + "chain": "slot", + "addresses": { + "seasonPass": "0x432531b2276e32aa5b82ae095e6694d68f49a2c82f2ee8b406f681ec3826c8b", + "realms": "0x56502f7cf5847c0a4d4d0d0a37fa02e104d637f278564ce2e85fcd9edd7d27a", + "lords": "0x3acbe76476cbf8997397878c52ce1acdf90ed1c295907f6505d3ff4c1646afa", + "resources": { + "STONE": [ + 1, + "0x1d0e42592e69ce773e4af49ebc806e8e4b18d68349675a720b310f524bc1047" + ], + "COAL": [ + 2, + "0x116e5c167e15ce74d6ceabab3ee1d654ba7d715cc3e313f0a7644460d930647" + ], + "WOOD": [ + 3, + "0x78b36df795c5fc301613901a5f16a875b51cc24dbab6f15ea595ce97eef57b8" + ], + "COPPER": [ + 4, + "0x3db58bdf0d85bcb352e6af446d9baae05ded478a389ae8c8afee15abfbb4663" + ], + "IRONWOOD": [ + 5, + "0x60c29b99b24ab147a389c23876ea6ca2a10da8cc469ac6b5c7f5ad904b7c448" + ], + "OBSIDIAN": [ + 6, + "0x67caa1f9b080285d7c7bf4dacb85cd735146035820da93e0f41c96a25487709" + ], + "GOLD": [ + 7, + "0x43640fb73f8ba75a85d4f8f77feb901a0408737beca17eafd1a99aa9431a43d" + ], + "SILVER": [ + 8, + "0x196619024411e0dbee1114d3f8a5bd8735b4444f779dfe70c59d844fe2fa0fa" + ], + "MITHRAL": [ + 9, + "0x4b9c53ccd696ef2e0c14098c9aef16180e763edf15d0e94ee74767b6fcc9893" + ], + "ALCHEMICALSILVER": [ + 10, + "0xa282d7a73ceb77ffa0093b8015d643d3641ea54c4ea7b87167285bc3dacca4" + ], + "COLDIRON": [ + 11, + "0x421f00ccffc49ec3492776510c186154e0c3bea3d72b9d7feee1d8ab2caa96f" + ], + "DEEPCRYSTAL": [ + 12, + "0x7d69078dd90f2de3718c4ff7f96a73c6e33b0724e9b392874e7ef57564d2a92" + ], + "RUBY": [ + 13, + "0x3d770ad570a0bb8a94b682a6a261019d3c894952f1593e0b81de9a31ae1735f" + ], + "DIAMONDS": [ + 14, + "0x5f66baa2e4a5cd71d0840d0c1cfe4be9275b8b52b543094aee1fa533de4c5b7" + ], + "HARTWOOD": [ + 15, + "0x7ff3a618a5ab2976446ba4109010bfa941cf4ad00ba49be1599b7b91cc854ce" + ], + "IGNIUM": [ + 16, + "0x680a194c725eccf0c1e4cff0ad8886f947bf012636ef01dcd6e633fb6d048f" + ], + "TWILIGHTQUARTZ": [ + 17, + "0x5462ffbc95fb5e99a774a0b218f933e0d2e16c94d10bcd062d4d03e3a4a9e9a" + ], + "TRUEICE": [ + 18, + "0x79a9030ce1cafd32b025c745c920604c0381a74c8609c76b7e93cd25fe1103a" + ], + "ADAMANTINE": [ + 19, + "0x7bf7916746082090c07707ce63d4740aef667d4e6478844187e315f2c4c3e33" + ], + "SAPPHIRE": [ + 20, + "0x7cd99ce1dc8ab26473d35ddee6fa2389a2e22f0435686155c2f2bf62a9b0e2" + ], + "ETHEREALSILICA": [ + 21, + "0x3b03aea5ed81397478d50b2b67401f38557d2e6e14eb3b1caebab21d8459daf" + ], + "DRAGONHIDE": [ + 22, + "0x420f281f9c469e5315024702724dfb1f6bd53bfe4f0eacff9233f916d57663c" + ], + "ANCIENTFRAGMENT": [ + 24, + "0xa2f3f8da01fc3c71aa698f19f774d4a2af7702d73bfde7c4c93ae787e6f359" + ], + "DONKEY": [ + 25, + "0x9c3db60be8614b358f65bf69175b1d4c8c153c6d26f421c508d0e20b2e2967" + ], + "KNIGHT": [ + 26, + "0x2da183da89cae4c22e249e7df3d9149895e5cebe1f7ca5d3ada783fb1b19374" + ], + "CROSSBOWMAN": [ + 27, + "0xfbbbff48d55f0e5938222734d461f87372d1d7378e00d258192483c7bbe0b9" + ], + "PALADIN": [ + 28, + "0x65a779057c56ed3dbe525d8a8f29a1f12c75ee60a50086740e634dd9d119e8b" + ], + "WHEAT": [ + 29, + "0x39e8ab3446f491dd6778b2c7367bcc643d593894a7a31c9b07cde4eff3486dd" + ], + "FISH": [ + 30, + "0x2aeea125cf76145d164d61f4e350fdb39df473d5663ee3577052b4565395296" + ], + "LORDS": [ + 31, + "0x3acbe76476cbf8997397878c52ce1acdf90ed1c295907f6505d3ff4c1646afa" + ] + } + }, + "manifest": { + "world": { + "class_hash": "0x45575a88cc5cef1e444c77ce60b7b4c9e73a01cbbe20926d5a4c72a94011410", + "address": "0x9dd5e66cfa83f893c2a70b9ea5221e2df18aaf52a111fe9003264f948c7aa", + "seed": "s1_eternum", + "name": "Realms: Eternum", + "entrypoints": [ + "uuid", + "set_metadata", + "register_namespace", + "register_event", + "register_model", + "register_contract", + "init_contract", + "upgrade_event", + "upgrade_model", + "upgrade_contract", + "emit_event", + "emit_events", + "set_entity", + "set_entities", + "delete_entity", + "delete_entities", + "grant_owner", + "revoke_owner", + "grant_writer", + "revoke_writer", + "upgrade" + ], + "abi": [ + { + "type": "impl", + "name": "World", + "interface_name": "dojo::world::iworld::IWorld" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "enum", + "name": "dojo::world::resource::Resource", + "variants": [ + { + "name": "Model", + "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" + }, + { + "name": "Event", + "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" + }, + { + "name": "Contract", + "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" + }, + { + "name": "Namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "World", + "type": "()" + }, + { + "name": "Unregistered", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "dojo::model::metadata::ResourceMetadata", + "members": [ + { + "name": "resource_id", + "type": "core::felt252" + }, + { + "name": "metadata_uri", + "type": "core::byte_array::ByteArray" + }, + { + "name": "metadata_hash", + "type": "core::felt252" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::>" + } + ] + }, + { + "type": "enum", + "name": "dojo::model::definition::ModelIndex", + "variants": [ + { + "name": "Keys", + "type": "core::array::Span::" + }, + { + "name": "Id", + "type": "core::felt252" + }, + { + "name": "MemberId", + "type": "(core::felt252, core::felt252)" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "dojo::meta::layout::FieldLayout", + "members": [ + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "dojo::meta::layout::Layout", + "variants": [ + { + "name": "Fixed", + "type": "core::array::Span::" + }, + { + "name": "Struct", + "type": "core::array::Span::" + }, + { + "name": "Tuple", + "type": "core::array::Span::" + }, + { + "name": "Array", + "type": "core::array::Span::" + }, + { + "name": "ByteArray", + "type": "()" + }, + { + "name": "Enum", + "type": "core::array::Span::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "dojo::world::iworld::IWorld", + "items": [ + { + "type": "function", + "name": "resource", + "inputs": [ + { + "name": "selector", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "dojo::world::resource::Resource" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "uuid", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "metadata", + "inputs": [ + { + "name": "resource_selector", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "dojo::model::metadata::ResourceMetadata" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_metadata", + "inputs": [ + { + "name": "metadata", + "type": "dojo::model::metadata::ResourceMetadata" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "register_namespace", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "register_event", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "register_model", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "register_contract", + "inputs": [ + { + "name": "salt", + "type": "core::felt252" + }, + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "init_contract", + "inputs": [ + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "init_calldata", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "upgrade_event", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "upgrade_model", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "upgrade_contract", + "inputs": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [ + { + "type": "core::starknet::class_hash::ClassHash" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "emit_event", + "inputs": [ + { + "name": "event_selector", + "type": "core::felt252" + }, + { + "name": "keys", + "type": "core::array::Span::" + }, + { + "name": "values", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "emit_events", + "inputs": [ + { + "name": "event_selector", + "type": "core::felt252" + }, + { + "name": "keys", + "type": "core::array::Span::>" + }, + { + "name": "values", + "type": "core::array::Span::>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "entity", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "index", + "type": "dojo::model::definition::ModelIndex" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [ + { + "type": "core::array::Span::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "entities", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "indexes", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [ + { + "type": "core::array::Span::>" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_entity", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "index", + "type": "dojo::model::definition::ModelIndex" + }, + { + "name": "values", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_entities", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "indexes", + "type": "core::array::Span::" + }, + { + "name": "values", + "type": "core::array::Span::>" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "delete_entity", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "index", + "type": "dojo::model::definition::ModelIndex" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "delete_entities", + "inputs": [ + { + "name": "model_selector", + "type": "core::felt252" + }, + { + "name": "indexes", + "type": "core::array::Span::" + }, + { + "name": "layout", + "type": "dojo::meta::layout::Layout" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "is_owner", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "grant_owner", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "revoke_owner", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "is_writer", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "grant_writer", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "revoke_writer", + "inputs": [ + { + "name": "resource", + "type": "core::felt252" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableWorld", + "interface_name": "dojo::world::iworld::IUpgradeableWorld" + }, + { + "type": "interface", + "name": "dojo::world::iworld::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": "world_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::WorldSpawned", + "kind": "struct", + "members": [ + { + "name": "creator", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::WorldUpgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::NamespaceRegistered", + "kind": "struct", + "members": [ + { + "name": "namespace", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ModelRegistered", + "kind": "struct", + "members": [ + { + "name": "name", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "namespace", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::EventRegistered", + "kind": "struct", + "members": [ + { + "name": "name", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "namespace", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ContractRegistered", + "kind": "struct", + "members": [ + { + "name": "name", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "namespace", + "type": "core::byte_array::ByteArray", + "kind": "key" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "salt", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ModelUpgraded", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "prev_address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::EventUpgraded", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + }, + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + }, + { + "name": "prev_address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ContractUpgraded", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::ContractInitialized", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "init_calldata", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::EventEmitted", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "system_address", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "keys", + "type": "core::array::Span::", + "kind": "data" + }, + { + "name": "values", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::MetadataUpdate", + "kind": "struct", + "members": [ + { + "name": "resource", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "uri", + "type": "core::byte_array::ByteArray", + "kind": "data" + }, + { + "name": "hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::StoreSetRecord", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "entity_id", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "keys", + "type": "core::array::Span::", + "kind": "data" + }, + { + "name": "values", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::StoreUpdateRecord", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "entity_id", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "values", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::StoreUpdateMember", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "entity_id", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "member_selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "values", + "type": "core::array::Span::", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::StoreDelRecord", + "kind": "struct", + "members": [ + { + "name": "selector", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "entity_id", + "type": "core::felt252", + "kind": "key" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::WriterUpdated", + "kind": "struct", + "members": [ + { + "name": "resource", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "value", + "type": "core::bool", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::OwnerUpdated", + "kind": "struct", + "members": [ + { + "name": "resource", + "type": "core::felt252", + "kind": "key" + }, + { + "name": "contract", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "value", + "type": "core::bool", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::world::world_contract::world::Event", + "kind": "enum", + "variants": [ + { + "name": "WorldSpawned", + "type": "dojo::world::world_contract::world::WorldSpawned", + "kind": "nested" + }, + { + "name": "WorldUpgraded", + "type": "dojo::world::world_contract::world::WorldUpgraded", + "kind": "nested" + }, + { + "name": "NamespaceRegistered", + "type": "dojo::world::world_contract::world::NamespaceRegistered", + "kind": "nested" + }, + { + "name": "ModelRegistered", + "type": "dojo::world::world_contract::world::ModelRegistered", + "kind": "nested" + }, + { + "name": "EventRegistered", + "type": "dojo::world::world_contract::world::EventRegistered", + "kind": "nested" + }, + { + "name": "ContractRegistered", + "type": "dojo::world::world_contract::world::ContractRegistered", + "kind": "nested" + }, + { + "name": "ModelUpgraded", + "type": "dojo::world::world_contract::world::ModelUpgraded", + "kind": "nested" + }, + { + "name": "EventUpgraded", + "type": "dojo::world::world_contract::world::EventUpgraded", + "kind": "nested" + }, + { + "name": "ContractUpgraded", + "type": "dojo::world::world_contract::world::ContractUpgraded", + "kind": "nested" + }, + { + "name": "ContractInitialized", + "type": "dojo::world::world_contract::world::ContractInitialized", + "kind": "nested" + }, + { + "name": "EventEmitted", + "type": "dojo::world::world_contract::world::EventEmitted", + "kind": "nested" + }, + { + "name": "MetadataUpdate", + "type": "dojo::world::world_contract::world::MetadataUpdate", + "kind": "nested" + }, + { + "name": "StoreSetRecord", + "type": "dojo::world::world_contract::world::StoreSetRecord", + "kind": "nested" + }, + { + "name": "StoreUpdateRecord", + "type": "dojo::world::world_contract::world::StoreUpdateRecord", + "kind": "nested" + }, + { + "name": "StoreUpdateMember", + "type": "dojo::world::world_contract::world::StoreUpdateMember", + "kind": "nested" + }, + { + "name": "StoreDelRecord", + "type": "dojo::world::world_contract::world::StoreDelRecord", + "kind": "nested" + }, + { + "name": "WriterUpdated", + "type": "dojo::world::world_contract::world::WriterUpdated", + "kind": "nested" + }, + { + "name": "OwnerUpdated", + "type": "dojo::world::world_contract::world::OwnerUpdated", + "kind": "nested" + } + ] + } + ] + }, + "contracts": [ + { + "address": "0x12dea4f1017885f3caf0f2307769bf7a22e1138756170d6b0089052287978d4", + "class_hash": "0x38b8eea12d619d5ef8dd3ce5fd038a6bef762b64d911a3e3947892f09ceaeab", + "abi": [ + { + "type": "impl", + "name": "bank_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "bank_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BankSystemsImpl", + "interface_name": "s1_eternum::systems::bank::contracts::bank::IBankSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::bank::contracts::bank::IBankSystems", + "items": [ + { + "type": "function", + "name": "change_owner_amm_fee", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "new_owner_fee_num", + "type": "core::integer::u128" + }, + { + "name": "new_owner_fee_denom", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "change_owner_bridge_fee", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "owner_bridge_fee_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "owner_bridge_fee_wtdr_percent", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::bank::contracts::bank::bank_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-bank_systems", + "selector": "0x44475a775d79049bbe99567b7c00a1e4d8d582cade61a8aec07ca3bb234f6e6", + "systems": [ + "change_owner_amm_fee", + "change_owner_bridge_fee", + "upgrade" + ] + }, + { + "address": "0x352ce7d5737aaa6315bd01d85f0e03e6b52f533a3a4a89294f49cbb0b57bc07", + "class_hash": "0x2d35042bdc3fe8f799396ce2cf9c31deb666e63df2427688a4a8605e34d846", + "abi": [ + { + "type": "impl", + "name": "battle_pillage_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "battle_pillage_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BattlePillageContractImpl", + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract" + }, + { + "type": "interface", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract", + "items": [ + { + "type": "function", + "name": "battle_pillage", + "inputs": [ + { + "name": "army_id", + "type": "core::integer::u32" + }, + { + "name": "structure_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_pillage_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-battle_pillage_systems", + "selector": "0x6e8963ce01de14fbf50434fd001ac86e45313c4d43e7a255192eb26dcb5d63d", + "systems": [ + "battle_pillage", + "upgrade" + ] + }, + { + "address": "0x7cdc9a51cdeb4c7f1716345abc325fb8e7ebcd7cdceb1fa2083b97fe84716ea", + "class_hash": "0x1f9260c45aed95e060c98434c5922c5dfef7c82a62b47ae42496815c3dc6401", + "abi": [ + { + "type": "impl", + "name": "battle_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "battle_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BattleContractImpl", + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleContract" + }, + { + "type": "enum", + "name": "s1_eternum::models::combat::BattleSide", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Attack", + "type": "()" + }, + { + "name": "Defence", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleContract", + "items": [ + { + "type": "function", + "name": "battle_start", + "inputs": [ + { + "name": "attacking_army_id", + "type": "core::integer::u32" + }, + { + "name": "defending_army_id", + "type": "core::integer::u32" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_force_start", + "inputs": [ + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "defending_army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_join", + "inputs": [ + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "battle_side", + "type": "s1_eternum::models::combat::BattleSide" + }, + { + "name": "army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_leave", + "inputs": [ + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_claim", + "inputs": [ + { + "name": "army_id", + "type": "core::integer::u32" + }, + { + "name": "structure_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "battle_resolve", + "inputs": [ + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-battle_systems", + "selector": "0x7bb97d7199b14973d6f05b84579bda637cef5714be078064da3cb80d273c79b", + "systems": [ + "battle_start", + "battle_force_start", + "battle_join", + "battle_leave", + "battle_claim", + "battle_resolve", + "upgrade" + ] + }, + { + "address": "0x6066a64d97dd37aed41748a86aa11524c7e29f20235011ef8d16c7a067b2664", + "class_hash": "0x688863adfa91d251a6d09d09c156264d2c6d1128e70c759bd2848abbbe11fc6", + "abi": [ + { + "type": "impl", + "name": "battle_utils_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "battle_utils_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BattleUtilsContractImpl", + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract" + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::Troops", + "members": [ + { + "name": "knight_count", + "type": "core::integer::u64" + }, + { + "name": "paladin_count", + "type": "core::integer::u64" + }, + { + "name": "crossbowman_count", + "type": "core::integer::u64" + } + ] + }, + { + "type": "enum", + "name": "s1_eternum::models::combat::BattleSide", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Attack", + "type": "()" + }, + { + "name": "Defence", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::BattleArmy", + "members": [ + { + "name": "troops", + "type": "s1_eternum::models::combat::Troops" + }, + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "battle_side", + "type": "s1_eternum::models::combat::BattleSide" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::BattleHealth", + "members": [ + { + "name": "current", + "type": "core::integer::u128" + }, + { + "name": "lifetime", + "type": "core::integer::u128" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::Battle", + "members": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "attack_army", + "type": "s1_eternum::models::combat::BattleArmy" + }, + { + "name": "attack_army_lifetime", + "type": "s1_eternum::models::combat::BattleArmy" + }, + { + "name": "defence_army", + "type": "s1_eternum::models::combat::BattleArmy" + }, + { + "name": "defence_army_lifetime", + "type": "s1_eternum::models::combat::BattleArmy" + }, + { + "name": "attackers_resources_escrow_id", + "type": "core::integer::u32" + }, + { + "name": "defenders_resources_escrow_id", + "type": "core::integer::u32" + }, + { + "name": "attack_army_health", + "type": "s1_eternum::models::combat::BattleHealth" + }, + { + "name": "defence_army_health", + "type": "s1_eternum::models::combat::BattleHealth" + }, + { + "name": "attack_delta", + "type": "core::integer::u64" + }, + { + "name": "defence_delta", + "type": "core::integer::u64" + }, + { + "name": "last_updated", + "type": "core::integer::u64" + }, + { + "name": "duration_left", + "type": "core::integer::u64" + }, + { + "name": "start_at", + "type": "core::integer::u64" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::Army", + "members": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "troops", + "type": "s1_eternum::models::combat::Troops" + }, + { + "name": "battle_id", + "type": "core::integer::u32" + }, + { + "name": "battle_side", + "type": "s1_eternum::models::combat::BattleSide" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract", + "items": [ + { + "type": "function", + "name": "leave_battle", + "inputs": [ + { + "name": "battle", + "type": "s1_eternum::models::combat::Battle" + }, + { + "name": "army", + "type": "s1_eternum::models::combat::Army" + } + ], + "outputs": [ + { + "type": "(s1_eternum::models::combat::Battle, s1_eternum::models::combat::Army)" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "leave_battle_if_ended", + "inputs": [ + { + "name": "battle", + "type": "s1_eternum::models::combat::Battle" + }, + { + "name": "army", + "type": "s1_eternum::models::combat::Army" + } + ], + "outputs": [ + { + "type": "(s1_eternum::models::combat::Battle, s1_eternum::models::combat::Army)" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_utils_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-battle_utils_systems", + "selector": "0x2b94e5432b691bad81584af7e9e97102aa0070f13aa91c6ff8c980e54d5ca33", + "systems": [ + "leave_battle", + "leave_battle_if_ended", + "upgrade" + ] + }, + { + "address": "0x4db43369a7b0ab29f7356d5d0568c0d06cd6da5199daf06f9bec633d3e934ff", + "class_hash": "0x7fb2e9574aa693d81a15f3734dd0a8612ba8d64057b2aef692bd3117118a446", + "abi": [ + { + "type": "impl", + "name": "config_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "config_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IWorldConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IWorldConfig", + "items": [ + { + "type": "function", + "name": "set_world_config", + "inputs": [ + { + "name": "admin_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "realm_l2_contract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "SeasonConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ISeasonConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ISeasonConfig", + "items": [ + { + "type": "function", + "name": "set_season_config", + "inputs": [ + { + "name": "season_pass_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "realms_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "lords_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "start_at", + "type": "core::integer::u64" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_season_bridge_config", + "inputs": [ + { + "name": "close_after_end_seconds", + "type": "core::integer::u64" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "VRFConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IVRFConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IVRFConfig", + "items": [ + { + "type": "function", + "name": "set_vrf_config", + "inputs": [ + { + "name": "vrf_provider_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "QuestConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IQuestConfig" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IQuestConfig", + "items": [ + { + "type": "function", + "name": "set_quest_reward_config", + "inputs": [ + { + "name": "quest_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "MapConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IMapConfig" + }, + { + "type": "struct", + "name": "s1_eternum::models::config::MapConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "reward_resource_amount", + "type": "core::integer::u128" + }, + { + "name": "shards_mines_fail_probability", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IMapConfig", + "items": [ + { + "type": "function", + "name": "set_map_config", + "inputs": [ + { + "name": "map_config", + "type": "s1_eternum::models::config::MapConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "CapacityConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ICapacityConfig" + }, + { + "type": "enum", + "name": "s1_eternum::models::config::CapacityConfigCategory", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Structure", + "type": "()" + }, + { + "name": "Donkey", + "type": "()" + }, + { + "name": "Army", + "type": "()" + }, + { + "name": "Storehouse", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::config::CapacityConfig", + "members": [ + { + "name": "category", + "type": "s1_eternum::models::config::CapacityConfigCategory" + }, + { + "name": "weight_gram", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ICapacityConfig", + "items": [ + { + "type": "function", + "name": "set_capacity_config", + "inputs": [ + { + "name": "capacity_config", + "type": "s1_eternum::models::config::CapacityConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TravelStaminaCostConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITravelStaminaCostConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITravelStaminaCostConfig", + "items": [ + { + "type": "function", + "name": "set_travel_stamina_cost_config", + "inputs": [ + { + "name": "travel_type", + "type": "core::integer::u8" + }, + { + "name": "cost", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "WeightConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IWeightConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IWeightConfig", + "items": [ + { + "type": "function", + "name": "set_weight_config", + "inputs": [ + { + "name": "entity_type", + "type": "core::integer::u32" + }, + { + "name": "weight_gram", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "BattleConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IBattleConfig" + }, + { + "type": "struct", + "name": "s1_eternum::models::config::BattleConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "regular_immunity_ticks", + "type": "core::integer::u8" + }, + { + "name": "hyperstructure_immunity_ticks", + "type": "core::integer::u8" + }, + { + "name": "battle_delay_seconds", + "type": "core::integer::u64" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IBattleConfig", + "items": [ + { + "type": "function", + "name": "set_battle_config", + "inputs": [ + { + "name": "battle_config", + "type": "s1_eternum::models::config::BattleConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TickConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITickConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITickConfig", + "items": [ + { + "type": "function", + "name": "set_tick_config", + "inputs": [ + { + "name": "tick_id", + "type": "core::integer::u8" + }, + { + "name": "tick_interval_in_seconds", + "type": "core::integer::u64" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "StaminaConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IStaminaConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IStaminaConfig", + "items": [ + { + "type": "function", + "name": "set_stamina_config", + "inputs": [ + { + "name": "unit_type", + "type": "core::integer::u8" + }, + { + "name": "max_stamina", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TravelFoodCostConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITravelFoodCostConfig" + }, + { + "type": "struct", + "name": "s1_eternum::models::config::TravelFoodCostConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "unit_type", + "type": "core::integer::u8" + }, + { + "name": "explore_wheat_burn_amount", + "type": "core::integer::u128" + }, + { + "name": "explore_fish_burn_amount", + "type": "core::integer::u128" + }, + { + "name": "travel_wheat_burn_amount", + "type": "core::integer::u128" + }, + { + "name": "travel_fish_burn_amount", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITravelFoodCostConfig", + "items": [ + { + "type": "function", + "name": "set_travel_food_cost_config", + "inputs": [ + { + "name": "travel_food_cost_config", + "type": "s1_eternum::models::config::TravelFoodCostConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "StaminaRefillConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IStaminaRefillConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IStaminaRefillConfig", + "items": [ + { + "type": "function", + "name": "set_stamina_refill_config", + "inputs": [ + { + "name": "amount_per_tick", + "type": "core::integer::u16" + }, + { + "name": "start_boost_tick_count", + "type": "core::integer::u8" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "LevelingConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ILevelingConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ILevelingConfig", + "items": [ + { + "type": "function", + "name": "set_leveling_config", + "inputs": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "decay_interval", + "type": "core::integer::u64" + }, + { + "name": "max_level", + "type": "core::integer::u64" + }, + { + "name": "decay_scaled", + "type": "core::integer::u128" + }, + { + "name": "cost_percentage_scaled", + "type": "core::integer::u128" + }, + { + "name": "base_multiplier", + "type": "core::integer::u128" + }, + { + "name": "wheat_base_amount", + "type": "core::integer::u128" + }, + { + "name": "fish_base_amount", + "type": "core::integer::u128" + }, + { + "name": "resource_1_costs", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "resource_2_costs", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "resource_3_costs", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "ProductionConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IProductionConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IProductionConfig", + "items": [ + { + "type": "function", + "name": "set_production_config", + "inputs": [ + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "produced_amount", + "type": "core::integer::u128" + }, + { + "name": "labor_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "LaborConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ILaborConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ILaborConfig", + "items": [ + { + "type": "function", + "name": "set_labor_config", + "inputs": [ + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "cost", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TransportConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITransportConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITransportConfig", + "items": [ + { + "type": "function", + "name": "set_speed_config", + "inputs": [ + { + "name": "entity_type", + "type": "core::integer::u32" + }, + { + "name": "sec_per_km", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "HyperstructureConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IHyperstructureConfig" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IHyperstructureConfig", + "items": [ + { + "type": "function", + "name": "set_hyperstructure_config", + "inputs": [ + { + "name": "resources_for_completion", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128, core::integer::u128)>" + }, + { + "name": "time_between_shares_change", + "type": "core::integer::u64" + }, + { + "name": "points_per_cycle", + "type": "core::integer::u128" + }, + { + "name": "points_for_win", + "type": "core::integer::u128" + }, + { + "name": "points_on_completion", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "BankConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IBankConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IBankConfig", + "items": [ + { + "type": "function", + "name": "set_bank_config", + "inputs": [ + { + "name": "lords_cost", + "type": "core::integer::u128" + }, + { + "name": "lp_fee_num", + "type": "core::integer::u128" + }, + { + "name": "lp_fee_denom", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "TroopConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ITroopConfig" + }, + { + "type": "struct", + "name": "s1_eternum::models::config::TroopConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "health", + "type": "core::integer::u32" + }, + { + "name": "knight_strength", + "type": "core::integer::u8" + }, + { + "name": "paladin_strength", + "type": "core::integer::u8" + }, + { + "name": "crossbowman_strength", + "type": "core::integer::u16" + }, + { + "name": "advantage_percent", + "type": "core::integer::u16" + }, + { + "name": "disadvantage_percent", + "type": "core::integer::u16" + }, + { + "name": "max_troop_count", + "type": "core::integer::u64" + }, + { + "name": "pillage_health_divisor", + "type": "core::integer::u8" + }, + { + "name": "army_free_per_structure", + "type": "core::integer::u8" + }, + { + "name": "army_extra_per_building", + "type": "core::integer::u8" + }, + { + "name": "army_max_per_structure", + "type": "core::integer::u8" + }, + { + "name": "battle_leave_slash_num", + "type": "core::integer::u8" + }, + { + "name": "battle_leave_slash_denom", + "type": "core::integer::u8" + }, + { + "name": "battle_time_scale", + "type": "core::integer::u16" + }, + { + "name": "battle_max_time_seconds", + "type": "core::integer::u64" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ITroopConfig", + "items": [ + { + "type": "function", + "name": "set_troop_config", + "inputs": [ + { + "name": "troop_config", + "type": "s1_eternum::models::config::TroopConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "BuildingCategoryPopulationConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IBuildingCategoryPopConfig" + }, + { + "type": "enum", + "name": "s1_eternum::models::resource::production::building::BuildingCategory", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Castle", + "type": "()" + }, + { + "name": "Resource", + "type": "()" + }, + { + "name": "Farm", + "type": "()" + }, + { + "name": "FishingVillage", + "type": "()" + }, + { + "name": "Barracks", + "type": "()" + }, + { + "name": "Market", + "type": "()" + }, + { + "name": "ArcheryRange", + "type": "()" + }, + { + "name": "Stable", + "type": "()" + }, + { + "name": "TradingPost", + "type": "()" + }, + { + "name": "WorkersHut", + "type": "()" + }, + { + "name": "WatchTower", + "type": "()" + }, + { + "name": "Walls", + "type": "()" + }, + { + "name": "Storehouse", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IBuildingCategoryPopConfig", + "items": [ + { + "type": "function", + "name": "set_building_category_pop_config", + "inputs": [ + { + "name": "building_category", + "type": "s1_eternum::models::resource::production::building::BuildingCategory" + }, + { + "name": "population", + "type": "core::integer::u32" + }, + { + "name": "capacity", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "PopulationConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IPopulationConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IPopulationConfig", + "items": [ + { + "type": "function", + "name": "set_population_config", + "inputs": [ + { + "name": "base_population", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "BuildingConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IBuildingConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IBuildingConfig", + "items": [ + { + "type": "function", + "name": "set_building_general_config", + "inputs": [ + { + "name": "base_cost_percent_increase", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_building_config", + "inputs": [ + { + "name": "building_category", + "type": "s1_eternum::models::resource::production::building::BuildingCategory" + }, + { + "name": "building_resource_type", + "type": "core::integer::u8" + }, + { + "name": "cost_of_building", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "IMercenariesConfig", + "interface_name": "s1_eternum::systems::config::contracts::IMercenariesConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IMercenariesConfig", + "items": [ + { + "type": "function", + "name": "set_mercenaries_config", + "inputs": [ + { + "name": "knights_lower_bound", + "type": "core::integer::u64" + }, + { + "name": "knights_upper_bound", + "type": "core::integer::u64" + }, + { + "name": "paladins_lower_bound", + "type": "core::integer::u64" + }, + { + "name": "paladins_upper_bound", + "type": "core::integer::u64" + }, + { + "name": "crossbowmen_lower_bound", + "type": "core::integer::u64" + }, + { + "name": "crossbowmen_upper_bound", + "type": "core::integer::u64" + }, + { + "name": "rewards", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "IResourceBridgeConfig", + "interface_name": "s1_eternum::systems::config::contracts::IResourceBridgeConfig" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::config::ResourceBridgeConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "deposit_paused", + "type": "core::bool" + }, + { + "name": "withdraw_paused", + "type": "core::bool" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::config::ResourceBridgeFeeSplitConfig", + "members": [ + { + "name": "config_id", + "type": "core::integer::u32" + }, + { + "name": "velords_fee_on_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "velords_fee_on_wtdr_percent", + "type": "core::integer::u16" + }, + { + "name": "season_pool_fee_on_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "season_pool_fee_on_wtdr_percent", + "type": "core::integer::u16" + }, + { + "name": "client_fee_on_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "client_fee_on_wtdr_percent", + "type": "core::integer::u16" + }, + { + "name": "velords_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "season_pool_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "max_bank_fee_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "max_bank_fee_wtdr_percent", + "type": "core::integer::u16" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::config::ResourceBridgeWhitelistConfig", + "members": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IResourceBridgeConfig", + "items": [ + { + "type": "function", + "name": "set_resource_bridge_config", + "inputs": [ + { + "name": "resource_bridge_config", + "type": "s1_eternum::models::config::ResourceBridgeConfig" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_resource_bridge_fee_split_config", + "inputs": [ + { + "name": "resource_bridge_fee_split_config", + "type": "s1_eternum::models::config::ResourceBridgeFeeSplitConfig" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_resource_bridge_whitelist_config", + "inputs": [ + { + "name": "resource_bridge_whitelist_config", + "type": "s1_eternum::models::config::ResourceBridgeWhitelistConfig" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "RealmLevelConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::IRealmLevelConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::IRealmLevelConfig", + "items": [ + { + "type": "function", + "name": "set_realm_max_level_config", + "inputs": [ + { + "name": "new_max_level", + "type": "core::integer::u8" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_realm_level_config", + "inputs": [ + { + "name": "level", + "type": "core::integer::u8" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "ISettlementConfig", + "interface_name": "s1_eternum::systems::config::contracts::ISettlementConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ISettlementConfig", + "items": [ + { + "type": "function", + "name": "set_settlement_config", + "inputs": [ + { + "name": "center", + "type": "core::integer::u32" + }, + { + "name": "base_distance", + "type": "core::integer::u32" + }, + { + "name": "min_first_layer_distance", + "type": "core::integer::u32" + }, + { + "name": "points_placed", + "type": "core::integer::u32" + }, + { + "name": "current_layer", + "type": "core::integer::u32" + }, + { + "name": "current_side", + "type": "core::integer::u32" + }, + { + "name": "current_point_on_side", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "achievement::components::achievable::AchievableComponent::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::config::contracts::config_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + }, + { + "name": "AchievableEvent", + "type": "achievement::components::achievable::AchievableComponent::Event", + "kind": "flat" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-config_systems", + "selector": "0x1cb4608b18b40cb6420be7cf67ff21abe727a2bf599f2727d8eed5e36099fc2", + "systems": [ + "set_world_config", + "set_season_config", + "set_season_bridge_config", + "set_vrf_config", + "set_quest_reward_config", + "set_map_config", + "set_capacity_config", + "set_travel_stamina_cost_config", + "set_weight_config", + "set_battle_config", + "set_tick_config", + "set_stamina_config", + "set_travel_food_cost_config", + "set_stamina_refill_config", + "set_leveling_config", + "set_production_config", + "set_labor_config", + "set_speed_config", + "set_hyperstructure_config", + "set_bank_config", + "set_troop_config", + "set_building_category_pop_config", + "set_population_config", + "set_building_general_config", + "set_building_config", + "set_mercenaries_config", + "set_resource_bridge_config", + "set_resource_bridge_fee_split_config", + "set_resource_bridge_whitelist_config", + "set_realm_max_level_config", + "set_realm_level_config", + "set_settlement_config", + "upgrade" + ] + }, + { + "address": "0x2368b70232d701b4be5e32d03d8ab13b3d0a3c5d44a7b8e704d24a5e2c723ad", + "class_hash": "0x52cc13796077949a91149c8870679bff30e880faacc1696c444db1ffc2e03ba", + "abi": [ + { + "type": "impl", + "name": "dev_bank_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "dev_bank_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "BankSystemsImpl", + "interface_name": "s1_eternum::systems::dev::contracts::bank::IBankSystems" + }, + { + "type": "struct", + "name": "s1_eternum::models::position::Coord", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::dev::contracts::bank::IBankSystems", + "items": [ + { + "type": "function", + "name": "create_admin_bank", + "inputs": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "coord", + "type": "s1_eternum::models::position::Coord" + }, + { + "name": "owner_fee_num", + "type": "core::integer::u128" + }, + { + "name": "owner_fee_denom", + "type": "core::integer::u128" + }, + { + "name": "owner_bridge_fee_dpt_percent", + "type": "core::integer::u16" + }, + { + "name": "owner_bridge_fee_wtdr_percent", + "type": "core::integer::u16" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::dev::contracts::bank::dev_bank_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-dev_bank_systems", + "selector": "0x653ceec4af5e357119149b66228aece89c47a9c85dbba76955cec24e809f191", + "systems": [ + "create_admin_bank", + "upgrade" + ] + }, + { + "address": "0x69a706af0da6fc3d1b4b148069c467c68c4171694eea8f2012f3560c72ea9a6", + "class_hash": "0x5eade382aa35597f5cbbee1c9366af3e78caef7ba002534aabfe11c24487bce", + "abi": [ + { + "type": "impl", + "name": "dev_realm_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "dev_realm_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "DevRealmSystemsImpl", + "interface_name": "s1_eternum::systems::dev::contracts::realm::IDevRealmSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::dev::contracts::realm::IDevRealmSystems", + "items": [ + { + "type": "function", + "name": "create", + "inputs": [ + { + "name": "realm_id", + "type": "core::integer::u32" + }, + { + "name": "frontend", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::dev::contracts::realm::dev_realm_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-dev_realm_systems", + "selector": "0x32279d1c73c6356f5f15ff0e59adc6bfc45ffcde796c785452f6944b9b36ef1", + "systems": [ + "create", + "upgrade" + ] + }, + { + "address": "0x3b574cdf884243f01296332ef73e4994f98b063773a056b0a46f5eebdc10f32", + "class_hash": "0x7d9a070d9ded75006a3b6ee02cee0601012901e7910978c390cb28a232a26cc", + "abi": [ + { + "type": "impl", + "name": "dev_resource_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "dev_resource_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ResourceSystemsImpl", + "interface_name": "s1_eternum::systems::dev::contracts::resource::IResourceSystems" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::dev::contracts::resource::IResourceSystems", + "items": [ + { + "type": "function", + "name": "mint", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::dev::contracts::resource::dev_resource_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-dev_resource_systems", + "selector": "0x4d5cfcb90997c42faaec636a440b73118f54d7e5321a8e6e134bdb0ac946333", + "systems": [ + "mint", + "upgrade" + ] + }, + { + "address": "0xa4e32c74166a9b817f53e13ba1f06bf0e5dd324dccf38e2b9e9dad255c5026", + "class_hash": "0x41e1faef49fb72e1e20ffcf0c2c15e99f80cf95dc8ae3414b5c0e31ecce6b6f", + "abi": [ + { + "type": "impl", + "name": "donkey_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "donkey_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::transport::contracts::donkey_systems::donkey_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-donkey_systems", + "selector": "0x3d69880d4cc048ff9cbc100f9667649cb239b66e1245bf3cccb47119ea29a95", + "systems": [ + "upgrade" + ] + }, + { + "address": "0x315de68b9d148a842f4aa6e16d6c5d2d6ae1e7787a03c778a3691a894f9142d", + "class_hash": "0x6178332d6302e2ccebecc0cdf7ef676443384f9e3dcffbcbb1cb9056c05b11e", + "abi": [ + { + "type": "impl", + "name": "guild_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "guild_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "GuildSystemsImpl", + "interface_name": "s1_eternum::systems::guild::contracts::IGuildSystems" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::guild::contracts::IGuildSystems", + "items": [ + { + "type": "function", + "name": "create_guild", + "inputs": [ + { + "name": "is_public", + "type": "core::bool" + }, + { + "name": "guild_name", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "join_guild", + "inputs": [ + { + "name": "guild_entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "whitelist_player", + "inputs": [ + { + "name": "player_address_to_whitelist", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "guild_entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "transfer_guild_ownership", + "inputs": [ + { + "name": "guild_entity_id", + "type": "core::integer::u32" + }, + { + "name": "to_player_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "remove_guild_member", + "inputs": [ + { + "name": "player_address_to_remove", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "remove_player_from_whitelist", + "inputs": [ + { + "name": "player_address_to_remove", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "guild_entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::guild::contracts::guild_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-guild_systems", + "selector": "0x15516acac71fbb80f953b9a8fac7d65ceff957f7f2d568fecbccba36bec6263", + "systems": [ + "create_guild", + "join_guild", + "whitelist_player", + "transfer_guild_ownership", + "remove_guild_member", + "remove_player_from_whitelist", + "upgrade" + ] + }, + { + "address": "0x5d9b021d46b861f532b88e1a5b09e5ab7c46d1a11c7fcc11335e0cc459383d9", + "class_hash": "0x1af127b3e1737bc103072be80c6927cdc90616df78597a5e225f6ab981ad6e4", + "abi": [ + { + "type": "impl", + "name": "hyperstructure_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "hyperstructure_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "HyperstructureSystemsImpl", + "interface_name": "s1_eternum::systems::hyperstructure::contracts::IHyperstructureSystems" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u32, core::integer::u16)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u32, core::integer::u16)>" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::position::Coord", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>" + } + ] + }, + { + "type": "enum", + "name": "s1_eternum::models::hyperstructure::Access", + "variants": [ + { + "name": "Public", + "type": "()" + }, + { + "name": "Private", + "type": "()" + }, + { + "name": "GuildOnly", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::hyperstructure::contracts::IHyperstructureSystems", + "items": [ + { + "type": "function", + "name": "get_points", + "inputs": [ + { + "name": "player_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "hyperstructures_contributed_to", + "type": "core::array::Span::" + }, + { + "name": "hyperstructure_shareholder_epochs", + "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" + } + ], + "outputs": [ + { + "type": "(core::integer::u128, core::integer::u128, core::integer::u128, core::integer::u128)" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "create", + "inputs": [ + { + "name": "creator_entity_id", + "type": "core::integer::u32" + }, + { + "name": "coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "contribute_to_construction", + "inputs": [ + { + "name": "hyperstructure_entity_id", + "type": "core::integer::u32" + }, + { + "name": "contributor_entity_id", + "type": "core::integer::u32" + }, + { + "name": "contributions", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_co_owners", + "inputs": [ + { + "name": "hyperstructure_entity_id", + "type": "core::integer::u32" + }, + { + "name": "co_owners", + "type": "core::array::Span::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "end_game", + "inputs": [ + { + "name": "hyperstructures_contributed_to", + "type": "core::array::Span::" + }, + { + "name": "hyperstructure_shareholder_epochs", + "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_access", + "inputs": [ + { + "name": "hyperstructure_entity_id", + "type": "core::integer::u32" + }, + { + "name": "access", + "type": "s1_eternum::models::hyperstructure::Access" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::hyperstructure::contracts::hyperstructure_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-hyperstructure_systems", + "selector": "0x4bdd8bcbb935577aba3b974bd7e906698504fcb75e0c3aa34913c21342b4498", + "systems": [ + "get_points", + "create", + "contribute_to_construction", + "set_co_owners", + "end_game", + "set_access", + "upgrade" + ] + }, + { + "address": "0x5c0ae11ece0f9b47429f496ae8aa44c990457fd45ab3f99cf17dde52ea9c58e", + "class_hash": "0x39da4b5a4c779a5961a30a6bd3be3002f7ac8ca7fcb261bae647262cb03f8df", + "abi": [ + { + "type": "impl", + "name": "liquidity_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "liquidity_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "LiquiditySystemsImpl", + "interface_name": "s1_eternum::systems::bank::contracts::liquidity::ILiquiditySystems" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "cubit::f128::types::fixed::Fixed", + "members": [ + { + "name": "mag", + "type": "core::integer::u128" + }, + { + "name": "sign", + "type": "core::bool" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::bank::contracts::liquidity::ILiquiditySystems", + "items": [ + { + "type": "function", + "name": "add", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "resource_amount", + "type": "core::integer::u128" + }, + { + "name": "lords_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "remove", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "shares", + "type": "cubit::f128::types::fixed::Fixed" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::bank::contracts::liquidity::liquidity_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-liquidity_systems", + "selector": "0xf480ba1a0c3e5b85a74ba14244a1653f886654d67c71b4dd0804d9eecf1cd9", + "systems": [ + "add", + "remove", + "upgrade" + ] + }, + { + "address": "0x4c9426847f591ff00e3bc81e31ef317ed7aa3d3f967e83d3b5da5b96d0f6128", + "class_hash": "0x23550c76e27c75c2c2aab7aaca5bc20b9595837ff35fdb95cd538c3d3f2466c", + "abi": [ + { + "type": "impl", + "name": "map_generation_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "map_generation_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "MapGenerationSystemsImpl", + "interface_name": "s1_eternum::systems::map::map_generation::IMapGenerationSystems" + }, + { + "type": "struct", + "name": "s1_eternum::models::owner::EntityOwner", + "members": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_owner_id", + "type": "core::integer::u32" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::position::Coord", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "core::integer::u256", + "members": [ + { + "name": "low", + "type": "core::integer::u128" + }, + { + "name": "high", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::map::map_generation::IMapGenerationSystems", + "items": [ + { + "type": "function", + "name": "discover_shards_mine", + "inputs": [ + { + "name": "unit_entity_owner", + "type": "s1_eternum::models::owner::EntityOwner" + }, + { + "name": "coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "add_mercenaries_to_structure", + "inputs": [ + { + "name": "randomness", + "type": "core::integer::u256" + }, + { + "name": "structure_entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::map::map_generation::map_generation_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-map_generation_systems", + "selector": "0x6dbd060aee5437a68789ce311c098ad9e39dddab8447b335c10007afae949c6", + "systems": [ + "discover_shards_mine", + "add_mercenaries_to_structure", + "upgrade" + ] + }, + { + "address": "0x4b18cc8d4d59032998a58dc2cd075c3ccc4784e8e4796da8e9812eeaf7f7321", + "class_hash": "0x3bb707045c5ff3766935a9bece0717a1adf395e9f109cf9e0f8d025bfeadc6d", + "abi": [ + { + "type": "impl", + "name": "map_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "map_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "MapSystemsImpl", + "interface_name": "s1_eternum::systems::map::contracts::IMapSystems" + }, + { + "type": "enum", + "name": "s1_eternum::models::position::Direction", + "variants": [ + { + "name": "East", + "type": "()" + }, + { + "name": "NorthEast", + "type": "()" + }, + { + "name": "NorthWest", + "type": "()" + }, + { + "name": "West", + "type": "()" + }, + { + "name": "SouthWest", + "type": "()" + }, + { + "name": "SouthEast", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::map::contracts::IMapSystems", + "items": [ + { + "type": "function", + "name": "explore", + "inputs": [ + { + "name": "unit_id", + "type": "core::integer::u32" + }, + { + "name": "direction", + "type": "s1_eternum::models::position::Direction" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::map::contracts::map_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-map_systems", + "selector": "0x6ed75404dd23a9d2825f9459d23848133ae3e81050e63b85c0d37264695d998", + "systems": [ + "explore", + "upgrade" + ] + }, + { + "address": "0x3a3d2be02acf0e88dfd22e38dbb447e813250da83024d23109791acf1112ef1", + "class_hash": "0x6a06d111761024260598c4cab0bad06ba15ec09331b176f9223e62ef2093508", + "abi": [ + { + "type": "impl", + "name": "name_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "name_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "NameSystemsImpl", + "interface_name": "s1_eternum::systems::name::contracts::INameSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::name::contracts::INameSystems", + "items": [ + { + "type": "function", + "name": "set_address_name", + "inputs": [ + { + "name": "name", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_entity_name", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "name", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::name::contracts::name_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-name_systems", + "selector": "0x45b86c7ee3f36393c4d14a0da3c58fdf406677137f1d840c53f01e8544e3b80", + "systems": [ + "set_address_name", + "set_entity_name", + "upgrade" + ] + }, + { + "address": "0x5cb00d1d30c81404daa4dc084cbfb1ecb2114f2367fa77f5b04912bd8abd7e1", + "class_hash": "0x57f36faf3ab21b910521f361bbc7bcd09758bc4ba46015f2bad0f15f6bf53ff", + "abi": [ + { + "type": "impl", + "name": "ownership_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "ownership_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "OwnershipSystemsImpl", + "interface_name": "s1_eternum::systems::ownership::contracts::IOwnershipSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::ownership::contracts::IOwnershipSystems", + "items": [ + { + "type": "function", + "name": "transfer_ownership", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "new_owner", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::ownership::contracts::ownership_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-ownership_systems", + "selector": "0x5045fbdb3ad9b695ea6f218e57a3ca2ce575a2964f30e15f2e710f691aa0622", + "systems": [ + "transfer_ownership", + "upgrade" + ] + }, + { + "address": "0xad55bb6ef5b58306f565c398d73dee2068d060a4a3e95a948b8badec4f6c3c", + "class_hash": "0x2d8e31a55fd8bf1e95262a07e57c0b97db4a1ae573f4e9d07b6b8fdb863cc43", + "abi": [ + { + "type": "impl", + "name": "production_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "production_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ProductionContractImpl", + "interface_name": "s1_eternum::systems::production::contracts::IProductionContract" + }, + { + "type": "enum", + "name": "s1_eternum::models::position::Direction", + "variants": [ + { + "name": "East", + "type": "()" + }, + { + "name": "NorthEast", + "type": "()" + }, + { + "name": "NorthWest", + "type": "()" + }, + { + "name": "West", + "type": "()" + }, + { + "name": "SouthWest", + "type": "()" + }, + { + "name": "SouthEast", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "s1_eternum::models::resource::production::building::BuildingCategory", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Castle", + "type": "()" + }, + { + "name": "Resource", + "type": "()" + }, + { + "name": "Farm", + "type": "()" + }, + { + "name": "FishingVillage", + "type": "()" + }, + { + "name": "Barracks", + "type": "()" + }, + { + "name": "Market", + "type": "()" + }, + { + "name": "ArcheryRange", + "type": "()" + }, + { + "name": "Stable", + "type": "()" + }, + { + "name": "TradingPost", + "type": "()" + }, + { + "name": "WorkersHut", + "type": "()" + }, + { + "name": "WatchTower", + "type": "()" + }, + { + "name": "Walls", + "type": "()" + }, + { + "name": "Storehouse", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "core::option::Option::", + "variants": [ + { + "name": "Some", + "type": "core::integer::u8" + }, + { + "name": "None", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::position::Coord", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::production::contracts::IProductionContract", + "items": [ + { + "type": "function", + "name": "create_building", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "directions", + "type": "core::array::Span::" + }, + { + "name": "building_category", + "type": "s1_eternum::models::resource::production::building::BuildingCategory" + }, + { + "name": "produce_resource_type", + "type": "core::option::Option::" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "destroy_building", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "building_coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "pause_building_production", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "building_coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "resume_building_production", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "building_coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "make_production_labor", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "labor_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "burn_production_labor", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "labor_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::production::contracts::production_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-production_systems", + "selector": "0x6d70095d0a6ca6efc41633bafa4ac5202f1f83c75afbba78987b58f495a4c0", + "systems": [ + "create_building", + "destroy_building", + "pause_building_production", + "resume_building_production", + "make_production_labor", + "burn_production_labor", + "upgrade" + ] + }, + { + "address": "0x33e0343497e2d58aa089f11f9f00faf6e2a543d58ec3670f99507d5ad9d9312", + "class_hash": "0x567e142c27b39221110078e7ffc6f3d24ee35d07978b548cb799d777d81baba", + "abi": [ + { + "type": "impl", + "name": "realm_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "realm_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "RealmSystemsImpl", + "interface_name": "s1_eternum::systems::realm::contracts::IRealmSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::realm::contracts::IRealmSystems", + "items": [ + { + "type": "function", + "name": "create", + "inputs": [ + { + "name": "owner", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "realm_id", + "type": "core::integer::u32" + }, + { + "name": "frontend", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "upgrade_level", + "inputs": [ + { + "name": "realm_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "quest_claim", + "inputs": [ + { + "name": "quest_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::realm::contracts::realm_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-realm_systems", + "selector": "0x3b4cc14cbb49692c85e1b132ac8536fe7d0d1361cd2fb5ba8df29f726ca02d2", + "systems": [ + "create", + "upgrade_level", + "quest_claim", + "upgrade" + ] + }, + { + "address": "0x348b0b20565b8616b0e4a42c75ff9cf48ed94ca0265b4c13b959759de9ca747", + "class_hash": "0x50d051cf375ddb6427d781b0e7f5c7670f3a0c3cea45ed487154c6fe33cdacf", + "abi": [ + { + "type": "impl", + "name": "resource_bridge_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "resource_bridge_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ResourceBridgeImpl", + "interface_name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems" + }, + { + "type": "struct", + "name": "core::integer::u256", + "members": [ + { + "name": "low", + "type": "core::integer::u128" + }, + { + "name": "high", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems", + "items": [ + { + "type": "function", + "name": "deposit_initial", + "inputs": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "recipient_realm_id", + "type": "core::integer::u32" + }, + { + "name": "amount", + "type": "core::integer::u256" + }, + { + "name": "client_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "deposit", + "inputs": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "through_bank_id", + "type": "core::integer::u32" + }, + { + "name": "recipient_realm_id", + "type": "core::integer::u32" + }, + { + "name": "amount", + "type": "core::integer::u256" + }, + { + "name": "client_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "start_withdraw", + "inputs": [ + { + "name": "through_bank_id", + "type": "core::integer::u32" + }, + { + "name": "from_realm_id", + "type": "core::integer::u32" + }, + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "finish_withdraw", + "inputs": [ + { + "name": "through_bank_id", + "type": "core::integer::u32" + }, + { + "name": "from_entity_id", + "type": "core::integer::u32" + }, + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "recipient_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "client_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::resource_bridge_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-resource_bridge_systems", + "selector": "0x4f94ba58902810acb653eeeb2a36e5f8f5a7096ceac7a2705c52732281e3cd2", + "systems": [ + "deposit_initial", + "deposit", + "start_withdraw", + "finish_withdraw", + "upgrade" + ] + }, + { + "address": "0x2174d311dc76dda4d8c82402d3c9ab4e0c8a56600c681caa3e17308b3f58390", + "class_hash": "0x4e3a61a93c7703b04df217cf8e8b43698187f9a7434c457f29f3602f8ceb190", + "abi": [ + { + "type": "impl", + "name": "resource_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "resource_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "ResourceSystemsImpl", + "interface_name": "s1_eternum::systems::resources::contracts::resource_systems::IResourceSystems" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::resources::contracts::resource_systems::IResourceSystems", + "items": [ + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "recipient_entity_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "send", + "inputs": [ + { + "name": "sender_entity_id", + "type": "core::integer::u32" + }, + { + "name": "recipient_entity_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "pickup", + "inputs": [ + { + "name": "recipient_entity_id", + "type": "core::integer::u32" + }, + { + "name": "owner_entity_id", + "type": "core::integer::u32" + }, + { + "name": "resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::resources::contracts::resource_systems::resource_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-resource_systems", + "selector": "0x626970a749fd6b8230875061236c1a9446ae65287beb6107d5b88e5ca078019", + "systems": [ + "approve", + "send", + "pickup", + "upgrade" + ] + }, + { + "address": "0x3819b2fccc14b8dd7c885c33f835fd431742fb551c1fdc4b318fca3f6acf311", + "class_hash": "0x59c55e3ca487de1ccb5b6cf174ac5c70d98b4af6db76b9987843dc08520cef3", + "abi": [ + { + "type": "impl", + "name": "season_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "season_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "SeasonSystemsImpl", + "interface_name": "s1_eternum::systems::season::contracts::ISeasonSystems" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u32, core::integer::u16)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u32, core::integer::u16)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::season::contracts::ISeasonSystems", + "items": [ + { + "type": "function", + "name": "register_to_leaderboard", + "inputs": [ + { + "name": "hyperstructures_contributed_to", + "type": "core::array::Span::" + }, + { + "name": "hyperstructure_shareholder_epochs", + "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "claim_leaderboard_rewards", + "inputs": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::season::contracts::season_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-season_systems", + "selector": "0x44e1edf9ca51b11a8c1d6ffc341d3248fdbeebc7e7d3ee6314fee33174860c4", + "systems": [ + "register_to_leaderboard", + "claim_leaderboard_rewards", + "upgrade" + ] + }, + { + "address": "0x7a267e053addb92514d51fcbed967b274a71381b8e6a95b1103323a80d34993", + "class_hash": "0x6ecba556869f9af550c06eebf09953b9a9b5e021d1841e1fdba2893f6375787", + "abi": [ + { + "type": "impl", + "name": "swap_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "swap_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "SwapSystemsImpl", + "interface_name": "s1_eternum::systems::bank::contracts::swap::ISwapSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::bank::contracts::swap::ISwapSystems", + "items": [ + { + "type": "function", + "name": "buy", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "amount", + "type": "core::integer::u128" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "sell", + "inputs": [ + { + "name": "bank_entity_id", + "type": "core::integer::u32" + }, + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "amount", + "type": "core::integer::u128" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::bank::contracts::swap::swap_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-swap_systems", + "selector": "0x187f170f62cb2f89334e291ddc0d0f388a855abcdd2b911425fed8304d3fdc3", + "systems": [ + "buy", + "sell", + "upgrade" + ] + }, + { + "address": "0x46b3c69414f2501d808b459b186ce20d12ecf6691953da7b2d15fb10d101e6d", + "class_hash": "0xc9da769a96f6e3aacd9c9329f89fc32c82a3318f82a92373cf4eaf3759f230", + "abi": [ + { + "type": "impl", + "name": "trade_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "trade_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "TradeSystemsImpl", + "interface_name": "s1_eternum::systems::trade::contracts::trade_systems::ITradeSystems" + }, + { + "type": "struct", + "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::trade::contracts::trade_systems::ITradeSystems", + "items": [ + { + "type": "function", + "name": "create_order", + "inputs": [ + { + "name": "maker_id", + "type": "core::integer::u32" + }, + { + "name": "maker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "taker_id", + "type": "core::integer::u32" + }, + { + "name": "taker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "expires_at", + "type": "core::integer::u64" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "accept_order", + "inputs": [ + { + "name": "taker_id", + "type": "core::integer::u32" + }, + { + "name": "trade_id", + "type": "core::integer::u32" + }, + { + "name": "maker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "taker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "accept_partial_order", + "inputs": [ + { + "name": "taker_id", + "type": "core::integer::u32" + }, + { + "name": "trade_id", + "type": "core::integer::u32" + }, + { + "name": "maker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "taker_gives_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + }, + { + "name": "taker_gives_actual_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "cancel_order", + "inputs": [ + { + "name": "trade_id", + "type": "core::integer::u32" + }, + { + "name": "return_resources", + "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::trade::contracts::trade_systems::trade_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-trade_systems", + "selector": "0x25205919a9c1be9b6b4c75d8435d21e748b4144575e3ed50d453ebd586f1467", + "systems": [ + "create_order", + "accept_order", + "accept_partial_order", + "cancel_order", + "upgrade" + ] + }, + { + "address": "0x52b9c90b7e0037ccb1fe4377714e171886c78459a6dc288bb5c2ec9e656c0f4", + "class_hash": "0x1dea2c672934cc98154903b1e64e34287fbd24ffa3be05415371f9a21638484", + "abi": [ + { + "type": "impl", + "name": "travel_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "travel_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "TravelSystemsImpl", + "interface_name": "s1_eternum::systems::transport::contracts::travel_systems::ITravelSystems" + }, + { + "type": "enum", + "name": "s1_eternum::models::position::Direction", + "variants": [ + { + "name": "East", + "type": "()" + }, + { + "name": "NorthEast", + "type": "()" + }, + { + "name": "NorthWest", + "type": "()" + }, + { + "name": "West", + "type": "()" + }, + { + "name": "SouthWest", + "type": "()" + }, + { + "name": "SouthEast", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::transport::contracts::travel_systems::ITravelSystems", + "items": [ + { + "type": "function", + "name": "travel_hex", + "inputs": [ + { + "name": "travelling_entity_id", + "type": "core::integer::u32" + }, + { + "name": "directions", + "type": "core::array::Span::" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::transport::contracts::travel_systems::travel_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-travel_systems", + "selector": "0x309ed1eaf532082015ddf768dfea6a2d7b6c78f61892005f9af6efe505f3317", + "systems": [ + "travel_hex", + "upgrade" + ] + }, + { + "address": "0x61396cdd9898842f7f4b61d5e1494c5ced4eb559e0494f20c2dd7e272c0e6b5", + "class_hash": "0x710a28a02d258fc3ac7b008f52d1bcb472249ac0948221d328858c01b08a889", + "abi": [ + { + "type": "impl", + "name": "troop_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "troop_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "TroopContractImpl", + "interface_name": "s1_eternum::systems::combat::contracts::troop_systems::ITroopContract" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::combat::Troops", + "members": [ + { + "name": "knight_count", + "type": "core::integer::u64" + }, + { + "name": "paladin_count", + "type": "core::integer::u64" + }, + { + "name": "crossbowman_count", + "type": "core::integer::u64" + } + ] + }, + { + "type": "interface", + "name": "s1_eternum::systems::combat::contracts::troop_systems::ITroopContract", + "items": [ + { + "type": "function", + "name": "army_create", + "inputs": [ + { + "name": "army_owner_id", + "type": "core::integer::u32" + }, + { + "name": "is_defensive_army", + "type": "core::bool" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "external" + }, + { + "type": "function", + "name": "army_delete", + "inputs": [ + { + "name": "army_id", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "army_buy_troops", + "inputs": [ + { + "name": "army_id", + "type": "core::integer::u32" + }, + { + "name": "payer_id", + "type": "core::integer::u32" + }, + { + "name": "troops", + "type": "s1_eternum::models::combat::Troops" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "army_merge_troops", + "inputs": [ + { + "name": "from_army_id", + "type": "core::integer::u32" + }, + { + "name": "to_army_id", + "type": "core::integer::u32" + }, + { + "name": "troops", + "type": "s1_eternum::models::combat::Troops" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::combat::contracts::troop_systems::troop_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-troop_systems", + "selector": "0x36dc6a7aac90e16df98cc6cef8b971d3432a436339f92352921ab2d542363b0", + "systems": [ + "army_create", + "army_delete", + "army_buy_troops", + "army_merge_troops", + "upgrade" + ] + } + ], + "models": [ + { + "members": [], + "class_hash": "0x15f3f6904f0500d87d6c57ababf28b0dffaf929e7b74701be185cd09fcd82d3", + "tag": "s1_eternum-AddressName", + "selector": "0x42709c94217aac1ce5900d6bb822dc5e203071e9f184165b4d32144ff0e326c" + }, + { + "members": [], + "class_hash": "0x28f9ddc0b8df7e2dd4ebaae28edc221d3755cb2e2172353364bd6b05f39209d", + "tag": "s1_eternum-Army", + "selector": "0x16cd0112383678968a6dcc0476cc193ce544a0f2cb27bbf911b519cc66cb2e1" + }, + { + "members": [], + "class_hash": "0xf99d18de1389cd897d7c2eaac1d9a23eef4f2ee40f6fb017adfa59a6c6fe55", + "tag": "s1_eternum-ArrivalTime", + "selector": "0x15839d06bf0dd2c3ae1fef464555f3016e153bd6bac0cf62c5c1de9926eadd" + }, + { + "members": [], + "class_hash": "0xd5d3a9a0f87f881bb0c62d6383e0c1914a3263dd2788a72641ce15eba55345", + "tag": "s1_eternum-Bank", + "selector": "0x46318cd2cff6337f8934ee9e3cbe3ecf1ccb5b1b57dd1711f3b1eb7d7327aab" + }, + { + "members": [], + "class_hash": "0x58484f4b87730ec90812b21b0071478121b549694230ccfc380fe5bc7ce04bc", + "tag": "s1_eternum-BankConfig", + "selector": "0x2a590ba3496e4ade5081de7b2de27ed15ecd709e8d88c89f1eeafca9c852079" + }, + { + "members": [], + "class_hash": "0x6108b6e1f6786a67f3864acec676ff7fe33772797a0c771878dd769aed59c0", + "tag": "s1_eternum-Battle", + "selector": "0x169c07a291ef2ba4cfb31ba5b81d45fc49f6a02169c766ac950f823879152fc" + }, + { + "members": [], + "class_hash": "0x722133bc4e72dec6f3ffb973622227b9f4d51001bf369832e44bca4cd90e414", + "tag": "s1_eternum-BattleConfig", + "selector": "0x506ef0f4b8e567ce2fd94517984758871ac3f9f965426073203aefdeec4fd21" + }, + { + "members": [], + "class_hash": "0x26132d9d528638aa4fdc6377b4f342982e15a796292ee9d8a7d9ff443f035b0", + "tag": "s1_eternum-Building", + "selector": "0x383bc83e69df10c0e58ce05aef021bb904346af8b28de6dd09ed16a497fae29" + }, + { + "members": [], + "class_hash": "0x369a5260d31d6edd5c3d19b487fa8a2c4bd293845e804cd794a7f00f1fcc35c", + "tag": "s1_eternum-BuildingCategoryPopConfig", + "selector": "0x2b847fd482c7e77364e1a29d18c690661dee59631db5538e063065cd28a9157" + }, + { + "members": [], + "class_hash": "0xbcb13c22c1c2e177c9a7953f6db153d0b1435baa293e2d7fdc7aa22f380f53", + "tag": "s1_eternum-BuildingConfig", + "selector": "0x10ab036ccd4d1e968f0b3b3333d59911fd7f96cbd0fe73c9d639b80aaf10ef4" + }, + { + "members": [], + "class_hash": "0xf34fedb8b8bea2b87c8e17c6db5f2b284e46513b186cdb115464aacf72994d", + "tag": "s1_eternum-BuildingGeneralConfig", + "selector": "0x32c22b1ba3f414eff9d3684771ddf9a576adf879fb9db155d153e04092f06d1" + }, + { + "members": [], + "class_hash": "0x6ad15a23139b6577c1adfc3d8d2ad5cf4f55230f17f2ed957cef9a70bdac286", + "tag": "s1_eternum-BuildingQuantityv2", + "selector": "0x7f0d990d9539f02e2536fb9077c112528c214d6250597813b5637fcdf4faea1" + }, + { + "members": [], + "class_hash": "0x5a650bc0e579da2efb53a5ff5d49ace7a4836831001fe05a66de94e8a200fe", + "tag": "s1_eternum-CapacityCategory", + "selector": "0x77c5b56819d589d4ccf66c86b519f61fea422fadc3011bce01b68b36312a931" + }, + { + "members": [], + "class_hash": "0xff54f724bb9d25b28e52c53402ff004324f9bf8551d21666569798e982537", + "tag": "s1_eternum-CapacityConfig", + "selector": "0x329d78ba810d64a65e56dc6d9648681b25cf5077b2b2a1b006b4280b4a46941" + }, + { + "members": [], + "class_hash": "0x10f6568d82fcf4a14aa2063fa811ceac7bd52923fe06e5c0c89d23d2959ba47", + "tag": "s1_eternum-Contribution", + "selector": "0x5610d7fde56cbda8d6714af14cb51989d77e24ffd867561e6f6ce36a5c8cda0" + }, + { + "members": [], + "class_hash": "0x4ca6ae3ddda2725df1d3f656b45d376bff55f2556fc63188f33436e54cad458", + "tag": "s1_eternum-DetachedResource", + "selector": "0x5fbe88f3b3abf51a9a1e58a0423a555786a2e557f480a7f804a6a89afee5b2c" + }, + { + "members": [], + "class_hash": "0x10c87458dd8a14eba7aa1771e8288f46be3b60a738d5dc0af7f45eb2ed4e326", + "tag": "s1_eternum-EntityName", + "selector": "0x4d2ad6e4875bb784306ee539c87d6ea84bd77cd3e7a6a98c7cb073003131c80" + }, + { + "members": [], + "class_hash": "0x3ae0ab3e0bc8e3ad2288634e6a286bfb08d466a91e9d6a2e37f025bf1d5749f", + "tag": "s1_eternum-EntityOwner", + "selector": "0x45cac7458f40ce855a5d63cf402a25425ad1a761fa4a2657c722d124e6aa540" + }, + { + "members": [], + "class_hash": "0x5ced63836e14228fb5398d583aa7e603f011951859784a767a0da67d5d1ee82", + "tag": "s1_eternum-Epoch", + "selector": "0x7538402a46c4b333f00ed41744e67a26bb14f26753fdbe032f0ff218f83ff6a" + }, + { + "members": [], + "class_hash": "0x5893d1ef16dd422bf83ed0622527c59e061c0e80431c2dd7bee08b4d1445071", + "tag": "s1_eternum-Guild", + "selector": "0x1005f12b60fb0b9955acaa3d2ef4e839a9d9ca0de11ba53c74c3a4b5d324142" + }, + { + "members": [], + "class_hash": "0x503feaac2cbb9b6e3568daa741bd89db2a9206d315fca008ea4cf44d87dce88", + "tag": "s1_eternum-GuildMember", + "selector": "0x4e1c4b07b2c1113f22a01d146dbe1224007cd027c7681007de3828761f92c1" + }, + { + "members": [], + "class_hash": "0x51e97f9e0e1b92c53d309c07a145d8786aaec64518b87c3bb970d4685759081", + "tag": "s1_eternum-GuildWhitelist", + "selector": "0x58ba641332348c46d0aad19ab754598e63a4d8736db7ef9654918c79d6ad071" + }, + { + "members": [], + "class_hash": "0x4eb153ffe6fce442cee9384e6a7e95159480a4aee2c563b74c7b1b50eff73d6", + "tag": "s1_eternum-Health", + "selector": "0x2f45d2395ab511a8e093bc7830fe25b18b387f360e515107021e75eaea474b5" + }, + { + "members": [], + "class_hash": "0x490bea09a254afb811b6a26d88507598193d366a05fe6e9d28455ca51930c9b", + "tag": "s1_eternum-Hyperstructure", + "selector": "0x5894102a0f9c53bf2298d3bdaf4b0f8a0f92777d57ff0d585ca3b5c5b25b7bc" + }, + { + "members": [], + "class_hash": "0x47718f195842c1e7de343f276874d6cbd4e3af43e46d91779219bb775f07b30", + "tag": "s1_eternum-HyperstructureConfig", + "selector": "0x555fffbe98ed821a2943490fa9ec2fd479940fb1a06434031a6ed49fce06413" + }, + { + "members": [], + "class_hash": "0x298c3a93889760e341ab90f7ec3432fb9f564ec90ab6dae8ca160cb477fd64b", + "tag": "s1_eternum-HyperstructureResourceConfig", + "selector": "0x344c119cf22cf69ac0954dadeb846930657d9d80e550aec607fe0d285e2d1b6" + }, + { + "members": [], + "class_hash": "0x328f1fff82bb8aeba6b1e75fc1edf15d815324486c97df194a8ad682bd419f6", + "tag": "s1_eternum-LaborConfig", + "selector": "0x6f056844c678da88f4b2829f7252b9264702448b0305224729f30026db3f644" + }, + { + "members": [], + "class_hash": "0x5f9e1048bc3fcab978c16ea514c906e08a6a908a551b01c9d8d56991eb3be12", + "tag": "s1_eternum-Leaderboard", + "selector": "0x2731a4b2cc1d25c3605cbd9f58fb010860aa57f2fd978b012309815622bad38" + }, + { + "members": [], + "class_hash": "0x6098e4bd9970a954a3a7581ae0c272d7b0e4134bd1b701f376480627678c260", + "tag": "s1_eternum-LeaderboardEntry", + "selector": "0x64d192ab245076ad4a8fc1065a8ed826370b3b9ac74e19e5ba62c4778afbd0e" + }, + { + "members": [], + "class_hash": "0x278cfb9c271d230ae30c965120df0ceb1772b42982abceb4c5696afc5a91d3c", + "tag": "s1_eternum-LeaderboardRegisterContribution", + "selector": "0x19570cd480372cee10d9c139bc552086c7b8222c1bc012113bbfd39b56a7e8" + }, + { + "members": [], + "class_hash": "0x6ea5e22c4403403c4ef68ce5789b68da3ff18607693fb048bae52293204ce9b", + "tag": "s1_eternum-LeaderboardRegisterShare", + "selector": "0x75ac5be2d09aae03d624ea55302b474702a77e282b53b6ae223e7e2f2fcf331" + }, + { + "members": [], + "class_hash": "0x94162e9c662781d890a9ab0dfba07a5ec2248410ef1b42d4913e1a4a489cc6", + "tag": "s1_eternum-LeaderboardRegistered", + "selector": "0x23cb90d19983cc3481c16b0daca97a2e9d61ccca2887ec43a37e8d0c8bc8a82" + }, + { + "members": [], + "class_hash": "0x50bdffa18201a51190d38b3a83d62dbc9314b5634b8543f92c6fa692fbed6be", + "tag": "s1_eternum-LeaderboardRewardClaimed", + "selector": "0x4a2604638f545e33a48aaa88165cdf7c14d2e3e90dc0ffef45efaafce0a7acb" + }, + { + "members": [], + "class_hash": "0xe08cd3f99dea6cb5ac7af83788cf444cc5961187685f2c54179b990d3a4ae7", + "tag": "s1_eternum-LevelingConfig", + "selector": "0x1ae8c072019c12fbf04cba6e1a71a0a645dffc7fff83847d97ef2229e3abb33" + }, + { + "members": [], + "class_hash": "0x41389837334c7959eddc48a3a3c0b3f8d77ea4f0be3d5b908087873323fc3f6", + "tag": "s1_eternum-Liquidity", + "selector": "0x4ba2cf13ce80401e973629d0ba586aad1cae4ac3cf68ed3140f3373d361659" + }, + { + "members": [], + "class_hash": "0x2e6bbce3307779bb4e22bfa12b254f648bda3e5667bb4aff23a189ee68a0ecb", + "tag": "s1_eternum-MapConfig", + "selector": "0xc723bc276585620edab428548e0c62b996567932757495abf2346153959bbd" + }, + { + "members": [], + "class_hash": "0x3e5a538297e5b4a973a580d26b347779d457a0813e552e71d56ac9347d143b0", + "tag": "s1_eternum-Market", + "selector": "0x1fcfb4aa02fa062c2f9fe4a658759a4cbe73fc5db42c595184e770c9076750a" + }, + { + "members": [], + "class_hash": "0x3eb553163a235623d1a4cd887565391f6183aef59993752b018fdcd99e7ec6e", + "tag": "s1_eternum-MercenariesConfig", + "selector": "0x76cec8905e7623b482bec7afebbbd87f2556ffa6068c887ff2fc9e8ef97373a" + }, + { + "members": [], + "class_hash": "0x4e9acf58624786c7d118f4d0a1eb23bd2dccb7b7ab1755b012a3b0412af70f9", + "tag": "s1_eternum-Message", + "selector": "0x3ce31878ad62fd485eb46bdbd403bbe7daf2e544c15d386dcc7ac519a10678a" + }, + { + "members": [], + "class_hash": "0x78bf5c45268df4bc02c367db341e1aa4331857c21304683feb2e65306204bf9", + "tag": "s1_eternum-Movable", + "selector": "0x2f6cc9ab06c7e016297339e078c3755e568fce8048462de2033e8d42e5d94e0" + }, + { + "members": [], + "class_hash": "0x4dff527f0c7b7b73e3ac91dab4ad66ae4dae4f3616cb6338dd4bad8c3246382", + "tag": "s1_eternum-Orders", + "selector": "0x3d92d333e580695c5676529fc9b81f0fdab316ad7385d7c362ea7074413b99a" + }, + { + "members": [], + "class_hash": "0x60330a73e8c079c062165120e11d002eafa7a8b4970d0b7dc3e73904e014544", + "tag": "s1_eternum-OwnedResourcesTracker", + "selector": "0x1a8f5317e84356a084dbf2555cdf3c429e285e6f161654a678eaf73c137e52b" + }, + { + "members": [], + "class_hash": "0x6619f0441ff7330f6291777da5a95a3121189f8c5b136cc5f3e85cc6f728f44", + "tag": "s1_eternum-Owner", + "selector": "0x35bfd77bc5bbf7f39cbe2c9ced8de632af641500a672e876dffbc89cc10441d" + }, + { + "members": [], + "class_hash": "0xf29140e158b9089a938917604b82d2ec14daa08f21f9d742a97cf17f30c18", + "tag": "s1_eternum-Population", + "selector": "0x6f2e4171b9907e7629eea2a19485a64d97f104121c4337452de122f897c0be8" + }, + { + "members": [], + "class_hash": "0x7e5024ab76ebcd616507b1998768d29b5372c54de3ac88bcd6fdfafcbf67720", + "tag": "s1_eternum-PopulationConfig", + "selector": "0x441576bc8f9ac5063b8ca88eeae1b33156078c75de8cbdf506139e8450b78cf" + }, + { + "members": [], + "class_hash": "0x2c8600cc8411484671075036b8dca8f03524e5b0503617e36ac306b95cf87fd", + "tag": "s1_eternum-Position", + "selector": "0xe340ea49c8540928b5c4010db9108cd13f719d89a5f7b18cb30902e01104ae" + }, + { + "members": [], + "class_hash": "0x4482f857b3d5e6d6d1fb9d5680663a1e0eda04699b105aa565490498e395d1e", + "tag": "s1_eternum-ProductionConfig", + "selector": "0x38bacafc2ceed54f95033f7529efa9559f877aea41db072b797235cee383a06" + }, + { + "members": [], + "class_hash": "0xef748f29f1ce62c69e4c0bfcaaca0cc20c90d69411fbbfabb5883e53444c94", + "tag": "s1_eternum-Progress", + "selector": "0x510024ae0ff452228a083d9fb3aba5e3521c107ab7a84246efcac7bcdfddcb5" + }, + { + "members": [], + "class_hash": "0x2eb9f6f9ea6824c466ded7da0b97f77d4b54be4e0b5180c0f0696ec7311c142", + "tag": "s1_eternum-Protectee", + "selector": "0x60fac544ae19c3bdb391a986108823d052d2d65891459589b6f3c698f206ce1" + }, + { + "members": [], + "class_hash": "0x756cbd91b86e9eb15a8454b066b7e593cbf9a121ee1aee4bcd34023d5076591", + "tag": "s1_eternum-Protector", + "selector": "0x7c858e96804191100397f8a4683ca93d81d7d341dc68d163c7cea59dc974ec4" + }, + { + "members": [], + "class_hash": "0xfd49d43ef8943b2e262ca7ce1d43c5187969b3cee4007f4d0e177b92981c03", + "tag": "s1_eternum-Quantity", + "selector": "0x8646cb000744430c5d95cf5616ce8ba4913401760158aa1ad6738475a36591" + }, + { + "members": [], + "class_hash": "0xdeb7bcee3ae613715225d0980526d7c9d4735829be2e7f080c914876bf5ff3", + "tag": "s1_eternum-QuantityTracker", + "selector": "0x5f336941c172ea1a837a1c82d98ff802817688e6e5f66a32ac3a9ff320cfb18" + }, + { + "members": [], + "class_hash": "0x1922623eed2f3eb9d7d770af2514efcd2d40e6773e9c2c1944bc2741e07b3b7", + "tag": "s1_eternum-Quest", + "selector": "0x5748c683cbda725287adb63a5b5c7c471d1d782f2779609d4f66efeda03ff68" + }, + { + "members": [], + "class_hash": "0x59846aef7554c61f02aa00ba350ed1001b00b5d7a26e3c66c95901bc7bfd797", + "tag": "s1_eternum-QuestRewardConfig", + "selector": "0x2f5fb5139fc5144da42495b348183b95708defe554ca9d6768498cccecb0066" + }, + { + "members": [], + "class_hash": "0x5ab6ce70c4041941408e527f5e677cf0e68b9ca4bbfcaaa3c7dcd6deba090b6", + "tag": "s1_eternum-Realm", + "selector": "0x6b15a2a9c9d60eefc6c82731f77ae2167b6abc68a909e06ed4f0a0c20a447ae" + }, + { + "members": [], + "class_hash": "0x271add51127069822688df385865088bb78d39040babb928223896e9cf90a60", + "tag": "s1_eternum-RealmLevelConfig", + "selector": "0x7a5266268ba6febaa9248d1ec5543f7731c07391553c9d9b089023790344d78" + }, + { + "members": [], + "class_hash": "0x56c6a40b5d709cd4c5669c7a92664b7220ab156e793b6d0df694baa0d29b99", + "tag": "s1_eternum-RealmMaxLevelConfig", + "selector": "0x23ce30f931b91b01eb8a34f92c50de018fa49e05b9ea5cd0b4350a4c94fa7a7" + }, + { + "members": [], + "class_hash": "0xc58be0c889a407b92a5b1df7f1221567a43ee5a3f5315464f3c598aafa1725", + "tag": "s1_eternum-Resource", + "selector": "0x6bd14dc16a7f05252fcf2fb66630b8f05d39d75b36f55013334a4b3bb8fec57" + }, + { + "members": [], + "class_hash": "0x32648f303c21fcdc338110b1b5a06b419832c5432787228d9bfe330ff65ebfd", + "tag": "s1_eternum-ResourceAllowance", + "selector": "0xf21a6f41bed8651cea6e86ea4d796e7c2be9e0e798b48b971b82f489e68a3d" + }, + { + "members": [], + "class_hash": "0x7d04749bc8b5042f74fd6cf08f00dd4b1a1af9da5db5f9d0e21da9eb574620a", + "tag": "s1_eternum-ResourceBridgeConfig", + "selector": "0x5b58fe2f01c7767c5885c18997654853caf0765fbd6e72d2f54b8d8163a2105" + }, + { + "members": [], + "class_hash": "0x369998561431ccfd4977aab82c53ae491bae58a867ee91ce77701c68c64d2bc", + "tag": "s1_eternum-ResourceBridgeFeeSplitConfig", + "selector": "0xda0261867f8d357360b3d3c651e6f26a72caaa5401021843d7515acf5a7300" + }, + { + "members": [], + "class_hash": "0x505f9ac2bcabc71c14489b2327e757a0c1d9b0721257c7cbaae10a5f4c90c6", + "tag": "s1_eternum-ResourceBridgeWhitelistConfig", + "selector": "0x3af6fef221ed38a459a75bf2c20c5534745e6e9fa3d6c9df899c43a6aee1eee" + }, + { + "members": [], + "class_hash": "0x6c52d4ea5109c6be197e8f64fda6ebf06f8a9fbfc9ae44c4fc479817bc46d33", + "tag": "s1_eternum-ResourceCost", + "selector": "0x5e5b5b182766e23d14ca1bde33304c8b6c2e348d037073fa87cb23adb3acd2d" + }, + { + "members": [], + "class_hash": "0x32512653d00dbf62a310e75a52a4c555c66dea91eae09adadb4a9c26ec6e065", + "tag": "s1_eternum-ResourceTransferLock", + "selector": "0xfb5fa4535e4bca521abeb02621675a6550ea74c791f4342f7e5a3a2d6c19b0" + }, + { + "members": [], + "class_hash": "0x5e33063c9c71448f97e418619192c0bb534cc1d6b130690675020b12c53abc1", + "tag": "s1_eternum-Season", + "selector": "0x7a6034c750e0dc9a1fad3776dd6e6c6697eb36993aed5228e7729206dd560ab" + }, + { + "members": [], + "class_hash": "0x440e7887f604b152a04b9de6fc119d9278259cec2ca4050133b951d28ac9897", + "tag": "s1_eternum-SeasonAddressesConfig", + "selector": "0xa98bd556a5b641497f413f155e4bdce557ba25a48080540ac1e827d0dae5b3" + }, + { + "members": [], + "class_hash": "0x488068b6a2aeab65ba68fc47404d00482be3e34473f557e5fa189a2ed916679", + "tag": "s1_eternum-SeasonBridgeConfig", + "selector": "0x53dcfaf952a8e333e8212bf13c39cfb7d02f26ca8cf47aba06e4a90282481e3" + }, + { + "members": [], + "class_hash": "0x59de73957bcca5ee7a6523eaf9e450d30e5a8d179b756d59a4ad76bd39fe31d", + "tag": "s1_eternum-SettlementConfig", + "selector": "0x4d38d3858af58aab284639984a674293c5689216c5e0b9f3574aef9f3a9dad0" + }, + { + "members": [], + "class_hash": "0x2b346ce8db28ee8e45ff1dd81535f00b044a3fdc5c8841f4de9106afbd22a16", + "tag": "s1_eternum-SpeedConfig", + "selector": "0x56c1e6bea9218e0afdd55a3cc2c5360d969a6a0ccf3f6d1078e4b200cce51cc" + }, + { + "members": [], + "class_hash": "0x234946625a5b48f2e490906ab36e28c0a24d6c5778276475c6bf8034b2ace8a", + "tag": "s1_eternum-Stamina", + "selector": "0x1b2f9a5ab3ea1bc2565fc5cc30f432b41848f7909b64fd3d97d76dcddacbd3d" + }, + { + "members": [], + "class_hash": "0x38bf80ee86dca16edc5ec0302d52efc5b5f01672c3ef09b49aee393d5de8fde", + "tag": "s1_eternum-StaminaConfig", + "selector": "0x1049adf44800338362f91c904678f82fa47fd0ea0828711bee3e36bee63b97e" + }, + { + "members": [], + "class_hash": "0x626911965fc08d9d620dba8722c90e677371f046248b06f3adcf4390622f287", + "tag": "s1_eternum-StaminaRefillConfig", + "selector": "0x7c6db9d03dc473ddec8a0bb2c50b5988a8af928935daea336bb6f0f766a3b41" + }, + { + "members": [], + "class_hash": "0x8184163f4573706c555f878a960da7dd6dd73e550759c26ddf31bb15b265dd", + "tag": "s1_eternum-Status", + "selector": "0x3ebd20c50f05e81810279f60088898425cb0ae9e35f5ac99359e8552292be24" + }, + { + "members": [], + "class_hash": "0x445850a334dc7395fb4b0773760908c704d6cd343acb309f787364e2d6f027b", + "tag": "s1_eternum-Structure", + "selector": "0x3b407b0e3490f7044ce3870614a93f2a0fcbec02710f0975bfdb6c28fdfbecc" + }, + { + "members": [], + "class_hash": "0x3c90dfd7d56f15d47d5fd20d2ac9eb956788c90c66c8d9c61cd2797114704e9", + "tag": "s1_eternum-StructureCount", + "selector": "0x23b5a2b877c85f0d71bc36b420ec53e12e5ef8369cf1aedffa0bc838eea2dc4" + }, + { + "members": [], + "class_hash": "0x78bcb719dc3c363d315c54e49acf539a6b206f8094a8df13905300c90c54e2c", + "tag": "s1_eternum-TickConfig", + "selector": "0x576d27d39e416d211c923deeebe1505c982fe3aaeb511c7bcb0ef063f566e66" + }, + { + "members": [], + "class_hash": "0x1571af1924102cd1a6b9796935ad85debfc12fd1057c7738f22ab6bf9d0a734", + "tag": "s1_eternum-Tile", + "selector": "0x66c306156fe0c5b2785192d61977ac8475e3cb3dbc5d68f5547ade25fe1f4f2" + }, + { + "members": [], + "class_hash": "0x3e187fcc088b7453ee843c1a4534139b7d1527860c64c609279afcb7bccba93", + "tag": "s1_eternum-Trade", + "selector": "0x6ddb8e334e9c33541fce1e72774d6c43c1057a1057a570f2eb12426f51291" + }, + { + "members": [], + "class_hash": "0x421846bd7dfaea423ad0b9d025d960a20172ddcf321d5e16665ed1c667ecd6a", + "tag": "s1_eternum-TravelFoodCostConfig", + "selector": "0x4201d15b950f8e080217e23d7ef911390c3eddb573f7dc857e56c5ddfc606ab" + }, + { + "members": [], + "class_hash": "0x3a3107b2bf45e26c59666750c41655385ce7ffd19d0c8ac59856b0363105d51", + "tag": "s1_eternum-TravelStaminaCostConfig", + "selector": "0x30011c19eca1b0f0f35a4c6bbdac1e437ae7db4670f3ae445d057ee5516ba6e" + }, + { + "members": [], + "class_hash": "0x2f06311d5311c9345f4675fedd74e2f840ffff25509020fd380426a512d7362", + "tag": "s1_eternum-TroopConfig", + "selector": "0x440013884df718dc78b23b652dc4495f0e74de6e3e26f29993cf97a26e96e37" + }, + { + "members": [], + "class_hash": "0x6212d501854ddd5fb4a76f0020b88166a6ace18c51829d9868bf00495c93c79", + "tag": "s1_eternum-VRFConfig", + "selector": "0x40efcfc7e03b7e498a48587f3e7e535a6ed12eff77adeb65553a8e8092786fa" + }, + { + "members": [], + "class_hash": "0x2441bc3e5725d8632d181e17e1a5997544523f35945c6e4c80e257fb9e4886a", + "tag": "s1_eternum-Weight", + "selector": "0x6a857f799cd0abc86c75a666d024ee52f6e81e856f74bb2137bf2f1a534e0e1" + }, + { + "members": [], + "class_hash": "0x3cf8b4b83c710368da4a168ed462b2049721ba5e20d63197a981321672adbdd", + "tag": "s1_eternum-WeightConfig", + "selector": "0x1198553c941fe946e251e66c8f4f3177f44e59e56ac455dbc269557b7ae4d81" + }, + { + "members": [], + "class_hash": "0x75d683bc6831ab3ed4172aa8e35997c47ee37963062e5fabae8729a2b15b475", + "tag": "s1_eternum-WorldConfig", + "selector": "0x6212a03a10506a6661b44a6685e9d2978709dfdfc8de36fe93d947b939f200a" + } + ], + "events": [ + { + "members": [], + "class_hash": "0x6ce0d1733305e5837a804a2fcaaadc4257b33fbbb9072adfa558552806baba7", + "tag": "s1_eternum-AcceptOrder", + "selector": "0x30b1df6433db61c4a92580a1630c9e5126b5c82be28123a06b62f808ecd522" + }, + { + "members": [], + "class_hash": "0x559dd281303289b1fcfc9e64083749dc41f21da90857b5d757e1850e936e1a8", + "tag": "s1_eternum-AcceptPartialOrder", + "selector": "0x10466b8a291c68b1392b0c839dff152f5884e63efecc6616ae39eaaa8dddb16" + }, + { + "members": [], + "class_hash": "0x934049a8b2170110cdd0038113cc44d28a44c9468d386842b6f0f4269930d8", + "tag": "s1_eternum-BattleClaimData", + "selector": "0x41680e7ebc53d924909df6da64cb9bf2f93e4c52c773a46c2d98d26130e4b04" + }, + { + "members": [], + "class_hash": "0x21e47bd56785fa3feb60d847cb8dd208c9a54d7485c3a717266a68cb12922b2", + "tag": "s1_eternum-BattleJoinData", + "selector": "0x52d813cd875f5ab136509292d799f8e50454d7a216d4b0f82011537da338e45" + }, + { + "members": [], + "class_hash": "0x63fcfc6b83c0369df7577ea9ee1be924a91d3f56e751975135352f6d668e48f", + "tag": "s1_eternum-BattleLeaveData", + "selector": "0x2e2634c5a528ebe93bfdd4760906943ab27acda1780d8a0fe6e047daf59e3bb" + }, + { + "members": [], + "class_hash": "0x4c4c86484c191574bc777bd9f0a4f0fd42cea3723ebcce1262ae4a6206099a8", + "tag": "s1_eternum-BattlePillageData", + "selector": "0x20e12ccd908df9671ef87e056aeb9225412ed7710b218cf196c2069a36509ca" + }, + { + "members": [], + "class_hash": "0x7148e1c4747938842ac35ad3133ef7b03e2f890c578f7840a42bf7290fec96a", + "tag": "s1_eternum-BattleStartData", + "selector": "0x29d565ff98451bd6ac59f3a8d0b4d2ef14031a4a39ce4b4e8ee5dab0e02e1c9" + }, + { + "members": [], + "class_hash": "0x73a2e5508322468a7bcadbbb6d8d4ad14e5b7bc19500df530f904c0c2a0ef52", + "tag": "s1_eternum-BurnDonkey", + "selector": "0x4a1aac57c8cb6ec732bd40283fd1a892987d708a6b8a7d3a4dd65da6f0e7700" + }, + { + "members": [], + "class_hash": "0xb99ae4fd4c6ad7faddd8bc49b59116e8e6ea6900d55571ef6720c6c3e55bc", + "tag": "s1_eternum-CancelOrder", + "selector": "0x1a522313c76bbf3297f8527f95976169c4269831fe8b337f3d19ff0fccb8c87" + }, + { + "members": [], + "class_hash": "0x452f2d31f89ac1d6f689859282e4b8848db14035d14c64388240237f9c952af", + "tag": "s1_eternum-CreateGuild", + "selector": "0x45b5322475ee81006e7e7df176c2f31829e57224ae86ca261738a15ef8c88a7" + }, + { + "members": [], + "class_hash": "0x7ba3c37bfe133370931d979db6a74d2707a4922d56741b37fed2f3f9ffe2412", + "tag": "s1_eternum-CreateOrder", + "selector": "0x10edec58284a982448a15b0f37a3abc65944a16091efed6a39389b5064a6319" + }, + { + "members": [], + "class_hash": "0x33eed23e37ab8177b103e50d9fe7998079fb54ba97ed6d6174a18c16c3ce25", + "tag": "s1_eternum-FragmentMineDiscovered", + "selector": "0x6dd702d62f987ca281572763a9ebb8ed1937b7016d874f3c979ecb2b698012a" + }, + { + "members": [], + "class_hash": "0x788ecb9baee1f026854cfa77c8b6e046731d044ed95aab1ee29d474e2c41385", + "tag": "s1_eternum-GameEnded", + "selector": "0x2146af1d5d48461a767ddc54400c751b49d4fc74619953f68aaf486dd447cfa" + }, + { + "members": [], + "class_hash": "0x261625f7f14957f14923385d1293a382a7198e1c2c4342fc274fda159c7bcbf", + "tag": "s1_eternum-HyperstructureCoOwnersChange", + "selector": "0x4dc6d1cc5a4a96d06bc7d47706082b809f07a72a7276f95d8e781cab476f579" + }, + { + "members": [], + "class_hash": "0x751a5d1cd2cfc38b069298a54e665c644329906cb72c156a462400e4378007c", + "tag": "s1_eternum-HyperstructureContribution", + "selector": "0x554c3cb394ec5eb94799313ff57c04489f889918b97c883ec80fad3fb69142" + }, + { + "members": [], + "class_hash": "0x1a70f061a8b5ec44881ee4c8c1312704f8a74c852e15e39b0a50ccb6003fdc4", + "tag": "s1_eternum-HyperstructureFinished", + "selector": "0x1e7330fdbaa38d25a4192cae3a2f625a2474d21bea91894b61c78015e4c0a2f" + }, + { + "members": [], + "class_hash": "0x578690752e499bd366110e7627cacf40b36346187aaa69adef84a61e79950ab", + "tag": "s1_eternum-HyperstructureStarted", + "selector": "0x576568f1e35d7395c3585e049cf835153b9337a7f605f0471ae460e79a801" + }, + { + "members": [], + "class_hash": "0x63695bd49a77821a9d01ea9a5816eef76a851376cc4bc01a68c1a9e15287322", + "tag": "s1_eternum-JoinGuild", + "selector": "0x1341888a2238268a519a7c39af6c03489343fe2288ef7f66bea5c1f479cc1e4" + }, + { + "members": [], + "class_hash": "0x4141ad0fcb145ce54bc2ed7cb12e8f3092b6fe60da8dfcaf036bed082232851", + "tag": "s1_eternum-LiquidityEvent", + "selector": "0x4e19f323259ff883daf1f685cfb94306159cde4c8cb46155a290a9b9c91df8c" + }, + { + "members": [], + "class_hash": "0x561ffdd2e934a6c5f65c58120faade578dafb4af7e61d8ea278bed9932efc41", + "tag": "s1_eternum-MapExplored", + "selector": "0x22543e5f3bd15c01417b0fff116311e6e742ce8f43072e1391fc366b3dc05ad" + }, + { + "members": [], + "class_hash": "0x2bc2301835d38f55c1a061a363e6038ec6c9807443718f620ba7e412a543c53", + "tag": "s1_eternum-SettleRealmData", + "selector": "0x7eff418a618f1ecd46303c1e0560094940d883e7ec2edde98bcb002a6e1ccca" + }, + { + "members": [], + "class_hash": "0x37bcec3363a81c4aa899552958b4e9c6fa3a97a4fc8a96c45740abe655ef95d", + "tag": "s1_eternum-SwapEvent", + "selector": "0x1f926fcf957ccc9852cfb520498d1eac5512f8e710ffd77db1b1fcad55bfbee" + }, + { + "members": [], + "class_hash": "0x6cc999fc86266f1dbc7aa840b708d01884985ad69bdc2b5638cc5911e076fd0", + "tag": "s1_eternum-Transfer", + "selector": "0x51c9cda93a0b9735874f08742333f5d601bee76457f1565f608075666678ee3" + }, + { + "members": [], + "class_hash": "0x749a49ac7ff5b1b45c2043b9fb682a7afb16508b1294460876dcdf3cfc5a619", + "tag": "s1_eternum-Travel", + "selector": "0x30e8e79033762c0f9e6738ae07398a015b0ffd2969f6d2c1fb09d5475902ae6" + }, + { + "members": [], + "class_hash": "0x6b38999d987627835d4c20e7e571c73d32ddc856786d9790a131bdb3372a246", + "tag": "s1_eternum-TrophyCreation", + "selector": "0x730009ea3268cc71709a37a164c9ce9ca00430d63d571ad16b5b72c3f51bc9a" + }, + { + "members": [], + "class_hash": "0xf05f290a704ad2671544b391f0c33d50d6d43d468d52791282852a833a00c7", + "tag": "s1_eternum-TrophyProgression", + "selector": "0x198e5fb446b41882f55a08f8baaba4387f41637ca140b0084459ce5338f617d" + } + ] + } + } +} + } \ No newline at end of file diff --git a/client/config/environments/local.ts b/client/config/environments/local.ts new file mode 100644 index 0000000000..3f3be16370 --- /dev/null +++ b/client/config/environments/local.ts @@ -0,0 +1,24 @@ +/** + * Local environment configuration for Eternum. + * Extends the common configuration with development-specific settings. + * + * @module LocalEnvironment + * @see {@link CommonEternumGlobalConfig} for base configuration + */ + +import type { Config } from "@bibliothecadao/eternum"; +import { EternumGlobalConfig as CommonEternumGlobalConfig } from "./_shared_"; + +/** + * Configuration specific to the local development environment. + * Overrides specific values from the common configuration while inheriting defaults. + */ +export const LocalEternumGlobalConfig: Config = { + ...CommonEternumGlobalConfig, + season: { + ...CommonEternumGlobalConfig.season, + startAfterSeconds: 60, // 1 minute + } +}; + +export default LocalEternumGlobalConfig; diff --git a/client/config/environments/mainnet.ts b/client/config/environments/mainnet.ts new file mode 100644 index 0000000000..31d24d8be6 --- /dev/null +++ b/client/config/environments/mainnet.ts @@ -0,0 +1,21 @@ +/** + * Mainnet environment configuration for Eternum. + * Extends the common configuration with production-specific settings. + * + * @module MainnetEnvironment + * @see {@link CommonEternumGlobalConfig} for base configuration + */ + +import type { Config } from "@bibliothecadao/eternum"; +import { EternumGlobalConfig as CommonEternumGlobalConfig } from "./_shared_"; + +/** + * Configuration specific to the mainnet production environment. + * Inherits all settings from the common configuration without modifications. + * Use this configuration with caution as it affects the live production environment. + */ +export const MainnetEternumGlobalConfig: Config = { + ...CommonEternumGlobalConfig, +}; + +export default MainnetEternumGlobalConfig; diff --git a/client/config/environments/sepolia.ts b/client/config/environments/sepolia.ts new file mode 100644 index 0000000000..bdeb9e0c26 --- /dev/null +++ b/client/config/environments/sepolia.ts @@ -0,0 +1,27 @@ +/** + * Sepolia testnet environment configuration for Eternum. + * Extends the common configuration with testnet-specific settings. + * + * @module SepoliaEnvironment + * @see {@link CommonEternumGlobalConfig} for base configuration + */ + +import type { Config } from "@bibliothecadao/eternum"; +import { EternumGlobalConfig as CommonEternumGlobalConfig } from "./_shared_"; + +/** + * Configuration specific to the Sepolia testnet environment. + * Overrides specific values from the common configuration while inheriting defaults. + * Used for testing in a public network environment before mainnet deployment. + */ +export const SepoliaEternumGlobalConfig: Config = { + ...CommonEternumGlobalConfig, + season: { + ...CommonEternumGlobalConfig.season, + startAfterSeconds: 60, // 1 minute + }, +}; + +console.log("Welcome to Sepolia!"); + +export default SepoliaEternumGlobalConfig; diff --git a/client/config/environments/slot.ts b/client/config/environments/slot.ts new file mode 100644 index 0000000000..d07001d793 --- /dev/null +++ b/client/config/environments/slot.ts @@ -0,0 +1,24 @@ +/** +* Catridge Slot network environment configuration for Eternum. + * Extends the common configuration with slot network-specific settings. + * + * @module SlotEnvironment + * @see {@link CommonEternumGlobalConfig} for base configuration + */ + +import type { Config } from "@bibliothecadao/eternum"; +import { EternumGlobalConfig as CommonEternumGlobalConfig } from "./_shared_"; + +/** + * Configuration specific to the Catridge Slot network environment. + * Overrides specific values from the common configuration while inheriting defaults. + */ +export const SlotEternumGlobalConfig: Config = { + ...CommonEternumGlobalConfig, + season: { + ...CommonEternumGlobalConfig.season, + startAfterSeconds: 60, // 1 minute + }, +}; + +export default SlotEternumGlobalConfig; diff --git a/client/config/environments/utils/amm.ts b/client/config/environments/utils/amm.ts new file mode 100644 index 0000000000..dcccf95661 --- /dev/null +++ b/client/config/environments/utils/amm.ts @@ -0,0 +1,30 @@ +import { ResourcesIds } from "@bibliothecadao/eternum"; + +export const LORDS_LIQUIDITY_PER_RESOURCE = 1_000; + +export const AMM_STARTING_LIQUIDITY: { [key in ResourcesIds]?: number } = { + [ResourcesIds.Wood]: 500_000, + [ResourcesIds.Stone]: 500_000, + [ResourcesIds.Coal]: 500_000, + [ResourcesIds.Copper]: 500_000, + [ResourcesIds.Obsidian]: 500_000, + [ResourcesIds.Silver]: 500_000, + [ResourcesIds.Ironwood]: 200_000, + [ResourcesIds.ColdIron]: 200_000, + [ResourcesIds.Gold]: 200_000, + [ResourcesIds.Hartwood]: 200_000, + [ResourcesIds.Diamonds]: 100_000, + [ResourcesIds.Sapphire]: 100_000, + [ResourcesIds.Ruby]: 100_000, + [ResourcesIds.DeepCrystal]: 75_000, + [ResourcesIds.Ignium]: 75_000, + [ResourcesIds.EtherealSilica]: 50_000, + [ResourcesIds.TrueIce]: 50_000, + [ResourcesIds.TwilightQuartz]: 50_000, + [ResourcesIds.AlchemicalSilver]: 50_000, + [ResourcesIds.Adamantine]: 50_000, + [ResourcesIds.Mithral]: 50_000, + [ResourcesIds.Dragonhide]: 50_000, + + [ResourcesIds.Donkey]: 10_000, +}; diff --git a/client/config/environments/utils/building.ts b/client/config/environments/utils/building.ts new file mode 100644 index 0000000000..705c5d582f --- /dev/null +++ b/client/config/environments/utils/building.ts @@ -0,0 +1,165 @@ +import { BuildingType, ResourcesIds, type ResourceInputs } from "@bibliothecadao/eternum"; + +export const BUILDING_CAPACITY: { [key in BuildingType]: number } = { + [BuildingType.None]: 0, + [BuildingType.Castle]: 5, + [BuildingType.Bank]: 0, + [BuildingType.FragmentMine]: 0, + [BuildingType.Resource]: 0, + [BuildingType.Farm]: 0, + [BuildingType.FishingVillage]: 0, + [BuildingType.Barracks]: 0, + [BuildingType.Market]: 0, + [BuildingType.ArcheryRange]: 0, + [BuildingType.Stable]: 0, + [BuildingType.TradingPost]: 0, + [BuildingType.WorkersHut]: 5, + [BuildingType.WatchTower]: 0, + [BuildingType.Walls]: 0, + [BuildingType.Storehouse]: 0, + }; + + export const BUILDING_POPULATION: { [key in BuildingType]: number } = { + [BuildingType.None]: 0, + [BuildingType.Castle]: 0, + [BuildingType.Bank]: 0, + [BuildingType.FragmentMine]: 0, + [BuildingType.Resource]: 2, + [BuildingType.Farm]: 1, + [BuildingType.FishingVillage]: 1, + [BuildingType.Barracks]: 2, + [BuildingType.Market]: 3, + [BuildingType.ArcheryRange]: 2, + [BuildingType.Stable]: 3, + [BuildingType.TradingPost]: 2, + [BuildingType.WorkersHut]: 0, + [BuildingType.WatchTower]: 2, + [BuildingType.Walls]: 2, + [BuildingType.Storehouse]: 2, + }; + + export const BUILDING_RESOURCE_PRODUCED: { [key in BuildingType]: number } = { + [BuildingType.None]: 0, + [BuildingType.Castle]: 0, + [BuildingType.Bank]: 0, + [BuildingType.FragmentMine]: ResourcesIds.AncientFragment, + [BuildingType.Resource]: 0, + [BuildingType.Farm]: ResourcesIds.Wheat, + [BuildingType.FishingVillage]: ResourcesIds.Fish, + [BuildingType.Barracks]: ResourcesIds.Knight, + [BuildingType.Market]: ResourcesIds.Donkey, + [BuildingType.ArcheryRange]: ResourcesIds.Crossbowman, + [BuildingType.Stable]: ResourcesIds.Paladin, + [BuildingType.TradingPost]: 0, + [BuildingType.WorkersHut]: 0, + [BuildingType.WatchTower]: 0, + [BuildingType.Walls]: 0, + [BuildingType.Storehouse]: 0, + }; + + export const NON_RESOURCE_BUILDING_COSTS: ResourceInputs = { + [BuildingType.None]: [], + [BuildingType.Castle]: [], + [BuildingType.Bank]: [], + [BuildingType.FragmentMine]: [], + [BuildingType.Resource]: [], // resource building costs are handled in `RESOURCE_BUILDING_COSTS` + [BuildingType.Farm]: [{ resource: ResourcesIds.Fish, amount: 450_000 }], + [BuildingType.FishingVillage]: [{ resource: ResourcesIds.Wheat, amount: 450_000 }], + + [BuildingType.Market]: [ + { resource: ResourcesIds.Fish, amount: 750_000 }, + { resource: ResourcesIds.Stone, amount: 125_000 }, + { resource: ResourcesIds.Obsidian, amount: 50_000 }, + { resource: ResourcesIds.Ruby, amount: 25_000 }, + { resource: ResourcesIds.DeepCrystal, amount: 5_000 }, + ], + [BuildingType.Barracks]: [ + { resource: ResourcesIds.Wheat, amount: 1_000_000 }, + { resource: ResourcesIds.Wood, amount: 75_000 }, + { resource: ResourcesIds.Coal, amount: 75_000 }, + { resource: ResourcesIds.Silver, amount: 50_000 }, + { resource: ResourcesIds.Gold, amount: 45_000 }, + ], + [BuildingType.ArcheryRange]: [ + { resource: ResourcesIds.Fish, amount: 1_000_000 }, + { resource: ResourcesIds.Wood, amount: 75_000 }, + { resource: ResourcesIds.Obsidian, amount: 75_000 }, + { resource: ResourcesIds.Gold, amount: 25_000 }, + { resource: ResourcesIds.Hartwood, amount: 25_000 }, + ], + [BuildingType.Stable]: [ + { resource: ResourcesIds.Wheat, amount: 1_000_000 }, + { resource: ResourcesIds.Wood, amount: 75_000 }, + { resource: ResourcesIds.Silver, amount: 75_000 }, + { resource: ResourcesIds.Ironwood, amount: 35_000 }, + { resource: ResourcesIds.Gold, amount: 25_000 }, + ], + [BuildingType.TradingPost]: [], + [BuildingType.WorkersHut]: [ + { resource: ResourcesIds.Wheat, amount: 300_000 }, + { resource: ResourcesIds.Stone, amount: 75_000 }, + { resource: ResourcesIds.Wood, amount: 75_000 }, + { resource: ResourcesIds.Coal, amount: 75_000 }, + ], + [BuildingType.WatchTower]: [], + [BuildingType.Walls]: [], + [BuildingType.Storehouse]: [ + { resource: ResourcesIds.Fish, amount: 1_000_000 }, + { resource: ResourcesIds.Coal, amount: 75_000 }, + { resource: ResourcesIds.Stone, amount: 75_000 }, + { resource: ResourcesIds.Sapphire, amount: 10_000 }, + ], + }; + + export const RESOURCE_BUILDING_COSTS: ResourceInputs = { + [ResourcesIds.Wood]: [{ resource: ResourcesIds.Wheat, amount: 750_000 }], + [ResourcesIds.Stone]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + [ResourcesIds.Coal]: [{ resource: ResourcesIds.Wheat, amount: 750_000 }], + [ResourcesIds.Copper]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + [ResourcesIds.Obsidian]: [{ resource: ResourcesIds.Wheat, amount: 750_000 }], + [ResourcesIds.Silver]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + [ResourcesIds.Ironwood]: [{ resource: ResourcesIds.Wheat, amount: 750_000 }], + [ResourcesIds.ColdIron]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + [ResourcesIds.Gold]: [{ resource: ResourcesIds.Wheat, amount: 750_000 }], + [ResourcesIds.Hartwood]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + [ResourcesIds.Diamonds]: [{ resource: ResourcesIds.Wheat, amount: 750_000 }], + [ResourcesIds.Sapphire]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + [ResourcesIds.Ruby]: [{ resource: ResourcesIds.Wheat, amount: 750_000 }], + [ResourcesIds.DeepCrystal]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + [ResourcesIds.Ignium]: [{ resource: ResourcesIds.Wheat, amount: 750 }], + [ResourcesIds.EtherealSilica]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + [ResourcesIds.TrueIce]: [{ resource: ResourcesIds.Wheat, amount: 750_000 }], + [ResourcesIds.TwilightQuartz]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + [ResourcesIds.AlchemicalSilver]: [{ resource: ResourcesIds.Wheat, amount: 750_000 }], + [ResourcesIds.Adamantine]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + [ResourcesIds.Mithral]: [{ resource: ResourcesIds.Wheat, amount: 750_000 }], + [ResourcesIds.Dragonhide]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + [ResourcesIds.Donkey]: [{ resource: ResourcesIds.Wheat, amount: 750_000 }], + [ResourcesIds.Knight]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + [ResourcesIds.Crossbowman]: [{ resource: ResourcesIds.Wheat, amount: 750_000 }], + [ResourcesIds.Paladin]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + [ResourcesIds.Wheat]: [{ resource: ResourcesIds.Wheat, amount: 750_000 }], + [ResourcesIds.Fish]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + [ResourcesIds.Lords]: [{ resource: ResourcesIds.Wheat, amount: 750_000 }], + [ResourcesIds.AncientFragment]: [{ resource: ResourcesIds.Fish, amount: 750_000 }], + }; + // Approx creation of a building per Realm + + export const BUILDING_DELTA_USAGE: { [key: number]: number } = { + [BuildingType.Castle]: 1, + [BuildingType.Bank]: 0, + [BuildingType.FragmentMine]: 0, + [BuildingType.Resource]: 0, + [BuildingType.Farm]: 6, + [BuildingType.FishingVillage]: 6, + [BuildingType.Barracks]: 3, + [BuildingType.Market]: 3, + [BuildingType.ArcheryRange]: 3, + [BuildingType.Stable]: 3, + [BuildingType.TradingPost]: 0, + [BuildingType.WorkersHut]: 0, + [BuildingType.WatchTower]: 0, + [BuildingType.Walls]: 0, + [BuildingType.Storehouse]: 3, + }; + \ No newline at end of file diff --git a/client/config/environments/utils/hyperstructure.ts b/client/config/environments/utils/hyperstructure.ts new file mode 100644 index 0000000000..c43c01cc5b --- /dev/null +++ b/client/config/environments/utils/hyperstructure.ts @@ -0,0 +1,23 @@ +import { ResourceTier, type ResourceCostMinMax } from "@bibliothecadao/eternum"; + +export const HYPERSTRUCTURE_CREATION_COSTS: ResourceCostMinMax[] = [ + // this is actually fragments min max since lords and fragments are the same tier and we don't take into account lords + { resource_tier: ResourceTier.Lords, min_amount: 3_000_000, max_amount: 3_000_000 }, + ]; + export const HYPERSTRUCTURE_CONSTRUCTION_COSTS: ResourceCostMinMax[] = [ + { resource_tier: ResourceTier.Military, min_amount: 0, max_amount: 0 }, + { resource_tier: ResourceTier.Transport, min_amount: 0, max_amount: 0 }, + { resource_tier: ResourceTier.Food, min_amount: 0, max_amount: 0 }, + { resource_tier: ResourceTier.Common, min_amount: 120_000_000, max_amount: 240_000_000 }, + { resource_tier: ResourceTier.Uncommon, min_amount: 90_000_000, max_amount: 180_000_000 }, + { resource_tier: ResourceTier.Rare, min_amount: 40_000_000, max_amount: 80_000_000 }, + { resource_tier: ResourceTier.Unique, min_amount: 20_000_000, max_amount: 40_000_000 }, + { resource_tier: ResourceTier.Mythic, min_amount: 7_000_000, max_amount: 14_000_000 }, + ]; + + export const HYPERSTRUCTURE_TOTAL_COSTS: ResourceCostMinMax[] = [ + ...HYPERSTRUCTURE_CONSTRUCTION_COSTS, + ...HYPERSTRUCTURE_CREATION_COSTS, + ]; + + \ No newline at end of file diff --git a/client/config/environments/utils/levels.ts b/client/config/environments/utils/levels.ts new file mode 100644 index 0000000000..5e4861ccc5 --- /dev/null +++ b/client/config/environments/utils/levels.ts @@ -0,0 +1,30 @@ +import { RealmLevels, ResourcesIds, type ResourceCost } from "@bibliothecadao/eternum"; + +export const REALM_MAX_LEVEL = Object.keys(RealmLevels).length / 2; +export const REALM_UPGRADE_COSTS: { [key in RealmLevels]: ResourceCost[] } = { + [RealmLevels.Settlement]: [], + + [RealmLevels.City]: [ + { resource: ResourcesIds.Wheat, amount: 3_000_000 }, + { resource: ResourcesIds.Fish, amount: 3_000_000 }, + ], + + [RealmLevels.Kingdom]: [ + { resource: ResourcesIds.ColdIron, amount: 600_000 }, + { resource: ResourcesIds.Hartwood, amount: 600_000 }, + { resource: ResourcesIds.Diamonds, amount: 600_000 }, + { resource: ResourcesIds.Sapphire, amount: 600_000 }, + { resource: ResourcesIds.DeepCrystal, amount: 600_000 }, + { resource: ResourcesIds.Wheat, amount: 5_000_000 }, + { resource: ResourcesIds.Fish, amount: 5_000_000 }, + ], + + [RealmLevels.Empire]: [ + { resource: ResourcesIds.AlchemicalSilver, amount: 50_000 }, + { resource: ResourcesIds.Adamantine, amount: 50_000 }, + { resource: ResourcesIds.Mithral, amount: 50_000 }, + { resource: ResourcesIds.Dragonhide, amount: 50_000 }, + { resource: ResourcesIds.Wheat, amount: 9_000_000 }, + { resource: ResourcesIds.Fish, amount: 9_000_000 }, + ], +}; \ No newline at end of file diff --git a/client/config/environments/utils/quest.ts b/client/config/environments/utils/quest.ts new file mode 100644 index 0000000000..479dbcb33e --- /dev/null +++ b/client/config/environments/utils/quest.ts @@ -0,0 +1,54 @@ +import { QuestType, ResourcesIds, type ResourceCost } from "@bibliothecadao/eternum"; + +export const QUEST_RESOURCES: { [key in QuestType]: ResourceCost[] } = { + [QuestType.Settle]: [ + { resource: ResourcesIds.Wheat, amount: 1_200_000 }, + { resource: ResourcesIds.Fish, amount: 1_200_000 }, + ], + + [QuestType.BuildFood]: [ + { resource: ResourcesIds.Wood, amount: 5_000 }, + { resource: ResourcesIds.Stone, amount: 5_000 }, + { resource: ResourcesIds.Coal, amount: 5_000 }, + { resource: ResourcesIds.Copper, amount: 5_000 }, + { resource: ResourcesIds.Obsidian, amount: 5_000 }, + { resource: ResourcesIds.Silver, amount: 5_000 }, + { resource: ResourcesIds.Ironwood, amount: 5_000 }, + { resource: ResourcesIds.ColdIron, amount: 5_000 }, + { resource: ResourcesIds.Gold, amount: 5_000 }, + { resource: ResourcesIds.Hartwood, amount: 5_000 }, + { resource: ResourcesIds.Diamonds, amount: 5_000 }, + { resource: ResourcesIds.Sapphire, amount: 5_000 }, + { resource: ResourcesIds.Ruby, amount: 5_000 }, + { resource: ResourcesIds.DeepCrystal, amount: 5_000 }, + { resource: ResourcesIds.Ignium, amount: 5_000 }, + { resource: ResourcesIds.EtherealSilica, amount: 5_000 }, + { resource: ResourcesIds.TrueIce, amount: 5_000 }, + { resource: ResourcesIds.TwilightQuartz, amount: 5_000 }, + { resource: ResourcesIds.AlchemicalSilver, amount: 5_000 }, + { resource: ResourcesIds.Adamantine, amount: 5_000 }, + { resource: ResourcesIds.Mithral, amount: 5_000 }, + { resource: ResourcesIds.Dragonhide, amount: 5_000 }, + ], + [QuestType.BuildResource]: [{ resource: ResourcesIds.Donkey, amount: 200 }], + [QuestType.PauseProduction]: [ + { resource: ResourcesIds.Knight, amount: 500 }, + { resource: ResourcesIds.Crossbowman, amount: 500 }, + { resource: ResourcesIds.Paladin, amount: 500 }, + ], + [QuestType.CreateAttackArmy]: [ + { resource: ResourcesIds.Knight, amount: 500 }, + { resource: ResourcesIds.Paladin, amount: 500 }, + { resource: ResourcesIds.Crossbowman, amount: 500 }, + ], + [QuestType.CreateDefenseArmy]: [{ resource: ResourcesIds.Donkey, amount: 200 }], + [QuestType.Travel]: [{ resource: ResourcesIds.Donkey, amount: 200 }], + [QuestType.CreateTrade]: [ + { resource: ResourcesIds.Donkey, amount: 200 }, + { resource: ResourcesIds.Paladin, amount: 200 }, + { resource: ResourcesIds.Knight, amount: 200 }, + { resource: ResourcesIds.Crossbowman, amount: 200 }, + { resource: ResourcesIds.AncientFragment, amount: 200 }, + ], + }; + \ No newline at end of file diff --git a/client/config/environments/utils/resource.ts b/client/config/environments/utils/resource.ts new file mode 100644 index 0000000000..7820f25fd9 --- /dev/null +++ b/client/config/environments/utils/resource.ts @@ -0,0 +1,207 @@ +import { ResourcesIds, type ResourceInputs, type ResourceOutputs } from "@bibliothecadao/eternum"; + +// weight in kg +export const RESOURCES_WEIGHTS_GRAM: { [key in ResourcesIds]: number } = { + [ResourcesIds.Wood]: 1000, + [ResourcesIds.Stone]: 1000, + [ResourcesIds.Coal]: 1000, + [ResourcesIds.Copper]: 1000, + [ResourcesIds.Obsidian]: 1000, + [ResourcesIds.Silver]: 1000, + [ResourcesIds.Ironwood]: 1000, + [ResourcesIds.ColdIron]: 1000, + [ResourcesIds.Gold]: 1000, + [ResourcesIds.Hartwood]: 1000, + [ResourcesIds.Diamonds]: 1000, + [ResourcesIds.Sapphire]: 1000, + [ResourcesIds.Ruby]: 1000, + [ResourcesIds.DeepCrystal]: 1000, + [ResourcesIds.Ignium]: 1000, + [ResourcesIds.EtherealSilica]: 1000, + [ResourcesIds.TrueIce]: 1000, + [ResourcesIds.TwilightQuartz]: 1000, + [ResourcesIds.AlchemicalSilver]: 1000, + [ResourcesIds.Adamantine]: 1000, + [ResourcesIds.Mithral]: 1000, + [ResourcesIds.Dragonhide]: 1000, + [ResourcesIds.AncientFragment]: 1000, + [ResourcesIds.Donkey]: 0, + [ResourcesIds.Knight]: 5000, + [ResourcesIds.Crossbowman]: 3000, + [ResourcesIds.Paladin]: 5000, + [ResourcesIds.Lords]: 0, + [ResourcesIds.Wheat]: 100, + [ResourcesIds.Fish]: 100, + }; + + export const RESOURCE_PRODUCTION_OUTPUT_AMOUNTS: ResourceOutputs = { + [ResourcesIds.Wood]: 30, + [ResourcesIds.Stone]: 30, + [ResourcesIds.Coal]: 30, + [ResourcesIds.Copper]: 30, + [ResourcesIds.Obsidian]: 30, + [ResourcesIds.Silver]: 30, + [ResourcesIds.Ironwood]: 30, + [ResourcesIds.ColdIron]: 30, + [ResourcesIds.Gold]: 30, + [ResourcesIds.Hartwood]: 30, + [ResourcesIds.Diamonds]: 30, + [ResourcesIds.Sapphire]: 30, + [ResourcesIds.Ruby]: 30, + [ResourcesIds.DeepCrystal]: 30, + [ResourcesIds.Ignium]: 30, + [ResourcesIds.EtherealSilica]: 30, + [ResourcesIds.TrueIce]: 30, + [ResourcesIds.TwilightQuartz]: 30, + [ResourcesIds.AlchemicalSilver]: 30, + [ResourcesIds.Adamantine]: 30, + [ResourcesIds.Mithral]: 30, + [ResourcesIds.Dragonhide]: 30, + [ResourcesIds.Donkey]: 0.5, + [ResourcesIds.Knight]: 0.04, + [ResourcesIds.Crossbowman]: 0.04, + [ResourcesIds.Paladin]: 0.04, + [ResourcesIds.Lords]: 0, + [ResourcesIds.Wheat]: 50, + [ResourcesIds.Fish]: 50, + [ResourcesIds.AncientFragment]: 1, + }; + + export const RESOURCE_PRODUCTION_INPUT_RESOURCES: ResourceInputs = { + [ResourcesIds.Wood]: [ + { resource: ResourcesIds.Stone, amount: 3 }, + { resource: ResourcesIds.Coal, amount: 3.2 }, + { resource: ResourcesIds.Wheat, amount: 5 }, + ], + [ResourcesIds.Stone]: [ + { resource: ResourcesIds.Wood, amount: 5 }, + { resource: ResourcesIds.Coal, amount: 3.8 }, + { resource: ResourcesIds.Wheat, amount: 5 }, + ], + [ResourcesIds.Coal]: [ + { resource: ResourcesIds.Stone, amount: 4.2 }, + { resource: ResourcesIds.Copper, amount: 2.8 }, + { resource: ResourcesIds.Wheat, amount: 5 }, + ], + [ResourcesIds.Copper]: [ + { resource: ResourcesIds.Coal, amount: 5.8 }, + { resource: ResourcesIds.Obsidian, amount: 3.4 }, + { resource: ResourcesIds.Wheat, amount: 5 }, + ], + [ResourcesIds.Obsidian]: [ + { resource: ResourcesIds.Copper, amount: 4.8 }, + { resource: ResourcesIds.Silver, amount: 3.2 }, + { resource: ResourcesIds.Wheat, amount: 5 }, + ], + [ResourcesIds.Silver]: [ + { resource: ResourcesIds.Obsidian, amount: 5 }, + { resource: ResourcesIds.Ironwood, amount: 2.8 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.Ironwood]: [ + { resource: ResourcesIds.Silver, amount: 6 }, + { resource: ResourcesIds.ColdIron, amount: 3.2 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.ColdIron]: [ + { resource: ResourcesIds.Ironwood, amount: 5 }, + { resource: ResourcesIds.Gold, amount: 3.8 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.Gold]: [ + { resource: ResourcesIds.ColdIron, amount: 4.2 }, + { resource: ResourcesIds.Hartwood, amount: 2.6 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.Hartwood]: [ + { resource: ResourcesIds.Gold, amount: 6.2 }, + { resource: ResourcesIds.Diamonds, amount: 2 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.Diamonds]: [ + { resource: ResourcesIds.Hartwood, amount: 8 }, + { resource: ResourcesIds.Sapphire, amount: 3.2 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.Sapphire]: [ + { resource: ResourcesIds.Diamonds, amount: 4.8 }, + { resource: ResourcesIds.Ruby, amount: 3.8 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.Ruby]: [ + { resource: ResourcesIds.Sapphire, amount: 4.2 }, + { resource: ResourcesIds.DeepCrystal, amount: 4 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.DeepCrystal]: [ + { resource: ResourcesIds.Ruby, amount: 4 }, + { resource: ResourcesIds.Ignium, amount: 4.2 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.Ignium]: [ + { resource: ResourcesIds.DeepCrystal, amount: 5.6 }, + { resource: ResourcesIds.EtherealSilica, amount: 3.8 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.EtherealSilica]: [ + { resource: ResourcesIds.Ignium, amount: 4.2 }, + { resource: ResourcesIds.TrueIce, amount: 3.4 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.TrueIce]: [ + { resource: ResourcesIds.EtherealSilica, amount: 4.6 }, + { resource: ResourcesIds.TwilightQuartz, amount: 3.2 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.TwilightQuartz]: [ + { resource: ResourcesIds.TrueIce, amount: 5 }, + { resource: ResourcesIds.AlchemicalSilver, amount: 3.4 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.AlchemicalSilver]: [ + { resource: ResourcesIds.TwilightQuartz, amount: 4.8 }, + { resource: ResourcesIds.Adamantine, amount: 2.4 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.Adamantine]: [ + { resource: ResourcesIds.AlchemicalSilver, amount: 6.8 }, + { resource: ResourcesIds.Mithral, amount: 2.6 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.Mithral]: [ + { resource: ResourcesIds.Adamantine, amount: 6 }, + { resource: ResourcesIds.Dragonhide, amount: 2.4 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.Dragonhide]: [ + { resource: ResourcesIds.Mithral, amount: 6.4 }, + { resource: ResourcesIds.Adamantine, amount: 4 }, + { resource: ResourcesIds.Fish, amount: 4 }, + ], + [ResourcesIds.Donkey]: [ + { resource: ResourcesIds.Wheat, amount: 25 }, + { resource: ResourcesIds.Lords, amount: 0.01 }, + ], + [ResourcesIds.Knight]: [ + { resource: ResourcesIds.Wheat, amount: 50 }, + { resource: ResourcesIds.Fish, amount: 50 }, + { resource: ResourcesIds.Silver, amount: 2 }, + { resource: ResourcesIds.Ironwood, amount: 5 }, + ], + [ResourcesIds.Crossbowman]: [ + { resource: ResourcesIds.Wheat, amount: 50 }, + { resource: ResourcesIds.Fish, amount: 50 }, + { resource: ResourcesIds.Obsidian, amount: 2 }, + { resource: ResourcesIds.ColdIron, amount: 5 }, + ], + [ResourcesIds.Paladin]: [ + { resource: ResourcesIds.Wheat, amount: 50 }, + { resource: ResourcesIds.Fish, amount: 50 }, + { resource: ResourcesIds.Copper, amount: 2 }, + { resource: ResourcesIds.Gold, amount: 5 }, + ], + [ResourcesIds.Wheat]: [], + [ResourcesIds.Fish]: [], + [ResourcesIds.Lords]: [], + [ResourcesIds.AncientFragment]: [], + }; \ No newline at end of file diff --git a/client/config/environments/utils/troop.ts b/client/config/environments/utils/troop.ts new file mode 100644 index 0000000000..5dbee32d98 --- /dev/null +++ b/client/config/environments/utils/troop.ts @@ -0,0 +1,31 @@ +import { ResourcesIds, TroopFoodConsumption } from "@bibliothecadao/eternum"; + +export const TROOPS_STAMINAS = { + [ResourcesIds.Paladin]: 100, + [ResourcesIds.Knight]: 80, + [ResourcesIds.Crossbowman]: 80, + }; + + + + export const TROOPS_FOOD_CONSUMPTION: Record = { + [ResourcesIds.Paladin]: { + explore_wheat_burn_amount: 10, + explore_fish_burn_amount: 10, + travel_wheat_burn_amount: 4, + travel_fish_burn_amount: 4, + }, + [ResourcesIds.Knight]: { + explore_wheat_burn_amount: 10, + explore_fish_burn_amount: 10, + travel_wheat_burn_amount: 5, + travel_fish_burn_amount: 5, + }, + [ResourcesIds.Crossbowman]: { + explore_wheat_burn_amount: 6, + explore_fish_burn_amount: 6, + travel_wheat_burn_amount: 3, + travel_fish_burn_amount: 3, + }, + }; + \ No newline at end of file diff --git a/client/config/index.ts b/client/config/index.ts deleted file mode 100644 index 83b89e7121..0000000000 --- a/client/config/index.ts +++ /dev/null @@ -1,86 +0,0 @@ -import type { Config } from "@bibliothecadao/eternum"; -import devManifest from "../contracts/manifest_dev.json"; -import productionManifest from "../contracts/manifest_mainnet.json"; - -import { - EternumConfig, - EternumGlobalConfig, - EternumProvider, - getContractByName, - NAMESPACE, -} from "@bibliothecadao/eternum"; -import { Account } from "starknet"; - -if ( - !process.env.VITE_PUBLIC_MASTER_ADDRESS || - !process.env.VITE_PUBLIC_MASTER_PRIVATE_KEY || - !process.env.VITE_PUBLIC_NODE_URL -) { - throw new Error("VITE_PUBLIC_MASTER_ADDRESS is required"); -} - -const { - VITE_PUBLIC_MASTER_ADDRESS, - VITE_PUBLIC_MASTER_PRIVATE_KEY, - VITE_PUBLIC_DEV, - VITE_PUBLIC_NODE_URL, - VITE_PUBLIC_CHAIN, - VITE_VRF_PROVIDER_ADDRESS, -} = process.env; - -const manifest = VITE_PUBLIC_DEV === "true" ? devManifest : productionManifest; - -// Bug in bun we have to use http://127.0.0.1:5050/ -const nodeUrl = VITE_PUBLIC_DEV === "true" ? "http://127.0.0.1:5050/" : VITE_PUBLIC_NODE_URL; - -if (!VITE_PUBLIC_DEV) { - const userConfirmation = prompt( - "You are about to set the configuration for a non-development environment. Are you sure you want to proceed? (yes/no)", - ); - if (userConfirmation?.toLowerCase() !== "yes") { - console.log("Configuration setup cancelled."); - process.exit(0); - } -} - -console.log("Provider set up"); -const provider = new EternumProvider(manifest, nodeUrl, VITE_VRF_PROVIDER_ADDRESS); - -console.log("Account set up"); -const account = new Account(provider.provider, VITE_PUBLIC_MASTER_ADDRESS, VITE_PUBLIC_MASTER_PRIVATE_KEY); - -const setupConfig: Config = EternumGlobalConfig; - -// const setupConfig: Config = EternumGlobalConfig; - -setupConfig.vrf.vrfProviderAddress = VITE_VRF_PROVIDER_ADDRESS!; - -// Bridge -(setupConfig.bridge = { - ...EternumGlobalConfig.bridge, - velords_fee_recipient: BigInt("0x045c587318c9ebcf2fbe21febf288ee2e3597a21cd48676005a5770a50d433c5"), // burner - season_pool_fee_recipient: BigInt(getContractByName(manifest, `${NAMESPACE}-season_systems`)), -}), - // Season Pass - (setupConfig.season = { - ...EternumGlobalConfig.season, - startAfterSeconds: 60 * 60, // 60 minutes - // bridgeCloseAfterEndSeconds: 60 * 60 * 1, // 2 hours - seasonPassAddress: process.env.VITE_SEASON_PASS_ADDRESS!, - realmsAddress: process.env.VITE_REALMS_ADDRESS!, - lordsAddress: process.env.VITE_LORDS_ADDRESS!, - }); - -console.log(setupConfig.season); - -export const config = new EternumConfig(setupConfig); - -console.log("Setting up config..."); -await config.setup(account, provider); - -// Add a 20-second delay before setting up the bank -console.log("Waiting for 20 seconds before setting up the bank..."); -await new Promise((resolve) => setTimeout(resolve, 20000)); - -console.log("Setting up bank..."); -await config.setupBank(account, provider); diff --git a/client/config/package.json b/client/config/package.json index 43beb452fa..9b05df8840 100644 --- a/client/config/package.json +++ b/client/config/package.json @@ -2,10 +2,16 @@ "name": "eternum-config", "module": "index.ts", "scripts": { - "dev": "bun run index.ts", + "local": "bun --env-file=../apps/game/.env.local run ./deployer/index.ts", + "slot": "bun --env-file=../apps/game/.env.slot run ./deployer/index.ts", + "sepolia": "bun --env-file=../apps/game/.env.sepolia run ./deployer/index.ts", + "mainnet": "bun --env-file=../apps/game/.env.mainnet run ./deployer/index.ts", "lint": "eslint .", "lint:fix": "eslint . --fix" }, + "dependencies": { + "chalk": "^5.4.1" + }, "devDependencies": { "@types/bun": "latest" }, diff --git a/client/config/speed.ts b/client/config/speed.ts deleted file mode 100644 index 2c68f8d6d9..0000000000 --- a/client/config/speed.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { QUEST_RESOURCES } from "@bibliothecadao/eternum"; - -export const MAX_QUEST_RESOURCES = Object.fromEntries( - Object.entries(QUEST_RESOURCES).map(([questType, resources]) => [ - questType, - resources.map((resource) => ({ - resource: resource.resource, - amount: resource.amount * 10000000, - })), - ]), -); diff --git a/client/config/utils/confirmation.ts b/client/config/utils/confirmation.ts new file mode 100644 index 0000000000..35c5a3b954 --- /dev/null +++ b/client/config/utils/confirmation.ts @@ -0,0 +1,38 @@ +/** + * Prompts for confirmation when deploying to non-local environments + * @param chain The target deployment chain + * @throws {Error} If deployment is cancelled by user + */ +export function confirmNonLocalDeployment(chain: string): void { + if (chain === "local") return; + + // Color mapping for different chains + const chainColors: Record = { + mainnet: "31", // Red + sepolia: "34", // Blue + slot: "35", // Magenta + default: "33" // Yellow + }; + + const chainColor = chainColors[chain.toLowerCase()] || chainColors.default; + + const warningBox = ` + \x1b[1;33m╔════════════════════ WARNING ════════════════════╗ + ║ ║ + ║ SETTING CONFIGURATIONS FOR: ║ + ║ ║ + ║ \x1b[1;${chainColor}m>>> ${chain.toUpperCase()} NETWORK <<<\x1b[1;33m + ║ ║ + ║ \x1b[1;36mAre you sure you want to proceed? (yes/no)\x1b[1;33m ║ + ║ ║ + ╚═================================================╝\x1b[0m + `; + + const userConfirmation = prompt(warningBox); + + const validResponses = ["yes", "y"]; + if (!validResponses.includes(userConfirmation?.toLowerCase() ?? "")) { + console.log("\x1b[1;31m❌ Deployment cancelled by user\x1b[0m"); + process.exit(0); + } +} \ No newline at end of file diff --git a/client/config/utils/environment.ts b/client/config/utils/environment.ts new file mode 100644 index 0000000000..570cc323db --- /dev/null +++ b/client/config/utils/environment.ts @@ -0,0 +1,134 @@ +import type { Config } from "@bibliothecadao/eternum"; +export type NetworkType = 'local' | 'sepolia' | 'slot' | 'mainnet'; +/** + * Loads the environment-specific configuration based on the network type. + * + * @async + * @remarks + * Configuration files must follow these naming conventions: + * - Located in environments/ directory + * - Named exactly as the NetworkType: local.ts, sepolia.ts, slot.ts, mainnet.ts + * - Must export a default Config object + * + * @throws {Error} If the configuration file cannot be loaded + * + * @example + * ```typescript + * const config = await getConfigFromNetwork('local'); // loads from environments/local.ts + * ``` + */ +export async function getConfigFromNetwork(chain: NetworkType): Promise { + const CONFIGURATION_FILE = `../environments/data/${chain}.json`; + try { + const configurationJson = (await import(CONFIGURATION_FILE)) + .default; + return configurationJson.configuration; + } catch (error) { + throw new Error(`Failed to load configuration for chain ${chain}: ${error}`); + } +} + +export async function saveConfigJsonFromConfigTsFile(chain: NetworkType) { + + const fs = require('fs'); + const CONFIGURATION_FILE = `../environments/${chain}`; + const configurationJson = (await import(CONFIGURATION_FILE)) + .default; + + // Add a replacer function to handle BigInt + const bigIntReplacer = (key: string, value: any) => { + if (typeof value === 'bigint') { + return value.toString(); + } + return value; + }; + + // make or overwrite the json file + const jsonFileContent = `{ + "generatedFromTsFile": true, + "message": "This file was generated from the .ts file and should not be edited manually", + "configuration": ${JSON.stringify(configurationJson, bigIntReplacer, 2)} + }`; + + const dataDir = './environments/data'; + // make the directory if it doesn't exist + if (!fs.existsSync(dataDir)) { + fs.mkdirSync(dataDir, { recursive: true }); + } + fs.writeFileSync(`${dataDir}/${chain}.json`, jsonFileContent); +} + +/** + * Displays a stylized console output indicating the current network environment. + * + * @remarks + * Uses ANSI escape codes for colored console output. + * Each network type has its own unique color scheme and emoji identifiers: + * + * @example + * ```typescript + * logNetwork('local'); // Displays green-colored local environment banner + * ``` + */ +export function logNetwork(network: NetworkType): void { + interface NetworkStyle { + colors: { + primary: string; + secondary: string; + }; + emoji: string; + label: string; + } + + const NETWORK_STYLES: Record = { + local: { + colors: { + primary: '\x1b[38;5;83m', + secondary: '\x1b[38;5;156m' + }, + emoji: '🌿', + label: 'LOCAL DEVELOPMENT' + }, + sepolia: { + colors: { + primary: '\x1b[38;5;69m', + secondary: '\x1b[38;5;147m' + }, + emoji: '💫', + label: 'SEPOLIA TESTNET' + }, + slot: { + colors: { + primary: '\x1b[38;5;183m', + secondary: '\x1b[38;5;219m' + }, + emoji: '⚡', + label: 'SLOT NETWORK' + }, + mainnet: { + colors: { + primary: '\x1b[38;5;196m', + secondary: '\x1b[38;5;203m' + }, + emoji: '⚠️', + label: 'MAINNET LIVE' + } + }; + + const style = NETWORK_STYLES[network]; + const { primary, secondary } = style.colors; + const reset = '\x1b[0m'; + const bold = '\x1b[1m'; + const white = '\x1b[38;5;255m'; + + console.log(` + ${primary}┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ ┃ + ┃ ${secondary}╭──────────── ENVIRONMENT ────────────╮${primary} ┃ + ┃ ${secondary}│ ${bold}${white}${style.emoji} ${style.label} ${style.emoji}${reset}${secondary} │${primary} ┃ + ┃ ${secondary}╰─────────────────────────────────────╯${primary} ┃ + ┃ ┃ + ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛${reset}`); + console.log("\n\n"); +} + diff --git a/client/config/utils/formatting.ts b/client/config/utils/formatting.ts new file mode 100644 index 0000000000..9d6b10f138 --- /dev/null +++ b/client/config/utils/formatting.ts @@ -0,0 +1,30 @@ +import type { Config as EternumGlobalConfig } from "@bibliothecadao/eternum"; + +export const shortHexAddress = (address: string | undefined | null): string => { + if (!address) return 'Not set'; + if (!address.startsWith('0x')) { + address = '0x' + BigInt(address).toString(16); + } + return `${address.slice(0, 6)}...${address.slice(-4)}`; + }; + +export const addCommas = (amount: number | bigint) => { + try { + return BigInt(amount).toLocaleString(); + } catch (e) { + return amount.toString(); + } + }; + +export const inGameAmount = (amount: number, config: EternumGlobalConfig) => { + amount = amount / config.resources.resourcePrecision; + return addCommas(amount); + }; + +export const hourMinutesSeconds = (seconds: number) => { + const hours = Math.floor(seconds / 3600); + const minutes = Math.floor((seconds % 3600) / 60); + const remainingSeconds = seconds % 60; + return `${hours}h ${minutes}m ${remainingSeconds}s`; + }; + \ No newline at end of file diff --git a/client/package.json b/client/package.json index 98f7cd9259..94394c8c5e 100644 --- a/client/package.json +++ b/client/package.json @@ -10,8 +10,8 @@ "dev": "pnpm --dir ./apps/game dev", "dev:docs": "cd ./apps/game-docs && vocs dev", "dev:landing": "pnpm --dir ./apps/landing dev", - "format": "prettier --write .", - "format:check": "prettier --check .", + "format": "npx prettier --write . --root=..", + "format:check": "npx prettier --check . --root=..", "knip": "npx knip --exclude binaries,dependencies", "lint": "pnpm --dir ./apps/game lint", "lint:fix": "pnpm --dir ./apps/game lint:fix", diff --git a/client/sdk/packages/eternum/package.json b/client/sdk/packages/eternum/package.json index 083ca44998..da21220bef 100644 --- a/client/sdk/packages/eternum/package.json +++ b/client/sdk/packages/eternum/package.json @@ -23,6 +23,7 @@ "@dojoengine/core": "1.0.0-alpha.24", "@latticexyz/utils": "^2.0.0-next.12", "@scure/starknet": "^1.1.0", + "chalk": "^5.4.1", "eventemitter3": "^5.0.1" }, "devDependencies": { diff --git a/client/sdk/packages/eternum/src/__tests__/config.test.ts b/client/sdk/packages/eternum/src/__tests__/config.test.ts index b805e2dd0e..4665f9f688 100644 --- a/client/sdk/packages/eternum/src/__tests__/config.test.ts +++ b/client/sdk/packages/eternum/src/__tests__/config.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from "vitest"; import { HYPERSTRUCTURE_CREATION_COSTS } from "../constants"; -describe("RESOURCE_INPUTS", () => { +describe("RESOURCE_PRODUCTION_INPUT_RESOURCES", () => { it("should be defined", () => { console.log("HYPERSTRUCTURE_CREATION_COSTS:", HYPERSTRUCTURE_CREATION_COSTS); expect(HYPERSTRUCTURE_CREATION_COSTS).toBeDefined(); diff --git a/client/sdk/packages/eternum/src/config/index.ts b/client/sdk/packages/eternum/src/config/index.ts deleted file mode 100644 index a455731ffb..0000000000 --- a/client/sdk/packages/eternum/src/config/index.ts +++ /dev/null @@ -1,714 +0,0 @@ -import { Account } from "starknet"; -import { ADMIN_BANK_ENTITY_ID, ARMY_ENTITY_TYPE, DONKEY_ENTITY_TYPE, QuestType, ResourcesIds } from "../constants"; -import { BuildingType } from "../constants/structures"; -import { EternumProvider } from "../provider"; -import { Config as EternumGlobalConfig, ResourceInputs, ResourceOutputs, TickIds, TravelTypes } from "../types"; -import { scaleResourceCostMinMax, scaleResourceInputs, scaleResourceOutputs, scaleResources } from "../utils"; - -import { EternumGlobalConfig as DefaultConfig, FELT_CENTER } from "../constants/global"; - -interface Config { - account: Account; - provider: EternumProvider; - config: EternumGlobalConfig; -} - -export class EternumConfig { - public globalConfig: EternumGlobalConfig; - - constructor(config?: EternumGlobalConfig) { - this.globalConfig = config || DefaultConfig; - } - - async setup(account: Account, provider: EternumProvider) { - const config = { account, provider, config: this.globalConfig }; - await setProductionConfig(config); - await setQuestConfig(config); - await setQuestRewardConfig(config); - await setSeasonConfig(config); - await setVRFConfig(config); - await setResourceBridgeFeesConfig(config); - await setBuildingCategoryPopConfig(config); - await setPopulationConfig(config); - await setBuildingConfig(config); - await setResourceBuildingConfig(config); - await setWeightConfig(config); - await setBattleConfig(config); - await setCombatConfig(config); - await setRealmUpgradeConfig(config); - await setRealmMaxLevelConfig(config); - await setupGlobals(config); - await setCapacityConfig(config); - await setSpeedConfig(config); - await setHyperstructureConfig(config); - await setStaminaConfig(config); - await setStaminaRefillConfig(config); - await setMercenariesConfig(config); - await setBuildingGeneralConfig(config); - await setSettlementConfig(config); - } - - async setupBank(account: Account, provider: EternumProvider) { - const config = { account, provider, config: this.globalConfig }; - await createAdminBank(config); - await mintResources(config); - await addLiquidity(config); - } - - getResourceBuildingCostsScaled(): ResourceInputs { - return scaleResourceInputs( - this.globalConfig.resources.resourceBuildingCosts, - this.globalConfig.resources.resourceMultiplier, - ); - } - - getResourceOutputsScaled(): ResourceOutputs { - return scaleResourceOutputs( - this.globalConfig.resources.resourceOutputs, - this.globalConfig.resources.resourceMultiplier, - ); - } - - getBuildingCostsScaled(): ResourceInputs { - return scaleResourceInputs( - this.globalConfig.buildings.buildingCosts, - this.globalConfig.resources.resourceMultiplier, - ); - } - - getResourceInputsScaled(): ResourceInputs { - return scaleResourceInputs( - this.globalConfig.resources.resourceInputs, - this.globalConfig.resources.resourceMultiplier, - ); - } - - getHyperstructureConstructionCostsScaled(): { resource: number; amount: number }[] { - return scaleResources( - this.globalConfig.hyperstructures.hyperstructureConstructionCosts, - this.globalConfig.resources.resourceMultiplier, - ); - } - - getHyperstructureCreationCostsScaled(): { resource: number; amount: number }[] { - return scaleResources( - this.globalConfig.hyperstructures.hyperstructureCreationCosts, - this.globalConfig.resources.resourceMultiplier, - ); - } - - getHyperstructureTotalCostsScaled(): { resource: number; amount: number }[] { - return scaleResources( - this.globalConfig.hyperstructures.hyperstructureTotalCosts, - this.globalConfig.resources.resourceMultiplier, - ); - } -} - -export const setQuestConfig = async (config: Config) => { - const tx = await config.provider.set_quest_config({ - signer: config.account, - production_material_multiplier: config.config.resources.startingResourcesInputProductionFactor, - }); - - console.log(`Configuring quest config ${tx.statusReceipt}...`); -}; - -export const setQuestRewardConfig = async (config: Config) => { - const calldataArray = []; - - let QUEST_RESOURCES_SCALED: ResourceInputs = scaleResourceInputs( - config.config.questResources, - config.config.resources.resourceMultiplier * config.config.resources.resourcePrecision, - ); - - for (const questId of Object.keys(QUEST_RESOURCES_SCALED) as unknown as QuestType[]) { - const calldata = { - quest_id: questId, - resources: QUEST_RESOURCES_SCALED[questId], - }; - - calldataArray.push(calldata); - } - const tx = await config.provider.set_quest_reward_config({ signer: config.account, calls: calldataArray }); - - console.log(`Configuring quest reward ${tx.statusReceipt}...`); -}; - -export const setProductionConfig = async (config: Config) => { - const calldataArray = []; - - for (const resourceId of Object.keys( - scaleResourceInputs(config.config.resources.resourceInputs, config.config.resources.resourceMultiplier), - ) as unknown as ResourcesIds[]) { - const calldata = { - amount: scaleResourceOutputs(config.config.resources.resourceOutputs, config.config.resources.resourceMultiplier)[ - resourceId - ], - resource_type: resourceId, - cost: scaleResourceInputs(config.config.resources.resourceInputs, config.config.resources.resourceMultiplier)[ - resourceId - ].map((cost) => { - return { - ...cost, - amount: cost.amount * config.config.resources.resourcePrecision, - }; - }), - }; - - calldataArray.push(calldata); - } - - const tx = await config.provider.set_production_config({ signer: config.account, calls: calldataArray }); - - console.log(`Configuring resource production ${tx.statusReceipt}...`); -}; - -export const setBuildingCategoryPopConfig = async (config: Config) => { - const calldataArray = []; - - const buildingPopulation = config.config.buildings.buildingPopulation; - const buildingCapacity = config.config.buildings.buildingCapacity; - - for (const buildingId of Object.keys(buildingPopulation) as unknown as BuildingType[]) { - // if both 0, tx will fail - if (buildingPopulation[buildingId] !== 0 || buildingCapacity[buildingId] !== 0) { - const callData = { - building_category: buildingId, - population: buildingPopulation[buildingId] ?? 0, - capacity: buildingCapacity[buildingId] ?? 0, - }; - - calldataArray.push(callData); - } - } - - const tx = await config.provider.set_building_category_pop_config({ - signer: config.account, - calls: calldataArray, - }); - - console.log(`Configuring building category population ${tx.statusReceipt}...`); -}; - -export const setPopulationConfig = async (config: Config) => { - const tx = await config.provider.set_population_config({ - signer: config.account, - base_population: config.config.populationCapacity.basePopulation, - }); - - console.log(`Configuring population config ${tx.statusReceipt}...`); -}; - -export const setBuildingGeneralConfig = async (config: Config) => { - const tx = await config.provider.set_building_general_config({ - signer: config.account, - base_cost_percent_increase: config.config.buildings.buildingFixedCostScalePercent, - }); - - console.log(`Configuring building general config ${tx.statusReceipt}...`); -}; - -export const setBuildingConfig = async (config: Config) => { - const calldataArray = []; - - const buildingResourceProduced = config.config.buildings.buildingResourceProduced; - const buildingCosts = config.config.buildings.buildingCosts; - - for (const buildingId of Object.keys(buildingResourceProduced) as unknown as BuildingType[]) { - if (scaleResourceInputs(buildingCosts, config.config.resources.resourceMultiplier)[buildingId].length !== 0) { - const calldata = { - building_category: buildingId, - building_resource_type: buildingResourceProduced[buildingId] as ResourcesIds, - cost_of_building: scaleResourceInputs(buildingCosts, config.config.resources.resourceMultiplier)[ - buildingId - ].map((cost) => { - return { - ...cost, - amount: cost.amount * config.config.resources.resourcePrecision, - }; - }), - }; - - calldataArray.push(calldata); - } - } - - const tx = await config.provider.set_building_config({ signer: config.account, calls: calldataArray }); - - console.log(`Configuring building cost config ${tx.statusReceipt}...`); -}; - -export const setRealmUpgradeConfig = async (config: Config) => { - const calldataArray = []; - - const REALM_UPGRADE_COSTS_SCALED = scaleResourceInputs( - config.config.realmUpgradeCosts, - config.config.resources.resourceMultiplier, - ); - - for (const level of Object.keys(REALM_UPGRADE_COSTS_SCALED) as unknown as number[]) { - if (REALM_UPGRADE_COSTS_SCALED[level].length !== 0) { - const calldata = { - level, - cost_of_level: REALM_UPGRADE_COSTS_SCALED[level].map((cost) => { - return { - ...cost, - amount: cost.amount * config.config.resources.resourcePrecision, - }; - }), - }; - - calldataArray.push(calldata); - } - } - - const tx = await config.provider.set_realm_level_config({ signer: config.account, calls: calldataArray }); - console.log(`Configuring realm level cost config ${tx.statusReceipt}...`); -}; - -export const setRealmMaxLevelConfig = async (config: Config) => { - const new_max_level = config.config.realmMaxLevel - 1; - - const tx = await config.provider.set_realm_max_level_config({ - signer: config.account, - new_max_level, - }); - console.log(`Configuring realm max level config ${tx.statusReceipt}...`); -}; - -export const setResourceBuildingConfig = async (config: Config) => { - const calldataArray = []; - - const scaledBuildingCosts = scaleResourceInputs( - config.config.resources.resourceBuildingCosts, - config.config.resources.resourceMultiplier, - ); - - for (const resourceId of Object.keys(scaledBuildingCosts) as unknown as ResourcesIds[]) { - const calldata = { - building_category: BuildingType.Resource, - building_resource_type: resourceId, - cost_of_building: scaledBuildingCosts[resourceId].map((cost) => { - return { - ...cost, - amount: cost.amount * config.config.resources.resourcePrecision, - }; - }), - }; - - calldataArray.push(calldata); - } - - const tx = await config.provider.set_building_config({ signer: config.account, calls: calldataArray }); - - console.log(`Configuring resource building cost config ${tx.statusReceipt}...`); -}; - -export const setWeightConfig = async (config: Config) => { - const calldataArray = Object.entries(config.config.resources.resourceWeightsGrams).map(([resourceId, weight]) => ({ - entity_type: resourceId, - weight_gram: weight, - })); - - const tx = await config.provider.set_weight_config({ - signer: config.account, - calls: calldataArray, - }); - - console.log(`Configuring weight config ${tx.statusReceipt}...`); -}; - -export const setBattleConfig = async (config: Config) => { - const { - graceTickCount: regular_immunity_ticks, - graceTickCountHyp: hyperstructure_immunity_ticks, - delaySeconds: battle_delay_seconds, - } = config.config.battle; - - const tx = await config.provider.set_battle_config({ - signer: config.account, - config_id: 0, - regular_immunity_ticks, - hyperstructure_immunity_ticks, - battle_delay_seconds, - }); - - console.log(`Configuring battle config ${tx.statusReceipt}...`); -}; - -export const setCombatConfig = async (config: Config) => { - const { - health: health, - knightStrength: knight_strength, - paladinStrength: paladin_strength, - crossbowmanStrength: crossbowman_strength, - advantagePercent: advantage_percent, - disadvantagePercent: disadvantage_percent, - maxTroopCount: max_troop_count, - pillageHealthDivisor: pillage_health_divisor, - baseArmyNumberForStructure: army_free_per_structure, - armyExtraPerMilitaryBuilding: army_extra_per_military_building, - maxArmiesPerStructure: max_armies_per_structure, - battleLeaveSlashNum: battle_leave_slash_num, - battleLeaveSlashDenom: battle_leave_slash_denom, - battleTimeReductionScale: battle_time_scale, - battleMaxTimeSeconds: battle_max_time_seconds, - } = config.config.troop; - - const tx = await config.provider.set_troop_config({ - signer: config.account, - config_id: 0, - health, - knight_strength, - paladin_strength, - crossbowman_strength, - advantage_percent, - disadvantage_percent, - max_troop_count: max_troop_count * config.config.resources.resourcePrecision, - pillage_health_divisor: pillage_health_divisor, - army_free_per_structure: army_free_per_structure, - army_extra_per_military_building: army_extra_per_military_building, - army_max_per_structure: max_armies_per_structure, - battle_leave_slash_num, - battle_leave_slash_denom, - battle_time_scale, - battle_max_time_seconds, - }); - - console.log(`Configuring combat config ${tx.statusReceipt}...`); -}; - -export const setupGlobals = async (config: Config) => { - // Set the bank config - const txBank = await config.provider.set_bank_config({ - signer: config.account, - lords_cost: config.config.banks.lordsCost * config.config.resources.resourcePrecision, - lp_fee_num: config.config.banks.lpFeesNumerator, - lp_fee_denom: config.config.banks.lpFeesDenominator, - }); - - console.log(`Configuring bank config ${txBank.statusReceipt}...`); - - const txDefaultTick = await config.provider.set_tick_config({ - signer: config.account, - tick_id: TickIds.Default, - tick_interval_in_seconds: config.config.tick.defaultTickIntervalInSeconds, - }); - console.log(`Configuring default tick config ${txDefaultTick.statusReceipt}...`); - - const txArmiesTick = await config.provider.set_tick_config({ - signer: config.account, - tick_id: TickIds.Armies, - tick_interval_in_seconds: config.config.tick.armiesTickIntervalInSeconds, - }); - - console.log(`Configuring army tick config ${txArmiesTick.statusReceipt}...`); - - const txMap = await config.provider.set_map_config({ - signer: config.account, - config_id: 0, - reward_amount: config.config.exploration.reward * config.config.resources.resourcePrecision, - shards_mines_fail_probability: config.config.exploration.shardsMinesFailProbability, - }); - console.log(`Configuring map config ${txMap.statusReceipt}...`); - - const txExploreStaminaCost = await config.provider.set_travel_stamina_cost_config({ - signer: config.account, - travel_type: TravelTypes.Explore, - cost: config.config.stamina.exploreCost, - }); - console.log(`Configuring exploreStaminaCost config ${txExploreStaminaCost.statusReceipt}...`); - - const txTravelStaminaCost = await config.provider.set_travel_stamina_cost_config({ - signer: config.account, - travel_type: TravelTypes.Travel, - cost: config.config.stamina.travelCost, - }); - - console.log(`Configuring travel stamina cost config ${txTravelStaminaCost.statusReceipt}...`); - - for (const [unit_type, costs] of Object.entries(config.config.troop.troopFoodConsumption)) { - const tx = await config.provider.set_travel_food_cost_config({ - signer: config.account, - config_id: 0, - unit_type: unit_type, - explore_wheat_burn_amount: costs.explore_wheat_burn_amount * config.config.resources.resourcePrecision, - explore_fish_burn_amount: costs.explore_fish_burn_amount * config.config.resources.resourcePrecision, - travel_wheat_burn_amount: costs.travel_wheat_burn_amount * config.config.resources.resourcePrecision, - travel_fish_burn_amount: costs.travel_fish_burn_amount * config.config.resources.resourcePrecision, - }); - console.log(`Configuring travel costs for ${unit_type} ${tx.statusReceipt}...`); - } -}; - -export const setCapacityConfig = async (config: Config) => { - for (const [category, weight_gram] of Object.entries(config.config.carryCapacityGram)) { - const tx = await config.provider.set_capacity_config({ - signer: config.account, - category, - weight_gram, - }); - - console.log(`Configuring capacity ${category} config ${tx.statusReceipt} max capacity: ${weight_gram}...`); - } -}; - -export const setSeasonConfig = async (config: Config) => { - let now = Math.floor(new Date().getTime() / 1000); - let startAt = now + config.config.season.startAfterSeconds; - - const tx = await config.provider.set_season_config({ - signer: config.account, - season_pass_address: config.config.season.seasonPassAddress, - realms_address: config.config.season.realmsAddress, - lords_address: config.config.season.lordsAddress, - start_at: startAt, - }); - - console.log(`Configuring season ${tx.statusReceipt}`); - console.log(`Season starts at ${new Date(startAt * 1000).toISOString()}`); - - const txBridge = await config.provider.set_season_bridge_config({ - signer: config.account, - close_after_end_seconds: config.config.season.bridgeCloseAfterEndSeconds, - }); - console.log(`Configuring season bridge ${txBridge.statusReceipt}`); -}; - -export const setVRFConfig = async (config: Config) => { - const tx = await config.provider.set_vrf_config({ - signer: config.account, - vrf_provider_address: config.config.vrf.vrfProviderAddress, - }); - - console.log(`Configuring VRF ${tx.statusReceipt}`); -}; - -export const setResourceBridgeLordsWhitlelistConfig = async (config: Config) => { - // allow ingame bridging of lords - const tx = await config.provider.set_resource_bridge_whitlelist_config({ - signer: config.account, - token: config.config.season.lordsAddress, - resource_type: ResourcesIds.Lords, - }); - - console.log(`Configuring whitelist for lords for in-game asset bridge ${tx.statusReceipt}`); -}; - -export const setResourceBridgeWhitlelistConfig = async (config: Config, resources: Map) => { - // allow ingame bridging of resources (any) - - for (const [resourceId, tokenAddress] of resources.entries()) { - const tx = await config.provider.set_resource_bridge_whitlelist_config({ - signer: config.account, - token: tokenAddress, - resource_type: resourceId, - }); - - console.log(`Configuring whitelist for ${resourceId} for in-game asset bridge ${tx.statusReceipt}`); - } -}; - -export const setResourceBridgeFeesConfig = async (config: Config) => { - // allow bridging in of lords into the game - const tx = await config.provider.set_resource_bridge_fees_config({ - signer: config.account, - velords_fee_on_dpt_percent: config.config.bridge.velords_fee_on_dpt_percent, - velords_fee_on_wtdr_percent: config.config.bridge.velords_fee_on_wtdr_percent, - season_pool_fee_on_dpt_percent: config.config.bridge.season_pool_fee_on_dpt_percent, - season_pool_fee_on_wtdr_percent: config.config.bridge.season_pool_fee_on_wtdr_percent, - client_fee_on_dpt_percent: config.config.bridge.client_fee_on_dpt_percent, - client_fee_on_wtdr_percent: config.config.bridge.client_fee_on_wtdr_percent, - velords_fee_recipient: config.config.bridge.velords_fee_recipient, - season_pool_fee_recipient: config.config.bridge.season_pool_fee_recipient, - max_bank_fee_dpt_percent: config.config.bridge.max_bank_fee_dpt_percent, - max_bank_fee_wtdr_percent: config.config.bridge.max_bank_fee_wtdr_percent, - }); - - console.log(`Configuring bridge fees ${tx.statusReceipt}`); -}; - -export const setSpeedConfig = async (config: Config) => { - const txDonkey = await config.provider.set_speed_config({ - signer: config.account, - entity_type: DONKEY_ENTITY_TYPE, - sec_per_km: config.config.speed.donkey, - }); - - console.log(`Configuring speed Donkey config ${txDonkey.statusReceipt}...`); - - const txArmy = await config.provider.set_speed_config({ - signer: config.account, - entity_type: ARMY_ENTITY_TYPE, - sec_per_km: config.config.speed.army, - }); - - console.log(`Configuring speed Army config ${txArmy.statusReceipt}...`); -}; - -export const setHyperstructureConfig = async (config: Config) => { - const { - hyperstructurePointsPerCycle, - hyperstructurePointsOnCompletion, - hyperstructureTimeBetweenSharesChangeSeconds, - hyperstructurePointsForWin, - hyperstructureTotalCosts, - } = config.config.hyperstructures; - - const tx = await config.provider.set_hyperstructure_config({ - signer: config.account, - resources_for_completion: scaleResourceCostMinMax( - hyperstructureTotalCosts, - config.config.resources.resourceMultiplier, - ).map((resource) => ({ - ...resource, - min_amount: resource.min_amount * config.config.resources.resourcePrecision, - max_amount: resource.max_amount * config.config.resources.resourcePrecision, - })), - time_between_shares_change: hyperstructureTimeBetweenSharesChangeSeconds, - points_per_cycle: hyperstructurePointsPerCycle, - points_for_win: hyperstructurePointsForWin, - points_on_completion: hyperstructurePointsOnCompletion, - }); - console.log(`Configuring hyperstructure ${tx.statusReceipt}...`); -}; - -export const setStaminaConfig = async (config: Config) => { - const { troopStaminas } = config.config.troop; - - for (const [unit_type, stamina] of Object.entries(troopStaminas)) { - const tx = await config.provider.set_stamina_config({ - signer: config.account, - unit_type: unit_type, - max_stamina: stamina, - }); - console.log(`Configuring staminas ${unit_type} ${tx.statusReceipt}...`); - } -}; - -export const setStaminaRefillConfig = async (config: Config) => { - const tx = await config.provider.set_stamina_refill_config({ - signer: config.account, - amount_per_tick: config.config.stamina.refillPerTick, - start_boost_tick_count: config.config.stamina.startBoostTickCount, - }); - console.log(`Configuring stamina refill per tick to ${config.config.stamina.refillPerTick} ${tx.statusReceipt}...`); -}; - -export const setMercenariesConfig = async (config: Config) => { - const tx = await config.provider.set_mercenaries_config({ - signer: config.account, - knights_lower_bound: config.config.mercenaries.knights_lower_bound * config.config.resources.resourcePrecision, - knights_upper_bound: config.config.mercenaries.knights_upper_bound * config.config.resources.resourcePrecision, - paladins_lower_bound: config.config.mercenaries.paladins_lower_bound * config.config.resources.resourcePrecision, - paladins_upper_bound: config.config.mercenaries.paladins_upper_bound * config.config.resources.resourcePrecision, - crossbowmen_lower_bound: - config.config.mercenaries.crossbowmen_lower_bound * config.config.resources.resourcePrecision, - crossbowmen_upper_bound: - config.config.mercenaries.crossbowmen_upper_bound * config.config.resources.resourcePrecision, - rewards: config.config.mercenaries.rewards.map((reward) => ({ - resource: reward.resource, - amount: reward.amount * config.config.resources.resourcePrecision * config.config.resources.resourceMultiplier, - })), - }); - console.log(`Configuring mercenaries ${tx.statusReceipt}...`); -}; - -export const setSettlementConfig = async (config: Config) => { - const { - center, - base_distance, - min_first_layer_distance, - points_placed, - current_layer, - current_side, - current_point_on_side, - } = config.config.settlement; - const tx = await config.provider.set_settlement_config({ - signer: config.account, - center, - base_distance, - min_first_layer_distance, - points_placed, - current_layer, - current_side, - current_point_on_side, - }); - console.log(`Configuring settlement ${tx.statusReceipt}...`); -}; - -export const createAdminBank = async (config: Config) => { - await config.provider.create_admin_bank({ - signer: config.account, - name: config.config.banks.name, - coord: { x: FELT_CENTER, y: FELT_CENTER }, - owner_fee_num: config.config.banks.ownerFeesNumerator, - owner_fee_denom: config.config.banks.ownerFeesDenominator, - owner_bridge_fee_dpt_percent: config.config.banks.ownerBridgeFeeOnDepositPercent, - owner_bridge_fee_wtdr_percent: config.config.banks.ownerBridgeFeeOnWithdrawalPercent, - }); - console.log(`Creating admin bank ...`); -}; - -export const mintResources = async (config: Config) => { - const { ammStartingLiquidity, lordsLiquidityPerResource } = config.config.banks; - const ammResourceIds = Object.keys(ammStartingLiquidity).map(Number); - const totalResourceCount = ammResourceIds.length; - // mint lords - const lordsTx = await config.provider.mint_resources({ - signer: config.account, - receiver_id: ADMIN_BANK_ENTITY_ID, - resources: [ - ResourcesIds.Lords, - config.config.resources.resourcePrecision * lordsLiquidityPerResource * totalResourceCount, - ], - }); - console.log(`Minting lords ${lordsTx.statusReceipt}...`); - // mint all other resources - const resources = ammResourceIds.flatMap((resourceId) => { - return [ - resourceId, - ammStartingLiquidity[resourceId as keyof typeof ammStartingLiquidity]! * - config.config.resources.resourcePrecision, - ]; - }); - const resourcesTx = await config.provider.mint_resources({ - signer: config.account, - receiver_id: ADMIN_BANK_ENTITY_ID, - resources, - }); - console.log(`Minting resources ${resourcesTx.statusReceipt}...`); -}; - -export const addLiquidity = async (config: Config) => { - const { ammStartingLiquidity, lordsLiquidityPerResource } = config.config.banks; - - let calls = []; - - for (const [resourceId, amount] of Object.entries(ammStartingLiquidity)) { - calls.push({ - resource_type: resourceId, - resource_amount: amount * config.config.resources.resourcePrecision, - lords_amount: lordsLiquidityPerResource * config.config.resources.resourcePrecision, - }); - - console.log( - `Adding liquidity for ${resourceId}: Lords ${ - lordsLiquidityPerResource * config.config.resources.resourcePrecision - }, ` + `${resourceId} ${amount * config.config.resources.resourcePrecision}`, - ); - } - - try { - await config.provider.add_liquidity({ - signer: config.account, - bank_entity_id: ADMIN_BANK_ENTITY_ID, - entity_id: ADMIN_BANK_ENTITY_ID, - calls, - }); - console.log("Successfully added liquidity"); - } catch (e) { - console.log(e); - } -}; diff --git a/client/sdk/packages/eternum/src/constants/buildings.ts b/client/sdk/packages/eternum/src/constants/buildings.ts index 6fab32b7cf..29e8642bf8 100644 --- a/client/sdk/packages/eternum/src/constants/buildings.ts +++ b/client/sdk/packages/eternum/src/constants/buildings.ts @@ -1,7 +1,6 @@ -import { ResourceInputs } from "../types"; -import { ResourcesIds } from "./index"; import { BuildingType } from "./structures"; +export const FELT_CENTER = 2147483646; export const BUILDINGS_CENTER = [10, 10]; export const DUMMY_HYPERSTRUCTURE_ENTITY_ID = 99999999n; @@ -26,134 +25,3 @@ export const BUILDING_INFORMATION: { [BuildingType.Walls]: "Walls, imbued with the strength of titans, fortify your domain against the shadows.", [BuildingType.Storehouse]: "Storehouses, where abundance flows, swell with the wealth of the land.", }; - -export const BUILDING_CAPACITY: { [key in BuildingType]: number } = { - [BuildingType.None]: 0, - [BuildingType.Castle]: 5, - [BuildingType.Bank]: 0, - [BuildingType.FragmentMine]: 0, - [BuildingType.Resource]: 0, - [BuildingType.Farm]: 0, - [BuildingType.FishingVillage]: 0, - [BuildingType.Barracks]: 0, - [BuildingType.Market]: 0, - [BuildingType.ArcheryRange]: 0, - [BuildingType.Stable]: 0, - [BuildingType.TradingPost]: 0, - [BuildingType.WorkersHut]: 5, - [BuildingType.WatchTower]: 0, - [BuildingType.Walls]: 0, - [BuildingType.Storehouse]: 0, -}; - -export const BUILDING_POPULATION: { [key in BuildingType]: number } = { - [BuildingType.None]: 0, - [BuildingType.Castle]: 0, - [BuildingType.Bank]: 0, - [BuildingType.FragmentMine]: 0, - [BuildingType.Resource]: 2, - [BuildingType.Farm]: 1, - [BuildingType.FishingVillage]: 1, - [BuildingType.Barracks]: 2, - [BuildingType.Market]: 3, - [BuildingType.ArcheryRange]: 2, - [BuildingType.Stable]: 3, - [BuildingType.TradingPost]: 2, - [BuildingType.WorkersHut]: 0, - [BuildingType.WatchTower]: 2, - [BuildingType.Walls]: 2, - [BuildingType.Storehouse]: 2, -}; - -export const BUILDING_RESOURCE_PRODUCED: { [key in BuildingType]: number } = { - [BuildingType.None]: 0, - [BuildingType.Castle]: 0, - [BuildingType.Bank]: 0, - [BuildingType.FragmentMine]: ResourcesIds.AncientFragment, - [BuildingType.Resource]: 0, - [BuildingType.Farm]: ResourcesIds.Wheat, - [BuildingType.FishingVillage]: ResourcesIds.Fish, - [BuildingType.Barracks]: ResourcesIds.Knight, - [BuildingType.Market]: ResourcesIds.Donkey, - [BuildingType.ArcheryRange]: ResourcesIds.Crossbowman, - [BuildingType.Stable]: ResourcesIds.Paladin, - [BuildingType.TradingPost]: 0, - [BuildingType.WorkersHut]: 0, - [BuildingType.WatchTower]: 0, - [BuildingType.Walls]: 0, - [BuildingType.Storehouse]: 0, -}; - -export const BUILDING_COSTS: ResourceInputs = { - [BuildingType.None]: [], - [BuildingType.Castle]: [], - [BuildingType.Bank]: [], - [BuildingType.FragmentMine]: [], - [BuildingType.Resource]: [], - [BuildingType.Farm]: [{ resource: ResourcesIds.Fish, amount: 450 }], - [BuildingType.FishingVillage]: [{ resource: ResourcesIds.Wheat, amount: 450 }], - - [BuildingType.Market]: [ - { resource: ResourcesIds.Fish, amount: 750 }, - { resource: ResourcesIds.Stone, amount: 125 }, - { resource: ResourcesIds.Obsidian, amount: 50 }, - { resource: ResourcesIds.Ruby, amount: 25 }, - { resource: ResourcesIds.DeepCrystal, amount: 5 }, - ], - [BuildingType.Barracks]: [ - { resource: ResourcesIds.Wheat, amount: 1000 }, - { resource: ResourcesIds.Wood, amount: 75 }, - { resource: ResourcesIds.Coal, amount: 75 }, - { resource: ResourcesIds.Silver, amount: 50 }, - { resource: ResourcesIds.Gold, amount: 45 }, - ], - [BuildingType.ArcheryRange]: [ - { resource: ResourcesIds.Fish, amount: 1000 }, - { resource: ResourcesIds.Wood, amount: 75 }, - { resource: ResourcesIds.Obsidian, amount: 75 }, - { resource: ResourcesIds.Gold, amount: 25 }, - { resource: ResourcesIds.Hartwood, amount: 25 }, - ], - [BuildingType.Stable]: [ - { resource: ResourcesIds.Wheat, amount: 1000 }, - { resource: ResourcesIds.Wood, amount: 75 }, - { resource: ResourcesIds.Silver, amount: 75 }, - { resource: ResourcesIds.Ironwood, amount: 35 }, - { resource: ResourcesIds.Gold, amount: 25 }, - ], - [BuildingType.TradingPost]: [], - [BuildingType.WorkersHut]: [ - { resource: ResourcesIds.Wheat, amount: 300 }, - { resource: ResourcesIds.Stone, amount: 75 }, - { resource: ResourcesIds.Wood, amount: 75 }, - { resource: ResourcesIds.Coal, amount: 75 }, - ], - [BuildingType.WatchTower]: [], - [BuildingType.Walls]: [], - [BuildingType.Storehouse]: [ - { resource: ResourcesIds.Fish, amount: 1000 }, - { resource: ResourcesIds.Coal, amount: 75 }, - { resource: ResourcesIds.Stone, amount: 75 }, - { resource: ResourcesIds.Sapphire, amount: 10 }, - ], -}; - -// Approx creation of a building per Realm - -export const BUILDING_DELTA_USAGE: { [key: number]: number } = { - [BuildingType.Castle]: 1, - [BuildingType.Bank]: 0, - [BuildingType.FragmentMine]: 0, - [BuildingType.Resource]: 0, - [BuildingType.Farm]: 6, - [BuildingType.FishingVillage]: 6, - [BuildingType.Barracks]: 3, - [BuildingType.Market]: 3, - [BuildingType.ArcheryRange]: 3, - [BuildingType.Stable]: 3, - [BuildingType.TradingPost]: 0, - [BuildingType.WorkersHut]: 0, - [BuildingType.WatchTower]: 0, - [BuildingType.Walls]: 0, - [BuildingType.Storehouse]: 3, -}; diff --git a/client/sdk/packages/eternum/src/constants/hyperstructure.ts b/client/sdk/packages/eternum/src/constants/hyperstructure.ts deleted file mode 100644 index 69101db01a..0000000000 --- a/client/sdk/packages/eternum/src/constants/hyperstructure.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { ResourceCostMinMax } from "../types"; -import { ResourceTier } from "./index"; - -export const HYPERSTRUCTURE_CREATION_COSTS: ResourceCostMinMax[] = [ - // this is actually fragments min max since lords and fragments are the same tier and we don't take into account lords - { resource_tier: ResourceTier.Lords, min_amount: 3000, max_amount: 3000 }, -]; -export const HYPERSTRUCTURE_CONSTRUCTION_COSTS: ResourceCostMinMax[] = [ - { resource_tier: ResourceTier.Military, min_amount: 0, max_amount: 0 }, - { resource_tier: ResourceTier.Transport, min_amount: 0, max_amount: 0 }, - { resource_tier: ResourceTier.Food, min_amount: 0, max_amount: 0 }, - { resource_tier: ResourceTier.Common, min_amount: 120000, max_amount: 240000 }, - { resource_tier: ResourceTier.Uncommon, min_amount: 90000, max_amount: 180000 }, - { resource_tier: ResourceTier.Rare, min_amount: 40000, max_amount: 80000 }, - { resource_tier: ResourceTier.Unique, min_amount: 20000, max_amount: 40000 }, - { resource_tier: ResourceTier.Mythic, min_amount: 7000, max_amount: 14000 }, -]; - -export const HYPERSTRUCTURE_TOTAL_COSTS: ResourceCostMinMax[] = [ - ...HYPERSTRUCTURE_CONSTRUCTION_COSTS, - ...HYPERSTRUCTURE_CREATION_COSTS, -]; diff --git a/client/sdk/packages/eternum/src/constants/ids.ts b/client/sdk/packages/eternum/src/constants/ids.ts new file mode 100644 index 0000000000..3455fdd33f --- /dev/null +++ b/client/sdk/packages/eternum/src/constants/ids.ts @@ -0,0 +1,10 @@ +export const WORLD_CONFIG_ID = 999999999n; +export const HYPERSTRUCTURE_CONFIG_ID = 999999992n; +export const BUILDING_CATEGORY_POPULATION_CONFIG_ID = 999999990n; +export const POPULATION_CONFIG_ID = 999999989n; + + +// ----- Entity Types ----- // +export const DONKEY_ENTITY_TYPE = 256; +export const REALM_ENTITY_TYPE = 257; +export const ARMY_ENTITY_TYPE = 258; \ No newline at end of file diff --git a/client/sdk/packages/eternum/src/constants/index.ts b/client/sdk/packages/eternum/src/constants/index.ts index caaf9e3de4..14c94324be 100644 --- a/client/sdk/packages/eternum/src/constants/index.ts +++ b/client/sdk/packages/eternum/src/constants/index.ts @@ -1,8 +1,8 @@ export * from "./buildings"; -export * from "./global"; export * from "./hex"; -export * from "./hyperstructure"; +export * from "./ids"; export * from "./market"; +export * from "./misc"; export * from "./orders"; export * from "./quests"; export * from "./realmLevels"; @@ -11,6 +11,7 @@ export * from "./structures"; export * from "./troops"; export * from "./utils"; + export enum ResourcesIds { Stone = 1, Coal = 2, @@ -34,12 +35,13 @@ export enum ResourcesIds { Sapphire = 20, EtherealSilica = 21, Dragonhide = 22, - AncientFragment = 29, - Donkey = 249, - Knight = 250, - Crossbowman = 251, - Paladin = 252, - Lords = 253, - Wheat = 254, - Fish = 255, + // Demonhide = 23, + AncientFragment = 24, + Donkey = 25, + Knight = 26, + Crossbowman = 27, + Paladin = 28, + Wheat = 29, + Fish = 30, + Lords = 31, } diff --git a/client/sdk/packages/eternum/src/constants/market.ts b/client/sdk/packages/eternum/src/constants/market.ts index 77a9dc5b2e..a88b5923a7 100644 --- a/client/sdk/packages/eternum/src/constants/market.ts +++ b/client/sdk/packages/eternum/src/constants/market.ts @@ -1,31 +1,2 @@ -import { ResourcesIds } from "."; -export const ADMIN_BANK_ENTITY_ID = 999999998n; -export const LORDS_LIQUIDITY_PER_RESOURCE = 1_000; - -export const AMM_STARTING_LIQUIDITY: { [key in ResourcesIds]?: number } = { - [ResourcesIds.Wood]: 500_000, - [ResourcesIds.Stone]: 500_000, - [ResourcesIds.Coal]: 500_000, - [ResourcesIds.Copper]: 500_000, - [ResourcesIds.Obsidian]: 500_000, - [ResourcesIds.Silver]: 500_000, - [ResourcesIds.Ironwood]: 200_000, - [ResourcesIds.ColdIron]: 200_000, - [ResourcesIds.Gold]: 200_000, - [ResourcesIds.Hartwood]: 200_000, - [ResourcesIds.Diamonds]: 100_000, - [ResourcesIds.Sapphire]: 100_000, - [ResourcesIds.Ruby]: 100_000, - [ResourcesIds.DeepCrystal]: 75_000, - [ResourcesIds.Ignium]: 75_000, - [ResourcesIds.EtherealSilica]: 50_000, - [ResourcesIds.TrueIce]: 50_000, - [ResourcesIds.TwilightQuartz]: 50_000, - [ResourcesIds.AlchemicalSilver]: 50_000, - [ResourcesIds.Adamantine]: 50_000, - [ResourcesIds.Mithral]: 50_000, - [ResourcesIds.Dragonhide]: 50_000, - - [ResourcesIds.Donkey]: 10_000, -}; +export const ADMIN_BANK_ENTITY_ID = 999999998n; \ No newline at end of file diff --git a/client/sdk/packages/eternum/src/constants/misc.ts b/client/sdk/packages/eternum/src/constants/misc.ts new file mode 100644 index 0000000000..2a684cb7f3 --- /dev/null +++ b/client/sdk/packages/eternum/src/constants/misc.ts @@ -0,0 +1,2 @@ +export const U32_MAX = 4294967295; +export const MAX_NAME_LENGTH = 31; diff --git a/client/sdk/packages/eternum/src/constants/quests.ts b/client/sdk/packages/eternum/src/constants/quests.ts index 1ff5c53dbb..2fd3e2b417 100644 --- a/client/sdk/packages/eternum/src/constants/quests.ts +++ b/client/sdk/packages/eternum/src/constants/quests.ts @@ -1,5 +1,3 @@ -import { ResourcesIds } from "."; -import { ResourceCost } from "../types"; export enum QuestType { Settle = 1, @@ -11,55 +9,3 @@ export enum QuestType { Travel, CreateTrade, } - -export const QUEST_RESOURCES: { [key in QuestType]: ResourceCost[] } = { - [QuestType.Settle]: [ - { resource: ResourcesIds.Wheat, amount: 1200 }, - { resource: ResourcesIds.Fish, amount: 1200 }, - ], - - [QuestType.BuildFood]: [ - { resource: ResourcesIds.Wood, amount: 5 }, - { resource: ResourcesIds.Stone, amount: 5 }, - { resource: ResourcesIds.Coal, amount: 5 }, - { resource: ResourcesIds.Copper, amount: 5 }, - { resource: ResourcesIds.Obsidian, amount: 5 }, - { resource: ResourcesIds.Silver, amount: 5 }, - { resource: ResourcesIds.Ironwood, amount: 5 }, - { resource: ResourcesIds.ColdIron, amount: 5 }, - { resource: ResourcesIds.Gold, amount: 5 }, - { resource: ResourcesIds.Hartwood, amount: 5 }, - { resource: ResourcesIds.Diamonds, amount: 5 }, - { resource: ResourcesIds.Sapphire, amount: 5 }, - { resource: ResourcesIds.Ruby, amount: 5 }, - { resource: ResourcesIds.DeepCrystal, amount: 5 }, - { resource: ResourcesIds.Ignium, amount: 5 }, - { resource: ResourcesIds.EtherealSilica, amount: 5 }, - { resource: ResourcesIds.TrueIce, amount: 5 }, - { resource: ResourcesIds.TwilightQuartz, amount: 5 }, - { resource: ResourcesIds.AlchemicalSilver, amount: 5 }, - { resource: ResourcesIds.Adamantine, amount: 5 }, - { resource: ResourcesIds.Mithral, amount: 5 }, - { resource: ResourcesIds.Dragonhide, amount: 5 }, - ], - [QuestType.BuildResource]: [{ resource: ResourcesIds.Donkey, amount: 0.2 }], - [QuestType.PauseProduction]: [ - { resource: ResourcesIds.Knight, amount: 0.5 }, - { resource: ResourcesIds.Crossbowman, amount: 0.5 }, - { resource: ResourcesIds.Paladin, amount: 0.5 }, - ], - [QuestType.CreateAttackArmy]: [ - { resource: ResourcesIds.Knight, amount: 0.5 }, - { resource: ResourcesIds.Paladin, amount: 0.5 }, - { resource: ResourcesIds.Crossbowman, amount: 0.5 }, - ], - [QuestType.CreateDefenseArmy]: [{ resource: ResourcesIds.Donkey, amount: 1 }], - [QuestType.Travel]: [{ resource: ResourcesIds.Donkey, amount: 0.2 }], - [QuestType.CreateTrade]: [ - { resource: ResourcesIds.Donkey, amount: 0.2 }, - { resource: ResourcesIds.Paladin, amount: 1 }, - { resource: ResourcesIds.Knight, amount: 1 }, - { resource: ResourcesIds.Crossbowman, amount: 1 }, - { resource: ResourcesIds.AncientFragment, amount: 0.1 }, - ], -}; diff --git a/client/sdk/packages/eternum/src/constants/realmLevels.ts b/client/sdk/packages/eternum/src/constants/realmLevels.ts index 849a1bc3b3..01cc28da9c 100644 --- a/client/sdk/packages/eternum/src/constants/realmLevels.ts +++ b/client/sdk/packages/eternum/src/constants/realmLevels.ts @@ -1,5 +1,3 @@ -import { ResourcesIds } from "."; -import { ResourceCost } from "../types"; export enum RealmLevels { Settlement, @@ -15,35 +13,6 @@ export enum RealmLevelNames { Empire = "Empire", } -export const REALM_MAX_LEVEL = Object.keys(RealmLevels).length / 2; - -export const REALM_UPGRADE_COSTS: { [key in RealmLevels]: ResourceCost[] } = { - [RealmLevels.Settlement]: [], - - [RealmLevels.City]: [ - { resource: ResourcesIds.Wheat, amount: 3000 }, - { resource: ResourcesIds.Fish, amount: 3000 }, - ], - - [RealmLevels.Kingdom]: [ - { resource: ResourcesIds.ColdIron, amount: 600 }, - { resource: ResourcesIds.Hartwood, amount: 600 }, - { resource: ResourcesIds.Diamonds, amount: 600 }, - { resource: ResourcesIds.Sapphire, amount: 600 }, - { resource: ResourcesIds.DeepCrystal, amount: 600 }, - { resource: ResourcesIds.Wheat, amount: 5000 }, - { resource: ResourcesIds.Fish, amount: 5000 }, - ], - - [RealmLevels.Empire]: [ - { resource: ResourcesIds.AlchemicalSilver, amount: 50 }, - { resource: ResourcesIds.Adamantine, amount: 50 }, - { resource: ResourcesIds.Mithral, amount: 50 }, - { resource: ResourcesIds.Dragonhide, amount: 50 }, - { resource: ResourcesIds.Wheat, amount: 9000 }, - { resource: ResourcesIds.Fish, amount: 9000 }, - ], -}; export const LEVEL_DESCRIPTIONS = { [RealmLevels.Settlement]: "A small settlement with a few buildings. You have 6 buildable hexes.", diff --git a/client/sdk/packages/eternum/src/constants/resources.ts b/client/sdk/packages/eternum/src/constants/resources.ts index 3d19841584..526b6863c1 100644 --- a/client/sdk/packages/eternum/src/constants/resources.ts +++ b/client/sdk/packages/eternum/src/constants/resources.ts @@ -1,6 +1,11 @@ -import { ResourceInputs, ResourceOutputs, Resources } from "../types"; +import { Resources } from "../types"; import { ResourcesIds } from "./index"; +export const DONKEY_RESOURCE_TRACKER = 452312848583266388373324160190187140051835877600158453279131187530910662656n; +export const LORDS_RESOURCE_TRACKER = 7237005577332262213973186563042994240829374041602535252466099000494570602496n; +export const LORDS_AND_DONKEY_RESOURCE_TRACKER = + 7689318425915528602346510723233181380881209919202693705745230188025481265152n; + export const resources: Array = [ { trait: "Stone", @@ -218,11 +223,30 @@ export const resources: Array = [ img: "https://github.com/BibliothecaDAO/eternum/blob/main/client/public/images/resources/22.png?raw=true", ticker: "$DRGNHD", }, + { + trait: "Demonhide", + value: 23, + colour: "#ec4899", + id: 23, + description: + "Demonhide are the hidden guardians of our reality. No mortal can witness their work, lest they be purged by dragonfire. If you find one of these scales, flee. Only death can be found in their presence or by the forces they fight in secret.", + img: "https://github.com/BibliothecaDAO/eternum/blob/main/client/public/images/resources/23.png?raw=true", + ticker: "$DEMONHD", + }, + { + trait: "Ancient Fragment", + value: 29, + colour: "#ec4899", + id: 24, + description: "Ancient Fragment is a rare and powerful resource that can be used to create powerful items.", + img: "https://github.com/BibliothecaDAO/eternum/blob/main/client/public/images/resources/29.png?raw=true", + ticker: "$FRAGMENT", + }, { trait: "Donkey", value: 249, colour: "#ec4899", - id: 249, + id: 25, description: "Donkey.", img: "https://github.com/BibliothecaDAO/eternum/blob/main/client/public/images/resources/249.png?raw=true", ticker: "$DONKEY", @@ -231,7 +255,7 @@ export const resources: Array = [ trait: "Knight", value: 250, colour: "#ec4899", - id: 250, + id: 26, description: "Wheat.", img: "https://github.com/BibliothecaDAO/eternum/blob/main/client/public/images/resources/250.png?raw=true", ticker: "$KNIGHT", @@ -240,7 +264,7 @@ export const resources: Array = [ trait: "Crossbowman", value: 251, colour: "#ec4899", - id: 251, + id: 27, description: "Wheat.", img: "https://github.com/BibliothecaDAO/eternum/blob/main/client/public/images/resources/251.png?raw=true", ticker: "$CRSSBW", @@ -249,25 +273,17 @@ export const resources: Array = [ trait: "Paladin", value: 252, colour: "#ec4899", - id: 252, + id: 28, description: "Wheat.", img: "https://github.com/BibliothecaDAO/eternum/blob/main/client/public/images/resources/252.png?raw=true", ticker: "$PLDN", }, - { - trait: "Lords", - value: 253, - colour: "#ec4899", - id: 253, - description: "Lords.", - img: "https://github.com/BibliothecaDAO/eternum/blob/main/client/public/images/resources/253.png?raw=true", - ticker: "$LORDS", - }, + { trait: "Wheat", value: 254, colour: "#F5DEB3", - id: 254, + id: 29, description: "Wheat.", img: "https://github.com/BibliothecaDAO/eternum/blob/main/client/public/images/resources/254.png?raw=true", ticker: "$WHEAT", @@ -276,19 +292,19 @@ export const resources: Array = [ trait: "Fish", value: 255, colour: "#87CEEB", - id: 255, + id: 30, description: "Fish.", img: "https://github.com/BibliothecaDAO/eternum/blob/main/client/public/images/resources/255.png?raw=true", ticker: "$FISH", }, { - trait: "Ancient Fragment", - value: 29, + trait: "Lords", + value: 253, colour: "#ec4899", - id: 29, - description: "Ancient Fragment is a rare and powerful resource that can be used to create powerful items.", - img: "https://github.com/BibliothecaDAO/eternum/blob/main/client/public/images/resources/29.png?raw=true", - ticker: "$FRAGMENT", + id: 31, + description: "Lords.", + img: "https://github.com/BibliothecaDAO/eternum/blob/main/client/public/images/resources/253.png?raw=true", + ticker: "$LORDS", }, ]; @@ -325,39 +341,6 @@ export const RESOURCE_RARITY: { [key in ResourcesIds]?: number } = { [ResourcesIds.Fish]: 1, }; -// weight in kg -export const WEIGHTS_GRAM: { [key in ResourcesIds]: number } = { - [ResourcesIds.Wood]: 1000, - [ResourcesIds.Stone]: 1000, - [ResourcesIds.Coal]: 1000, - [ResourcesIds.Copper]: 1000, - [ResourcesIds.Obsidian]: 1000, - [ResourcesIds.Silver]: 1000, - [ResourcesIds.Ironwood]: 1000, - [ResourcesIds.ColdIron]: 1000, - [ResourcesIds.Gold]: 1000, - [ResourcesIds.Hartwood]: 1000, - [ResourcesIds.Diamonds]: 1000, - [ResourcesIds.Sapphire]: 1000, - [ResourcesIds.Ruby]: 1000, - [ResourcesIds.DeepCrystal]: 1000, - [ResourcesIds.Ignium]: 1000, - [ResourcesIds.EtherealSilica]: 1000, - [ResourcesIds.TrueIce]: 1000, - [ResourcesIds.TwilightQuartz]: 1000, - [ResourcesIds.AlchemicalSilver]: 1000, - [ResourcesIds.Adamantine]: 1000, - [ResourcesIds.Mithral]: 1000, - [ResourcesIds.Dragonhide]: 1000, - [ResourcesIds.AncientFragment]: 1000, - [ResourcesIds.Donkey]: 0, - [ResourcesIds.Knight]: 5000, - [ResourcesIds.Crossbowman]: 3000, - [ResourcesIds.Paladin]: 5000, - [ResourcesIds.Lords]: 0, - [ResourcesIds.Wheat]: 100, - [ResourcesIds.Fish]: 100, -}; export enum ResourceTier { Lords = 1, @@ -456,208 +439,3 @@ export const RESOURCE_TIERS = { ], mythic: [ResourcesIds.Adamantine, ResourcesIds.Mithral, ResourcesIds.Dragonhide], }; - -export const RESOURCE_OUTPUTS: ResourceOutputs = { - [ResourcesIds.Wood]: 30, - [ResourcesIds.Stone]: 30, - [ResourcesIds.Coal]: 30, - [ResourcesIds.Copper]: 30, - [ResourcesIds.Obsidian]: 30, - [ResourcesIds.Silver]: 30, - [ResourcesIds.Ironwood]: 30, - [ResourcesIds.ColdIron]: 30, - [ResourcesIds.Gold]: 30, - [ResourcesIds.Hartwood]: 30, - [ResourcesIds.Diamonds]: 30, - [ResourcesIds.Sapphire]: 30, - [ResourcesIds.Ruby]: 30, - [ResourcesIds.DeepCrystal]: 30, - [ResourcesIds.Ignium]: 30, - [ResourcesIds.EtherealSilica]: 30, - [ResourcesIds.TrueIce]: 30, - [ResourcesIds.TwilightQuartz]: 30, - [ResourcesIds.AlchemicalSilver]: 30, - [ResourcesIds.Adamantine]: 30, - [ResourcesIds.Mithral]: 30, - [ResourcesIds.Dragonhide]: 30, - [ResourcesIds.Donkey]: 0.5, - [ResourcesIds.Knight]: 0.04, - [ResourcesIds.Crossbowman]: 0.04, - [ResourcesIds.Paladin]: 0.04, - [ResourcesIds.Lords]: 0, - [ResourcesIds.Wheat]: 50, - [ResourcesIds.Fish]: 50, - [ResourcesIds.AncientFragment]: 1, -}; - -export const RESOURCE_INPUTS: ResourceInputs = { - [ResourcesIds.Wood]: [ - { resource: ResourcesIds.Stone, amount: 0.003 }, - { resource: ResourcesIds.Coal, amount: 0.0032 }, - { resource: ResourcesIds.Wheat, amount: 0.005 }, - ], - [ResourcesIds.Stone]: [ - { resource: ResourcesIds.Wood, amount: 0.005 }, - { resource: ResourcesIds.Coal, amount: 0.0038 }, - { resource: ResourcesIds.Wheat, amount: 0.005 }, - ], - [ResourcesIds.Coal]: [ - { resource: ResourcesIds.Stone, amount: 0.0042 }, - { resource: ResourcesIds.Copper, amount: 0.0028 }, - { resource: ResourcesIds.Wheat, amount: 0.005 }, - ], - [ResourcesIds.Copper]: [ - { resource: ResourcesIds.Coal, amount: 0.0058 }, - { resource: ResourcesIds.Obsidian, amount: 0.0034 }, - { resource: ResourcesIds.Wheat, amount: 0.005 }, - ], - [ResourcesIds.Obsidian]: [ - { resource: ResourcesIds.Copper, amount: 0.0048 }, - { resource: ResourcesIds.Silver, amount: 0.0032 }, - { resource: ResourcesIds.Wheat, amount: 0.005 }, - ], - [ResourcesIds.Silver]: [ - { resource: ResourcesIds.Obsidian, amount: 0.005 }, - { resource: ResourcesIds.Ironwood, amount: 0.0028 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.Ironwood]: [ - { resource: ResourcesIds.Silver, amount: 0.006 }, - { resource: ResourcesIds.ColdIron, amount: 0.0032 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.ColdIron]: [ - { resource: ResourcesIds.Ironwood, amount: 0.005 }, - { resource: ResourcesIds.Gold, amount: 0.0038 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.Gold]: [ - { resource: ResourcesIds.ColdIron, amount: 0.0042 }, - { resource: ResourcesIds.Hartwood, amount: 0.0026 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.Hartwood]: [ - { resource: ResourcesIds.Gold, amount: 0.0062 }, - { resource: ResourcesIds.Diamonds, amount: 0.002 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.Diamonds]: [ - { resource: ResourcesIds.Hartwood, amount: 0.008 }, - { resource: ResourcesIds.Sapphire, amount: 0.0032 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.Sapphire]: [ - { resource: ResourcesIds.Diamonds, amount: 0.0048 }, - { resource: ResourcesIds.Ruby, amount: 0.0038 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.Ruby]: [ - { resource: ResourcesIds.Sapphire, amount: 0.0042 }, - { resource: ResourcesIds.DeepCrystal, amount: 0.004 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.DeepCrystal]: [ - { resource: ResourcesIds.Ruby, amount: 0.004 }, - { resource: ResourcesIds.Ignium, amount: 0.0042 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.Ignium]: [ - { resource: ResourcesIds.DeepCrystal, amount: 0.0056 }, - { resource: ResourcesIds.EtherealSilica, amount: 0.0038 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.EtherealSilica]: [ - { resource: ResourcesIds.Ignium, amount: 0.0042 }, - { resource: ResourcesIds.TrueIce, amount: 0.0034 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.TrueIce]: [ - { resource: ResourcesIds.EtherealSilica, amount: 0.0046 }, - { resource: ResourcesIds.TwilightQuartz, amount: 0.0032 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.TwilightQuartz]: [ - { resource: ResourcesIds.TrueIce, amount: 0.005 }, - { resource: ResourcesIds.AlchemicalSilver, amount: 0.0034 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.AlchemicalSilver]: [ - { resource: ResourcesIds.TwilightQuartz, amount: 0.0048 }, - { resource: ResourcesIds.Adamantine, amount: 0.0024 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.Adamantine]: [ - { resource: ResourcesIds.AlchemicalSilver, amount: 0.0068 }, - { resource: ResourcesIds.Mithral, amount: 0.0026 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.Mithral]: [ - { resource: ResourcesIds.Adamantine, amount: 0.006 }, - { resource: ResourcesIds.Dragonhide, amount: 0.0024 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.Dragonhide]: [ - { resource: ResourcesIds.Mithral, amount: 0.0064 }, - { resource: ResourcesIds.Adamantine, amount: 0.004 }, - { resource: ResourcesIds.Fish, amount: 0.004 }, - ], - [ResourcesIds.Donkey]: [ - { resource: ResourcesIds.Wheat, amount: 0.025 }, - { resource: ResourcesIds.Lords, amount: 0.00001 }, - ], - [ResourcesIds.Knight]: [ - { resource: ResourcesIds.Wheat, amount: 0.05 }, - { resource: ResourcesIds.Fish, amount: 0.05 }, - { resource: ResourcesIds.Silver, amount: 0.002 }, - { resource: ResourcesIds.Ironwood, amount: 0.005 }, - ], - [ResourcesIds.Crossbowman]: [ - { resource: ResourcesIds.Wheat, amount: 0.05 }, - { resource: ResourcesIds.Fish, amount: 0.05 }, - { resource: ResourcesIds.Obsidian, amount: 0.002 }, - { resource: ResourcesIds.ColdIron, amount: 0.005 }, - ], - [ResourcesIds.Paladin]: [ - { resource: ResourcesIds.Wheat, amount: 0.05 }, - { resource: ResourcesIds.Fish, amount: 0.05 }, - { resource: ResourcesIds.Copper, amount: 0.002 }, - { resource: ResourcesIds.Gold, amount: 0.005 }, - ], - [ResourcesIds.Wheat]: [], - [ResourcesIds.Fish]: [], - [ResourcesIds.Lords]: [], - [ResourcesIds.AncientFragment]: [], -}; - -export const RESOURCE_BUILDING_COSTS: ResourceInputs = { - [ResourcesIds.Wood]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.Stone]: [{ resource: ResourcesIds.Fish, amount: 750 }], - [ResourcesIds.Coal]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.Copper]: [{ resource: ResourcesIds.Fish, amount: 750 }], - [ResourcesIds.Obsidian]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.Silver]: [{ resource: ResourcesIds.Fish, amount: 750 }], - [ResourcesIds.Ironwood]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.ColdIron]: [{ resource: ResourcesIds.Fish, amount: 750 }], - [ResourcesIds.Gold]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.Hartwood]: [{ resource: ResourcesIds.Fish, amount: 750 }], - [ResourcesIds.Diamonds]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.Sapphire]: [{ resource: ResourcesIds.Fish, amount: 750 }], - [ResourcesIds.Ruby]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.DeepCrystal]: [{ resource: ResourcesIds.Fish, amount: 750 }], - [ResourcesIds.Ignium]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.EtherealSilica]: [{ resource: ResourcesIds.Fish, amount: 750 }], - [ResourcesIds.TrueIce]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.TwilightQuartz]: [{ resource: ResourcesIds.Fish, amount: 750 }], - [ResourcesIds.AlchemicalSilver]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.Adamantine]: [{ resource: ResourcesIds.Fish, amount: 750 }], - [ResourcesIds.Mithral]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.Dragonhide]: [{ resource: ResourcesIds.Fish, amount: 750 }], - [ResourcesIds.Donkey]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.Knight]: [{ resource: ResourcesIds.Fish, amount: 750 }], - [ResourcesIds.Crossbowman]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.Paladin]: [{ resource: ResourcesIds.Fish, amount: 750 }], - [ResourcesIds.Wheat]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.Fish]: [{ resource: ResourcesIds.Fish, amount: 750 }], - [ResourcesIds.Lords]: [{ resource: ResourcesIds.Wheat, amount: 750 }], - [ResourcesIds.AncientFragment]: [{ resource: ResourcesIds.Fish, amount: 750 }], -}; diff --git a/client/sdk/packages/eternum/src/constants/troops.ts b/client/sdk/packages/eternum/src/constants/troops.ts index a665595ec8..1cdb4a9a16 100644 --- a/client/sdk/packages/eternum/src/constants/troops.ts +++ b/client/sdk/packages/eternum/src/constants/troops.ts @@ -1,35 +1,9 @@ -import { ResourcesIds } from "."; -export const TROOPS_STAMINAS = { - [ResourcesIds.Paladin]: 100, - [ResourcesIds.Knight]: 80, - [ResourcesIds.Crossbowman]: 80, -}; +export const MIN_TROOPS_BATTLE = 100_000; export type TroopFoodConsumption = { explore_wheat_burn_amount: number; explore_fish_burn_amount: number; travel_wheat_burn_amount: number; travel_fish_burn_amount: number; -}; - -export const TROOPS_FOOD_CONSUMPTION: Record = { - [ResourcesIds.Paladin]: { - explore_wheat_burn_amount: 0.01, - explore_fish_burn_amount: 0.01, - travel_wheat_burn_amount: 0.004, - travel_fish_burn_amount: 0.004, - }, - [ResourcesIds.Knight]: { - explore_wheat_burn_amount: 0.01, - explore_fish_burn_amount: 0.01, - travel_wheat_burn_amount: 0.005, - travel_fish_burn_amount: 0.005, - }, - [ResourcesIds.Crossbowman]: { - explore_wheat_burn_amount: 0.006, - explore_fish_burn_amount: 0.005, - travel_wheat_burn_amount: 0.003, - travel_fish_burn_amount: 0.003, - }, -}; +}; \ No newline at end of file diff --git a/client/sdk/packages/eternum/src/constants/utils.ts b/client/sdk/packages/eternum/src/constants/utils.ts index 14a3a81d5f..6fe565ca72 100644 --- a/client/sdk/packages/eternum/src/constants/utils.ts +++ b/client/sdk/packages/eternum/src/constants/utils.ts @@ -13,3 +13,6 @@ export const findResourceIdByTrait = (trait: string) => { export const getIconResourceId = (resourceId: number, isLabor: boolean) => { return isLabor ? resourceId - 28 : resourceId; }; + + +export const RESOURCE_PRECISION = 1_000_000_000; \ No newline at end of file diff --git a/client/sdk/packages/eternum/src/dojo/components/contractComponents.ts b/client/sdk/packages/eternum/src/dojo/contractComponents.ts similarity index 89% rename from client/sdk/packages/eternum/src/dojo/components/contractComponents.ts rename to client/sdk/packages/eternum/src/dojo/contractComponents.ts index d173da9f4e..7e3d07f20b 100644 --- a/client/sdk/packages/eternum/src/dojo/components/contractComponents.ts +++ b/client/sdk/packages/eternum/src/dojo/contractComponents.ts @@ -12,7 +12,7 @@ export function defineContractComponents(world: World) { { address: RecsType.BigInt, name: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "AddressName", types: ["felt252", "felt252"], customTypes: [], @@ -31,7 +31,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Army", types: ["u32", "u64", "u64", "u64", "u32", "enum"], customTypes: ["Troops", "BattleSide"], @@ -45,7 +45,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, arrives_at: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "ArrivalTime", types: ["u32", "u64"], customTypes: [], @@ -66,7 +66,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Bank", types: ["u32", "u128", "u128", "u16", "u16", "bool"], customTypes: [], @@ -85,7 +85,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "BankConfig", types: ["u32", "u128", "u128", "u128"], customTypes: [], @@ -146,7 +146,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Battle", types: [ "u32", @@ -213,7 +213,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "BattleConfig", types: ["u32", "u8", "u8", "u64"], customTypes: [], @@ -238,7 +238,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Building", types: ["u32", "u32", "u32", "u32", "enum", "u8", "u32", "u32", "u32", "bool"], customTypes: ["BuildingCategory"], @@ -257,7 +257,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "BuildingCategoryPopConfig", types: ["u32", "enum", "u32", "u32"], customTypes: ["BuildingCategory"], @@ -277,7 +277,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "BuildingConfig", types: ["u32", "enum", "u8", "u32", "u32"], customTypes: ["BuildingCategory"], @@ -294,7 +294,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "BuildingGeneralConfig", types: ["u32", "u16"], customTypes: [], @@ -308,7 +308,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, category: RecsType.String, value: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "BuildingQuantityv2", types: ["u32", "enum", "u8"], customTypes: ["BuildingCategory"], @@ -322,7 +322,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, category: RecsType.String }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "CapacityCategory", types: ["u32", "enum"], customTypes: ["CapacityConfigCategory"], @@ -339,7 +339,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "CapacityConfig", types: ["enum", "u128"], customTypes: ["CapacityConfigCategory"], @@ -358,7 +358,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Contribution", types: ["u32", "contractaddress", "u8", "u128"], customTypes: [], @@ -377,7 +377,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "DetachedResource", types: ["u32", "u32", "u8", "u128"], customTypes: [], @@ -391,7 +391,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, name: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "EntityName", types: ["u32", "felt252"], customTypes: [], @@ -405,7 +405,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, entity_owner_id: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "EntityOwner", types: ["u32", "u32"], customTypes: [], @@ -424,7 +424,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Epoch", types: ["u32", "u16", "u64", "array"], customTypes: [], @@ -438,7 +438,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, is_public: RecsType.Boolean, member_count: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Guild", types: ["u32", "bool", "u16"], customTypes: [], @@ -452,7 +452,7 @@ export function defineContractComponents(world: World) { { address: RecsType.BigInt, guild_entity_id: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "GuildMember", types: ["contractaddress", "u32"], customTypes: [], @@ -466,7 +466,7 @@ export function defineContractComponents(world: World) { { address: RecsType.BigInt, guild_entity_id: RecsType.Number, is_whitelisted: RecsType.Boolean }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "GuildWhitelist", types: ["contractaddress", "u32", "bool"], customTypes: [], @@ -480,7 +480,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, current: RecsType.BigInt, lifetime: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Health", types: ["u32", "u128", "u128"], customTypes: [], @@ -502,7 +502,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Hyperstructure", types: ["u32", "u16", "bool", "contractaddress", "u64", "enum", "felt252"], customTypes: ["Access"], @@ -522,7 +522,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "HyperstructureConfig", types: ["u32", "u64", "u128", "u128", "u128"], customTypes: [], @@ -541,7 +541,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "HyperstructureResourceConfig", types: ["u32", "u8", "u128", "u128"], customTypes: [], @@ -561,7 +561,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Leaderboard", types: ["u32", "u64", "u128", "u256", "bool"], customTypes: [], @@ -579,7 +579,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "LeaderboardEntry", types: ["contractaddress", "u128"], customTypes: [], @@ -597,7 +597,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "LeaderboardRewardClaimed", types: ["contractaddress", "bool"], customTypes: [], @@ -615,7 +615,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "LeaderboardRegistered", types: ["contractaddress", "bool"], customTypes: [], @@ -634,7 +634,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "LeaderboardRegisterContribution", types: ["contractaddress", "u32", "bool"], customTypes: [], @@ -654,7 +654,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "LeaderboardRegisterShare", types: ["contractaddress", "u32", "u16", "bool"], customTypes: [], @@ -674,7 +674,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Liquidity", types: ["u32", "contractaddress", "u8", "u128", "bool"], customTypes: ["Fixed"], @@ -693,7 +693,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "MapConfig", types: ["u32", "u128", "u128"], customTypes: [], @@ -713,7 +713,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Market", types: ["u32", "u8", "u128", "u128", "u128", "bool"], customTypes: ["Fixed"], @@ -731,7 +731,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "MercenariesConfig", types: ["u32", "u64", "u64", "u64"], customTypes: ["Troops"], @@ -751,7 +751,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Message", types: ["felt252", "felt252", "BytesArray", "felt252", "u64"], customTypes: [], @@ -774,7 +774,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Movable", types: ["u32", "u16", "bool", "bool", "u32", "u32", "u32", "u32"], customTypes: [], @@ -788,7 +788,7 @@ export function defineContractComponents(world: World) { { order_id: RecsType.Number, hyperstructure_count: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Orders", types: ["u32", "u32"], customTypes: [], @@ -802,7 +802,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, resource_types: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "OwnedResourcesTracker", types: ["u32", "u256"], customTypes: [], @@ -816,7 +816,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, address: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Owner", types: ["u32", "contractaddress"], customTypes: [], @@ -830,7 +830,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, population: RecsType.Number, capacity: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Population", types: ["u32", "u32", "u32"], customTypes: [], @@ -844,7 +844,7 @@ export function defineContractComponents(world: World) { { config_id: RecsType.Number, base_population: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "PopulationConfig", types: ["u32", "u32"], customTypes: [], @@ -858,7 +858,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, x: RecsType.Number, y: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Position", types: ["u32", "u32", "u32"], customTypes: [], @@ -866,89 +866,37 @@ export function defineContractComponents(world: World) { }, ); })(), - Production: (() => { - return defineComponent( - world, - { - entity_id: RecsType.Number, - resource_type: RecsType.Number, - building_count: RecsType.Number, - production_rate: RecsType.BigInt, - consumption_rate: RecsType.BigInt, - last_updated_tick: RecsType.BigInt, - input_finish_tick: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "Production", - types: ["u32", "u8", "u8", "u128", "u128", "u64", "u64"], - customTypes: [], - }, - }, - ); - })(), ProductionConfig: (() => { return defineComponent( world, { resource_type: RecsType.Number, - amount: RecsType.BigInt, - input_count: RecsType.BigInt, - output_count: RecsType.BigInt, + produced_amount: RecsType.BigInt, + labor_cost: RecsType.BigInt, }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "ProductionConfig", - types: ["u8", "u128", "u128", "u128"], + types: ["u8", "u128", "u128"], customTypes: [], }, }, ); })(), - ProductionDeadline: (() => { + LaborConfig: (() => { return defineComponent( world, - { entity_id: RecsType.Number, deadline_tick: RecsType.Number }, { - metadata: { - namespace: "s0_eternum", - name: "ProductionDeadline", - types: ["u32", "u64"], - customTypes: [], - }, - }, - ); - })(), - ProductionInput: (() => { - return defineComponent( - world, - { - output_resource_type: RecsType.Number, - index: RecsType.Number, - input_resource_type: RecsType.Number, - input_resource_amount: RecsType.BigInt, - }, - { - metadata: { - namespace: "s0_eternum", - name: "ProductionInput", - types: ["u8", "u8", "u8", "u128"], - customTypes: [], - }, + resource_type: RecsType.Number, + input_id: RecsType.Number, + input_count: RecsType.Number, }, - ); - })(), - ProductionOutput: (() => { - return defineComponent( - world, - { input_resource_type: RecsType.Number, index: RecsType.Number, output_resource_type: RecsType.Number }, { metadata: { - namespace: "s0_eternum", - name: "ProductionOutput", - types: ["u8", "u8", "u8"], + namespace: "s1_eternum", + name: "LaborConfig", + types: ["u8", "u32", "u8"], customTypes: [], }, }, @@ -960,7 +908,7 @@ export function defineContractComponents(world: World) { { hyperstructure_entity_id: RecsType.Number, resource_type: RecsType.Number, amount: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Progress", types: ["u32", "u8", "u128"], customTypes: [], @@ -974,7 +922,7 @@ export function defineContractComponents(world: World) { { army_id: RecsType.Number, protectee_id: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Protectee", types: ["u32", "u32"], customTypes: [], @@ -988,7 +936,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, army_id: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Protector", types: ["u32", "u32"], customTypes: [], @@ -1002,7 +950,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, value: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Quantity", types: ["u32", "u128"], customTypes: [], @@ -1016,7 +964,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.BigInt, count: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "QuantityTracker", types: ["felt252", "u128"], customTypes: [], @@ -1030,7 +978,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, config_id: RecsType.Number, completed: RecsType.Boolean }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Quest", types: ["u32", "u32", "bool"], customTypes: [], @@ -1038,41 +986,13 @@ export function defineContractComponents(world: World) { }, ); })(), - QuestBonus: (() => { - return defineComponent( - world, - { entity_id: RecsType.Number, resource_type: RecsType.Number, claimed: RecsType.Boolean }, - { - metadata: { - namespace: "s0_eternum", - name: "QuestBonus", - types: ["u32", "u8", "bool"], - customTypes: [], - }, - }, - ); - })(), - QuestConfig: (() => { - return defineComponent( - world, - { config_id: RecsType.Number, production_material_multiplier: RecsType.Number }, - { - metadata: { - namespace: "s0_eternum", - name: "QuestConfig", - types: ["u32", "u16"], - customTypes: [], - }, - }, - ); - })(), QuestRewardConfig: (() => { return defineComponent( world, { quest_id: RecsType.Number, detached_resource_id: RecsType.Number, detached_resource_count: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "QuestRewardConfig", types: ["u32", "u32", "u32"], customTypes: [], @@ -1090,13 +1010,12 @@ export function defineContractComponents(world: World) { order: RecsType.Number, level: RecsType.Number, has_wonder: RecsType.Boolean, - settler_address: RecsType.BigInt, }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Realm", - types: ["u32", "u32", "u128", "u8", "u8", "bool", "contractaddress"], + types: ["u32", "u32", "u128", "u8", "u8", "bool"], customTypes: [], }, }, @@ -1108,7 +1027,7 @@ export function defineContractComponents(world: World) { { level: RecsType.Number, required_resources_id: RecsType.Number, required_resource_count: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "RealmLevelConfig", types: ["u8", "u32", "u8"], customTypes: [], @@ -1122,7 +1041,7 @@ export function defineContractComponents(world: World) { { config_id: RecsType.Number, max_level: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "RealmMaxLevelConfig", types: ["u32", "u8"], customTypes: [], @@ -1133,12 +1052,21 @@ export function defineContractComponents(world: World) { Resource: (() => { return defineComponent( world, - { entity_id: RecsType.Number, resource_type: RecsType.Number, balance: RecsType.BigInt }, + { entity_id: RecsType.Number, + resource_type: RecsType.Number, + balance: RecsType.BigInt, + production: { + building_count: RecsType.Number, + production_rate: RecsType.BigInt, + labor_units_left: RecsType.BigInt, + last_updated_tick: RecsType.Number, + } + }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Resource", - types: ["u32", "u8", "u128"], + types: ["u32", "u8", "u128","u8", "u128", "u64", "u32"], customTypes: [], }, }, @@ -1155,7 +1083,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "ResourceAllowance", types: ["u32", "u32", "u8", "u128"], customTypes: [], @@ -1181,7 +1109,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "ResourceBridgeFeeSplitConfig", types: [ "u32", @@ -1210,7 +1138,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "ResourceBridgeWhitelistConfig", types: ["ContractAddress", "u8"], customTypes: [], @@ -1224,7 +1152,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, index: RecsType.Number, resource_type: RecsType.Number, amount: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "ResourceCost", types: ["u32", "u32", "u8", "u128"], customTypes: [], @@ -1238,7 +1166,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, start_at: RecsType.BigInt, release_at: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "ResourceTransferLock", types: ["u32", "u64", "u64"], customTypes: [], @@ -1257,7 +1185,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Season", types: ["u32", "u64", "bool", "u64"], customTypes: [], @@ -1276,7 +1204,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "SeasonAddressesConfig", types: ["u32", "ContractAddress", "ContractAddress", "ContractAddress"], customTypes: [], @@ -1293,7 +1221,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "SeasonBridgeConfig", types: ["u32", "u64"], customTypes: [], @@ -1318,7 +1246,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "SettlementConfig", types: ["u32", "u128", "u32", "u128", "u32", "u32", "u32", "u64", "u64"], customTypes: [], @@ -1337,7 +1265,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "SpeedConfig", types: ["u32", "u32", "u32", "u16"], customTypes: [], @@ -1351,7 +1279,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, amount: RecsType.Number, last_refill_tick: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Stamina", types: ["u32", "u16", "u64"], customTypes: [], @@ -1365,7 +1293,7 @@ export function defineContractComponents(world: World) { { config_id: RecsType.Number, unit_type: RecsType.Number, max_stamina: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "StaminaConfig", types: ["u32", "u8", "u16"], customTypes: [], @@ -1379,7 +1307,7 @@ export function defineContractComponents(world: World) { { config_id: RecsType.Number, amount_per_tick: RecsType.Number, start_boost_tick_count: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "StaminaRefillConfig", types: ["u32", "u16", "u8"], customTypes: [], @@ -1393,7 +1321,7 @@ export function defineContractComponents(world: World) { { trade_id: RecsType.Number, value: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Status", types: ["u32", "u128"], customTypes: [], @@ -1407,7 +1335,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, category: RecsType.String, created_at: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Structure", types: ["u32", "enum", "u64"], customTypes: ["StructureCategory"], @@ -1421,7 +1349,7 @@ export function defineContractComponents(world: World) { { coord: { x: RecsType.Number, y: RecsType.Number }, count: RecsType.Number }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "StructureCount", types: ["u32", "u32", "u8"], customTypes: ["Coord"], @@ -1435,7 +1363,7 @@ export function defineContractComponents(world: World) { { config_id: RecsType.Number, tick_id: RecsType.Number, tick_interval_in_seconds: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "TickConfig", types: ["u32", "u8", "u64"], customTypes: [], @@ -1455,7 +1383,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Tile", types: ["u32", "u32", "u32", "u64", "enum"], customTypes: ["Biome"], @@ -1482,7 +1410,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Trade", types: ["u32", "u32", "u32", "u32", "felt252", "u128", "u32", "u32", "u32", "felt252", "u128", "u64"], customTypes: [], @@ -1503,7 +1431,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "TravelFoodCostConfig", types: ["u32", "u8", "u128", "u128", "u128", "u128"], customTypes: [], @@ -1521,7 +1449,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "TravelStaminaCostConfig", types: ["u32", "u8", "u16"], customTypes: [], @@ -1552,7 +1480,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "TroopConfig", types: [ "u32", @@ -1583,7 +1511,7 @@ export function defineContractComponents(world: World) { { entity_id: RecsType.Number, value: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Weight", types: ["u32", "u128"], customTypes: [], @@ -1602,7 +1530,7 @@ export function defineContractComponents(world: World) { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "WeightConfig", types: ["u32", "u32", "u32", "u128"], customTypes: [], @@ -1616,7 +1544,7 @@ export function defineContractComponents(world: World) { { config_id: RecsType.Number, admin_address: RecsType.BigInt, realm_l2_contract: RecsType.BigInt }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "WorldConfig", types: ["u32", "contractaddress", "contractaddress"], customTypes: [], @@ -1643,7 +1571,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "AcceptOrder", types: ["u32", "u32", "u32", "u32", "u64"], customTypes: [], @@ -1671,7 +1599,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "BattleClaimData", types: [ "u32", @@ -1711,7 +1639,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "BattleJoinData", types: [ "u32", @@ -1750,7 +1678,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "BattleLeaveData", types: [ "u32", @@ -1804,7 +1732,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "BattlePillageData", types: [ "u32", @@ -1859,7 +1787,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "BattleStartData", types: [ "u32", @@ -1894,7 +1822,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "BurnDonkey", types: ["ContractAddress", "u32", "u128", "u64"], customTypes: [], @@ -1913,7 +1841,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "CreateGuild", types: ["u32", "felt252", "u64"], customTypes: [], @@ -1931,7 +1859,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "GameEnded", types: ["ContractAddress", "u64"], customTypes: [], @@ -1952,7 +1880,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "HyperstructureContribution", types: ["u32", "u32", "u32", "array", "u64"], customTypes: [], @@ -1973,7 +1901,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "HyperstructureFinished", types: ["u32", "u32", "u32", "felt252", "u64"], customTypes: [], @@ -1993,7 +1921,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "JoinGuild", types: ["u32", "ContractAddress", "felt252", "u64"], customTypes: [], @@ -2017,7 +1945,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "LiquidityEvent", types: ["u32", "u32", "u8", "u128", "u128", "u128", "bool", "u64"], customTypes: [], @@ -2041,7 +1969,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "MapExplored", types: ["u32", "u32", "u32", "u32", "u32", "Biome", "array", "u64"], customTypes: [], @@ -2068,7 +1996,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "SwapEvent", types: ["u32", "u32", "u32", "u8", "u128", "u128", "u128", "u128", "u128", "bool", "u64"], customTypes: [], @@ -2100,7 +2028,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "SettleRealmData", types: [ "u32", @@ -2138,7 +2066,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Transfer", types: ["u32", "u32", "u32", "array", "u64"], customTypes: ["Coord"], @@ -2161,7 +2089,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "Travel", types: ["u32", "u32", "ContractAddress", "u32", "array", "u64"], customTypes: ["Coord"], @@ -2181,7 +2109,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "TrophyProgression", types: ["felt252", "felt252", "u32", "u64"], customTypes: [], @@ -2200,7 +2128,7 @@ const eventsComponents = (world: World) => { }, { metadata: { - namespace: "s0_eternum", + namespace: "s1_eternum", name: "HyperstructureCoOwnersChange", types: ["u32", "u32", "array", "u64"], customTypes: [], diff --git a/client/sdk/packages/eternum/src/dojo/components/createClientComponents.ts b/client/sdk/packages/eternum/src/dojo/createClientComponents.ts similarity index 90% rename from client/sdk/packages/eternum/src/dojo/components/createClientComponents.ts rename to client/sdk/packages/eternum/src/dojo/createClientComponents.ts index 209247ab6a..6cbad7438d 100644 --- a/client/sdk/packages/eternum/src/dojo/components/createClientComponents.ts +++ b/client/sdk/packages/eternum/src/dojo/createClientComponents.ts @@ -3,7 +3,7 @@ import { ContractComponents } from "./contractComponents"; export type ClientComponents = ReturnType; -export function createClientComponents(contractComponents: ContractComponents) { +export function createClientComponents({ contractComponents }: { contractComponents: ContractComponents }) { return { ...contractComponents, Building: overridableComponent(contractComponents.Building), diff --git a/client/sdk/packages/eternum/src/dojo/index.ts b/client/sdk/packages/eternum/src/dojo/index.ts new file mode 100644 index 0000000000..a668e9cb14 --- /dev/null +++ b/client/sdk/packages/eternum/src/dojo/index.ts @@ -0,0 +1,2 @@ +export * from "./contractComponents"; +export * from "./createClientComponents"; diff --git a/client/sdk/packages/eternum/src/index.ts b/client/sdk/packages/eternum/src/index.ts index f991f7b8f4..0d94d32336 100644 --- a/client/sdk/packages/eternum/src/index.ts +++ b/client/sdk/packages/eternum/src/index.ts @@ -1,5 +1,5 @@ -export * from "./config"; export * from "./constants"; +export * from "./dojo"; export * from "./modelManager"; export * from "./provider"; export * from "./types"; diff --git a/client/sdk/packages/eternum/src/modelManager/ArmyManager.ts b/client/sdk/packages/eternum/src/modelManager/ArmyManager.ts index 3d8415835c..7dc6e149eb 100644 --- a/client/sdk/packages/eternum/src/modelManager/ArmyManager.ts +++ b/client/sdk/packages/eternum/src/modelManager/ArmyManager.ts @@ -3,7 +3,7 @@ import { getEntityIdFromKeys } from "@dojoengine/utils"; import { uuid } from "@latticexyz/utils"; import { Account, AccountInterface } from "starknet"; import { ResourcesIds } from "../constants"; -import { ClientComponents } from "../dojo/components/createClientComponents"; +import { ClientComponents } from "../dojo/createClientComponents"; import { EternumProvider } from "../provider"; import { ID } from "../types"; import { ResourceManager } from "./ResourceManager"; diff --git a/client/sdk/packages/eternum/src/modelManager/ArmyMovementManager.ts b/client/sdk/packages/eternum/src/modelManager/ArmyMovementManager.ts index ad325a0541..e89d821cbb 100644 --- a/client/sdk/packages/eternum/src/modelManager/ArmyMovementManager.ts +++ b/client/sdk/packages/eternum/src/modelManager/ArmyMovementManager.ts @@ -9,7 +9,7 @@ import { getNeighborHexes, ResourcesIds, } from "../constants"; -import { ClientComponents } from "../dojo/components/createClientComponents"; +import { ClientComponents } from "../dojo/createClientComponents"; import { EternumProvider } from "../provider"; import { ContractAddress, ID, TravelTypes, type HexPosition } from "../types"; import { multiplyByPrecision } from "../utils"; diff --git a/client/sdk/packages/eternum/src/modelManager/BattleManager.ts b/client/sdk/packages/eternum/src/modelManager/BattleManager.ts index 9aabb7c6f2..1d571b5f38 100644 --- a/client/sdk/packages/eternum/src/modelManager/BattleManager.ts +++ b/client/sdk/packages/eternum/src/modelManager/BattleManager.ts @@ -1,62 +1,24 @@ import { ComponentValue, Components, Has, HasValue, getComponentValue, runQuery } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; -import { EternumGlobalConfig, MIN_TROOPS_BATTLE } from "../constants"; -import { ClientComponents } from "../dojo/components/createClientComponents"; +import { MIN_TROOPS_BATTLE, RESOURCE_PRECISION } from "../constants"; +import { ClientComponents } from "../dojo/createClientComponents"; import { EternumProvider } from "../provider"; -import { BattleSide, Health, ID } from "../types"; +import { + BattleSide, + BattleStartStatus, + BattleStatus, + BattleType, + ClaimStatus, + Health, + ID, + LeaveStatus, + RaidStatus, +} from "../types"; import { multiplyByPrecision } from "../utils"; import { configManager } from "./ConfigManager"; import { StaminaManager } from "./StaminaManager"; import { ArmyInfo, DojoAccount, Structure } from "./types"; -export enum BattleType { - Hex, - Structure, -} - -export enum BattleStatus { - BattleStart = "Start battle", - BattleOngoing = "", - UserWon = "Victory", - UserLost = "Defeat", - BattleEnded = "Battle has ended", -} - -export enum RaidStatus { - isRaidable = "Raid!", - NoStamina = "Not enough stamina", - NoStructureToClaim = "No structure to raid", - OwnStructure = "Can't raid your own structure", - NoArmy = "No army selected", - ArmyNotInBattle = "Selected army not in this battle", - MinTroops = "Minimum 100 troops required", -} - -export enum LeaveStatus { - Leave = "Leave", - NoBattleToLeave = "No battle to leave", - DefenderCantLeaveOngoing = "A defender can't leave an ongoing battle", - NoArmyInBattle = "Your armies aren't in this battle", -} - -export enum BattleStartStatus { - MinTroops = "Minimum 100 troops required", - BattleStart = "Start battle", - ForceStart = "Force start", - NothingToAttack = "Nothing to attack", - CantStart = "Can't start a battle now.", -} - -export enum ClaimStatus { - Claimable = "Claim", - NoSelectedArmy = "No selected army", - BattleOngoing = "Battle ongoing", - DefenderPresent = "An army's defending the structure", - NoStructureToClaim = "No structure to claim", - StructureIsMine = "Can't claim your own structure", - SelectedArmyIsDead = "Selected army is dead", -} - export class BattleManager { battleType: BattleType | undefined; @@ -66,6 +28,11 @@ export class BattleManager { public readonly battleEntityId: ID, ) {} + public getArmiesInBattle(): ID[] { + const armiesEntityIds = runQuery([HasValue(this.components.Army, { battle_id: this.battleEntityId })]); + return Array.from(armiesEntityIds).map((entityId) => getComponentValue(this.components.Army, entityId)!.entity_id); + } + public getUpdatedBattle(currentTimestamp: number) { const battle = this.getBattle(); if (!battle) return; @@ -167,13 +134,6 @@ export class BattleManager { return date; } - // todo: used deleteEntity directly in the react app, check if works there - // public deleteBattle() { - // removeComponent(this.components.Battle, getEntityIdFromKeys([BigInt(this.battleEntityId)])); - // this.dojo.network.world.deleteEntity(getEntityIdFromKeys([BigInt(this.battleEntityId)])); - // this.battleEntityId = 0; - // } - public isBattleOngoing(currentTimestamp: number): boolean { const battle = this.getBattle(); @@ -190,6 +150,10 @@ export class BattleManager { return getComponentValue(this.components.Battle, getEntityIdFromKeys([BigInt(this.battleEntityId)])); } + public getPosition(): ComponentValue | undefined { + return getComponentValue(this.components.Position, getEntityIdFromKeys([BigInt(this.battleEntityId)])); + } + public getUpdatedArmy( army: ArmyInfo | undefined, updatedBattle: ComponentValue | undefined, @@ -213,14 +177,14 @@ export class BattleManager { Number(cloneArmy.troops.knight_count) * this.getRemainingPercentageOfTroops(battle_army.troops.knight_count, battle_army_lifetime.troops.knight_count); cloneArmy.troops.knight_count = BigInt( - remainingKnights - (remainingKnights % EternumGlobalConfig.resources.resourcePrecision), + remainingKnights - (remainingKnights % RESOURCE_PRECISION), ); const remainingPaladins = Number(cloneArmy.troops.paladin_count) * this.getRemainingPercentageOfTroops(battle_army.troops.paladin_count, battle_army_lifetime.troops.paladin_count); cloneArmy.troops.paladin_count = BigInt( - remainingPaladins - (remainingPaladins % EternumGlobalConfig.resources.resourcePrecision), + remainingPaladins - (remainingPaladins % RESOURCE_PRECISION), ); const remainingCrossbowmen = @@ -230,7 +194,7 @@ export class BattleManager { battle_army_lifetime.troops.crossbowman_count, ); cloneArmy.troops.crossbowman_count = BigInt( - remainingCrossbowmen - (remainingCrossbowmen % EternumGlobalConfig.resources.resourcePrecision), + remainingCrossbowmen - (remainingCrossbowmen % RESOURCE_PRECISION), ); cloneArmy.health.current = this.getTroopFullHealth(cloneArmy.troops); @@ -362,23 +326,6 @@ export class BattleManager { ); } - public async pillageStructure(signer: DojoAccount, raider: ArmyInfo, structureEntityId: ID) { - if (this.battleEntityId !== 0 && this.battleEntityId === raider.battle_id) { - await this.provider.battle_leave_and_pillage({ - signer, - army_id: raider.entity_id, - battle_id: this.battleEntityId, - structure_id: structureEntityId, - }); - } else { - await this.provider.battle_pillage({ - signer, - army_id: raider.entity_id, - structure_id: structureEntityId, - }); - } - } - public getBattleType(structure: Structure | undefined): BattleType { if (this.battleType) return this.battleType; @@ -391,6 +338,13 @@ export class BattleManager { return this.battleType; } + public getEscrowIds(): { attacker: ID; defender: ID } { + const battle = this.getBattle(); + if (!battle) return { attacker: 0, defender: 0 }; + + return { attacker: battle.attackers_resources_escrow_id, defender: battle.defenders_resources_escrow_id }; + } + public getWinner(currentTimestamp: number, ownArmySide: string): BattleStatus { const battle = this.getUpdatedBattle(currentTimestamp); if (!battle) return BattleStatus.BattleStart; @@ -420,7 +374,7 @@ export class BattleManager { return BigInt( Math.floor( (totalKnightHealth + totalPaladinHealth + totalCrossbowmanHealth) / - EternumGlobalConfig.resources.resourceMultiplier, + RESOURCE_PRECISION, ), ); } @@ -449,21 +403,21 @@ export class BattleManager { let paladin_count = (health.current * currentTroops.paladin_count) / health.lifetime; let crossbowman_count = (health.current * currentTroops.crossbowman_count) / health.lifetime; - if (knight_count < EternumGlobalConfig.resources.resourcePrecision) { + if (knight_count < RESOURCE_PRECISION) { knight_count = 0n; } - if (paladin_count < EternumGlobalConfig.resources.resourcePrecision) { + if (paladin_count < RESOURCE_PRECISION) { paladin_count = 0n; } - if (crossbowman_count < EternumGlobalConfig.resources.resourcePrecision) { + if (crossbowman_count < RESOURCE_PRECISION) { crossbowman_count = 0n; } return { - knight_count: knight_count - (knight_count % BigInt(EternumGlobalConfig.resources.resourcePrecision)), - paladin_count: paladin_count - (paladin_count % BigInt(EternumGlobalConfig.resources.resourcePrecision)), + knight_count: knight_count - (knight_count % BigInt(RESOURCE_PRECISION)), + paladin_count: paladin_count - (paladin_count % BigInt(RESOURCE_PRECISION)), crossbowman_count: - crossbowman_count - (crossbowman_count % BigInt(EternumGlobalConfig.resources.resourcePrecision)), + crossbowman_count - (crossbowman_count % BigInt(RESOURCE_PRECISION)), }; }; @@ -519,4 +473,21 @@ export class BattleManager { if (lifetime_troops === 0n) return 0; return Number(current_troops) / Number(lifetime_troops); } + + public async pillageStructure(signer: DojoAccount, raider: ArmyInfo, structureEntityId: ID) { + if (this.battleEntityId !== 0 && this.battleEntityId === raider.battle_id) { + await this.provider.battle_leave_and_pillage({ + signer, + army_id: raider.entity_id, + battle_id: this.battleEntityId, + structure_id: structureEntityId, + }); + } else { + await this.provider.battle_pillage({ + signer, + army_id: raider.entity_id, + structure_id: structureEntityId, + }); + } + } } diff --git a/client/sdk/packages/eternum/src/modelManager/ConfigManager.ts b/client/sdk/packages/eternum/src/modelManager/ConfigManager.ts index 9dfde0af41..7c7b98ce78 100644 --- a/client/sdk/packages/eternum/src/modelManager/ConfigManager.ts +++ b/client/sdk/packages/eternum/src/modelManager/ConfigManager.ts @@ -5,22 +5,22 @@ import { BUILDING_CATEGORY_POPULATION_CONFIG_ID, BuildingType, CapacityConfigCategory, - EternumGlobalConfig, GET_HYPERSTRUCTURE_RESOURCES_PER_TIER, HYPERSTRUCTURE_CONFIG_ID, POPULATION_CONFIG_ID, + RESOURCE_PRECISION, ResourcesIds, ResourceTier, StructureType, WORLD_CONFIG_ID, } from "../constants"; -import { ContractComponents } from "../dojo/components/contractComponents"; -import { TickIds, TravelTypes } from "../types"; +import { ContractComponents } from "../dojo/contractComponents"; +import { Config, TickIds, TravelTypes } from "../types"; export class ClientConfigManager { private static _instance: ClientConfigManager; private components!: ContractComponents; - + private config!: Config; resourceInputs: Record = {}; resourceOutput: Record = {}; hyperstructureTotalCosts: Record = {}; @@ -29,8 +29,9 @@ export class ClientConfigManager { resourceBuildingCosts: Record = {}; structureCosts: Record = {}; - public setDojo(components: ContractComponents) { + public setDojo(components: ContractComponents, config: Config) { this.components = components; + this.config = config; this.initializeResourceInputs(); this.initializeResourceOutput(); this.initializeHyperstructureTotalCosts(); @@ -82,15 +83,15 @@ export class ClientConfigManager { // this.resourceInputs[Number(resourceType)] = inputs; // } - this.resourceInputs = Object.entries(EternumGlobalConfig.resources.resourceInputs).reduce( + this.resourceInputs = Object.entries(this.config.resources.resourceInputs).reduce( (acc, [key, inputs]) => { acc[Number(key)] = inputs.map((input: { resource: number; amount: number }) => ({ resource: input.resource, - amount: input.amount * this.getResourceMultiplier(), + amount: input.amount })); return acc; }, - {} as typeof EternumGlobalConfig.resources.resourceInputs, + {} as typeof this.config.resources.resourceInputs, ); } @@ -105,7 +106,7 @@ export class ClientConfigManager { this.resourceOutput[Number(resourceType)] = { resource: Number(resourceType) as ResourcesIds, - amount: this.divideByPrecision(Number(productionConfig?.amount)), + amount: this.divideByPrecision(Number(productionConfig?.produced_amount)), }; } } @@ -120,10 +121,10 @@ export class ClientConfigManager { ); const min_amount = - Number(hyperstructureResourceConfig?.min_amount ?? 0) / EternumGlobalConfig.resources.resourcePrecision; + Number(hyperstructureResourceConfig?.min_amount ?? 0) / RESOURCE_PRECISION; const max_amount = - Number(hyperstructureResourceConfig?.max_amount ?? 0) / EternumGlobalConfig.resources.resourcePrecision; + Number(hyperstructureResourceConfig?.max_amount ?? 0) / RESOURCE_PRECISION; hyperstructureTotalCosts.push({ resource: resourceTier as ResourceTier, min_amount, max_amount }); } @@ -160,9 +161,9 @@ export class ClientConfigManager { // this.realmUpgradeCosts[index] = resources; // } this.realmUpgradeCosts = Object.fromEntries( - Object.entries(EternumGlobalConfig.realmUpgradeCosts).map(([key, costs]) => [ + Object.entries(this.config.realmUpgradeCosts).map(([key, costs]) => [ key, - costs.map((cost: any) => ({ ...cost, amount: cost.amount * this.getResourceMultiplier() })), + costs.map((cost: any) => ({ ...cost, amount: cost.amount})), ]), ); } @@ -188,7 +189,7 @@ export class ClientConfigManager { // } // const resourceType = resourceCost.resource_type; - // const amount = Number(resourceCost.amount) / EternumGlobalConfig.resources.resourcePrecision; + // const amount = Number(resourceCost.amount) / RESOURCE_PRECISION; // resourceCosts.push({ resource: resourceType, amount }); // } @@ -196,9 +197,9 @@ export class ClientConfigManager { // } this.resourceBuildingCosts = Object.fromEntries( - Object.entries(EternumGlobalConfig.resources.resourceBuildingCosts).map(([key, costs]) => [ + Object.entries(this.config.resources.resourceBuildingCosts).map(([key, costs]) => [ key, - costs.map((cost: any) => ({ ...cost, amount: cost.amount * this.getResourceMultiplier() })), + costs.map((cost: any) => ({ ...cost, amount: cost.amount })), ]), ); } @@ -233,9 +234,9 @@ export class ClientConfigManager { // this.buildingCosts[Number(buildingType)] = resourceCosts; // } this.buildingCosts = Object.fromEntries( - Object.entries(EternumGlobalConfig.buildings.buildingCosts).map(([key, costs]) => [ + Object.entries(this.config.buildings.buildingCosts).map(([key, costs]) => [ key, - costs.map((cost: any) => ({ ...cost, amount: cost.amount * this.getResourceMultiplier() })), + costs.map((cost: any) => ({ ...cost, amount: cost.amount })), ]), ); } @@ -577,7 +578,7 @@ export class ClientConfigManager { getEntityIdFromKeys([BigInt(resourceType)]), ); - return Number(productionConfig?.amount ?? 0); + return Number(productionConfig?.produced_amount ?? 0); }, 0); } @@ -616,23 +617,23 @@ export class ClientConfigManager { } getResourceRarity(resourceId: ResourcesIds) { - return EternumGlobalConfig.resources.resourceRarity[resourceId] ?? 0; + return this.config.resources.resourceRarity[resourceId] ?? 0; } getResourcePrecision() { - return EternumGlobalConfig.resources.resourcePrecision; + return RESOURCE_PRECISION; } divideByPrecision(value: number) { - return value / EternumGlobalConfig.resources.resourcePrecision; + return value / RESOURCE_PRECISION; } getResourceMultiplier() { - return EternumGlobalConfig.resources.resourceMultiplier; + return this.config.resources.resourceMultiplier; } getResourceBuildingProduced(buildingType: BuildingType) { - return EternumGlobalConfig.buildings.buildingResourceProduced[buildingType] ?? 0; + return this.config.buildings.buildingResourceProduced[buildingType] ?? 0; } getBuildingBaseCostPercentIncrease() { diff --git a/client/sdk/packages/eternum/src/modelManager/LeaderboardManager.ts b/client/sdk/packages/eternum/src/modelManager/LeaderboardManager.ts index 02344f6e48..feb879ef47 100644 --- a/client/sdk/packages/eternum/src/modelManager/LeaderboardManager.ts +++ b/client/sdk/packages/eternum/src/modelManager/LeaderboardManager.ts @@ -1,8 +1,9 @@ -import { Entity, getComponentValue, HasValue, runQuery } from "@dojoengine/recs"; +import { ComponentValue, Entity, getComponentValue, HasValue, runQuery } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { RESOURCE_RARITY, ResourcesIds, WORLD_CONFIG_ID } from "../constants"; -import { ClientComponents } from "../dojo/components/createClientComponents"; -import { ContractAddress, GuildInfo, ID, TickIds } from "../types"; +import { ClientComponents } from "../dojo/createClientComponents"; +import { ContractAddress, GuildInfo, ID, Resource, TickIds } from "../types"; +import { divideByPrecision } from "../utils"; import { configManager } from "./ConfigManager"; export class LeaderboardManager { @@ -130,7 +131,7 @@ export class LeaderboardManager { const epochEndTimestamp = season.is_over && nextEpoch === undefined ? season.ended_at - : nextEpoch?.start_timestamp ?? BigInt(currentTimestamp); + : (nextEpoch?.start_timestamp ?? BigInt(currentTimestamp)); const epochDuration = epochEndTimestamp - epoch.start_timestamp; const nbOfCycles = Number(epochDuration) / configManager.getTick(TickIds.Default); @@ -177,4 +178,49 @@ export class LeaderboardManager { return 0; } + + public getContributions = (hyperstructureEntityId: ID) => { + const contributionsToHyperstructure = Array.from( + runQuery([HasValue(this.components.Contribution, { hyperstructure_entity_id: hyperstructureEntityId })]), + ).map((id) => getComponentValue(this.components.Contribution, id)); + + return contributionsToHyperstructure as ComponentValue[]; + }; + + public getHyperstructuresWithContributionsFromPlayer = (address: ContractAddress) => { + const entityIds = runQuery([HasValue(this.components.Contribution, { player_address: address })]); + const hyperstructureEntityIds = Array.from(entityIds).map( + (entityId) => getComponentValue(this.components.Contribution, entityId)?.hyperstructure_entity_id ?? 0, + ); + return new Set(hyperstructureEntityIds); + }; + + public getPlayerUnregistredContributions = (address: ContractAddress) => { + const registeredContributionsEntities = runQuery([ + HasValue(this.components.LeaderboardRegisterContribution, { address: address }), + ]); + const registeredContributions = Array.from(registeredContributionsEntities) + .map( + (entityId) => + getComponentValue(this.components.LeaderboardRegisterContribution, entityId)?.hyperstructure_entity_id, + ) + .filter((x): x is number => x !== undefined); + const hyperstructuresContributedTo = Array.from(this.getHyperstructuresWithContributionsFromPlayer(address)); + return hyperstructuresContributedTo.filter( + (hyperstructureEntityId) => + !registeredContributions.some((contribution) => contribution === hyperstructureEntityId), + ); + }; + + public getContributionsTotalPercentage = (hyperstructureId: number, contributions: Resource[]) => { + const totalPlayerContribution = divideByPrecision( + contributions.reduce((acc, { amount, resourceId }) => { + return acc + amount * configManager.getResourceRarity(resourceId); + }, 0), + ); + + const totalHyperstructureContribution = configManager.getHyperstructureTotalContributableAmount(hyperstructureId); + + return totalPlayerContribution / totalHyperstructureContribution; + }; } diff --git a/client/sdk/packages/eternum/src/modelManager/MarketManager.ts b/client/sdk/packages/eternum/src/modelManager/MarketManager.ts index 1bd17861fc..084e4e17f5 100644 --- a/client/sdk/packages/eternum/src/modelManager/MarketManager.ts +++ b/client/sdk/packages/eternum/src/modelManager/MarketManager.ts @@ -1,7 +1,7 @@ import { getComponentValue, HasValue, runQuery, type ComponentValue } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { ResourcesIds } from "../constants"; -import { ClientComponents } from "../dojo/components/createClientComponents"; +import { ClientComponents } from "../dojo/createClientComponents"; import { ContractAddress, ID } from "../types"; import { configManager } from "./ConfigManager"; diff --git a/client/sdk/packages/eternum/src/modelManager/ResourceInventoryManager.ts b/client/sdk/packages/eternum/src/modelManager/ResourceInventoryManager.ts index 6e382b550f..02e69ba638 100644 --- a/client/sdk/packages/eternum/src/modelManager/ResourceInventoryManager.ts +++ b/client/sdk/packages/eternum/src/modelManager/ResourceInventoryManager.ts @@ -1,7 +1,7 @@ import { getComponentValue } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { uuid } from "@latticexyz/utils"; -import { ClientComponents } from "../dojo/components/createClientComponents"; +import { ClientComponents } from "../dojo/createClientComponents"; import { EternumProvider } from "../provider"; import { type ID, type Resource } from "../types"; import { DojoAccount } from "./types"; diff --git a/client/sdk/packages/eternum/src/modelManager/ResourceManager.ts b/client/sdk/packages/eternum/src/modelManager/ResourceManager.ts index f64a037925..13d6c42d2d 100644 --- a/client/sdk/packages/eternum/src/modelManager/ResourceManager.ts +++ b/client/sdk/packages/eternum/src/modelManager/ResourceManager.ts @@ -2,7 +2,7 @@ import { getComponentValue } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { BuildingType, CapacityConfigCategory, ResourcesIds, StructureType } from "../constants"; -import { ClientComponents } from "../dojo/components/createClientComponents"; +import { ClientComponents } from "../dojo/createClientComponents"; import { ID } from "../types"; import { gramToKg, multiplyByPrecision } from "../utils"; import { configManager } from "./ConfigManager"; @@ -21,41 +21,20 @@ export class ResourceManager { } public getProduction() { - return this._getProduction(this.resourceId); + return this._getResource()?.production; } public getResource() { - return this._getResource(this.resourceId); + return this._getResource(); } public isActive(): boolean { - const production = this._getProduction(this.resourceId); - return production !== undefined && (production.building_count > 0 || production.consumption_rate > 0); - } - - public netRate(): [boolean, number] { - return this._netRate(this.resourceId); - } - - public balanceExhaustionTick(currentTick: number): number { - return this._balanceExhaustionTick(currentTick, this.resourceId); - } - - public productionDuration(currentTick: number): number { - return this._productionDuration(currentTick, this.resourceId); - } - - public depletionDuration(currentTick: number): number { - return this._depletionDuration(currentTick, this.resourceId); + const production = this.getProduction(); + return production !== undefined && (production.building_count > 0); } public balance(currentTick: number): number { - return this._balance(currentTick, this.resourceId); - } - - public timeUntilFinishTick(currentTick: number): number { - const finishTick = this._finish_tick(); - return finishTick > currentTick ? finishTick - currentTick : 0; + return Number(this._balance(currentTick)); } public optimisticResourceUpdate = (overrideId: string, change: bigint) => { @@ -71,27 +50,18 @@ export class ResourceManager { }; public timeUntilValueReached(currentTick: number, value: number): number { - const production = this._getProduction(this.resourceId); - const resource = this._getResource(this.resourceId); - - if (!production || !resource) return 0; + const production = this.getProduction(); + if (!production || production.production_rate === 0n) return 0; - const [sign, rate] = this._netRate(this.resourceId); const balance = this.balance(currentTick); + if (value <= Number(balance)) return 0; - if (rate !== 0) { - if (sign) { - // Positive net rate, increase balance - const timeToValue = (value - balance) / rate; - return Math.round(timeToValue > 0 ? timeToValue : 0); - } else { - // Negative net rate, decrease balance but not below zero - const timeToValue = balance / -rate; - return Math.round(timeToValue > 0 ? timeToValue : 0); - } - } else { - return 0; - } + return (value - Number(balance)) / Number(production.production_rate); + } + + public getProductionEndsAt(): number { + const productionEndsAt = this._productionEndsAt(); + return Number(productionEndsAt); } public getStoreCapacity(): number { @@ -107,167 +77,62 @@ export class ResourceManager { return multiplyByPrecision(Number(quantity) * storehouseCapacityKg + storehouseCapacityKg); } - public isConsumingInputsWithoutOutput(currentTick: number): boolean { - const production = this._getProduction(this.resourceId); - if (!production) return false; - return production?.production_rate > 0n && !this._inputs_available(currentTick, this.resourceId); - } - - public balanceFromComponents( - resourceId: ResourcesIds, - rate: number, - sign: boolean, - resourceBalance: bigint | undefined, - productionDuration: number, - depletionDuration: number, - ): number { - return this._calculateBalance(resourceId, rate, sign, resourceBalance, productionDuration, depletionDuration); - } - private _calculateBalance( - resourceId: ResourcesIds, - rate: number, - sign: boolean, - resourceBalance: bigint | undefined, - productionDuration: number, - depletionDuration: number, - ): number { - if (rate !== 0) { - if (sign) { - // Positive net rate, increase balance - const balance = Number(resourceBalance || 0n) + productionDuration * rate; - const storeCapacity = this.getStoreCapacity(); - const maxAmountStorable = multiplyByPrecision( - storeCapacity / (configManager.getResourceWeight(resourceId) || 1000), - ); - const result = Math.min(balance, maxAmountStorable); - return result; - } else { - // Negative net rate, decrease balance but not below zero - const balance = Number(resourceBalance || 0n) - -depletionDuration * rate; - if (balance < 0) { - return 0; - } else { - return balance; - } - } - } else { - // No net rate change, return current balance - const currentBalance = Number(resourceBalance || 0n); - return currentBalance; + private _limitBalanceByStoreCapacity(balance: bigint): bigint { + const storeCapacity = this.getStoreCapacity(); + const maxAmountStorable = multiplyByPrecision( + storeCapacity / (configManager.getResourceWeight(this.resourceId) || 1000), + ); + if (balance > maxAmountStorable) { + return BigInt(maxAmountStorable); } + return balance; } - private _balance(currentTick: number, resourceId: ResourcesIds): number { - const resource = this._getResource(resourceId); - - const [sign, rate] = this._netRate(resourceId); - const productionDuration = this._productionDuration(currentTick, resourceId); - const productionDepletion = this._depletionDuration(currentTick, resourceId); - return this._calculateBalance(resourceId, rate, sign, resource?.balance, productionDuration, productionDepletion); - } - - private _finish_tick(): number { - const productionDeadline = this._getProductionDeadline(this.entityId); - const production = this._getProduction(this.resourceId); - if (!productionDeadline || !production) { - return Number(production?.input_finish_tick || 0); - } else { - return Math.min(Number(productionDeadline.deadline_tick), Number(production.input_finish_tick)); - } + private _amountProduced(resource: any, currentTick: number): bigint { + if (!resource) return 0n; + const production = resource.production!; + if (!production?.labor_units_left) return 0n; + + let laborUnitsBurned = this._laborUnitsBurned(resource, currentTick); + let totalProducedAmount = laborUnitsBurned * production.production_rate; + return totalProducedAmount; } - private _productionDuration(currentTick: number, resourceId: ResourcesIds): number { - const production = this._getProduction(resourceId); - const input_finish_tick = this._finish_tick(); - - if (!production) return 0; - - if (production.last_updated_tick >= input_finish_tick && input_finish_tick !== 0) { - return 0; + private _laborUnitsBurned(resource: any, currentTick: number): bigint { + const production = resource?.production; + if (!production) return 0n; + let laborUnitsBurned = BigInt(currentTick - production.last_updated_tick) * BigInt(production.building_count); + if (laborUnitsBurned > production.labor_units_left) { + laborUnitsBurned = production.labor_units_left; } - if (input_finish_tick === 0 || input_finish_tick > currentTick) { - return Number(currentTick) - Number(production.last_updated_tick); - } else { - return Number(input_finish_tick) - Number(production.last_updated_tick); - } - } - - private _depletionDuration(currentTick: number, resourceId: ResourcesIds): number { - const production = this._getProduction(resourceId); - return Number(currentTick) - Number(production?.last_updated_tick); - } - - private _netRate(resourceId: ResourcesIds): [boolean, number] { - const production = this._getProduction(resourceId); - if (!production) return [false, 0]; - - let consumptionRate = Number(production.consumption_rate); - - const difference = Number(production.production_rate) - consumptionRate; - return [difference > 0, difference]; - } - - private _balanceExhaustionTick(currentTick: number, resourceId: ResourcesIds): number { - const production = this._getProduction(resourceId); - const resource = this._getResource(resourceId); - - // If there is no production or resource, return current tick - if (!production || !resource) return currentTick; - - const [_, value] = this.netRate(); - const balance = this.balance(currentTick); - - if (value != 0) { - if (value < 0) { - const lossPerTick = Math.abs(value); - const numTicksLeft = balance / lossPerTick; - return currentTick + Number(numTicksLeft); - } else { - return Number.MAX_SAFE_INTEGER; - } - } else { - if (balance > 0) { - return Number.MAX_SAFE_INTEGER; - } else { - return currentTick; - } - } + return laborUnitsBurned; } - private _inputs_available(currentTick: number, resourceId: ResourcesIds): boolean { - const inputs = configManager.resourceInputs[resourceId]; - - // Ensure inputs is an array before proceeding - if (inputs.length == 0) { - return true; - } + private _productionEndsAt(): number { + const resource = this._getResource(); + const production = resource?.production; + if (!production) return 0; + if (production.building_count === 0) return 0; - for (const input of inputs) { - const balance = this._balance(currentTick, input.resource); - if (balance === undefined || balance <= 0) { - return false; - } - } - return true; - } + const productionTicksLeft = BigInt(production.labor_units_left) / BigInt(production.building_count); - private _getProduction(resourceId: ResourcesIds) { - return getComponentValue( - this.components.Production, - getEntityIdFromKeys([BigInt(this.entityId), BigInt(resourceId)]), - ); + return production.last_updated_tick + Number(productionTicksLeft); } - private _getProductionDeadline(entityId: ID) { - return getComponentValue(this.components.ProductionDeadline, getEntityIdFromKeys([BigInt(entityId)])); + private _balance(currentTick: number): bigint { + const resource = this._getResource(); + const balance = resource?.balance || 0n; + const amountProduced = this._amountProduced(resource, currentTick); + const finalBalance = this._limitBalanceByStoreCapacity(balance + amountProduced); + return finalBalance; } - private _getResource(resourceId: ResourcesIds) { + private _getResource() { return getComponentValue( this.components.Resource, - getEntityIdFromKeys([BigInt(this.entityId), BigInt(resourceId)]), + getEntityIdFromKeys([BigInt(this.entityId), BigInt(this.resourceId)]), ); } } diff --git a/client/sdk/packages/eternum/src/modelManager/StaminaManager.ts b/client/sdk/packages/eternum/src/modelManager/StaminaManager.ts index 265091ef3e..83a59b3799 100644 --- a/client/sdk/packages/eternum/src/modelManager/StaminaManager.ts +++ b/client/sdk/packages/eternum/src/modelManager/StaminaManager.ts @@ -1,7 +1,7 @@ import { ComponentValue, getComponentValue } from "@dojoengine/recs"; import { getEntityIdFromKeys } from "@dojoengine/utils"; import { ResourcesIds, WORLD_CONFIG_ID } from "../constants"; -import { ClientComponents } from "../dojo/components/createClientComponents"; +import { ClientComponents } from "../dojo/createClientComponents"; import { ID } from "../types"; export class StaminaManager { diff --git a/client/sdk/packages/eternum/src/modelManager/TileManager.ts b/client/sdk/packages/eternum/src/modelManager/TileManager.ts index 802a379161..a7b2fcc186 100644 --- a/client/sdk/packages/eternum/src/modelManager/TileManager.ts +++ b/client/sdk/packages/eternum/src/modelManager/TileManager.ts @@ -14,7 +14,7 @@ import { getDirectionBetweenAdjacentHexes, getNeighborHexes, } from "../constants"; -import { ClientComponents } from "../dojo/components/createClientComponents"; +import { ClientComponents } from "../dojo/createClientComponents"; import { EternumProvider } from "../provider"; import { ContractAddress, HexPosition, ID, Position } from "../types"; import { configManager } from "./ConfigManager"; diff --git a/client/sdk/packages/eternum/src/modelManager/__tests__/__BattleManagerMock__.ts b/client/sdk/packages/eternum/src/modelManager/__tests__/__BattleManagerMock__.ts index 4dba1f70db..e0a81c8f2e 100644 --- a/client/sdk/packages/eternum/src/modelManager/__tests__/__BattleManagerMock__.ts +++ b/client/sdk/packages/eternum/src/modelManager/__tests__/__BattleManagerMock__.ts @@ -121,7 +121,6 @@ export const generateMockArmyInfo = ( level: 1, order: 1, has_wonder: false, - settler_address: 0n, }, homePosition: { entity_id: ARMY_ENTITY_ID, x: 0, y: 0 }, }; diff --git a/client/sdk/packages/eternum/src/modelManager/types/index.ts b/client/sdk/packages/eternum/src/modelManager/types/index.ts index 57ecff1195..4e36c6940c 100644 --- a/client/sdk/packages/eternum/src/modelManager/types/index.ts +++ b/client/sdk/packages/eternum/src/modelManager/types/index.ts @@ -1,10 +1,15 @@ import { ComponentValue } from "@dojoengine/recs"; import { Account, AccountInterface } from "starknet"; -import { ClientComponents } from "../../dojo/components/createClientComponents"; +import { ClientComponents } from "../../dojo/createClientComponents"; import { Position } from "../../types"; export type DojoAccount = Account | AccountInterface; +export type BattleInfo = ComponentValue & { + isStructureBattle: boolean; + position: ComponentValue; +}; + export type ArmyInfo = ComponentValue & { name: string; isMine: boolean; diff --git a/client/sdk/packages/eternum/src/modelManager/utils/ArmyMovementUtils.ts b/client/sdk/packages/eternum/src/modelManager/utils/ArmyMovementUtils.ts index adef9a1624..d616697d84 100644 --- a/client/sdk/packages/eternum/src/modelManager/utils/ArmyMovementUtils.ts +++ b/client/sdk/packages/eternum/src/modelManager/utils/ArmyMovementUtils.ts @@ -1,6 +1,6 @@ import { type ComponentValue } from "@dojoengine/recs"; -import { EternumGlobalConfig, ResourcesIds } from "../../constants"; -import { ClientComponents } from "../../dojo/components/createClientComponents"; +import { RESOURCE_PRECISION, ResourcesIds } from "../../constants"; +import { ClientComponents } from "../../dojo/createClientComponents"; import { divideByPrecision, gramToKg } from "../../utils"; import { configManager } from "../ConfigManager"; @@ -28,7 +28,7 @@ export const getArmyNumberOfTroops = (army: ComponentValue", + * contractAddress: "", * entrypoint: "create_order", * calldata: [ * 123, // maker_id @@ -422,7 +422,7 @@ export class EternumProvider extends EnhancedDojoProvider { * @example * ```typescript * { - * contractAddress: "", + * contractAddress: "", * entrypoint: "accept_order", * calldata: [ * 123, // taker_id @@ -471,7 +471,7 @@ export class EternumProvider extends EnhancedDojoProvider { * @example * ```typescript * { - * contractAddress: "", + * contractAddress: "", * entrypoint: "accept_partial_order", * calldata: [ * 123, // taker_id @@ -520,7 +520,7 @@ export class EternumProvider extends EnhancedDojoProvider { * @example * ```typescript * { - * contractAddress: "", + * contractAddress: "", * entrypoint: "cancel_order", * calldata: [ * 789, // trade_id @@ -1024,8 +1024,8 @@ export class EternumProvider extends EnhancedDojoProvider { * ```typescript * // Create a wood production building at coordinates determined by directions [1,2] * { - * contractAddress: "", - * entrypoint: "create", + * contractAddress: "", + * entrypoint: "create_building", * calldata: [ * 123, // entity_id * [1, 2], // directions array @@ -1040,8 +1040,8 @@ export class EternumProvider extends EnhancedDojoProvider { ["62", "1", "0", "4", "1"]; const call = this.createProviderCall(signer, { - contractAddress: getContractByName(this.manifest, `${NAMESPACE}-building_systems`), - entrypoint: "create", + contractAddress: getContractByName(this.manifest, `${NAMESPACE}-production_systems`), + entrypoint: "create_building", calldata: CallData.compile([entity_id, directions, building_category, produce_resource_type]), }); @@ -1063,8 +1063,8 @@ export class EternumProvider extends EnhancedDojoProvider { * ```typescript * // Destroy building at coordinates (10, 20) * { - * contractAddress: "", - * entrypoint: "destroy", + * contractAddress: "", + * entrypoint: "destroy_building", * calldata: [ * 123, // entity_id * 10, // building_coord.x @@ -1077,8 +1077,8 @@ export class EternumProvider extends EnhancedDojoProvider { const { entity_id, building_coord, signer } = props; const call = this.createProviderCall(signer, { - contractAddress: getContractByName(this.manifest, `${NAMESPACE}-building_systems`), - entrypoint: "destroy", + contractAddress: getContractByName(this.manifest, `${NAMESPACE}-production_systems`), + entrypoint: "destroy_building", calldata: [entity_id, building_coord.x, building_coord.y], }); @@ -1110,8 +1110,8 @@ export class EternumProvider extends EnhancedDojoProvider { const { entity_id, building_coord, signer } = props; const call = this.createProviderCall(signer, { - contractAddress: getContractByName(this.manifest, `${NAMESPACE}-building_systems`), - entrypoint: "pause_production", + contractAddress: getContractByName(this.manifest, `${NAMESPACE}-production_systems`), + entrypoint: "pause_building_production", calldata: [entity_id, building_coord.x, building_coord.y], }); @@ -1143,8 +1143,8 @@ export class EternumProvider extends EnhancedDojoProvider { const { entity_id, building_coord, signer } = props; const call = this.createProviderCall(signer, { - contractAddress: getContractByName(this.manifest, `${NAMESPACE}-building_systems`), - entrypoint: "resume_production", + contractAddress: getContractByName(this.manifest, `${NAMESPACE}-production_systems`), + entrypoint: "resume_building_production", calldata: [entity_id, building_coord.x, building_coord.y], }); @@ -1774,16 +1774,6 @@ export class EternumProvider extends EnhancedDojoProvider { }); } - public async set_quest_config(props: SystemProps.SetQuestConfigProps) { - const { production_material_multiplier, signer } = props; - - return await this.executeAndCheckTransaction(signer, { - contractAddress: getContractByName(this.manifest, `${NAMESPACE}-config_systems`), - entrypoint: "set_quest_config", - calldata: [production_material_multiplier], - }); - } - public async set_quest_reward_config(props: SystemProps.SetQuestRewardConfigProps) { const { calls, signer } = props; return await this.executeAndCheckTransaction( @@ -1876,16 +1866,6 @@ export class EternumProvider extends EnhancedDojoProvider { }); } - public async set_resource_bridge_whitlelist_config(props: SystemProps.SetResourceBridgeWhitelistConfigProps) { - const { token, resource_type, signer } = props; - - return await this.executeAndCheckTransaction(signer, { - contractAddress: getContractByName(this.manifest, `${NAMESPACE}-config_systems`), - entrypoint: "set_resource_bridge_whitelist_config", - calldata: [token, resource_type], - }); - } - public async set_resource_bridge_fees_config(props: SystemProps.SetResourceBridgeFeesConfigProps) { const { velords_fee_on_dpt_percent, @@ -1967,21 +1947,31 @@ export class EternumProvider extends EnhancedDojoProvider { public async set_production_config(props: SystemProps.SetProductionConfigProps) { const { signer, calls } = props; - return await this.executeAndCheckTransaction( - signer, - calls.map((call) => { - return { - contractAddress: getContractByName(this.manifest, `${NAMESPACE}-config_systems`), - entrypoint: "set_production_config", - calldata: [ - call.resource_type, - call.amount, - call.cost.length, - ...call.cost.flatMap(({ resource, amount }) => [resource, amount]), - ], - }; - }), - ); + const productionCalldataArray = calls.map((call) => { + return { + contractAddress: getContractByName(this.manifest, `${NAMESPACE}-config_systems`), + entrypoint: "set_production_config", + calldata: [ + call.resource_type, + call.amount, + call.amount + ], + }; + }); + + const laborCalldataArray = calls.map((call) => { + return { + contractAddress: getContractByName(this.manifest, `${NAMESPACE}-config_systems`), + entrypoint: "set_labor_config", + calldata: [ + call.resource_type, + call.cost.length, + ...call.cost.flatMap(({ resource, amount }) => [resource, amount]), + ], + }; + }); + const calldataArray = [...productionCalldataArray, ...laborCalldataArray]; + return await this.executeAndCheckTransaction(signer, calldataArray); } public async set_bank_config(props: SystemProps.SetBankConfigProps) { @@ -1994,6 +1984,18 @@ export class EternumProvider extends EnhancedDojoProvider { }); } + public async set_resource_bridge_whitlelist_config(props: SystemProps.SetResourceBridgeWhitelistConfigProps) { + const { resource_whitelist_configs, signer } = props; + + const calldata = resource_whitelist_configs.map(({ token, resource_type }) => ({ + contractAddress: getContractByName(this.manifest, `${NAMESPACE}-config_systems`), + entrypoint: "set_resource_bridge_whitelist_config", + calldata: [token, resource_type], + })); + + return await this.executeAndCheckTransaction(signer, calldata); + } + public async set_troop_config(props: SystemProps.SetTroopConfigProps) { const { signer, diff --git a/client/sdk/packages/eternum/src/scripts/extract.ts b/client/sdk/packages/eternum/src/scripts/extract.ts deleted file mode 100644 index 1982c4453b..0000000000 --- a/client/sdk/packages/eternum/src/scripts/extract.ts +++ /dev/null @@ -1,97 +0,0 @@ -import * as fs from "fs"; -import * as path from "path"; - -interface Example { - methodName: string; - description: string; - code: string; - params: Array<{ - name: string; - description: string; - }>; -} - -function extractExamples(filePath: string): string { - try { - // Read the file content - const content = fs.readFileSync(filePath, "utf8"); - - // Pattern to match full JSDoc blocks with examples - const methodPattern = /\/\*\*\s*([\s\S]*?)\*\/\s*public\s+async\s+([a-zA-Z_]+)/g; - const paramPattern = /@param\s+props\.([a-zA-Z_]+)\s*-\s*([^\n]+)/g; - const examplePattern = /@example[\s\S]*?```typescript\n([\s\S]*?)```/; - - const examples: Example[] = []; - let match: RegExpExecArray | null; - - // Extract all examples - while ((match = methodPattern.exec(content)) !== null) { - const docBlock = match[1]; - const methodName = match[2]; - - // Get description (first line after /** and before @) - const description = docBlock.split("\n")[1].trim().replace(/^\* /, ""); - - // Get parameters - const params: Array<{ name: string; description: string }> = []; - let paramMatch; - while ((paramMatch = paramPattern.exec(docBlock)) !== null) { - params.push({ - name: paramMatch[1], - description: paramMatch[2].trim(), - }); - } - - // Get example code - const exampleMatch = docBlock.match(examplePattern); - if (exampleMatch) { - const code = exampleMatch[1].trim(); - examples.push({ - methodName, - description, - code, - params, - }); - } - } - - // Generate text content - const text = generateText(examples); - - // Write to file - const outputPath = path.join(path.dirname(filePath), "provider-examples.ts"); - fs.writeFileSync(outputPath, `export const PROVIDER_EXAMPLES = \`${text}\`;`); - - console.log(`Examples extracted to ${outputPath}`); - return text; - } catch (error) { - console.error("Error processing file:", error); - return ""; - } -} - -function generateText(examples: Example[]): string { - let text = "Eternum Provider Examples\n\n"; - - examples.forEach(({ methodName, description, code, params }) => { - text += `${methodName}\n`; - text += "=".repeat(methodName.length) + "\n\n"; - text += `${description}\n\n`; - - text += "Parameters:\n"; - params.forEach((param) => { - text += `- ${param.name}: ${param.description}\n`; - }); - text += "\n"; - - text += "Example:\n"; - text += code; - text += "\n\n"; - }); - - return text; -} - -// Run the extractor -const filePath = path.join(process.cwd(), "../provider/index.ts"); -extractExamples(filePath); diff --git a/client/sdk/packages/eternum/src/scripts/extractBuildings.ts b/client/sdk/packages/eternum/src/scripts/extractBuildings.ts deleted file mode 100644 index 12388a6889..0000000000 --- a/client/sdk/packages/eternum/src/scripts/extractBuildings.ts +++ /dev/null @@ -1,22 +0,0 @@ -import * as fs from "fs"; -import { BUILDING_COSTS, BuildingType, ResourcesIds } from "../constants"; - -const buildingCosts = Object.entries(BUILDING_COSTS).reduce((output, [buildingId, costs]) => { - const buildingName = BuildingType[Number(buildingId)].toUpperCase(); - - if (costs.length === 0) { - return output + `${buildingName}\n`; - } - - output += `${buildingName}:\n`; - for (const cost of costs) { - const resourceName = ResourcesIds[cost.resource]; - output += ` ${resourceName}: ${cost.amount}\n`; - } - output += "\n"; - - return output; -}, ""); - -// Write to file -fs.writeFileSync("buildingCosts.ts", `export const BUILDING_COSTS_TEXT = \`${buildingCosts}\`;`); diff --git a/client/sdk/packages/eternum/src/types/common.ts b/client/sdk/packages/eternum/src/types/common.ts index c2baffbf63..4c92695ce9 100644 --- a/client/sdk/packages/eternum/src/types/common.ts +++ b/client/sdk/packages/eternum/src/types/common.ts @@ -1,3 +1,5 @@ +import { ComponentValue, Entity } from "@dojoengine/recs"; +import { SeasonAddresses } from "../../../../../common/utils"; import { BuildingType, CapacityConfigCategory, @@ -7,6 +9,99 @@ import { ResourceTier, TroopFoodConsumption, } from "../constants"; +import { ClientComponents } from "../dojo"; + +export type ArrivalInfo = { + entityId: ID; + recipientEntityId: ID; + position: Position; + arrivesAt: bigint; + isOwner: boolean; + hasResources: boolean; + isHome: boolean; +}; + +export type PlayerStructure = ComponentValue & { + position: ComponentValue; + name: string; + category?: string | undefined; + owner: ComponentValue; +}; + +export type RealmWithPosition = ComponentValue & { + position: ComponentValue; + name: string; + owner: ComponentValue; +}; +export interface Prize { + id: QuestType; + title: string; +} + +export enum QuestStatus { + InProgress, + Completed, + Claimed, +} + +export interface Building { + name: string; + category: string; + paused: boolean; + produced: ResourceCost; + consumed: ResourceCost[]; + bonusPercent: number; + innerCol: number; + innerRow: number; +} + +export enum BattleType { + Hex, + Structure, +} + +export enum BattleStatus { + BattleStart = "Start battle", + BattleOngoing = "", + UserWon = "Victory", + UserLost = "Defeat", + BattleEnded = "Battle has ended", +} + +export enum RaidStatus { + isRaidable = "Raid!", + NoStamina = "Not enough stamina", + NoStructureToClaim = "No structure to raid", + OwnStructure = "Can't raid your own structure", + NoArmy = "No army selected", + ArmyNotInBattle = "Selected army not in this battle", + MinTroops = "Minimum 100 troops required", +} + +export enum LeaveStatus { + Leave = "Leave", + NoBattleToLeave = "No battle to leave", + DefenderCantLeaveOngoing = "A defender can't leave an ongoing battle", + NoArmyInBattle = "Your armies aren't in this battle", +} + +export enum BattleStartStatus { + MinTroops = "Minimum 100 troops required", + BattleStart = "Start battle", + ForceStart = "Force start", + NothingToAttack = "Nothing to attack", + CantStart = "Can't start a battle now.", +} + +export enum ClaimStatus { + Claimable = "Claim", + NoSelectedArmy = "No selected army", + BattleOngoing = "Battle ongoing", + DefenderPresent = "An army's defending the structure", + NoStructureToClaim = "No structure to claim", + StructureIsMine = "Can't claim your own structure", + SelectedArmyIsDead = "Selected army is dead", +} export type HexPosition = { col: number; row: number }; @@ -366,9 +461,6 @@ export interface Config { current_point_on_side: number; }; season: { - seasonPassAddress: string; - realmsAddress: string; - lordsAddress: string; startAfterSeconds: number; bridgeCloseAfterEndSeconds: number; }; @@ -407,9 +499,33 @@ export interface Config { questResources: { [key in QuestType]: ResourceCost[] }; realmUpgradeCosts: { [key in RealmLevels]: ResourceCost[] }; realmMaxLevel: number; + + // Config for calling the setup function + setup?: { + chain: string; + addresses: SeasonAddresses; + manifest: any; + } } -export interface Player { +export interface RealmInfo { + realmId: ID; + entityId: ID; + name: string; + resourceTypesPacked: bigint; + order: number; + position: ComponentValue; + population?: number | undefined; + capacity?: number; + hasCapacity: boolean; + owner: ContractAddress; + ownerName: string; + hasWonder: boolean; + level: number; +} + +export interface PlayerInfo { + entity: Entity; rank: number; address: bigint; name: string; @@ -423,6 +539,12 @@ export interface Player { guildName: string; } +export interface Player { + entity: Entity; + address: ContractAddress; + name: string; +} + export type GuildInfo = { entityId: ID; name: string; diff --git a/client/sdk/packages/eternum/src/types/provider.ts b/client/sdk/packages/eternum/src/types/provider.ts index dd12a9fc82..b8e20179c1 100644 --- a/client/sdk/packages/eternum/src/types/provider.ts +++ b/client/sdk/packages/eternum/src/types/provider.ts @@ -419,10 +419,6 @@ interface ResourceCosts { amount: num.BigNumberish; } -export interface SetQuestConfigProps extends SystemSigner { - production_material_multiplier: num.BigNumberish; -} - export interface SetQuestRewardConfigProps extends SystemSigner { calls: { quest_id: num.BigNumberish; @@ -563,10 +559,13 @@ export interface SetSeasonBridgeConfigProps extends SystemSigner { } export interface SetResourceBridgeWhitelistConfigProps extends SystemSigner { + resource_whitelist_configs: ResourceWhitelistConfig[]; +} + +export interface ResourceWhitelistConfig { token: num.BigNumberish; resource_type: num.BigNumberish; } - export interface SetResourceBridgeFeesConfigProps extends SystemSigner { velords_fee_on_dpt_percent: num.BigNumberish; velords_fee_on_wtdr_percent: num.BigNumberish; diff --git a/client/sdk/packages/eternum/src/utils/battleSimulation.ts b/client/sdk/packages/eternum/src/utils/battleSimulation.ts index 4110e38133..69f34e595e 100644 --- a/client/sdk/packages/eternum/src/utils/battleSimulation.ts +++ b/client/sdk/packages/eternum/src/utils/battleSimulation.ts @@ -1,4 +1,4 @@ -import { EternumGlobalConfig } from "../constants"; +import { RESOURCE_PRECISION } from "../constants"; export class Percentage { static _100() { @@ -84,7 +84,7 @@ export class TroopsSimulator { } static normalizationFactor() { - return BigInt(EternumGlobalConfig.resources.resourcePrecision); + return BigInt(RESOURCE_PRECISION); } } @@ -355,21 +355,21 @@ export class Battle { let paladin_count = (health.current * currentTroops.paladin_count) / health.lifetime; let crossbowman_count = (health.current * currentTroops.crossbowman_count) / health.lifetime; - if (knight_count < EternumGlobalConfig.resources.resourcePrecision) { + if (knight_count < RESOURCE_PRECISION) { knight_count = 0n; } - if (paladin_count < EternumGlobalConfig.resources.resourcePrecision) { + if (paladin_count < RESOURCE_PRECISION) { paladin_count = 0n; } - if (crossbowman_count < EternumGlobalConfig.resources.resourcePrecision) { + if (crossbowman_count < RESOURCE_PRECISION) { crossbowman_count = 0n; } return { - knight_count: knight_count - (knight_count % BigInt(EternumGlobalConfig.resources.resourcePrecision)), - paladin_count: paladin_count - (paladin_count % BigInt(EternumGlobalConfig.resources.resourcePrecision)), + knight_count: knight_count - (knight_count % BigInt(RESOURCE_PRECISION)), + paladin_count: paladin_count - (paladin_count % BigInt(RESOURCE_PRECISION)), crossbowman_count: - crossbowman_count - (crossbowman_count % BigInt(EternumGlobalConfig.resources.resourcePrecision)), + crossbowman_count - (crossbowman_count % BigInt(RESOURCE_PRECISION)), }; }; diff --git a/client/sdk/packages/eternum/src/utils/index.ts b/client/sdk/packages/eternum/src/utils/index.ts index 4ee67f35ca..68f1ed26be 100644 --- a/client/sdk/packages/eternum/src/utils/index.ts +++ b/client/sdk/packages/eternum/src/utils/index.ts @@ -1,22 +1,45 @@ -import { - BUILDING_COSTS, - EternumGlobalConfig, - HYPERSTRUCTURE_CONSTRUCTION_COSTS, - HYPERSTRUCTURE_CREATION_COSTS, - HYPERSTRUCTURE_TOTAL_COSTS, - QUEST_RESOURCES, - REALM_UPGRADE_COSTS, - RESOURCE_BUILDING_COSTS, - RESOURCE_INPUTS, - RESOURCE_OUTPUTS, - ResourcesIds, - STRUCTURE_COSTS, -} from "../constants"; - +import { RESOURCE_PRECISION, ResourcesIds } from "../constants"; import { ResourceCostMinMax, ResourceInputs, ResourceOutputs } from "../types"; + export * from "./battleSimulation"; export * from "./leaderboard"; + +export const gramToKg = (value: number) => { + return value / 1000; +}; + +export const scaleResourceInputs = (resourceInputs: ResourceInputs, multiplier: number) => { + let multipliedCosts: ResourceInputs = {}; + + for (let buildingType in resourceInputs) { + multipliedCosts[buildingType] = resourceInputs[buildingType].map((resourceInput) => ({ + ...resourceInput, + amount: resourceInput.amount * multiplier, + })); + } + + return multipliedCosts; +}; + +export const scaleResources = (resources: any[], multiplier: number): any[] => { + return resources.map((resource) => ({ + ...resource, + amount: resource.amount * multiplier, + })); +}; + +export const scaleResourceCostMinMax = ( + resourceCost: ResourceCostMinMax[], + multiplier: number, +): ResourceCostMinMax[] => { + return resourceCost.map((resource) => ({ + ...resource, + min_amount: resource.min_amount * multiplier, + max_amount: resource.max_amount * multiplier, + })); +}; + export const scaleResourceOutputs = (resourceOutputs: ResourceOutputs, multiplier: number) => { let multipliedCosts: ResourceOutputs = {}; @@ -26,11 +49,11 @@ export const scaleResourceOutputs = (resourceOutputs: ResourceOutputs, multiplie return multipliedCosts; }; -export const uniqueResourceInputs = (resourcesProduced: number[]): number[] => { +export const uniqueResourceInputs = (resourcesProduced: number[], resourceProductionInputResources: ResourceInputs): number[] => { let uniqueResourceInputs: number[] = []; for (let resourceProduced of resourcesProduced) { - for (let resourceInput of RESOURCE_INPUTS[resourceProduced]) { + for (let resourceInput of resourceProductionInputResources[resourceProduced]) { if (!uniqueResourceInputs.includes(resourceInput.resource)) { uniqueResourceInputs.push(resourceInput.resource); } @@ -43,8 +66,9 @@ export const uniqueResourceInputs = (resourcesProduced: number[]): number[] => { export const applyInputProductionFactor = ( questResources: ResourceInputs, resourcesOnRealm: number[], + resourceProductionInputResources: ResourceInputs ): ResourceInputs => { - for (let resourceInput of uniqueResourceInputs(resourcesOnRealm).filter( + for (let resourceInput of uniqueResourceInputs(resourcesOnRealm, resourceProductionInputResources).filter( (id) => id != ResourcesIds.Wheat && id != ResourcesIds.Fish, )) { for (let questType in questResources) { @@ -52,7 +76,7 @@ export const applyInputProductionFactor = ( if (questResource.resource === resourceInput) { return { ...questResource, - amount: questResource.amount * EternumGlobalConfig.resources.startingResourcesInputProductionFactor, + amount: questResource.amount * RESOURCE_PRECISION, }; } return questResource; @@ -62,97 +86,19 @@ export const applyInputProductionFactor = ( return questResources; }; -export const getQuestResources = (resourcesOnRealm: number[]): ResourceInputs => { +export const getQuestResources = (resourcesOnRealm: number[], questResources: ResourceInputs, resourceProductionInputResources: ResourceInputs): ResourceInputs => { let QUEST_RESOURCES_SCALED: ResourceInputs = scaleResourceInputs( - QUEST_RESOURCES, - EternumGlobalConfig.resources.resourceMultiplier, + questResources, + RESOURCE_PRECISION, ); - return applyInputProductionFactor(QUEST_RESOURCES_SCALED, resourcesOnRealm); + return applyInputProductionFactor(QUEST_RESOURCES_SCALED, resourcesOnRealm, resourceProductionInputResources); }; - -export const scaleResourceInputs = (resourceInputs: ResourceInputs, multiplier: number) => { - let multipliedCosts: ResourceInputs = {}; - - for (let buildingType in resourceInputs) { - multipliedCosts[buildingType] = resourceInputs[buildingType].map((resourceInput) => ({ - ...resourceInput, - amount: resourceInput.amount * multiplier, - })); - } - - return multipliedCosts; -}; - -export const scaleResources = (resources: any[], multiplier: number): any[] => { - return resources.map((resource) => ({ - ...resource, - amount: resource.amount * multiplier, - })); -}; - -export const scaleResourceCostMinMax = ( - resourceCost: ResourceCostMinMax[], - multiplier: number, -): ResourceCostMinMax[] => { - return resourceCost.map((resource) => ({ - ...resource, - min_amount: resource.min_amount * multiplier, - max_amount: resource.max_amount * multiplier, - })); -}; - -export const RESOURCE_BUILDING_COSTS_SCALED: ResourceInputs = scaleResourceInputs( - RESOURCE_BUILDING_COSTS, - EternumGlobalConfig.resources.resourceMultiplier, -); - -export const RESOURCE_OUTPUTS_SCALED: ResourceOutputs = scaleResourceOutputs( - RESOURCE_OUTPUTS, - EternumGlobalConfig.resources.resourceMultiplier, -); - -export const BUILDING_COSTS_SCALED: ResourceInputs = scaleResourceInputs( - BUILDING_COSTS, - EternumGlobalConfig.resources.resourceMultiplier, -); - -export const RESOURCE_INPUTS_SCALED: ResourceInputs = scaleResourceInputs( - RESOURCE_INPUTS, - EternumGlobalConfig.resources.resourceMultiplier, -); - -export const STRUCTURE_COSTS_SCALED: ResourceInputs = scaleResourceInputs( - STRUCTURE_COSTS, - EternumGlobalConfig.resources.resourceMultiplier, -); - -export const REALM_UPGRADE_COSTS_SCALED: ResourceInputs = scaleResourceInputs( - REALM_UPGRADE_COSTS, - EternumGlobalConfig.resources.resourceMultiplier, -); -export const HYPERSTRUCTURE_CONSTRUCTION_COSTS_SCALED: { resource: number; amount: number }[] = scaleResources( - HYPERSTRUCTURE_CONSTRUCTION_COSTS, - EternumGlobalConfig.resources.resourceMultiplier, -); - -export const HYPERSTRUCTURE_CREATION_COSTS_SCALED: { resource: number; amount: number }[] = scaleResources( - HYPERSTRUCTURE_CREATION_COSTS, - EternumGlobalConfig.resources.resourceMultiplier, -); - -export const HYPERSTRUCTURE_TOTAL_COSTS_SCALED: { resource: number; amount: number }[] = scaleResources( - HYPERSTRUCTURE_TOTAL_COSTS, - EternumGlobalConfig.resources.resourceMultiplier, -); + export function multiplyByPrecision(value: number): number { - return Math.floor(value * EternumGlobalConfig.resources.resourcePrecision); + return Math.floor(value * RESOURCE_PRECISION); } export function divideByPrecision(value: number): number { - return value / EternumGlobalConfig.resources.resourcePrecision; -} - -export function gramToKg(grams: number): number { - return Number(grams) / 1000; -} + return value / RESOURCE_PRECISION; +} \ No newline at end of file diff --git a/client/sdk/packages/eternum/tsconfig.json b/client/sdk/packages/eternum/tsconfig.json index 83a01dda85..0cceefda81 100644 --- a/client/sdk/packages/eternum/tsconfig.json +++ b/client/sdk/packages/eternum/tsconfig.json @@ -13,7 +13,8 @@ "skipLibCheck": true, "strict": true, "strictNullChecks": true, - "esModuleInterop": true + "esModuleInterop": true, + "allowJs": true }, "include": ["src/**/*.ts"], "skipLibCheck": true, diff --git a/contracts/common/.env.local b/contracts/common/.env.local new file mode 100644 index 0000000000..464c20de8b --- /dev/null +++ b/contracts/common/.env.local @@ -0,0 +1,14 @@ +# ENV PRESET COMMON TO BOTH SEASON PASS AND SEASON RESOURCES DEPLOYMENT +export STARKNET_RPC=http://127.0.0.1:5050 +export STARKNET_NETWORK=local +export STARKNET_ACCOUNT_ADDRESS=0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec +export STARKNET_ACCOUNT_PRIVATE_KEY=0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912 +export DEPLOYMENT_ADDRESSES_FOLDER=addresses/local + +# SEASON RESOURCE ONLY ENV +export SEASON_RESOURCE_ADMIN=0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec + +# SEASON PASS ONLY ENV +export SEASON_PASS_ADMIN=0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec +export SEASON_PASS_PRESET_REALMS_ADDRESS=0 +export SEASON_PASS_PRESET_LORDS_ADDRESS=0 \ No newline at end of file diff --git a/contracts/common/.env.mainnet b/contracts/common/.env.mainnet new file mode 100644 index 0000000000..27e1104d0c --- /dev/null +++ b/contracts/common/.env.mainnet @@ -0,0 +1,14 @@ +# ENV PRESET COMMON TO BOTH SEASON PASS AND SEASON RESOURCES DEPLOYMENT +export STARKNET_RPC=https://api.cartridge.gg/x/starknet/mainnet +export STARKNET_NETWORK=mainnet +export STARKNET_ACCOUNT_ADDRESS= +export STARKNET_ACCOUNT_PRIVATE_KEY= +export DEPLOYMENT_ADDRESSES_FOLDER=addresses/mainnet + +# SEASON RESOURCE ONLY ENV +export SEASON_RESOURCE_ADMIN= + +# SEASON PASS ONLY ENV +export SEASON_PASS_ADMIN= +export SEASON_PASS_PRESET_REALMS_ADDRESS=0x07ae27a31bb6526e3de9cf02f081f6ce0615ac12a6d7b85ee58b8ad7947a2809 +export SEASON_PASS_PRESET_LORDS_ADDRESS=0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49 \ No newline at end of file diff --git a/contracts/season_resources/ext/scripts/deployment/.env.sepolia b/contracts/common/.env.sepolia similarity index 50% rename from contracts/season_resources/ext/scripts/deployment/.env.sepolia rename to contracts/common/.env.sepolia index b384e14e6a..ddcc3dabaa 100644 --- a/contracts/season_resources/ext/scripts/deployment/.env.sepolia +++ b/contracts/common/.env.sepolia @@ -1,12 +1,14 @@ -export RPC_API_KEY=https://api.cartridge.gg/x/starknet/sepolia +# ENV PRESET COMMON TO BOTH SEASON PASS AND SEASON RESOURCES DEPLOYMENT +export STARKNET_RPC=https://api.cartridge.gg/x/starknet/sepolia export STARKNET_NETWORK=sepolia export STARKNET_ACCOUNT_ADDRESS=0x01BFC84464f990C09Cc0e5D64D18F54c3469fD5c467398BF31293051bAde1C39 export STARKNET_ACCOUNT_PRIVATE_KEY=0x075362a844768f31c8058ce31aec3dd7751686440b4f220f410ae0c9bf042e60 export DEPLOYMENT_ADDRESSES_FOLDER=addresses/sepolia +# SEASON RESOURCE ONLY ENV export SEASON_RESOURCE_ADMIN=0x01BFC84464f990C09Cc0e5D64D18F54c3469fD5c467398BF31293051bAde1C39 -export VITE_PUBLIC_MASTER_ADDRESS="0x01BFC84464f990C09Cc0e5D64D18F54c3469fD5c467398BF31293051bAde1C39" -export VITE_PUBLIC_MASTER_PRIVATE_KEY="0x075362a844768f31c8058ce31aec3dd7751686440b4f220f410ae0c9bf042e60" -export VITE_PUBLIC_NODE_URL="https://api.cartridge.gg/x/starknet/sepolia" -export VITE_PUBLIC_DEV="false" +# SEASON PASS ONLY ENV +export SEASON_PASS_ADMIN=0x01BFC84464f990C09Cc0e5D64D18F54c3469fD5c467398BF31293051bAde1C39 +export SEASON_PASS_PRESET_REALMS_ADDRESS=0 +export SEASON_PASS_PRESET_LORDS_ADDRESS=0 \ No newline at end of file diff --git a/contracts/common/.env.slot b/contracts/common/.env.slot new file mode 100644 index 0000000000..869feb0a31 --- /dev/null +++ b/contracts/common/.env.slot @@ -0,0 +1,14 @@ +# ENV PRESET COMMON TO BOTH SEASON PASS AND SEASON RESOURCES DEPLOYMENT +export STARKNET_RPC=https://api.cartridge.gg/x/slot-old-star/katana +export STARKNET_NETWORK=slot +export STARKNET_ACCOUNT_ADDRESS=0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec +export STARKNET_ACCOUNT_PRIVATE_KEY=0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912 +export DEPLOYMENT_ADDRESSES_FOLDER=addresses/slot + +# SEASON RESOURCE ONLY ENV +export SEASON_RESOURCE_ADMIN=0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec + +# SEASON PASS ONLY ENV +export SEASON_PASS_ADMIN=0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec +export SEASON_PASS_PRESET_REALMS_ADDRESS=0 +export SEASON_PASS_PRESET_LORDS_ADDRESS=0 \ No newline at end of file diff --git a/contracts/common/.gitignore b/contracts/common/.gitignore new file mode 100644 index 0000000000..3ca89a5dbf --- /dev/null +++ b/contracts/common/.gitignore @@ -0,0 +1,2 @@ +.env +addresses/local.json diff --git a/contracts/common/addresses/mainnet.json b/contracts/common/addresses/mainnet.json new file mode 100644 index 0000000000..e3a346725d --- /dev/null +++ b/contracts/common/addresses/mainnet.json @@ -0,0 +1,37 @@ +{ + "seasonPass": "0x057675b9c0bd62b096a2e15502a37b290fa766ead21c33eda42993e48a714b80", + "realms": "0x07ae27a31bb6526e3de9cf02f081f6ce0615ac12a6d7b85ee58b8ad7947a2809", + "lords": "0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49", + "resources": { + "STONE": [1,"0x439a1c010e3e1bb2d43d43411000893c0042bd88f6c701611a0ea914d426da4"], + "COAL": [2,"0xce635e3f241b0ae78c46a929d84a9101910188f9c4024eaa7559556503c31a"], + "WOOD": [3,"0x40d8907cec0f7ae9c364dfb12485a1314d84c129bf1898d2f3d4b7fcc7d44f4"], + "COPPER": [4,"0x66ed5c928ee027a9419ace1cbea8389885161db5572a7c5c4fef2310e9bf494"], + "IRONWOOD": [5,"0x1720cf6318bff45e62acc588680ae3cd4d5f8465b1d52cb710533c9299b031a"], + "OBSIDIAN": [6,"0x3b6448d09dcd023507376402686261f5d6739455fa02f804907b066e488da66"], + "GOLD": [7,"0xdff9dca192609c4e86ab3be22c7ec1e968876c992d21986f3c542be97fa2f"], + "SILVER": [8,"0x6fe21d2d4a8a05bdb70f09c9250af9870020d5dcc35f410b4a39d6605c3e353"], + "MITHRAL": [9,"0x67ba235c569c23877064b2ac6ebd4d79f32d3c00f5fab8e28a3b5700b957f6"], + "ALCHEMICALSILVER": [10,"0x3956a5301e99522038a2e7dcb9c2a89bf087ffa79310ee0a508b5538efd8ddd"], + "COLDIRON": [11,"0x555d713e59d4ff96b7960447e9bc9e79bfdeab5b0eea74e3df81bce61cfbc77"], + "DEEPCRYSTAL": [12,"0x1d655ac834d38df7921074fc1588411e202b1af83307cbd996983aff52db3a8"], + "RUBY": [13,"0x3d9b66720959d0e7687b898292c10e62e78626f2dba5e1909961a2ce3f86612"], + "DIAMONDS": [14,"0xe03ea8ae385f64754820af5c01c36abf1b8130dd6797d3fd9d430e4114e876"], + "HARTWOOD": [15,"0x5620aa7170cd66dbcbc37d03087bfe4633ffef91d3e4d97b501de906004f79b"], + "IGNIUM": [16,"0x625c1f789b03ebebc7a9322366f38ebad1f693b84b2abd8cb8f5b2748b0cdd5"], + "TWILIGHTQUARTZ": [17,"0x35e24c02409c3cfe8d5646399a62c4d102bb782938d5f5180e92c9c62d3faf7"], + "TRUEICE": [18,"0x4485f5a6e16562e1c761cd348e63256d00389e3ddf4f5d98afe7ab44c57c481"], + "ADAMANTINE": [19,"0x367f838f85a2f5e1580d6f011e4476f581083314cff8721ba3dda9706076eed"], + "SAPPHIRE": [20,"0x2f8dd022568af8f9f718aa37707a9b858529db56910633a160456838b6cbcbc"], + "ETHEREALSILICA": [21,"0x68b6e23cbbd58a644700f55e96c83580921e9f521b6e5175396b53ba7910e7d"], + "DRAGONHIDE": [22,"0x3bf856515bece3c93f5061b7941b8645f817a0acab93c758b8c7b4bc0afa3c6"], + "ANCIENTFRAGMENT": [24,"0x0695b08ecdfdd828c2e6267da62f59e6d7543e690ef56a484df25c8566b332a5"], + "DONKEY": [25,"0x264be95a4a2ace20add68cb321acdccd2f9f8440ee1c7abd85da44ddab01085"], + "KNIGHT": [26,"0xac965f9e67164723c16735a9da8dbc9eb8e43b1bd0323591e87c056badf606"], + "CROSSBOWMAN": [27,"0x67e4ac00a241be06ba6afc11fa2715ec7da0c42c05a67ef6ecfcfeda725aaa8"], + "PALADIN": [28,"0x3bc86299bee061c7c8d7546ccb62b9daf9bffc653b1508facb722c6593874bc"], + "WHEAT": [29,"0x57a3f1ee475e072ce3be41785c0e889b7295d7a0dcc22b992c5b9408dbeb280"], + "FISH": [30,"0x27719173cfe10f1aa38d2aaed0a075b6077290f1e817aa3485d2b828394f4d9"], + "LORDS": [31,"0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49"] + } +} \ No newline at end of file diff --git a/client/apps/landing/src/hooks/use-entity-resources.tsx b/contracts/common/addresses/sepolia.json similarity index 100% rename from client/apps/landing/src/hooks/use-entity-resources.tsx rename to contracts/common/addresses/sepolia.json diff --git a/contracts/common/addresses/slot.json b/contracts/common/addresses/slot.json new file mode 100644 index 0000000000..efada68f30 --- /dev/null +++ b/contracts/common/addresses/slot.json @@ -0,0 +1,37 @@ +{ + "seasonPass": "0x432531b2276e32aa5b82ae095e6694d68f49a2c82f2ee8b406f681ec3826c8b", + "realms": "0x56502f7cf5847c0a4d4d0d0a37fa02e104d637f278564ce2e85fcd9edd7d27a", + "lords": "0x3acbe76476cbf8997397878c52ce1acdf90ed1c295907f6505d3ff4c1646afa", + "resources": { + "STONE": [1,"0x1d0e42592e69ce773e4af49ebc806e8e4b18d68349675a720b310f524bc1047"], + "COAL": [2,"0x116e5c167e15ce74d6ceabab3ee1d654ba7d715cc3e313f0a7644460d930647"], + "WOOD": [3,"0x78b36df795c5fc301613901a5f16a875b51cc24dbab6f15ea595ce97eef57b8"], + "COPPER": [4,"0x3db58bdf0d85bcb352e6af446d9baae05ded478a389ae8c8afee15abfbb4663"], + "IRONWOOD": [5,"0x60c29b99b24ab147a389c23876ea6ca2a10da8cc469ac6b5c7f5ad904b7c448"], + "OBSIDIAN": [6,"0x67caa1f9b080285d7c7bf4dacb85cd735146035820da93e0f41c96a25487709"], + "GOLD": [7,"0x43640fb73f8ba75a85d4f8f77feb901a0408737beca17eafd1a99aa9431a43d"], + "SILVER": [8,"0x196619024411e0dbee1114d3f8a5bd8735b4444f779dfe70c59d844fe2fa0fa"], + "MITHRAL": [9,"0x4b9c53ccd696ef2e0c14098c9aef16180e763edf15d0e94ee74767b6fcc9893"], + "ALCHEMICALSILVER": [10,"0xa282d7a73ceb77ffa0093b8015d643d3641ea54c4ea7b87167285bc3dacca4"], + "COLDIRON": [11,"0x421f00ccffc49ec3492776510c186154e0c3bea3d72b9d7feee1d8ab2caa96f"], + "DEEPCRYSTAL": [12,"0x7d69078dd90f2de3718c4ff7f96a73c6e33b0724e9b392874e7ef57564d2a92"], + "RUBY": [13,"0x3d770ad570a0bb8a94b682a6a261019d3c894952f1593e0b81de9a31ae1735f"], + "DIAMONDS": [14,"0x5f66baa2e4a5cd71d0840d0c1cfe4be9275b8b52b543094aee1fa533de4c5b7"], + "HARTWOOD": [15,"0x7ff3a618a5ab2976446ba4109010bfa941cf4ad00ba49be1599b7b91cc854ce"], + "IGNIUM": [16,"0x680a194c725eccf0c1e4cff0ad8886f947bf012636ef01dcd6e633fb6d048f"], + "TWILIGHTQUARTZ": [17,"0x5462ffbc95fb5e99a774a0b218f933e0d2e16c94d10bcd062d4d03e3a4a9e9a"], + "TRUEICE": [18,"0x79a9030ce1cafd32b025c745c920604c0381a74c8609c76b7e93cd25fe1103a"], + "ADAMANTINE": [19,"0x7bf7916746082090c07707ce63d4740aef667d4e6478844187e315f2c4c3e33"], + "SAPPHIRE": [20,"0x7cd99ce1dc8ab26473d35ddee6fa2389a2e22f0435686155c2f2bf62a9b0e2"], + "ETHEREALSILICA": [21,"0x3b03aea5ed81397478d50b2b67401f38557d2e6e14eb3b1caebab21d8459daf"], + "DRAGONHIDE": [22,"0x420f281f9c469e5315024702724dfb1f6bd53bfe4f0eacff9233f916d57663c"], + "ANCIENTFRAGMENT": [24,"0xa2f3f8da01fc3c71aa698f19f774d4a2af7702d73bfde7c4c93ae787e6f359"], + "DONKEY": [25,"0x9c3db60be8614b358f65bf69175b1d4c8c153c6d26f421c508d0e20b2e2967"], + "KNIGHT": [26,"0x2da183da89cae4c22e249e7df3d9149895e5cebe1f7ca5d3ada783fb1b19374"], + "CROSSBOWMAN": [27,"0xfbbbff48d55f0e5938222734d461f87372d1d7378e00d258192483c7bbe0b9"], + "PALADIN": [28,"0x65a779057c56ed3dbe525d8a8f29a1f12c75ee60a50086740e634dd9d119e8b"], + "WHEAT": [29,"0x39e8ab3446f491dd6778b2c7367bcc643d593894a7a31c9b07cde4eff3486dd"], + "FISH": [30,"0x2aeea125cf76145d164d61f4e350fdb39df473d5663ee3577052b4565395296"], + "LORDS": [31,"0x3acbe76476cbf8997397878c52ce1acdf90ed1c295907f6505d3ff4c1646afa"] + } +} \ No newline at end of file diff --git a/contracts/common/scripts/contracts.sh b/contracts/common/scripts/contracts.sh deleted file mode 100755 index 62a6d92be0..0000000000 --- a/contracts/common/scripts/contracts.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -# Navigate to the root of the repo to install dependencies -echo "Setting up Katana..." -echo "Building Contracts" - -# Change directory to contracts -cd contracts - -# Run katana with the disable-fee option -katana --invoke-max-steps 25000000 --http.cors_origins "*" --block-time 2500 --dev --dev.no-fee diff --git a/contracts/common/scripts/indexer.sh b/contracts/common/scripts/indexer.sh deleted file mode 100755 index 5f26b492a4..0000000000 --- a/contracts/common/scripts/indexer.sh +++ /dev/null @@ -1,144 +0,0 @@ -#!/bin/bash - -ROOT_DIR=$(pwd) - -setConfig="" -external="" - -# Function to show usage -usage() { - echo "Usage: $0 [--setConfig] [--external]" - exit 1 -} - -# Detect OS and set sed in-place options -if [[ "$OSTYPE" == "darwin"* ]]; then - SED_INPLACE=(-i '') -else - SED_INPLACE=(-i) -fi - -# Parse command-line arguments -while [[ "$#" -gt 0 ]]; do - case $1 in - --setConfig) setConfig="true"; shift 1;; - --external) external="true"; shift 1;; - *) usage;; - esac -done - -if [[ "$external" == "true" ]]; then - printf "\n\n" - echo "----- Building Eternum Season Pass Contract ----- " - printf "\n\n" - - # source .env file in deployment - source ./season_pass/scripts/deployment/.env - - # build and deploy season pass contract - cd season_pass/contracts && scarb --release build - cd ../scripts/deployment && npm run deploy - - # update the .env.local file with the season pass and test realms contracts addresses - VITE_SEASON_PASS_ADDRESS=$(cat ./addresses/dev/season_pass.json | jq -r '.address') - VITE_REALMS_ADDRESS=$(cat ./addresses/dev/test_realms.json | jq -r '.address') - VITE_LORDS_ADDRESS=$(cat ./addresses/dev/test_lords.json | jq -r '.address') - - # remove the old addresses if they exist - ENV_FILE=$ROOT_DIR/client/.env.local - sed "${SED_INPLACE[@]}" '/VITE_SEASON_PASS_ADDRESS=/d' $ENV_FILE - sed "${SED_INPLACE[@]}" '/VITE_REALMS_ADDRESS=/d' $ENV_FILE - sed "${SED_INPLACE[@]}" '/VITE_LORDS_ADDRESS=/d' $ENV_FILE - - # add the new addresses to the .env.local file - echo "" >> $ENV_FILE - echo "VITE_SEASON_PASS_ADDRESS=$VITE_SEASON_PASS_ADDRESS" >> $ENV_FILE - echo "VITE_REALMS_ADDRESS=$VITE_REALMS_ADDRESS" >> $ENV_FILE - echo "VITE_LORDS_ADDRESS=$VITE_LORDS_ADDRESS" >> $ENV_FILE - - # Create directories if they don't exist - mkdir -p $ROOT_DIR/common/addresses - - # Set addresses file path - ADDRESSES_FILE=$ROOT_DIR/common/addresses/addresses.local.json - - # Replace/create the addresses JSON file - if [ -f "$ADDRESSES_FILE" ]; then - rm -f $ADDRESSES_FILE - fi - cat > $ADDRESSES_FILE << EOF -{ - "seasonPass": "$VITE_SEASON_PASS_ADDRESS", - "realms": "$VITE_REALMS_ADDRESS", - "lords": "$VITE_LORDS_ADDRESS" -} -EOF - - ENV_FILE=$ROOT_DIR/landing/.env.local - sed "${SED_INPLACE[@]}" '/VITE_SEASON_PASS_ADDRESS=/d' $ENV_FILE - sed "${SED_INPLACE[@]}" '/VITE_REALMS_ADDRESS=/d' $ENV_FILE - sed "${SED_INPLACE[@]}" '/VITE_LORDS_ADDRESS=/d' $ENV_FILE - - # add the new addresses to the .env.local file - echo "" >> $ENV_FILE - echo "VITE_SEASON_PASS_ADDRESS=$VITE_SEASON_PASS_ADDRESS" >> $ENV_FILE - echo "VITE_REALMS_ADDRESS=$VITE_REALMS_ADDRESS" >> $ENV_FILE - echo "VITE_LORDS_ADDRESS=$VITE_LORDS_ADDRESS" >> $ENV_FILE - - TORII_CONFIG_FILE=$ROOT_DIR/contracts/torii.toml - # Ensure the torii_config_file exists - if [[ ! -f "$TORII_CONFIG_FILE" ]]; then - echo "contracts = []" > "$TORII_CONFIG_FILE" - echo "Created new torii_config_file at $TORII_CONFIG_FILE" - fi - - # THIS IS ONL NECESSARY FOR LOCAL BUILDS - # Remove existing ERC721 entries - sed "${SED_INPLACE[@]}" '/"erc721:/d' "$TORII_CONFIG_FILE" - - # Insert new ERC721 entries before the closing ] - sed "${SED_INPLACE[@]}" "/contracts = \[/a\\ - \ \ \"erc721:$VITE_REALMS_ADDRESS\",\\ - \ \ \"erc721:$VITE_SEASON_PASS_ADDRESS\",\\ - " "$TORII_CONFIG_FILE" - - cd ../../../ - printf "\n\n" -fi - - -# build and deploy world contracts -cd contracts - -echo "----- Building World -----" -sozo build - -echo "----- Migrating World -----" -sozo migrate - -if [[ "$setConfig" == "true" ]]; then - bun --env-file=../client/.env.local ../config/index.ts -fi - -if [[ "$external" == "true" ]]; then - printf "\n\n" - echo "----- Building Season Resources Contract ----- " - printf "\n\n" - - # source .env file in deployment - cd .. - source ./season_resources/scripts/deployment/.env - - # build and deploy season resources contract - cd season_resources/contracts && scarb --release build - cd ../scripts/deployment && npm run deploy - - # return to eternum/contracts directory - cd - && cd .. && cd .. && cd contracts - -fi - -echo "----- Started indexer ----- " -rm -rf torii-db -torii --world 0x6a9e4c6f0799160ea8ddc43ff982a5f83d7f633e9732ce42701de1288ff705f --http.cors_origins "*" --config torii.toml - diff --git a/contracts/common/scripts/set_admin_bank.sh b/contracts/common/scripts/set_admin_bank.sh deleted file mode 100755 index d6e39abdc5..0000000000 --- a/contracts/common/scripts/set_admin_bank.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -cd contracts - -echo "----- Creating Admin Bank -----" -bun --env-file=../client/.env.local ../config/bank/index.ts - diff --git a/contracts/common/scripts/update_variables.sh b/contracts/common/scripts/update_variables.sh index a60862d84e..d999ebcdf8 100644 --- a/contracts/common/scripts/update_variables.sh +++ b/contracts/common/scripts/update_variables.sh @@ -63,7 +63,7 @@ update_variable_in_toml "rpc_url" "https://api.cartridge.gg/x/$VITE_PUBLIC_NODE_ # Update the season_pass .env.production file with the new values update_variable_in_file "STARKNET_ACCOUNT_ADDRESS" "$VITE_PUBLIC_MASTER_ADDRESS" "$SEASON_PASS_ENV_PRODUCTION_FILE" update_variable_in_file "STARKNET_ACCOUNT_PRIVATE_KEY" "$VITE_PUBLIC_MASTER_PRIVATE_KEY" "$SEASON_PASS_ENV_PRODUCTION_FILE" -update_variable_in_file "RPC_API_KEY" "https://api.cartridge.gg/x/$VITE_PUBLIC_NODE_URL/katana" "$SEASON_PASS_ENV_PRODUCTION_FILE" +update_variable_in_file "STARKNET_RPC" "https://api.cartridge.gg/x/$VITE_PUBLIC_NODE_URL/katana" "$SEASON_PASS_ENV_PRODUCTION_FILE" update_variable_in_file "SEASON_PASS_ADMIN" "$VITE_PUBLIC_MASTER_ADDRESS" "$SEASON_PASS_ENV_PRODUCTION_FILE" export STARKNET_RPC_URL="https://api.cartridge.gg/x/$VITE_PUBLIC_NODE_URL/katana" diff --git a/contracts/game/.gitignore b/contracts/game/.gitignore index cb70d8f027..f94cd340b4 100644 --- a/contracts/game/.gitignore +++ b/contracts/game/.gitignore @@ -1,14 +1,9 @@ target/* torii.db KATANA.toml -manifests/dev/deployment/abis/* -manifests/dev/deployment/abis/* -manifests/dev/base/* -manifests/dev/base/* -manifests/prod/deployment/abis/* -manifests/prod/deployment/base/* -manifests/prod/abis/* -manifests/prod/base/* +manifest_local.json +logs/* +pids/* .DS_Store torii.db-wal diff --git a/contracts/game/Scarb.lock b/contracts/game/Scarb.lock index de85bfe277..af64e7f35b 100644 --- a/contracts/game/Scarb.lock +++ b/contracts/game/Scarb.lock @@ -184,7 +184,7 @@ version = "0.15.0-rc.0" source = "git+https://github.com/OpenZeppelin/cairo-contracts.git?rev=a13bae3#a13bae3390a7114a8c14c0352c6898eff5f4f5d7" [[package]] -name = "s0_eternum" +name = "s1_eternum" version = "1.0.0" dependencies = [ "achievement", diff --git a/contracts/game/Scarb.toml b/contracts/game/Scarb.toml index ccdebc34cb..532a69af53 100755 --- a/contracts/game/Scarb.toml +++ b/contracts/game/Scarb.toml @@ -1,6 +1,6 @@ [package] cairo-version = "=2.8.4" -name = "s0_eternum" +name = "s1_eternum" version = "1.0.0" [cairo] @@ -31,6 +31,10 @@ build-external-contracts = [ sort-module-level-items = true max-line-length = 120 -[profile.prod] +[profile.local] + +[profile.slot] + +[profile.sepolia] [profile.mainnet] diff --git a/contracts/game/dojo_dev.toml b/contracts/game/dojo_dev.toml index 1c7dedd5ce..ef78b6b8a7 100644 --- a/contracts/game/dojo_dev.toml +++ b/contracts/game/dojo_dev.toml @@ -1,43 +1,43 @@ [namespace] -default = "s0_eternum" +default = "s1_eternum" [env] -## dev +## local account_address = "0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec" private_key = "0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912" [world] -seed = "s0_eternum" +seed = "s1_eternum" name = "Realms: Eternum" description = "Rule the Hex" cover_uri = "file://assets/bg.webp" website = "https://alpha-eternum.realms.world/" [writers] -"s0_eternum" = [ - "s0_eternum-bank_systems", - "s0_eternum-battle_pillage_systems", - "s0_eternum-battle_systems", - "s0_eternum-building_systems", - "s0_eternum-config_systems", - "s0_eternum-dev_bank_systems", - "s0_eternum-dev_realm_systems", - "s0_eternum-dev_resource_systems", - "s0_eternum-donkey_systems", - "s0_eternum-guild_systems", - "s0_eternum-hyperstructure_systems", - "s0_eternum-liquidity_systems", - "s0_eternum-map_systems", - "s0_eternum-map_generation_systems", - "s0_eternum-name_systems", - "s0_eternum-ownership_systems", - "s0_eternum-realm_systems", - "s0_eternum-resource_bridge_systems", - "s0_eternum-resource_systems", - "s0_eternum-swap_systems", - "s0_eternum-trade_systems", - "s0_eternum-travel_systems", - "s0_eternum-troop_systems", - "s0_eternum-battle_utils_systems", - "s0_eternum-season_systems" +"s1_eternum" = [ + "s1_eternum-bank_systems", + "s1_eternum-battle_pillage_systems", + "s1_eternum-battle_systems", + "s1_eternum-production_systems", + "s1_eternum-config_systems", + "s1_eternum-dev_bank_systems", + "s1_eternum-dev_realm_systems", + "s1_eternum-dev_resource_systems", + "s1_eternum-donkey_systems", + "s1_eternum-guild_systems", + "s1_eternum-hyperstructure_systems", + "s1_eternum-liquidity_systems", + "s1_eternum-map_systems", + "s1_eternum-map_generation_systems", + "s1_eternum-name_systems", + "s1_eternum-ownership_systems", + "s1_eternum-realm_systems", + "s1_eternum-resource_bridge_systems", + "s1_eternum-resource_systems", + "s1_eternum-swap_systems", + "s1_eternum-trade_systems", + "s1_eternum-travel_systems", + "s1_eternum-troop_systems", + "s1_eternum-battle_utils_systems", + "s1_eternum-season_systems" ] diff --git a/contracts/game/dojo_local.toml b/contracts/game/dojo_local.toml new file mode 100644 index 0000000000..ef78b6b8a7 --- /dev/null +++ b/contracts/game/dojo_local.toml @@ -0,0 +1,43 @@ +[namespace] +default = "s1_eternum" + +[env] +## local +account_address = "0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec" +private_key = "0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912" + +[world] +seed = "s1_eternum" +name = "Realms: Eternum" +description = "Rule the Hex" +cover_uri = "file://assets/bg.webp" +website = "https://alpha-eternum.realms.world/" + +[writers] +"s1_eternum" = [ + "s1_eternum-bank_systems", + "s1_eternum-battle_pillage_systems", + "s1_eternum-battle_systems", + "s1_eternum-production_systems", + "s1_eternum-config_systems", + "s1_eternum-dev_bank_systems", + "s1_eternum-dev_realm_systems", + "s1_eternum-dev_resource_systems", + "s1_eternum-donkey_systems", + "s1_eternum-guild_systems", + "s1_eternum-hyperstructure_systems", + "s1_eternum-liquidity_systems", + "s1_eternum-map_systems", + "s1_eternum-map_generation_systems", + "s1_eternum-name_systems", + "s1_eternum-ownership_systems", + "s1_eternum-realm_systems", + "s1_eternum-resource_bridge_systems", + "s1_eternum-resource_systems", + "s1_eternum-swap_systems", + "s1_eternum-trade_systems", + "s1_eternum-travel_systems", + "s1_eternum-troop_systems", + "s1_eternum-battle_utils_systems", + "s1_eternum-season_systems" +] diff --git a/contracts/game/dojo_prod.toml b/contracts/game/dojo_prod.toml deleted file mode 100644 index c55f27a668..0000000000 --- a/contracts/game/dojo_prod.toml +++ /dev/null @@ -1,43 +0,0 @@ -[namespace] -default = "s0_eternum" - -[env] -account_address = "0x01BFC84464f990C09Cc0e5D64D18F54c3469fD5c467398BF31293051bAde1C39" -private_key = "0x075362a844768f31c8058ce31aec3dd7751686440b4f220f410ae0c9bf042e60" -rpc_url = "https://api.cartridge.gg/x/starknet/sepolia" - -[world] -seed = "s0_eternum-11" -name = "Realms: Eternum" -description = "Rule the Hex" -cover_uri = "file://assets/bg.webp" -website = "https://eternum.realms.world/" - -[writers] -"s0_eternum" = [ - "s0_eternum-bank_systems", - "s0_eternum-battle_pillage_systems", - "s0_eternum-battle_utils_systems", - "s0_eternum-battle_systems", - "s0_eternum-building_systems", - "s0_eternum-config_systems", - "s0_eternum-dev_bank_systems", - "s0_eternum-dev_realm_systems", - "s0_eternum-dev_resource_systems", - "s0_eternum-donkey_systems", - "s0_eternum-guild_systems", - "s0_eternum-hyperstructure_systems", - "s0_eternum-liquidity_systems", - "s0_eternum-map_systems", - "s0_eternum-map_generation_systems", - "s0_eternum-name_systems", - "s0_eternum-ownership_systems", - "s0_eternum-realm_systems", - "s0_eternum-resource_bridge_systems", - "s0_eternum-resource_systems", - "s0_eternum-swap_systems", - "s0_eternum-trade_systems", - "s0_eternum-travel_systems", - "s0_eternum-troop_systems", - "s0_eternum-season_systems", -] diff --git a/contracts/game/dojo_sepolia.toml b/contracts/game/dojo_sepolia.toml new file mode 100644 index 0000000000..360a68bc0f --- /dev/null +++ b/contracts/game/dojo_sepolia.toml @@ -0,0 +1,43 @@ +[namespace] +default = "s1_eternum" + +[env] +account_address = "0x01BFC84464f990C09Cc0e5D64D18F54c3469fD5c467398BF31293051bAde1C39" +private_key = "0x075362a844768f31c8058ce31aec3dd7751686440b4f220f410ae0c9bf042e60" +rpc_url = "https://api.cartridge.gg/x/starknet/sepolia" + +[world] +seed = "s1_eternum-11" +name = "Realms: Eternum" +description = "Rule the Hex" +cover_uri = "file://assets/bg.webp" +website = "https://eternum.realms.world/" + +[writers] +"s1_eternum" = [ + "s1_eternum-bank_systems", + "s1_eternum-battle_pillage_systems", + "s1_eternum-battle_utils_systems", + "s1_eternum-battle_systems", + "s1_eternum-building_systems", + "s1_eternum-config_systems", + "s1_eternum-dev_bank_systems", + "s1_eternum-dev_realm_systems", + "s1_eternum-dev_resource_systems", + "s1_eternum-donkey_systems", + "s1_eternum-guild_systems", + "s1_eternum-hyperstructure_systems", + "s1_eternum-liquidity_systems", + "s1_eternum-map_systems", + "s1_eternum-map_generation_systems", + "s1_eternum-name_systems", + "s1_eternum-ownership_systems", + "s1_eternum-realm_systems", + "s1_eternum-resource_bridge_systems", + "s1_eternum-resource_systems", + "s1_eternum-swap_systems", + "s1_eternum-trade_systems", + "s1_eternum-travel_systems", + "s1_eternum-troop_systems", + "s1_eternum-season_systems", +] diff --git a/contracts/game/dojo_slot.toml b/contracts/game/dojo_slot.toml new file mode 100644 index 0000000000..2eff9ae9c1 --- /dev/null +++ b/contracts/game/dojo_slot.toml @@ -0,0 +1,44 @@ +[namespace] +default = "s1_eternum" + +[env] +## local +account_address = "0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec" +private_key = "0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912" +rpc_url = "https://api.cartridge.gg/x/slot-old-star/katana" + +[world] +seed = "s1_eternum" +name = "Realms: Eternum" +description = "Rule the Hex" +cover_uri = "file://assets/bg.webp" +website = "https://alpha-eternum.realms.world/" + +[writers] +"s1_eternum" = [ + "s1_eternum-bank_systems", + "s1_eternum-battle_pillage_systems", + "s1_eternum-battle_systems", + "s1_eternum-production_systems", + "s1_eternum-config_systems", + "s1_eternum-dev_bank_systems", + "s1_eternum-dev_realm_systems", + "s1_eternum-dev_resource_systems", + "s1_eternum-donkey_systems", + "s1_eternum-guild_systems", + "s1_eternum-hyperstructure_systems", + "s1_eternum-liquidity_systems", + "s1_eternum-map_systems", + "s1_eternum-map_generation_systems", + "s1_eternum-name_systems", + "s1_eternum-ownership_systems", + "s1_eternum-realm_systems", + "s1_eternum-resource_bridge_systems", + "s1_eternum-resource_systems", + "s1_eternum-swap_systems", + "s1_eternum-trade_systems", + "s1_eternum-travel_systems", + "s1_eternum-troop_systems", + "s1_eternum-battle_utils_systems", + "s1_eternum-season_systems" +] diff --git a/contracts/game/ext/_ b/contracts/game/ext/_ deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/contracts/game/ext/formulas/battles/battle_time.js b/contracts/game/ext/formulas/battles/battle_time.js index 0cb77bac31..f94b4deb39 100644 --- a/contracts/game/ext/formulas/battles/battle_time.js +++ b/contracts/game/ext/formulas/battles/battle_time.js @@ -39,8 +39,14 @@ function runBattle(attacker, defender, config, testCase) { console.log("Defender:", defender); // Calculate full health for both armies - const attackHealth = new Health({ current: attacker.fullHealth(config), lifetime: attacker.fullHealth(config) }); - const defenceHealth = new Health({ current: defender.fullHealth(config), lifetime: defender.fullHealth(config) }); + const attackHealth = new Health({ + current: attacker.fullHealth(config), + lifetime: attacker.fullHealth(config), + }); + const defenceHealth = new Health({ + current: defender.fullHealth(config), + lifetime: defender.fullHealth(config), + }); // Initialize Battle const battle = new Battle(attacker, defender, attackHealth, defenceHealth, config); diff --git a/contracts/game/ext/formulas/resources/resources.py b/contracts/game/ext/formulas/resources/resources.py index c5f6813027..ed9972c50b 100644 --- a/contracts/game/ext/formulas/resources/resources.py +++ b/contracts/game/ext/formulas/resources/resources.py @@ -17,7 +17,7 @@ resource_values['Wheat'] = 0 # Assign zero value to Wheat # Predefined resource inputs (Fixed) -resource_inputs = { +RESOURCE_PRODUCTION_INPUT_RESOURCES = { "Wood": ("Coal", "Stone"), "Stone": ("Wood", "Coal"), "Coal": ("Wood", "Copper"), @@ -47,7 +47,7 @@ # Determine input requirements input_requirements = {} -for resource, (input1, input2) in resource_inputs.items(): +for resource, (input1, input2) in RESOURCE_PRODUCTION_INPUT_RESOURCES.items(): value_output = resource_values[resource] value_input1 = resource_values[input1] value_input2 = resource_values[input2] diff --git a/contracts/game/ext/scripts/colors.sh b/contracts/game/ext/scripts/colors.sh new file mode 100644 index 0000000000..fcab62a0ae --- /dev/null +++ b/contracts/game/ext/scripts/colors.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# ============================================================================= +# Terminal Colors Configuration +# ============================================================================= +# +# DESCRIPTION: +# Defines ANSI color codes for consistent terminal output styling across +# multiple scripts. +# +# USAGE: +# source ./utils/colors.sh +# +# ============================================================================= + +# Basic colors +export GREEN=$(echo -e '\033[0;32m') +export BLUE=$(echo -e '\033[0;34m') +export YELLOW=$(echo -e '\033[1;33m') +export RED=$(echo -e '\033[0;31m') + +# Text styles +export BOLD=$(echo -e '\033[1m') +export NC=$(echo -e '\033[0m') # No Color \ No newline at end of file diff --git a/contracts/game/ext/scripts/indexer.sh b/contracts/game/ext/scripts/indexer.sh new file mode 100755 index 0000000000..91f28e383f --- /dev/null +++ b/contracts/game/ext/scripts/indexer.sh @@ -0,0 +1,279 @@ +#!/bin/bash + +# ============================================================================= +# Torii Indexer Management Script +# ============================================================================= +# +# DESCRIPTION: +# This script manages a Torii indexer instance for Starknet development. +# Torii is an indexer that helps query and index Starknet blockchain data. +# This script handles starting and managing the indexer with proper logging +# and process management. +# +# USAGE: +# ./indexer.sh [options] +# +# OPTIONS: +# --kill Stops any running indexer instance +# --world Starts indexer with custom world address +# --rpc Sets custom RPC URL +# --network Sets network name (default: local) +# --help Shows usage information +# +# CONFIGURATION: +# The script starts Torii with the following default settings: +# - World address: 0x0009dd5e66cfa83f893c2a70b9ea5221e2df18aaf52a111fe9003264f948c7aa +# - RPC URL: http://localhost:8080 +# - Network: local +# - CORS: Enabled for all origins +# - Config file: torii.toml +# +# FILES: +# - PID file: contracts/game/pids/indexer..pid +# - Log file: contracts/game/logs/indexer..log +# - Database: contracts/game/torii-db +# +# EXAMPLES: +# Start with default settings: +# ./indexer.sh +# +# Start with custom settings: +# ./indexer.sh --world 0x123... --rpc http://localhost:8080 --network local +# +# Stop specific network instance: +# ./indexer.sh --kill --network local +# +# ============================================================================= + +#============================================================================== +# ERROR HANDLING +#============================================================================== + +# Import colors +source "$(dirname "$0")/colors.sh" + + +set -e # Exit on error +set -o pipefail # Exit if any command in a pipe fails + +error_handler() { + echo -e "\n${RED}► Error: Command failed at line $1${NC}" + exit 1 +} + +trap 'error_handler ${LINENO}' ERR + +#============================================================================== +# CONFIGURATION +#============================================================================== + +# File paths +LOG_DIR="logs" +PID_DIR="pids" +DEFAULT_NETWORK="local" # just a name when saving log and pid files +NETWORK=${NETWORK:-$DEFAULT_NETWORK} +LOG_FILE="$LOG_DIR/indexer.$NETWORK.log" +PID_FILE="$PID_DIR/indexer.$NETWORK.pid" +DB_DIR="torii.$NETWORK.db" +TORII_CONFIG="torii-$NETWORK.toml" + +# Torii settings +DEFAULT_WORLD_ADDRESS="0x0009dd5e66cfa83f893c2a70b9ea5221e2df18aaf52a111fe9003264f948c7aa" +DEFAULT_RPC_URL="http://localhost:8080" +WORLD_ADDRESS=$DEFAULT_WORLD_ADDRESS # Will be overridden by args if provided +RPC_URL=${RPC_URL:-$DEFAULT_RPC_URL} # Use env var or default +PORT=8080 + +#============================================================================== +# ARGUMENT PARSING +#============================================================================== + +print_usage() { + echo -e "${BLUE}Usage:${NC}" + echo -e " ./indexer.sh [options]" + echo -e "" + echo -e "${BLUE}Options:${NC}" + echo -e " --kill Stop the running indexer instance" + echo -e " --world
Set the World contract address" + echo -e " --rpc Set the RPC URL" + echo -e " --network Set the network name (default: devnet)" + echo -e " --help Show this help message" + echo -e "" +} + +# Parse command line arguments +while [[ $# -gt 0 ]]; do + case $1 in + --kill) + KILL_MODE=true + shift + ;; + --world) + if [[ -z "$2" || "$2" == --* ]]; then + echo -e "${RED}► Error: World address must be provided with --world flag${NC}" + exit 1 + fi + WORLD_ADDRESS="$2" + shift 2 + ;; + --rpc) + if [[ -z "$2" || "$2" == --* ]]; then + echo -e "${RED}► Error: RPC URL must be provided with --rpc flag${NC}" + exit 1 + fi + RPC_URL="$2" + shift 2 + ;; + --network) + if [[ -z "$2" || "$2" == --* ]]; then + echo -e "${RED}► Error: Network name must be provided with --network flag${NC}" + exit 1 + fi + NETWORK="$2" + LOG_FILE="$LOG_DIR/indexer.$NETWORK.log" + PID_FILE="$PID_DIR/indexer.$NETWORK.pid" + shift 2 + ;; + --help) + print_usage + exit 0 + ;; + *) + echo -e "${RED}► Error: Unknown option: $1${NC}" + print_usage + exit 1 + ;; + esac +done + +#============================================================================== +# UTILITY FUNCTIONS +#============================================================================== + +# Function to stop existing indexer process +stop_indexer() { + if [ -f "$PID_FILE" ]; then + OLD_PID=$(cat "$PID_FILE") + if kill -0 "$OLD_PID" 2>/dev/null; then + echo -e "${YELLOW}► Stopping existing Torii indexer process (PID: ${BOLD}$OLD_PID${NC}${YELLOW})${NC}" + kill "$OLD_PID" + sleep 2 + fi + rm "$PID_FILE" + fi +} + +# Function to handle log formatting +setup_log_handling() { + sed -u \ + -e 's/\x1b\[[0-9;]*m//g' \ + >> "$LOG_FILE" 2>&1 +} + +# Function to check and free port +free_port() { + if lsof -i :$PORT > /dev/null 2>&1; then + echo -e "${YELLOW}► Port $PORT is in use. Attempting to free it...${NC}" + # Get all PIDs and handle them one by one + lsof -t -i :$PORT | while read -r PORT_PID; do + if [ ! -z "$PORT_PID" ]; then + echo -e "${RED}► Killing process using port $PORT (PID: ${BOLD}$PORT_PID${NC}${RED})${NC}" + kill -9 "$PORT_PID" + fi + done + sleep 1 + fi +} + +#============================================================================== +# MAIN EXECUTION +#============================================================================== + +DISPLAY_TITLE="Starting up Torii Indexer" +if [ "$KILL_MODE" = true ]; then + DISPLAY_TITLE="Stopping Torii Indexer" +fi + +echo -e "" +echo -e "${BLUE}╔══════════════════════════════════════════════════════════╗${NC}" +echo -e "${BLUE}║ $DISPLAY_TITLE ║${NC}" +echo -e "${BLUE}╚══════════════════════════════════════════════════════════╝${NC}" +echo -e "" + +# Create required directories if they don't exist +mkdir -p $PID_DIR $LOG_DIR + +# Handle kill mode +if [ "$KILL_MODE" = true ]; then + if [ -f "$PID_FILE" ]; then + stop_indexer + echo -e "${GREEN}✔ Indexer stopped successfully${NC}" + else + echo -e "${YELLOW}► No indexer process found (no PID file)${NC}" + fi + exit 0 +fi + +#============================================================================== +# INDEXER STARTUP +#============================================================================== + +# Stop any existing indexer process +stop_indexer + +# Free up the port if it's in use +free_port + +# Clean up existing database +if [ -d "$DB_DIR" ]; then + echo -e "${YELLOW}► Removing existing database${NC}" + rm -rf "$DB_DIR" +fi + +# Delete existing log file +if [ -f "$LOG_FILE" ]; then + echo -e "${YELLOW}► Removing existing log file${NC}" + rm "$LOG_FILE" +fi + +# Run torii in the background with log handling +echo -e "" +echo -e "${GREEN}Starting Torii Indexer with:${NC}" +echo -e "${GREEN}- World address: ${BOLD}${BLUE}$WORLD_ADDRESS${NC}" +echo -e "${GREEN}- RPC URL: ${BOLD}${BLUE}$RPC_URL${NC}" +echo -e "${GREEN}- Network: ${BOLD}${BLUE}$NETWORK${NC}" +echo -e "" + +# if RPC url is localhost, dont set --rpc +if [ "$RPC_URL" != "http://localhost:8080" ] && [ "$RPC_URL" != "http://127.0.0.1:8080" ]; then + torii --world $WORLD_ADDRESS \ + --http.cors_origins "*" \ + --rpc $RPC_URL \ + --db-dir $DB_DIR \ + --config $TORII_CONFIG 2>&1 | setup_log_handling & +else + torii --world $WORLD_ADDRESS \ + --http.cors_origins "*" \ + --db-dir $DB_DIR \ + --config $TORII_CONFIG 2>&1 | setup_log_handling & +fi + +# Store the PID +echo $! > "$PID_FILE" + +# Wait briefly and check if process is still running +sleep 2 +if ! kill -0 $(cat "$PID_FILE") 2>/dev/null; then + echo -e "${RED}► Indexer failed to start. Error from log:${NC}" + tail -n 5 "$LOG_FILE" + rm -f "$PID_FILE" + exit 1 +fi + +echo -e "${GREEN}✔ Indexer started with PID: ${BOLD}$(cat $PID_FILE)${NC}" +echo -e "${GREEN}✔ PID file: contracts/game/${BOLD}$PID_FILE${NC}" +echo -e "${GREEN}✔ Log file: contracts/game/${BOLD}$LOG_FILE${NC}" +echo -e "" + +echo -e "${GREEN}✔ torii indexer started successfully${NC}" +echo -e "" \ No newline at end of file diff --git a/contracts/game/ext/scripts/katana.sh b/contracts/game/ext/scripts/katana.sh new file mode 100755 index 0000000000..19ff495083 --- /dev/null +++ b/contracts/game/ext/scripts/katana.sh @@ -0,0 +1,178 @@ +#!/bin/bash + +# ============================================================================= +# Katana Local Node Management Script +# ============================================================================= +# +# DESCRIPTION: +# This script manages a local Katana node instance for Starknet development. +# Katana is a local development node for Starknet, similar to Ganache for +# Ethereum. This script handles starting, stopping, and managing the node +# with proper logging and process management. +# +# +# USAGE: +# ./katana.sh - Starts a new Katana node instance +# ./katana.sh --kill - Stops any running Katana instance +# +# CONFIGURATION: +# The script starts Katana with the following settings: +# - Maximum invoke steps: 25,000,000 +# - CORS: Enabled for all origins +# - Block time: 2500ms (2.5 seconds) +# - Dev mode: Enabled +# - Transaction fees: Disabled +# - Default port: 5050 +# +# FILES: +# - PID file: contracts/game/pids/katana.pid +# - Log file: contracts/game/logs/katana.log +# +# REQUIREMENTS: +# - Katana must be installed and available in PATH +# - lsof command for port management +# - Basic Unix commands (kill, sed, etc.) +# +# ============================================================================= + + +# Import colors +source "$(dirname "$0")/colors.sh" + +#============================================================================== +# ERROR HANDLING +#============================================================================== + +set -e # Exit on error +set -o pipefail # Exit if any command in a pipe fails + +error_handler() { + echo -e "\n${RED}► Error: Command failed at line $1${NC}" + exit 1 +} + +trap 'error_handler ${LINENO}' ERR + +#============================================================================== +# CONFIGURATION +#============================================================================== + +# File paths and ports +LOG_DIR="logs" +PID_DIR="pids" +LOG_FILE="$LOG_DIR/katana.log" +PID_FILE="$PID_DIR/katana.pid" +PORT=5050 + +# Katana settings +KATANA_MAX_INVOKE_STEPS=25000000 # 25,000,000 +KATANA_BLOCK_TIME=2500 # 2.5 seconds + +#============================================================================== +# UTILITY FUNCTIONS +#============================================================================== + +# Function to check and free port +free_port() { + if lsof -i :$PORT > /dev/null 2>&1; then + echo -e "${YELLOW}► Port $PORT is in use. Attempting to free it...${NC}" + # Get all PIDs and handle them one by one + lsof -t -i :$PORT | while read -r PORT_PID; do + if [ ! -z "$PORT_PID" ]; then + echo -e "${RED}► Killing process using port $PORT (PID: ${BOLD}$PORT_PID${NC}${RED})${NC}" + kill -9 "$PORT_PID" + fi + done + sleep 1 + fi +} + +# Function to stop existing Katana process +stop_katana() { + if [ -f "$PID_FILE" ]; then + OLD_PID=$(cat "$PID_FILE") + if kill -0 "$OLD_PID" 2>/dev/null; then + echo -e "${YELLOW}► Stopping existing Katana process (PID: ${BOLD}$OLD_PID${NC}${YELLOW})${NC}" + kill "$OLD_PID" + sleep 2 + fi + rm "$PID_FILE" + fi +} + +# Function to handle log formatting +setup_log_handling() { + sed -u \ + -e 's/\x1b\[2m//g' \ + -e 's/\x1b\[0m//g' \ + -e 's/\x1b\[32m//g' \ + -e 's/\x1b\[3m//g' \ + -e 's/\x1b\[31m//g' \ + -e 's/\x1b\[33m//g' \ + -e 's/\x1b\[34m//g' \ + -e 's/\x1b\[35m//g' \ + -e 's/\x1b\[36m//g' \ + -e 's/\x1b\[37m//g' \ + >> "$LOG_FILE" 2>&1 +} + +#============================================================================== +# MAIN EXECUTION +#============================================================================== + +KATANA_VERSION=$(katana --version) +DISPLAY_TITLE="Starting up $KATANA_VERSION" +if [ "$1" == "--kill" ]; then + DISPLAY_TITLE="Stopping Katana" +fi + +echo -e "" +echo -e "${BLUE}╔══════════════════════════════════════════════════════════╗${NC}" +echo -e "${BLUE}║ $DISPLAY_TITLE ║${NC}" +echo -e "${BLUE}╚══════════════════════════════════════════════════════════╝${NC}" +echo -e "" + +# Create required directories if they don't exist +mkdir -p $PID_DIR $LOG_DIR + +# Add kill-only functionality +if [ "$1" == "--kill" ]; then + if [ -f "$PID_FILE" ]; then + stop_katana + free_port + echo -e "${GREEN}✔ Katana stopped successfully${NC}" + else + echo -e "${YELLOW}► No Katana process found (no PID file)${NC}" + fi + exit 0 +fi + +#============================================================================== +# KATANA STARTUP +#============================================================================== + +# Stop any existing Katana process +stop_katana + +# Free port if in use +free_port + +# Delete existing log file +if [ -f "$LOG_FILE" ]; then + echo -e "${YELLOW}► Removing existing log file${NC}" + rm "$LOG_FILE" +fi + +# Run katana in the background with log handling +katana --invoke-max-steps $KATANA_MAX_INVOKE_STEPS \ + --http.cors_origins "*" \ + --block-time $KATANA_BLOCK_TIME \ + --dev \ + --dev.no-fee 2>&1 | setup_log_handling & + +# Store the PID +echo $! > "$PID_FILE" +echo -e "${GREEN}✔ Katana started with PID: ${BOLD}$(cat $PID_FILE)${NC}" +echo -e "${GREEN}✔ PID file: contracts/game/${BOLD}$PID_FILE${NC}" +echo -e "${GREEN}✔ Log file: contracts/game/${BOLD}$LOG_FILE${NC}" +echo -e "" \ No newline at end of file diff --git a/contracts/game/ext/scripts/migrate.sh b/contracts/game/ext/scripts/migrate.sh new file mode 100755 index 0000000000..1dcd98e8a3 --- /dev/null +++ b/contracts/game/ext/scripts/migrate.sh @@ -0,0 +1,120 @@ +#!/bin/bash + +# ============================================================================= +# Eternum Game Contract Migration Script +# ============================================================================= +# +# DESCRIPTION: +# This script automates the build and deployment process for the game contracts +# using sozo. +# +# USAGE: +# ./migrate.sh [OPTIONS] +# +# OPTIONS: +# --profile Specify the deployment profile (default: "local") +# Common values: local, sepolia, mainnet +# --world Specify a world contract address to connect to +# If not specified, the default world addr will be used and printed +# +# EXAMPLES: +# ./migrate.sh # Uses local profile +# ./migrate.sh --profile sepolia # Migrate to sepolia +# ./migrate.sh --profile sepolia --world 0x1234... # Connect to existing world +# +# PROCESS: +# 1. Builds all game contracts using 'sozo build' +# 2. Migrates (deploys) the contracts using 'sozo migrate' +# 3. Provides visual feedback throughout the process +# +# REQUIREMENTS: +# - Sozo CLI tool must be installed and in PATH +# - Proper configuration in Scarb.toml for the target profile +# +# ============================================================================= + + +# Import colors +source "$(dirname "$0")/colors.sh" + + +#============================================================================== +# ERROR HANDLING +#============================================================================== + +set -e # Exit on error +set -o pipefail # Exit if any command in a pipe fails + +error_handler() { + echo -e "\n${RED}► Error: Command failed at line $1${NC}" + exit 1 +} + +trap 'error_handler ${LINENO}' ERR + +#============================================================================== +# CONFIGURATION +#============================================================================== + +PROFILE="local" +WORLD_CONTRACT="" + +#============================================================================== +# ARGUMENT PARSING +#============================================================================== + +# Parse arguments using a while loop +while [[ $# -gt 0 ]]; do + case $1 in + --profile) + PROFILE="$2" + shift 2 + ;; + --world) + WORLD_CONTRACT="--world $2" + shift 2 + ;; + *) + shift + ;; + esac +done + +#============================================================================== +# CONTRACT COMPILATION +#============================================================================== + +echo -e "" +echo -e "${BLUE}╔═════════════════════════════════════════════════════╗${NC}" +echo -e "${BLUE}║ Game Contract Compilation ║${NC}" +echo -e "${BLUE}╚═════════════════════════════════════════════════════╝${NC}" +echo -e "" + +echo -e "${YELLOW}► Building Game contracts with --profile ${BOLD}${PROFILE}${YELLOW}" +COMMAND="sozo build --profile $PROFILE" +echo -e "" +echo -e "${BLUE}► Running command: ${BOLD}${COMMAND}${BLUE}${NC}" +echo -e "" +$COMMAND + +#============================================================================== +# CONTRACT MIGRATION +#============================================================================== + +echo -e "" +echo -e "${BLUE}╔═════════════════════════════════════════════════════╗${NC}" +echo -e "${BLUE}║ Game Contract Migration ║${NC}" +echo -e "${BLUE}╚═════════════════════════════════════════════════════╝${NC}" +echo -e "" + +echo -e "${YELLOW}► Migrating Game contracts with --profile ${BOLD}${PROFILE}${YELLOW}"\ + "and world contract: ${BOLD}${WORLD_CONTRACT:-(unspecified)}${YELLOW}${NC}" +COMMAND="sozo migrate --profile $PROFILE $WORLD_CONTRACT --fee eth" +echo -e "" +echo -e "${BLUE}► Running command: ${BOLD}${COMMAND}${BLUE}${NC}" +echo -e "" +$COMMAND + +echo -e "" +echo -e "${GREEN}✔ Migration completed successfully${NC}" +echo -e "" \ No newline at end of file diff --git a/contracts/game/ext/scripts/slot.sh b/contracts/game/ext/scripts/slot.sh new file mode 100755 index 0000000000..6254c6e0d1 --- /dev/null +++ b/contracts/game/ext/scripts/slot.sh @@ -0,0 +1,348 @@ +#!/bin/bash + +# ============================================================================= +# Slot Deployment Script +# ============================================================================= +# +# DESCRIPTION: +# This script manages deployments of remote Katana and Torii (indexer) +# +# USAGE: +# ./slot.sh [options] +# +# COMMANDS: +# katana Deploy Katana network +# torii Deploy Torii indexer +# +# PARAMETERS: +# For Torii deployment (all required): +# --world
The World address +# --network Network to deploy to +# --project Project name for deployment +# --toml Directory containing torii config files (named torii-.toml) +# +# For Katana deployment: +# --project Project name (optional, auto-generated if not specified) +# +# NETWORK OPTIONS: +# - slot: Local Katana network (requires --project) +# - mainnet: Eternum mainnet +# - sepolia: Starknet Sepolia testnet +# +# EXAMPLES: +# 1. Deploy Katana with auto-generated project name: +# ./slot.sh katana +# +# 2. Deploy Katana with specific project: +# ./slot.sh katana --project my-project +# +# 3. Deploy Torii (all parameters required): +# ./slot.sh torii --network mainnet --world 0x123 --project my-project +# +# NETWORK CONFIGURATIONS: +# slot: https://api.cartridge.gg/x//katana +# (Requires prior Katana deployment with same project name) +# mainnet: https://api.cartridge.gg/x/eternum/mainnet +# sepolia: https://api.cartridge.gg/x/starknet/sepolia +# +# PROJECT NAMING: +# - If --project is not specified for Katana: +# Auto-generates name in format: slot-- +# - For Torii deployments, --project is always required +# +# ERROR HANDLING: +# - Validates all required parameters based on command +# - Ensures project name is specified for Torii and slot network +# - Checks for valid network selection +# - Handles deployment failures gracefully +# +# ============================================================================= + +# Import colors from shared script (assuming same directory as migrate.sh) +source "$(dirname "$0")/colors.sh" + +#============================================================================== +# CONFIGURATION +#============================================================================== + +KATANA_MAX_INVOKE_STEPS=25000000 # 25,000,000 +KATANA_BLOCK_TIME=2500 # 2.5 seconds +PROJECT_FILE=".slot-project" +SN_NETWORK="slot" +# Default RPC URL will now be set based on network selection +RPC_URL="" +COMMAND="" + +# First argument is the command +if [ $# -gt 0 ]; then + case "$1" in + "katana"|"torii") + COMMAND="$1" + shift + ;; + "--help"|"-h") + display_help + ;; + *) + echo -e "${RED}► Error: Unknown command '$1'. Use 'katana' or 'torii'${NC}" + exit 1 + ;; + esac +fi + +# Process remaining arguments as options +while [[ $# -gt 0 ]]; do + case $1 in + --world) + WORLD="$2" + shift 2 + ;; + --project) + PROJECT_NAME="$2" + shift 2 + ;; + --network) + SN_NETWORK="$2" + shift 2 + ;; + --toml) + TOML_PATH="$2" + shift 2 + ;; + *) + echo -e "${RED}► Error: Unknown option $1${NC}" + exit 1 + ;; + esac +done + +# Validate command +if [ -z "$COMMAND" ]; then + echo -e "${RED}► Error: Must specify either 'katana' or 'torii' command${NC}" + exit 1 +fi + +# Validate required parameters for torii +if [ "$COMMAND" = "torii" ]; then + if [ -z "$SN_NETWORK" ]; then + echo -e "\n${RED}► Error: Network must be specified using --network parameter for Torii deployment${NC}\n" + exit 1 + fi + if [ -z "$WORLD" ]; then + echo -e "\n${RED}► Error: World address must be provided using --world parameter for Torii deployment${NC}\n" + exit 1 + fi + if [ -z "$PROJECT_NAME" ]; then + echo -e "\n${RED}► Error: Project name must be specified using --project parameter for Torii deployment${NC}\n" + exit 1 + fi + if [ -z "$TOML_PATH" ]; then + echo -e "\n${RED}► Error: Torii config directory must be specified using --toml parameter${NC}\n" + exit 1 + fi + + # Construct the full config file path + TOML_FILE="torii-$SN_NETWORK.toml" + FULL_TOML_PATH="$TOML_PATH/$TOML_FILE" + + if [ ! -f "$FULL_TOML_PATH" ]; then + echo -e "\n${RED}► Error: Torii config file not found at: $FULL_TOML_PATH${NC}\n" + exit 1 + fi + + RPC_URL="https://api.cartridge.gg/x/$PROJECT_NAME/katana" + if [ "$SN_NETWORK" = "mainnet" ]; then + RPC_URL="https://api.cartridge.gg/x/eternum/mainnet" + fi + if [ "$SN_NETWORK" = "sepolia" ]; then + RPC_URL="https://api.cartridge.gg/x/starknet/sepolia" + fi + echo -e "\n\n${BLUE}╔════════════════════════════════════════════════════════════════╗${NC}" + echo -e "${BLUE}║ ║${NC}" + echo -e "${BLUE}║ ${MAGENTA}${BOLD}NETWORK CONFIG${NC}${BLUE} ║${NC}" + echo -e "${BLUE}║ ║${NC}" + echo -e "${BLUE}╠════════════════════════════════════════════════════════════════╣${NC}" + echo -e "${BLUE}║ ║${NC}" + echo -e "${BLUE}║ ${MAGENTA}${BOLD}RPC URL:${NC} ${BLUE}${BOLD}$RPC_URL${NC}${BLUE} ║${NC}" + echo -e "${BLUE}║ ║${NC}" + echo -e "${BLUE}║ ${MAGENTA}${BOLD}TORII CONFIG:${NC} ${BLUE}${BOLD}$FULL_TOML_PATH${NC}${BLUE} ║${NC}" + echo -e "${BLUE}║ ║${NC}" + echo -e "${BLUE}╚════════════════════════════════════════════════════════════════╝${NC}" + echo -e "\n${YELLOW}► Make sure you have already deployed Katana with this project name${NC}\n\n" +fi + +# Update validation checks +if [ "$COMMAND" = "torii" ] && [ -z "$WORLD" ]; then + echo -e "${RED}► Error: World address must be provided using --world parameter for Torii deployment${NC}" + exit 1 +fi + +# Validate deployment options +if [ "$COMMAND" = "katana" ] && [ "$COMMAND" = "torii" ]; then + echo -e "${RED}► Error: Cannot deploy Katana and Torii simultaneously. Please choose one.${NC}" + exit 1 +fi + +if [ "$COMMAND" != "katana" ] && [ "$COMMAND" != "torii" ]; then + echo -e "${RED}► Error: Must specify either --katana or --torii${NC}" + exit 1 +fi + +#============================================================================== +# HELPER FUNCTIONS +#============================================================================== + +generate_project_name() { + local adjectives=( + "red" "blue" "gold" "dark" "wild" "bold" "pure" + "fast" "calm" "wise" "brave" "free" "firm" "true" + "raw" "real" "deep" "fair" "safe" "warm" "cool" + "keen" "soft" "loud" "new" "old" "hot" "cold" + "big" "small" "swift" "strong" "bright" "clear" + ) + local nouns=( + "gate" "path" "star" "moon" "sun" "tree" "rock" + "cave" "peak" "lake" "sea" "bay" "port" "base" + "dome" "fort" "keep" "den" "nest" "home" "road" + "way" "hall" "hub" "core" "ring" "well" "post" + "node" "link" "grid" "web" "net" "zone" "spot" + ) + local adj1=${adjectives[$RANDOM % ${#adjectives[@]}]} + local noun=${nouns[$RANDOM % ${#nouns[@]}]} + echo "slot-${adj1}-${noun}" +} + +display_help() { + cat << EOF +$(echo -e "${BLUE}╔═════════════════════════════════════════════════════╗${NC}") +$(echo -e "${BLUE}║ Slot Deployment Help ║${NC}") +$(echo -e "${BLUE}╚═════════════════════════════════════════════════════╝${NC}") + +USAGE: + ./slot.sh [options] + +COMMANDS: + katana Deploy Katana network + torii Deploy Torii indexer + +OPTIONS: + --world
The World address (required for torii) + --network Network to deploy to (required for torii) + Options: slot, mainnet, sepolia + --project Custom project name (default: auto-generated) + --toml Directory containing torii config files (named torii-.toml) + +EXAMPLES: + 1. Deploy Katana: + ./slot.sh katana + + 2. Deploy Katana with custom project name: + ./slot.sh katana --project my-project + + + 3. Deploy Torii: + ./slot.sh torii --network mainnet --world 0x123 --project my-project + ./slot.sh torii --network sepolia --world 0x123 --project my-project + ./slot.sh torii --network slot --world 0x123 --project my-project + + +SEQUENCER CONFIGURATIONS: + slot: https://api.cartridge.gg/x//katana + mainnet: https://api.cartridge.gg/x/eternum/mainnet + sepolia: https://api.cartridge.gg/x/starknet/sepolia +EOF + exit 0 +} + +#============================================================================== +# ERROR HANDLING +#============================================================================== + +set -e +trap 'echo -e "\n${RED}► Error: Command failed at line $LINENO${NC}"; exit 1' ERR + +#============================================================================== +# MAIN SCRIPT +#============================================================================== + +# Generate project name if not provided +if [ -z "$PROJECT_NAME" ]; then + PROJECT_NAME=$(generate_project_name) +fi + +echo -e "\n${BLUE}╔═════════════════════════════════════════════════════╗${NC}" +echo -e "${BLUE}║ Slot Deployment Setup ║${NC}" +echo -e "${BLUE}╚═════════════════════════════════════════════════════╝${NC}\n" + +echo -e "${GREEN}► Project name: ${BOLD}$PROJECT_NAME${NC}\n" + +# Add reminder function +print_env_reminder() { + local command="$1" + local box_width=60 + + echo -e "\n${BLUE}╔══════════════════════════════════════════════════════════════════╗${NC}" + echo -e "${BLUE}║ Update Environment Variables ║${NC}" + echo -e "${BLUE}╠══════════════════════════════════════════════════════════════════╣${NC}" + echo -e "${BLUE}║ ║${NC}" + echo -e "${BLUE}║ ${YELLOW}REMEMBER TO UPDATE:${NC}${BLUE} ║${NC}" + echo -e "${BLUE}║ ${BOLD}1. client/apps/game/.env.${SN_NETWORK}${NC}${BLUE} ║${NC}" + echo -e "${BLUE}║ ${BOLD}2. contracts/game/dojo_${SN_NETWORK}.toml${NC}${BLUE} rpc_url${NC} ║${NC}" + echo -e "${BLUE}║ ${BOLD}3. contracts/common/env.${SN_NETWORK}${NC}${BLUE} STARKNET_RPC${NC} ║${NC}" + echo -e "${BLUE}╠══════════════════════════════════════════════════════════════════╣${NC}" + echo -e "${BLUE}║ ║${NC}" + + if [ "$command" = "katana" ]; then + cat << EOF +${BLUE} ${GREEN}VITE_PUBLIC_CHAIN = ${BOLD}$SN_NETWORK${NC}${BLUE} ${NC} +${BLUE} ${GREEN}VITE_PUBLIC_SLOT = ${BOLD}$PROJECT_NAME${NC}${BLUE} ${NC} +${BLUE} ${GREEN}VITE_PUBLIC_NODE_URL = ${BOLD}https://api.cartridge.gg/x/$PROJECT_NAME/katana${NC}${BLUE} ${NC} +EOF + elif [ "$command" = "torii" ]; then + cat << EOF +${BLUE} ${GREEN}VITE_PUBLIC_CHAIN = ${BOLD}$SN_NETWORK${NC}${BLUE} ${NC} +${BLUE} ${GREEN}VITE_PUBLIC_SLOT = ${BOLD}$PROJECT_NAME${NC}${BLUE} ${NC} +${BLUE} ${GREEN}VITE_PUBLIC_NODE_URL = ${BOLD}$RPC_URL${NC}${BLUE} ${NC} +${BLUE} ${GREEN}VITE_PUBLIC_TORII = ${BOLD}https://api.cartridge.gg/x/$PROJECT_NAME/torii${NC}${BLUE} ${NC} +${BLUE} ${GREEN}VITE_PUBLIC_TORII_RELAY = ${BOLD}/dns4/api.cartridge.gg/tcp/443/x-parity-wss/%2Fx%2F$PROJECT_NAME%2Ftorii%2Fwss${NC}${BLUE} ${NC} +EOF + fi + echo -e "${BLUE}║ ║${NC}" + echo -e "${BLUE}╚══════════════════════════════════════════════════════════════════╝${NC}\n" +} + +# Update deployment section to include reminders +if [ "$COMMAND" = "katana" ]; then + echo -e "${YELLOW}► Setting up Katana network...${NC}" + slot deployments create -t epic $PROJECT_NAME katana \ + --version v1.0.5 \ + --invoke-max-steps "$KATANA_MAX_INVOKE_STEPS" \ + --block-time "$KATANA_BLOCK_TIME" \ + --dev --dev.no-fee + + echo -e "\n${YELLOW}► Deployment accounts:${NC}" + slot deployments accounts "$PROJECT_NAME" katana + + print_env_reminder "katana" +fi + +if [ "$COMMAND" = "torii" ]; then + echo -e "\n${YELLOW}► Setting up Torii indexer...${NC}" + slot deployments create -t epic $PROJECT_NAME torii \ + --version v1.0.5 \ + --world $WORLD \ + --rpc $RPC_URL \ + --indexing.pending \ + --config "$FULL_TOML_PATH" + + print_env_reminder "torii" +fi + +echo -e "${GREEN}✔ Deployment completed successfully${NC}" +echo -e "\n\n" +echo -e "${MAGENTA}${BOLD}PROJECT NAME:${NC}" +echo -e "\n" +echo -e "${BLUE}${BOLD}$PROJECT_NAME${NC}" +echo -e "\n\n" +echo "$PROJECT_NAME" + diff --git a/contracts/game/manifest_dev.json b/contracts/game/manifest_dev.json deleted file mode 100644 index feadad803f..0000000000 --- a/contracts/game/manifest_dev.json +++ /dev/null @@ -1,9690 +0,0 @@ -{ - "world": { - "class_hash": "0x45575a88cc5cef1e444c77ce60b7b4c9e73a01cbbe20926d5a4c72a94011410", - "address": "0x6a9e4c6f0799160ea8ddc43ff982a5f83d7f633e9732ce42701de1288ff705f", - "seed": "s0_eternum", - "name": "Realms: Eternum", - "entrypoints": [ - "uuid", - "set_metadata", - "register_namespace", - "register_event", - "register_model", - "register_contract", - "init_contract", - "upgrade_event", - "upgrade_model", - "upgrade_contract", - "emit_event", - "emit_events", - "set_entity", - "set_entities", - "delete_entity", - "delete_entities", - "grant_owner", - "revoke_owner", - "grant_writer", - "revoke_writer", - "upgrade" - ], - "abi": [ - { - "type": "impl", - "name": "World", - "interface_name": "dojo::world::iworld::IWorld" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "enum", - "name": "dojo::world::resource::Resource", - "variants": [ - { - "name": "Model", - "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" - }, - { - "name": "Event", - "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" - }, - { - "name": "Contract", - "type": "(core::starknet::contract_address::ContractAddress, core::felt252)" - }, - { - "name": "Namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "World", - "type": "()" - }, - { - "name": "Unregistered", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "dojo::model::metadata::ResourceMetadata", - "members": [ - { - "name": "resource_id", - "type": "core::felt252" - }, - { - "name": "metadata_uri", - "type": "core::byte_array::ByteArray" - }, - { - "name": "metadata_hash", - "type": "core::felt252" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::>" - } - ] - }, - { - "type": "enum", - "name": "dojo::model::definition::ModelIndex", - "variants": [ - { - "name": "Keys", - "type": "core::array::Span::" - }, - { - "name": "Id", - "type": "core::felt252" - }, - { - "name": "MemberId", - "type": "(core::felt252, core::felt252)" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "dojo::meta::layout::FieldLayout", - "members": [ - { - "name": "selector", - "type": "core::felt252" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "enum", - "name": "dojo::meta::layout::Layout", - "variants": [ - { - "name": "Fixed", - "type": "core::array::Span::" - }, - { - "name": "Struct", - "type": "core::array::Span::" - }, - { - "name": "Tuple", - "type": "core::array::Span::" - }, - { - "name": "Array", - "type": "core::array::Span::" - }, - { - "name": "ByteArray", - "type": "()" - }, - { - "name": "Enum", - "type": "core::array::Span::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "dojo::world::iworld::IWorld", - "items": [ - { - "type": "function", - "name": "resource", - "inputs": [ - { - "name": "selector", - "type": "core::felt252" - } - ], - "outputs": [ - { - "type": "dojo::world::resource::Resource" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "uuid", - "inputs": [], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "metadata", - "inputs": [ - { - "name": "resource_selector", - "type": "core::felt252" - } - ], - "outputs": [ - { - "type": "dojo::model::metadata::ResourceMetadata" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "set_metadata", - "inputs": [ - { - "name": "metadata", - "type": "dojo::model::metadata::ResourceMetadata" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "register_namespace", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "register_event", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "register_model", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "register_contract", - "inputs": [ - { - "name": "salt", - "type": "core::felt252" - }, - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [ - { - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "init_contract", - "inputs": [ - { - "name": "selector", - "type": "core::felt252" - }, - { - "name": "init_calldata", - "type": "core::array::Span::" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "upgrade_event", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "upgrade_model", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "upgrade_contract", - "inputs": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [ - { - "type": "core::starknet::class_hash::ClassHash" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "emit_event", - "inputs": [ - { - "name": "event_selector", - "type": "core::felt252" - }, - { - "name": "keys", - "type": "core::array::Span::" - }, - { - "name": "values", - "type": "core::array::Span::" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "emit_events", - "inputs": [ - { - "name": "event_selector", - "type": "core::felt252" - }, - { - "name": "keys", - "type": "core::array::Span::>" - }, - { - "name": "values", - "type": "core::array::Span::>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "entity", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "index", - "type": "dojo::model::definition::ModelIndex" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [ - { - "type": "core::array::Span::" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "entities", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "indexes", - "type": "core::array::Span::" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [ - { - "type": "core::array::Span::>" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "set_entity", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "index", - "type": "dojo::model::definition::ModelIndex" - }, - { - "name": "values", - "type": "core::array::Span::" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_entities", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "indexes", - "type": "core::array::Span::" - }, - { - "name": "values", - "type": "core::array::Span::>" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "delete_entity", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "index", - "type": "dojo::model::definition::ModelIndex" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "delete_entities", - "inputs": [ - { - "name": "model_selector", - "type": "core::felt252" - }, - { - "name": "indexes", - "type": "core::array::Span::" - }, - { - "name": "layout", - "type": "dojo::meta::layout::Layout" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "is_owner", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::bool" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "grant_owner", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "revoke_owner", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "is_writer", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::bool" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "grant_writer", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "revoke_writer", - "inputs": [ - { - "name": "resource", - "type": "core::felt252" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableWorld", - "interface_name": "dojo::world::iworld::IUpgradeableWorld" - }, - { - "type": "interface", - "name": "dojo::world::iworld::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": "world_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::WorldSpawned", - "kind": "struct", - "members": [ - { - "name": "creator", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::WorldUpgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::NamespaceRegistered", - "kind": "struct", - "members": [ - { - "name": "namespace", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "hash", - "type": "core::felt252", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ModelRegistered", - "kind": "struct", - "members": [ - { - "name": "name", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "namespace", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::EventRegistered", - "kind": "struct", - "members": [ - { - "name": "name", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "namespace", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ContractRegistered", - "kind": "struct", - "members": [ - { - "name": "name", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "namespace", - "type": "core::byte_array::ByteArray", - "kind": "key" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "salt", - "type": "core::felt252", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ModelUpgraded", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - }, - { - "name": "prev_address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::EventUpgraded", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - }, - { - "name": "address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - }, - { - "name": "prev_address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ContractUpgraded", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::ContractInitialized", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "init_calldata", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::EventEmitted", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "system_address", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "key" - }, - { - "name": "keys", - "type": "core::array::Span::", - "kind": "data" - }, - { - "name": "values", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::MetadataUpdate", - "kind": "struct", - "members": [ - { - "name": "resource", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "uri", - "type": "core::byte_array::ByteArray", - "kind": "data" - }, - { - "name": "hash", - "type": "core::felt252", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::StoreSetRecord", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "entity_id", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "keys", - "type": "core::array::Span::", - "kind": "data" - }, - { - "name": "values", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::StoreUpdateRecord", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "entity_id", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "values", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::StoreUpdateMember", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "entity_id", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "member_selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "values", - "type": "core::array::Span::", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::StoreDelRecord", - "kind": "struct", - "members": [ - { - "name": "selector", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "entity_id", - "type": "core::felt252", - "kind": "key" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::WriterUpdated", - "kind": "struct", - "members": [ - { - "name": "resource", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "key" - }, - { - "name": "value", - "type": "core::bool", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::OwnerUpdated", - "kind": "struct", - "members": [ - { - "name": "resource", - "type": "core::felt252", - "kind": "key" - }, - { - "name": "contract", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "key" - }, - { - "name": "value", - "type": "core::bool", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::world::world_contract::world::Event", - "kind": "enum", - "variants": [ - { - "name": "WorldSpawned", - "type": "dojo::world::world_contract::world::WorldSpawned", - "kind": "nested" - }, - { - "name": "WorldUpgraded", - "type": "dojo::world::world_contract::world::WorldUpgraded", - "kind": "nested" - }, - { - "name": "NamespaceRegistered", - "type": "dojo::world::world_contract::world::NamespaceRegistered", - "kind": "nested" - }, - { - "name": "ModelRegistered", - "type": "dojo::world::world_contract::world::ModelRegistered", - "kind": "nested" - }, - { - "name": "EventRegistered", - "type": "dojo::world::world_contract::world::EventRegistered", - "kind": "nested" - }, - { - "name": "ContractRegistered", - "type": "dojo::world::world_contract::world::ContractRegistered", - "kind": "nested" - }, - { - "name": "ModelUpgraded", - "type": "dojo::world::world_contract::world::ModelUpgraded", - "kind": "nested" - }, - { - "name": "EventUpgraded", - "type": "dojo::world::world_contract::world::EventUpgraded", - "kind": "nested" - }, - { - "name": "ContractUpgraded", - "type": "dojo::world::world_contract::world::ContractUpgraded", - "kind": "nested" - }, - { - "name": "ContractInitialized", - "type": "dojo::world::world_contract::world::ContractInitialized", - "kind": "nested" - }, - { - "name": "EventEmitted", - "type": "dojo::world::world_contract::world::EventEmitted", - "kind": "nested" - }, - { - "name": "MetadataUpdate", - "type": "dojo::world::world_contract::world::MetadataUpdate", - "kind": "nested" - }, - { - "name": "StoreSetRecord", - "type": "dojo::world::world_contract::world::StoreSetRecord", - "kind": "nested" - }, - { - "name": "StoreUpdateRecord", - "type": "dojo::world::world_contract::world::StoreUpdateRecord", - "kind": "nested" - }, - { - "name": "StoreUpdateMember", - "type": "dojo::world::world_contract::world::StoreUpdateMember", - "kind": "nested" - }, - { - "name": "StoreDelRecord", - "type": "dojo::world::world_contract::world::StoreDelRecord", - "kind": "nested" - }, - { - "name": "WriterUpdated", - "type": "dojo::world::world_contract::world::WriterUpdated", - "kind": "nested" - }, - { - "name": "OwnerUpdated", - "type": "dojo::world::world_contract::world::OwnerUpdated", - "kind": "nested" - } - ] - } - ] - }, - "contracts": [ - { - "address": "0x7f4862123d52dffae89ec3fb4557690cd7fe2e92c9bf48d3bf8e44abfeafcf4", - "class_hash": "0x78b9f6c5bf71c8f9fc992f0c3a955dfc17fa6384bd2857d5ba32206a354ff9b", - "abi": [ - { - "type": "impl", - "name": "bank_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "bank_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BankSystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::bank::IBankSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::bank::contracts::bank::IBankSystems", - "items": [ - { - "type": "function", - "name": "change_owner_amm_fee", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "new_owner_fee_num", - "type": "core::integer::u128" - }, - { - "name": "new_owner_fee_denom", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "change_owner_bridge_fee", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "owner_bridge_fee_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "owner_bridge_fee_wtdr_percent", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::bank::contracts::bank::bank_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-bank_systems", - "selector": "0x16cf356882260a01771aedaab01f8e3afdab764944c3c4d41c617cd76b91e6a", - "systems": [ - "change_owner_amm_fee", - "change_owner_bridge_fee", - "upgrade" - ] - }, - { - "address": "0x1a3169679e32c64f68eb3dadc2795160b27d8dbf030a978708a87fce391fcae", - "class_hash": "0x333584d37f9cf4ec51a61e4fcd47875fb62dc1f4843add096cf2e4983516fea", - "abi": [ - { - "type": "impl", - "name": "battle_pillage_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "battle_pillage_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BattlePillageContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract" - }, - { - "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract", - "items": [ - { - "type": "function", - "name": "battle_pillage", - "inputs": [ - { - "name": "army_id", - "type": "core::integer::u32" - }, - { - "name": "structure_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_pillage_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-battle_pillage_systems", - "selector": "0x9861172f7b864354b6e23d8971f0b054c518337a3cea854724658c43f9f580", - "systems": [ - "battle_pillage", - "upgrade" - ] - }, - { - "address": "0x76ac17d7b4d8d42b313babda68f3a5fbf9a0664609205cedf5198ae3a192c1d", - "class_hash": "0x4db4a33f8a9fc59d6e5c9a865cbffbadd4df15907a098804e33f007d1baf1a7", - "abi": [ - { - "type": "impl", - "name": "battle_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "battle_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BattleContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleContract" - }, - { - "type": "enum", - "name": "s0_eternum::models::combat::BattleSide", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Attack", - "type": "()" - }, - { - "name": "Defence", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleContract", - "items": [ - { - "type": "function", - "name": "battle_start", - "inputs": [ - { - "name": "attacking_army_id", - "type": "core::integer::u32" - }, - { - "name": "defending_army_id", - "type": "core::integer::u32" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "battle_force_start", - "inputs": [ - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "defending_army_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "battle_join", - "inputs": [ - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" - }, - { - "name": "army_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "battle_leave", - "inputs": [ - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "army_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "battle_claim", - "inputs": [ - { - "name": "army_id", - "type": "core::integer::u32" - }, - { - "name": "structure_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-battle_systems", - "selector": "0x28fc8bb4b5e0140b71566a257468e491e41a12f2f284cae6d4e731abd862067", - "systems": [ - "battle_start", - "battle_force_start", - "battle_join", - "battle_leave", - "battle_claim", - "upgrade" - ] - }, - { - "address": "0x793436e661c06da00e0da2bf2229636f8a022f1bef717a371f5cd2d4b0ad47d", - "class_hash": "0x57f215fc69b9ebea7f170dc735af052a1a94231957647af6b767d9049226d8c", - "abi": [ - { - "type": "impl", - "name": "battle_utils_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "battle_utils_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BattleUtilsContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract" - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::Troops", - "members": [ - { - "name": "knight_count", - "type": "core::integer::u64" - }, - { - "name": "paladin_count", - "type": "core::integer::u64" - }, - { - "name": "crossbowman_count", - "type": "core::integer::u64" - } - ] - }, - { - "type": "enum", - "name": "s0_eternum::models::combat::BattleSide", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Attack", - "type": "()" - }, - { - "name": "Defence", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::BattleArmy", - "members": [ - { - "name": "troops", - "type": "s0_eternum::models::combat::Troops" - }, - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::BattleHealth", - "members": [ - { - "name": "current", - "type": "core::integer::u128" - }, - { - "name": "lifetime", - "type": "core::integer::u128" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::Battle", - "members": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "attack_army", - "type": "s0_eternum::models::combat::BattleArmy" - }, - { - "name": "attack_army_lifetime", - "type": "s0_eternum::models::combat::BattleArmy" - }, - { - "name": "defence_army", - "type": "s0_eternum::models::combat::BattleArmy" - }, - { - "name": "defence_army_lifetime", - "type": "s0_eternum::models::combat::BattleArmy" - }, - { - "name": "attackers_resources_escrow_id", - "type": "core::integer::u32" - }, - { - "name": "defenders_resources_escrow_id", - "type": "core::integer::u32" - }, - { - "name": "attack_army_health", - "type": "s0_eternum::models::combat::BattleHealth" - }, - { - "name": "defence_army_health", - "type": "s0_eternum::models::combat::BattleHealth" - }, - { - "name": "attack_delta", - "type": "core::integer::u64" - }, - { - "name": "defence_delta", - "type": "core::integer::u64" - }, - { - "name": "last_updated", - "type": "core::integer::u64" - }, - { - "name": "duration_left", - "type": "core::integer::u64" - }, - { - "name": "start_at", - "type": "core::integer::u64" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::Army", - "members": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "troops", - "type": "s0_eternum::models::combat::Troops" - }, - { - "name": "battle_id", - "type": "core::integer::u32" - }, - { - "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract", - "items": [ - { - "type": "function", - "name": "leave_battle", - "inputs": [ - { - "name": "battle", - "type": "s0_eternum::models::combat::Battle" - }, - { - "name": "army", - "type": "s0_eternum::models::combat::Army" - } - ], - "outputs": [ - { - "type": "(s0_eternum::models::combat::Battle, s0_eternum::models::combat::Army)" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "leave_battle_if_ended", - "inputs": [ - { - "name": "battle", - "type": "s0_eternum::models::combat::Battle" - }, - { - "name": "army", - "type": "s0_eternum::models::combat::Army" - } - ], - "outputs": [ - { - "type": "(s0_eternum::models::combat::Battle, s0_eternum::models::combat::Army)" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_utils_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-battle_utils_systems", - "selector": "0x4199f9a24edfc349a8a16e338daaaea77af951bcc40d636e85107731d52d2b7", - "systems": [ - "leave_battle", - "leave_battle_if_ended", - "upgrade" - ] - }, - { - "address": "0x12817bed1bdd05251fc4921f03625f2e142873eaec93d527aff3ed806baf860", - "class_hash": "0x166ac57561dc94cb60d6e4b709000aa3df688b2884649a2a69a48b8aa630412", - "abi": [ - { - "type": "impl", - "name": "building_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "building_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BuildingContractImpl", - "interface_name": "s0_eternum::systems::buildings::contracts::IBuildingContract" - }, - { - "type": "enum", - "name": "s0_eternum::models::position::Direction", - "variants": [ - { - "name": "East", - "type": "()" - }, - { - "name": "NorthEast", - "type": "()" - }, - { - "name": "NorthWest", - "type": "()" - }, - { - "name": "West", - "type": "()" - }, - { - "name": "SouthWest", - "type": "()" - }, - { - "name": "SouthEast", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "enum", - "name": "s0_eternum::models::buildings::BuildingCategory", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Castle", - "type": "()" - }, - { - "name": "Resource", - "type": "()" - }, - { - "name": "Farm", - "type": "()" - }, - { - "name": "FishingVillage", - "type": "()" - }, - { - "name": "Barracks", - "type": "()" - }, - { - "name": "Market", - "type": "()" - }, - { - "name": "ArcheryRange", - "type": "()" - }, - { - "name": "Stable", - "type": "()" - }, - { - "name": "TradingPost", - "type": "()" - }, - { - "name": "WorkersHut", - "type": "()" - }, - { - "name": "WatchTower", - "type": "()" - }, - { - "name": "Walls", - "type": "()" - }, - { - "name": "Storehouse", - "type": "()" - } - ] - }, - { - "type": "enum", - "name": "core::option::Option::", - "variants": [ - { - "name": "Some", - "type": "core::integer::u8" - }, - { - "name": "None", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::position::Coord", - "members": [ - { - "name": "x", - "type": "core::integer::u32" - }, - { - "name": "y", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::buildings::contracts::IBuildingContract", - "items": [ - { - "type": "function", - "name": "create", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "directions", - "type": "core::array::Span::" - }, - { - "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" - }, - { - "name": "produce_resource_type", - "type": "core::option::Option::" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "pause_production", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "building_coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "resume_production", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "building_coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "destroy", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "building_coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::buildings::contracts::building_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-building_systems", - "selector": "0x5f7b231f89cc7ec90785783e2484266d4b35e7f1488ec406ffea0cf92fac777", - "systems": [ - "create", - "pause_production", - "resume_production", - "destroy", - "upgrade" - ] - }, - { - "address": "0x421446d51cac1e926cb1a2b00ae318b52df71beb737159d5c1d7061030758cf", - "class_hash": "0x2a1623aa93f362b754f5c9dc9c592ef42bf820498ba120b256002463aa89292", - "abi": [ - { - "type": "impl", - "name": "config_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "config_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IWorldConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IWorldConfig", - "items": [ - { - "type": "function", - "name": "set_world_config", - "inputs": [ - { - "name": "admin_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "realm_l2_contract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "SeasonConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ISeasonConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ISeasonConfig", - "items": [ - { - "type": "function", - "name": "set_season_config", - "inputs": [ - { - "name": "season_pass_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "realms_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "lords_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "start_at", - "type": "core::integer::u64" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_season_bridge_config", - "inputs": [ - { - "name": "close_after_end_seconds", - "type": "core::integer::u64" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "VRFConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IVRFConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IVRFConfig", - "items": [ - { - "type": "function", - "name": "set_vrf_config", - "inputs": [ - { - "name": "vrf_provider_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "QuestConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IQuestConfig" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IQuestConfig", - "items": [ - { - "type": "function", - "name": "set_quest_config", - "inputs": [ - { - "name": "production_material_multiplier", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_quest_reward_config", - "inputs": [ - { - "name": "quest_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "MapConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IMapConfig" - }, - { - "type": "struct", - "name": "s0_eternum::models::config::MapConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "reward_resource_amount", - "type": "core::integer::u128" - }, - { - "name": "shards_mines_fail_probability", - "type": "core::integer::u128" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IMapConfig", - "items": [ - { - "type": "function", - "name": "set_map_config", - "inputs": [ - { - "name": "map_config", - "type": "s0_eternum::models::config::MapConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "CapacityConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ICapacityConfig" - }, - { - "type": "enum", - "name": "s0_eternum::models::config::CapacityConfigCategory", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Structure", - "type": "()" - }, - { - "name": "Donkey", - "type": "()" - }, - { - "name": "Army", - "type": "()" - }, - { - "name": "Storehouse", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::config::CapacityConfig", - "members": [ - { - "name": "category", - "type": "s0_eternum::models::config::CapacityConfigCategory" - }, - { - "name": "weight_gram", - "type": "core::integer::u128" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ICapacityConfig", - "items": [ - { - "type": "function", - "name": "set_capacity_config", - "inputs": [ - { - "name": "capacity_config", - "type": "s0_eternum::models::config::CapacityConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TravelStaminaCostConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITravelStaminaCostConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITravelStaminaCostConfig", - "items": [ - { - "type": "function", - "name": "set_travel_stamina_cost_config", - "inputs": [ - { - "name": "travel_type", - "type": "core::integer::u8" - }, - { - "name": "cost", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "WeightConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IWeightConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IWeightConfig", - "items": [ - { - "type": "function", - "name": "set_weight_config", - "inputs": [ - { - "name": "entity_type", - "type": "core::integer::u32" - }, - { - "name": "weight_gram", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "BattleConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBattleConfig" - }, - { - "type": "struct", - "name": "s0_eternum::models::config::BattleConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "regular_immunity_ticks", - "type": "core::integer::u8" - }, - { - "name": "hyperstructure_immunity_ticks", - "type": "core::integer::u8" - }, - { - "name": "battle_delay_seconds", - "type": "core::integer::u64" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBattleConfig", - "items": [ - { - "type": "function", - "name": "set_battle_config", - "inputs": [ - { - "name": "battle_config", - "type": "s0_eternum::models::config::BattleConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TickConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITickConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITickConfig", - "items": [ - { - "type": "function", - "name": "set_tick_config", - "inputs": [ - { - "name": "tick_id", - "type": "core::integer::u8" - }, - { - "name": "tick_interval_in_seconds", - "type": "core::integer::u64" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "StaminaConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IStaminaConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IStaminaConfig", - "items": [ - { - "type": "function", - "name": "set_stamina_config", - "inputs": [ - { - "name": "unit_type", - "type": "core::integer::u8" - }, - { - "name": "max_stamina", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TravelFoodCostConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITravelFoodCostConfig" - }, - { - "type": "struct", - "name": "s0_eternum::models::config::TravelFoodCostConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "unit_type", - "type": "core::integer::u8" - }, - { - "name": "explore_wheat_burn_amount", - "type": "core::integer::u128" - }, - { - "name": "explore_fish_burn_amount", - "type": "core::integer::u128" - }, - { - "name": "travel_wheat_burn_amount", - "type": "core::integer::u128" - }, - { - "name": "travel_fish_burn_amount", - "type": "core::integer::u128" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITravelFoodCostConfig", - "items": [ - { - "type": "function", - "name": "set_travel_food_cost_config", - "inputs": [ - { - "name": "travel_food_cost_config", - "type": "s0_eternum::models::config::TravelFoodCostConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "StaminaRefillConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IStaminaRefillConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IStaminaRefillConfig", - "items": [ - { - "type": "function", - "name": "set_stamina_refill_config", - "inputs": [ - { - "name": "amount_per_tick", - "type": "core::integer::u16" - }, - { - "name": "start_boost_tick_count", - "type": "core::integer::u8" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "LevelingConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ILevelingConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ILevelingConfig", - "items": [ - { - "type": "function", - "name": "set_leveling_config", - "inputs": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "decay_interval", - "type": "core::integer::u64" - }, - { - "name": "max_level", - "type": "core::integer::u64" - }, - { - "name": "decay_scaled", - "type": "core::integer::u128" - }, - { - "name": "cost_percentage_scaled", - "type": "core::integer::u128" - }, - { - "name": "base_multiplier", - "type": "core::integer::u128" - }, - { - "name": "wheat_base_amount", - "type": "core::integer::u128" - }, - { - "name": "fish_base_amount", - "type": "core::integer::u128" - }, - { - "name": "resource_1_costs", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "resource_2_costs", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "resource_3_costs", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "ProductionConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IProductionConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IProductionConfig", - "items": [ - { - "type": "function", - "name": "set_production_config", - "inputs": [ - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "amount", - "type": "core::integer::u128" - }, - { - "name": "cost", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TransportConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITransportConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITransportConfig", - "items": [ - { - "type": "function", - "name": "set_speed_config", - "inputs": [ - { - "name": "entity_type", - "type": "core::integer::u32" - }, - { - "name": "sec_per_km", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "HyperstructureConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IHyperstructureConfig" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IHyperstructureConfig", - "items": [ - { - "type": "function", - "name": "set_hyperstructure_config", - "inputs": [ - { - "name": "resources_for_completion", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128, core::integer::u128)>" - }, - { - "name": "time_between_shares_change", - "type": "core::integer::u64" - }, - { - "name": "points_per_cycle", - "type": "core::integer::u128" - }, - { - "name": "points_for_win", - "type": "core::integer::u128" - }, - { - "name": "points_on_completion", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "BankConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBankConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBankConfig", - "items": [ - { - "type": "function", - "name": "set_bank_config", - "inputs": [ - { - "name": "lords_cost", - "type": "core::integer::u128" - }, - { - "name": "lp_fee_num", - "type": "core::integer::u128" - }, - { - "name": "lp_fee_denom", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "TroopConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITroopConfig" - }, - { - "type": "struct", - "name": "s0_eternum::models::config::TroopConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "health", - "type": "core::integer::u32" - }, - { - "name": "knight_strength", - "type": "core::integer::u8" - }, - { - "name": "paladin_strength", - "type": "core::integer::u8" - }, - { - "name": "crossbowman_strength", - "type": "core::integer::u16" - }, - { - "name": "advantage_percent", - "type": "core::integer::u16" - }, - { - "name": "disadvantage_percent", - "type": "core::integer::u16" - }, - { - "name": "max_troop_count", - "type": "core::integer::u64" - }, - { - "name": "pillage_health_divisor", - "type": "core::integer::u8" - }, - { - "name": "army_free_per_structure", - "type": "core::integer::u8" - }, - { - "name": "army_extra_per_building", - "type": "core::integer::u8" - }, - { - "name": "army_max_per_structure", - "type": "core::integer::u8" - }, - { - "name": "battle_leave_slash_num", - "type": "core::integer::u8" - }, - { - "name": "battle_leave_slash_denom", - "type": "core::integer::u8" - }, - { - "name": "battle_time_scale", - "type": "core::integer::u16" - }, - { - "name": "battle_max_time_seconds", - "type": "core::integer::u64" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITroopConfig", - "items": [ - { - "type": "function", - "name": "set_troop_config", - "inputs": [ - { - "name": "troop_config", - "type": "s0_eternum::models::config::TroopConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "BuildingCategoryPopulationConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBuildingCategoryPopConfig" - }, - { - "type": "enum", - "name": "s0_eternum::models::buildings::BuildingCategory", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Castle", - "type": "()" - }, - { - "name": "Resource", - "type": "()" - }, - { - "name": "Farm", - "type": "()" - }, - { - "name": "FishingVillage", - "type": "()" - }, - { - "name": "Barracks", - "type": "()" - }, - { - "name": "Market", - "type": "()" - }, - { - "name": "ArcheryRange", - "type": "()" - }, - { - "name": "Stable", - "type": "()" - }, - { - "name": "TradingPost", - "type": "()" - }, - { - "name": "WorkersHut", - "type": "()" - }, - { - "name": "WatchTower", - "type": "()" - }, - { - "name": "Walls", - "type": "()" - }, - { - "name": "Storehouse", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBuildingCategoryPopConfig", - "items": [ - { - "type": "function", - "name": "set_building_category_pop_config", - "inputs": [ - { - "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" - }, - { - "name": "population", - "type": "core::integer::u32" - }, - { - "name": "capacity", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "PopulationConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IPopulationConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IPopulationConfig", - "items": [ - { - "type": "function", - "name": "set_population_config", - "inputs": [ - { - "name": "base_population", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "BuildingConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBuildingConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBuildingConfig", - "items": [ - { - "type": "function", - "name": "set_building_general_config", - "inputs": [ - { - "name": "base_cost_percent_increase", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_building_config", - "inputs": [ - { - "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" - }, - { - "name": "building_resource_type", - "type": "core::integer::u8" - }, - { - "name": "cost_of_building", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "IMercenariesConfig", - "interface_name": "s0_eternum::systems::config::contracts::IMercenariesConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IMercenariesConfig", - "items": [ - { - "type": "function", - "name": "set_mercenaries_config", - "inputs": [ - { - "name": "knights_lower_bound", - "type": "core::integer::u64" - }, - { - "name": "knights_upper_bound", - "type": "core::integer::u64" - }, - { - "name": "paladins_lower_bound", - "type": "core::integer::u64" - }, - { - "name": "paladins_upper_bound", - "type": "core::integer::u64" - }, - { - "name": "crossbowmen_lower_bound", - "type": "core::integer::u64" - }, - { - "name": "crossbowmen_upper_bound", - "type": "core::integer::u64" - }, - { - "name": "rewards", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "IResourceBridgeConfig", - "interface_name": "s0_eternum::systems::config::contracts::IResourceBridgeConfig" - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "deposit_paused", - "type": "core::bool" - }, - { - "name": "withdraw_paused", - "type": "core::bool" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeFeeSplitConfig", - "members": [ - { - "name": "config_id", - "type": "core::integer::u32" - }, - { - "name": "velords_fee_on_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "velords_fee_on_wtdr_percent", - "type": "core::integer::u16" - }, - { - "name": "season_pool_fee_on_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "season_pool_fee_on_wtdr_percent", - "type": "core::integer::u16" - }, - { - "name": "client_fee_on_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "client_fee_on_wtdr_percent", - "type": "core::integer::u16" - }, - { - "name": "velords_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "season_pool_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "max_bank_fee_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "max_bank_fee_wtdr_percent", - "type": "core::integer::u16" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeWhitelistConfig", - "members": [ - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IResourceBridgeConfig", - "items": [ - { - "type": "function", - "name": "set_resource_bridge_config", - "inputs": [ - { - "name": "resource_bridge_config", - "type": "s0_eternum::models::config::ResourceBridgeConfig" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_resource_bridge_fee_split_config", - "inputs": [ - { - "name": "resource_bridge_fee_split_config", - "type": "s0_eternum::models::config::ResourceBridgeFeeSplitConfig" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_resource_bridge_whitelist_config", - "inputs": [ - { - "name": "resource_bridge_whitelist_config", - "type": "s0_eternum::models::config::ResourceBridgeWhitelistConfig" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "RealmLevelConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IRealmLevelConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::IRealmLevelConfig", - "items": [ - { - "type": "function", - "name": "set_realm_max_level_config", - "inputs": [ - { - "name": "new_max_level", - "type": "core::integer::u8" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_realm_level_config", - "inputs": [ - { - "name": "level", - "type": "core::integer::u8" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "ISettlementConfig", - "interface_name": "s0_eternum::systems::config::contracts::ISettlementConfig" - }, - { - "type": "interface", - "name": "s0_eternum::systems::config::contracts::ISettlementConfig", - "items": [ - { - "type": "function", - "name": "set_settlement_config", - "inputs": [ - { - "name": "center", - "type": "core::integer::u32" - }, - { - "name": "base_distance", - "type": "core::integer::u32" - }, - { - "name": "min_first_layer_distance", - "type": "core::integer::u32" - }, - { - "name": "points_placed", - "type": "core::integer::u32" - }, - { - "name": "current_layer", - "type": "core::integer::u32" - }, - { - "name": "current_side", - "type": "core::integer::u32" - }, - { - "name": "current_point_on_side", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "achievement::components::achievable::AchievableComponent::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::config::contracts::config_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - }, - { - "name": "AchievableEvent", - "type": "achievement::components::achievable::AchievableComponent::Event", - "kind": "flat" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-config_systems", - "selector": "0x4deb9db2b1005876b689d07a98673dacb6beea64ef9f564a19a38228d798204", - "systems": [ - "set_world_config", - "set_season_config", - "set_season_bridge_config", - "set_vrf_config", - "set_quest_config", - "set_quest_reward_config", - "set_map_config", - "set_capacity_config", - "set_travel_stamina_cost_config", - "set_weight_config", - "set_battle_config", - "set_tick_config", - "set_stamina_config", - "set_travel_food_cost_config", - "set_stamina_refill_config", - "set_leveling_config", - "set_production_config", - "set_speed_config", - "set_hyperstructure_config", - "set_bank_config", - "set_troop_config", - "set_building_category_pop_config", - "set_population_config", - "set_building_general_config", - "set_building_config", - "set_mercenaries_config", - "set_resource_bridge_config", - "set_resource_bridge_fee_split_config", - "set_resource_bridge_whitelist_config", - "set_realm_max_level_config", - "set_realm_level_config", - "set_settlement_config", - "upgrade" - ] - }, - { - "address": "0xf15b647039a99451c530650bbad145c082d60ff26f02856de132bf202c893a", - "class_hash": "0x4a67b90b5bcdfd6cdc139c5e8fc204d8e31d59c038b192d30c33dea54f1d46e", - "abi": [ - { - "type": "impl", - "name": "dev_bank_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "dev_bank_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BankSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::bank::IBankSystems" - }, - { - "type": "struct", - "name": "s0_eternum::models::position::Coord", - "members": [ - { - "name": "x", - "type": "core::integer::u32" - }, - { - "name": "y", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::dev::contracts::bank::IBankSystems", - "items": [ - { - "type": "function", - "name": "create_admin_bank", - "inputs": [ - { - "name": "name", - "type": "core::felt252" - }, - { - "name": "coord", - "type": "s0_eternum::models::position::Coord" - }, - { - "name": "owner_fee_num", - "type": "core::integer::u128" - }, - { - "name": "owner_fee_denom", - "type": "core::integer::u128" - }, - { - "name": "owner_bridge_fee_dpt_percent", - "type": "core::integer::u16" - }, - { - "name": "owner_bridge_fee_wtdr_percent", - "type": "core::integer::u16" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::dev::contracts::bank::dev_bank_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-dev_bank_systems", - "selector": "0x436d7ef5fa5753c742f95b4fd3a7722399b309251363684474bfcba389fb607", - "systems": [ - "create_admin_bank", - "upgrade" - ] - }, - { - "address": "0x729222a8e3757daec72d37dd434a3a44d3c0bddbec95cf087fb1b983b166b1a", - "class_hash": "0x1b92ab9641011892a0ee9b70dd142bbe52b53bef66ae2ff5e92a20e445375f4", - "abi": [ - { - "type": "impl", - "name": "dev_realm_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "dev_realm_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "DevRealmSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::realm::IDevRealmSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::dev::contracts::realm::IDevRealmSystems", - "items": [ - { - "type": "function", - "name": "create", - "inputs": [ - { - "name": "realm_id", - "type": "core::integer::u32" - }, - { - "name": "frontend", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::dev::contracts::realm::dev_realm_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-dev_realm_systems", - "selector": "0x2a2f52f1a66a15e1e6bee3b5ea2d104bc146e82c1625c5421f6f45c44640824", - "systems": [ - "create", - "upgrade" - ] - }, - { - "address": "0x17410a6c37040ef285251f763799939f69033c69c6d5f9ddb61ff4a139d3f58", - "class_hash": "0x36772edb97443579ee3f8e7c590bcf623e6a383f3323229df75544eb2a97129", - "abi": [ - { - "type": "impl", - "name": "dev_resource_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "dev_resource_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "ResourceSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::resource::IResourceSystems" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::dev::contracts::resource::IResourceSystems", - "items": [ - { - "type": "function", - "name": "mint", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::dev::contracts::resource::dev_resource_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-dev_resource_systems", - "selector": "0x6125379dcbb305b4f4b955271c3c4d472ece9852c3592d9d38a9fbc63fe9025", - "systems": [ - "mint", - "upgrade" - ] - }, - { - "address": "0x68a2cb801dc504acb121c7609d13f1f4bea6739dc80c31d789868ebda339067", - "class_hash": "0x2727b507b2d724b109bc2f969ccb090ee75e78b4c0d2d685e5e8cbce47f07f7", - "abi": [ - { - "type": "impl", - "name": "donkey_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "donkey_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::transport::contracts::donkey_systems::donkey_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-donkey_systems", - "selector": "0x76a0f4e4cdc01c969350b612c38d49d38689d5fde54e4afb3205a4629db83b6", - "systems": [ - "upgrade" - ] - }, - { - "address": "0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4", - "class_hash": "0x2107679161457e3f08fcd5bbb8f8473983e5c8b3c48c1ef67840958e994547c", - "abi": [ - { - "type": "impl", - "name": "guild_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "guild_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "GuildSystemsImpl", - "interface_name": "s0_eternum::systems::guild::contracts::IGuildSystems" - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::guild::contracts::IGuildSystems", - "items": [ - { - "type": "function", - "name": "create_guild", - "inputs": [ - { - "name": "is_public", - "type": "core::bool" - }, - { - "name": "guild_name", - "type": "core::felt252" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "join_guild", - "inputs": [ - { - "name": "guild_entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "whitelist_player", - "inputs": [ - { - "name": "player_address_to_whitelist", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "guild_entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "transfer_guild_ownership", - "inputs": [ - { - "name": "guild_entity_id", - "type": "core::integer::u32" - }, - { - "name": "to_player_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "remove_guild_member", - "inputs": [ - { - "name": "player_address_to_remove", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "remove_player_from_whitelist", - "inputs": [ - { - "name": "player_address_to_remove", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "guild_entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::guild::contracts::guild_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-guild_systems", - "selector": "0x6b2e6f3912853c9745b74266fe1d344bfe8ba99561982c5b4c3ac0e081f956b", - "systems": [ - "create_guild", - "join_guild", - "whitelist_player", - "transfer_guild_ownership", - "remove_guild_member", - "remove_player_from_whitelist", - "upgrade" - ] - }, - { - "address": "0xf1da2d364a23d3adbdbf25b218cd232c0a1fef3c09f6889d78ac666fd58beb", - "class_hash": "0x7a02ac880a0f3cabe318eab082720128ee0d10eb3be8d9599885ee04c72c9b9", - "abi": [ - { - "type": "impl", - "name": "hyperstructure_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "hyperstructure_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "HyperstructureSystemsImpl", - "interface_name": "s0_eternum::systems::hyperstructure::contracts::IHyperstructureSystems" - }, - { - "type": "struct", - "name": "s0_eternum::models::position::Coord", - "members": [ - { - "name": "x", - "type": "core::integer::u32" - }, - { - "name": "y", - "type": "core::integer::u32" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u32, core::integer::u16)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u32, core::integer::u16)>" - } - ] - }, - { - "type": "enum", - "name": "s0_eternum::models::hyperstructure::Access", - "variants": [ - { - "name": "Public", - "type": "()" - }, - { - "name": "Private", - "type": "()" - }, - { - "name": "GuildOnly", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::hyperstructure::contracts::IHyperstructureSystems", - "items": [ - { - "type": "function", - "name": "create", - "inputs": [ - { - "name": "creator_entity_id", - "type": "core::integer::u32" - }, - { - "name": "coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "contribute_to_construction", - "inputs": [ - { - "name": "hyperstructure_entity_id", - "type": "core::integer::u32" - }, - { - "name": "contributor_entity_id", - "type": "core::integer::u32" - }, - { - "name": "contributions", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_co_owners", - "inputs": [ - { - "name": "hyperstructure_entity_id", - "type": "core::integer::u32" - }, - { - "name": "co_owners", - "type": "core::array::Span::<(core::starknet::contract_address::ContractAddress, core::integer::u16)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "end_game", - "inputs": [ - { - "name": "hyperstructures_contributed_to", - "type": "core::array::Span::" - }, - { - "name": "hyperstructure_shareholder_epochs", - "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_access", - "inputs": [ - { - "name": "hyperstructure_entity_id", - "type": "core::integer::u32" - }, - { - "name": "access", - "type": "s0_eternum::models::hyperstructure::Access" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::hyperstructure::contracts::hyperstructure_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-hyperstructure_systems", - "selector": "0x44f825ffb89246cbeda203107846db0efad60bbedb24dc67dbd4a42593e6c82", - "systems": [ - "create", - "contribute_to_construction", - "set_co_owners", - "end_game", - "set_access", - "upgrade" - ] - }, - { - "address": "0x29ebe0bfa1989bac75afe636f7e72c6e8742006d5ca0a26f938fa497f37365b", - "class_hash": "0x7745ddfb6e0ee149ea9e7251c7c26270f637d6c8a16a96a28445329db84d48d", - "abi": [ - { - "type": "impl", - "name": "liquidity_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "liquidity_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "LiquiditySystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::liquidity::ILiquiditySystems" - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "cubit::f128::types::fixed::Fixed", - "members": [ - { - "name": "mag", - "type": "core::integer::u128" - }, - { - "name": "sign", - "type": "core::bool" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::bank::contracts::liquidity::ILiquiditySystems", - "items": [ - { - "type": "function", - "name": "add", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "resource_amount", - "type": "core::integer::u128" - }, - { - "name": "lords_amount", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "remove", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "shares", - "type": "cubit::f128::types::fixed::Fixed" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::bank::contracts::liquidity::liquidity_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-liquidity_systems", - "selector": "0x3cc30307c653c6c1ba1a6e99364f57c94360b8f73787d1518eaab02e9d0d6b", - "systems": [ - "add", - "remove", - "upgrade" - ] - }, - { - "address": "0x41c98a7b8f03f83ad9d4d24ecddd0fd21d5b2f60a2c0ac815f75f0bb6bf5a52", - "class_hash": "0x38af9ba05f482d793c8324222a4fc2015c340a9dd497840269797b24f87450a", - "abi": [ - { - "type": "impl", - "name": "map_generation_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "map_generation_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "MapGenerationSystemsImpl", - "interface_name": "s0_eternum::systems::map::map_generation::IMapGenerationSystems" - }, - { - "type": "struct", - "name": "s0_eternum::models::owner::EntityOwner", - "members": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_owner_id", - "type": "core::integer::u32" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::position::Coord", - "members": [ - { - "name": "x", - "type": "core::integer::u32" - }, - { - "name": "y", - "type": "core::integer::u32" - } - ] - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::map::map_generation::IMapGenerationSystems", - "items": [ - { - "type": "function", - "name": "discover_shards_mine", - "inputs": [ - { - "name": "unit_entity_owner", - "type": "s0_eternum::models::owner::EntityOwner" - }, - { - "name": "coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [ - { - "type": "core::bool" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "add_mercenaries_to_structure", - "inputs": [ - { - "name": "structure_entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::map::map_generation::map_generation_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-map_generation_systems", - "selector": "0x29daec1bf7e70863ae1f9a4b455a1e12030394562eb21b214c9037f9fb71424", - "systems": [ - "discover_shards_mine", - "add_mercenaries_to_structure", - "upgrade" - ] - }, - { - "address": "0x4a212c52c4035bc9bd170125216604f406dcd75b41be11d3b4d89047366d84d", - "class_hash": "0x5dd66452d42d01a490e933231094f081fe535d7ba8222cc56add27221f34cd9", - "abi": [ - { - "type": "impl", - "name": "map_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "map_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "MapSystemsImpl", - "interface_name": "s0_eternum::systems::map::contracts::IMapSystems" - }, - { - "type": "enum", - "name": "s0_eternum::models::position::Direction", - "variants": [ - { - "name": "East", - "type": "()" - }, - { - "name": "NorthEast", - "type": "()" - }, - { - "name": "NorthWest", - "type": "()" - }, - { - "name": "West", - "type": "()" - }, - { - "name": "SouthWest", - "type": "()" - }, - { - "name": "SouthEast", - "type": "()" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::map::contracts::IMapSystems", - "items": [ - { - "type": "function", - "name": "explore", - "inputs": [ - { - "name": "unit_id", - "type": "core::integer::u32" - }, - { - "name": "direction", - "type": "s0_eternum::models::position::Direction" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::map::contracts::map_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-map_systems", - "selector": "0x27a92961f46c5ac43e19fa2b7d50d169c2776dbb98478a96a8a3050647431cd", - "systems": [ - "explore", - "upgrade" - ] - }, - { - "address": "0x7e3bae0e253a0131063b63ee4d7b27b50329c617ae88b82d529a70f1a11c63", - "class_hash": "0x288d58cd0a2fa003e18768537e62f72649c451a647fd704096a4b1dae4bdcae", - "abi": [ - { - "type": "impl", - "name": "name_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "name_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "NameSystemsImpl", - "interface_name": "s0_eternum::systems::name::contracts::INameSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::name::contracts::INameSystems", - "items": [ - { - "type": "function", - "name": "set_address_name", - "inputs": [ - { - "name": "name", - "type": "core::felt252" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_entity_name", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "name", - "type": "core::felt252" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::name::contracts::name_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-name_systems", - "selector": "0x57061191efce4db08b753f5d6119a16595a3ac2b91db70e971630c34ff5e16e", - "systems": [ - "set_address_name", - "set_entity_name", - "upgrade" - ] - }, - { - "address": "0x30516789ee1b822d7b448f01be67cec7bf383d3ac4b2380a09f85ad0765f846", - "class_hash": "0x1896883a09bb110c705be2685eacb0b0e6ae67fde76602982f7f32daceb7fa7", - "abi": [ - { - "type": "impl", - "name": "ownership_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "ownership_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "OwnershipSystemsImpl", - "interface_name": "s0_eternum::systems::ownership::contracts::IOwnershipSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::ownership::contracts::IOwnershipSystems", - "items": [ - { - "type": "function", - "name": "transfer_ownership", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "new_owner", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::ownership::contracts::ownership_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-ownership_systems", - "selector": "0x419b9f1d9d3cbe8dd78cb553b0e1895fa2d3cfb9e7e578866056fca72f9108b", - "systems": [ - "transfer_ownership", - "upgrade" - ] - }, - { - "address": "0x1b480f620ea35431ab43dba634795b14f547ef3e77370db6f0a31f2fdc21d86", - "class_hash": "0x5b0020020a6d5d6d8753ef323cc6240cfabb3daa52334fafc2323b8995e6a8c", - "abi": [ - { - "type": "impl", - "name": "realm_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "realm_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "RealmSystemsImpl", - "interface_name": "s0_eternum::systems::realm::contracts::IRealmSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::realm::contracts::IRealmSystems", - "items": [ - { - "type": "function", - "name": "create", - "inputs": [ - { - "name": "owner", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "realm_id", - "type": "core::integer::u32" - }, - { - "name": "frontend", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "upgrade_level", - "inputs": [ - { - "name": "realm_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "quest_claim", - "inputs": [ - { - "name": "quest_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::realm::contracts::realm_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-realm_systems", - "selector": "0x6ae6691704d5df34326545ad7d15afebdd83066596af8c0dcb5d216d1ede909", - "systems": [ - "create", - "upgrade_level", - "quest_claim", - "upgrade" - ] - }, - { - "address": "0x39485580b263e26b208ca689e33f3ea0016d98939b773186eec615d6398dd18", - "class_hash": "0x2b86deb10f19e8a3e75b0051610d1819fa8354aaa328c88c18c0dee28b2cd7", - "abi": [ - { - "type": "impl", - "name": "resource_bridge_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "resource_bridge_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "ResourceBridgeImpl", - "interface_name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems" - }, - { - "type": "struct", - "name": "core::integer::u256", - "members": [ - { - "name": "low", - "type": "core::integer::u128" - }, - { - "name": "high", - "type": "core::integer::u128" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems", - "items": [ - { - "type": "function", - "name": "deposit_initial", - "inputs": [ - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "recipient_realm_id", - "type": "core::integer::u32" - }, - { - "name": "amount", - "type": "core::integer::u256" - }, - { - "name": "client_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "deposit", - "inputs": [ - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "through_bank_id", - "type": "core::integer::u32" - }, - { - "name": "recipient_realm_id", - "type": "core::integer::u32" - }, - { - "name": "amount", - "type": "core::integer::u256" - }, - { - "name": "client_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "start_withdraw", - "inputs": [ - { - "name": "through_bank_id", - "type": "core::integer::u32" - }, - { - "name": "from_realm_id", - "type": "core::integer::u32" - }, - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "amount", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "finish_withdraw", - "inputs": [ - { - "name": "through_bank_id", - "type": "core::integer::u32" - }, - { - "name": "from_entity_id", - "type": "core::integer::u32" - }, - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "recipient_address", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "client_fee_recipient", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::resource_bridge_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-resource_bridge_systems", - "selector": "0x5916a4c5e4fb7f1105244015fcc1e9950efab35919af199a4a2c1aef2c3aa61", - "systems": [ - "deposit_initial", - "deposit", - "start_withdraw", - "finish_withdraw", - "upgrade" - ] - }, - { - "address": "0x2df8fb2bf3f7866aa5a1258df35b9cd21d6a73e040c6cae224ac769fefc2789", - "class_hash": "0x13b3cd46bf3fe06dfb296df2daa903ab1814b9e2a45001074ee8ab9653171d6", - "abi": [ - { - "type": "impl", - "name": "resource_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "resource_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "ResourceSystemsImpl", - "interface_name": "s0_eternum::systems::resources::contracts::resource_systems::IResourceSystems" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::resources::contracts::resource_systems::IResourceSystems", - "items": [ - { - "type": "function", - "name": "approve", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "recipient_entity_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "send", - "inputs": [ - { - "name": "sender_entity_id", - "type": "core::integer::u32" - }, - { - "name": "recipient_entity_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "pickup", - "inputs": [ - { - "name": "recipient_entity_id", - "type": "core::integer::u32" - }, - { - "name": "owner_entity_id", - "type": "core::integer::u32" - }, - { - "name": "resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::resources::contracts::resource_systems::resource_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-resource_systems", - "selector": "0x31e8be63af9c072934c219dd6cbd2fea3b49fce2311adceb8a8a8870a760b62", - "systems": [ - "approve", - "send", - "pickup", - "upgrade" - ] - }, - { - "address": "0x45d09aa925f24a12546f9e791b130aa443469517a670d3666c5276caa57003f", - "class_hash": "0x2e9bd746faba7d7f8075392a0d214349e9db3ddc8495199a101098b4e2520c3", - "abi": [ - { - "type": "impl", - "name": "season_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "season_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "SeasonSystemsImpl", - "interface_name": "s0_eternum::systems::season::contracts::ISeasonSystems" - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u32, core::integer::u16)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u32, core::integer::u16)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::season::contracts::ISeasonSystems", - "items": [ - { - "type": "function", - "name": "register_to_leaderboard", - "inputs": [ - { - "name": "hyperstructures_contributed_to", - "type": "core::array::Span::" - }, - { - "name": "hyperstructure_shareholder_epochs", - "type": "core::array::Span::<(core::integer::u32, core::integer::u16)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "claim_leaderboard_rewards", - "inputs": [ - { - "name": "token", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::season::contracts::season_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-season_systems", - "selector": "0x384e61da11b2e476dc992c9556f8d1d42814136a36400b5cb34175de183ac9", - "systems": [ - "register_to_leaderboard", - "claim_leaderboard_rewards", - "upgrade" - ] - }, - { - "address": "0x4f92a1d00d3aec8cece60fc2d0fc236fe1d95c54ff0ceb2f393fbc7e0863d8e", - "class_hash": "0xeb430602e661e99572522646cde107ec514e61144be7d21b6d8f506253fb12", - "abi": [ - { - "type": "impl", - "name": "swap_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "swap_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "SwapSystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::swap::ISwapSystems" - }, - { - "type": "interface", - "name": "s0_eternum::systems::bank::contracts::swap::ISwapSystems", - "items": [ - { - "type": "function", - "name": "buy", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "amount", - "type": "core::integer::u128" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "sell", - "inputs": [ - { - "name": "bank_entity_id", - "type": "core::integer::u32" - }, - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "resource_type", - "type": "core::integer::u8" - }, - { - "name": "amount", - "type": "core::integer::u128" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::bank::contracts::swap::swap_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-swap_systems", - "selector": "0x14a06d11e0f26724e8e61c141842f95425009d07620b3c369f9f517d568e591", - "systems": [ - "buy", - "sell", - "upgrade" - ] - }, - { - "address": "0x7e2b1334398fafbe640f34bacae99b649d633417960ee397b6a8fb117fec819", - "class_hash": "0x82d4c26c51972a54cce8bdb3a2d75c88cba9435fef478cd548616144dc8cf7", - "abi": [ - { - "type": "impl", - "name": "trade_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "trade_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "TradeSystemsImpl", - "interface_name": "s0_eternum::systems::trade::contracts::trade_systems::ITradeSystems" - }, - { - "type": "struct", - "name": "core::array::Span::<(core::integer::u8, core::integer::u128)>", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::<(core::integer::u8, core::integer::u128)>" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::trade::contracts::trade_systems::ITradeSystems", - "items": [ - { - "type": "function", - "name": "create_order", - "inputs": [ - { - "name": "maker_id", - "type": "core::integer::u32" - }, - { - "name": "maker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "taker_id", - "type": "core::integer::u32" - }, - { - "name": "taker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "expires_at", - "type": "core::integer::u64" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "accept_order", - "inputs": [ - { - "name": "taker_id", - "type": "core::integer::u32" - }, - { - "name": "trade_id", - "type": "core::integer::u32" - }, - { - "name": "maker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "taker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "accept_partial_order", - "inputs": [ - { - "name": "taker_id", - "type": "core::integer::u32" - }, - { - "name": "trade_id", - "type": "core::integer::u32" - }, - { - "name": "maker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "taker_gives_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - }, - { - "name": "taker_gives_actual_amount", - "type": "core::integer::u128" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "cancel_order", - "inputs": [ - { - "name": "trade_id", - "type": "core::integer::u32" - }, - { - "name": "return_resources", - "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::trade::contracts::trade_systems::trade_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-trade_systems", - "selector": "0x5272cd9b34062cb8bd8ec92ecca87f92a884d4bd2f5bf6c563265a018ac22a5", - "systems": [ - "create_order", - "accept_order", - "accept_partial_order", - "cancel_order", - "upgrade" - ] - }, - { - "address": "0x4069c2be57f08fef9f31afc85a5b4c03c208ebdb278b9d853606caa7a9cbee6", - "class_hash": "0x265849dc16d9a9aea6fa88ba80d8daa77cc3323320eba61acef791980f7731d", - "abi": [ - { - "type": "impl", - "name": "travel_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "travel_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "TravelSystemsImpl", - "interface_name": "s0_eternum::systems::transport::contracts::travel_systems::ITravelSystems" - }, - { - "type": "enum", - "name": "s0_eternum::models::position::Direction", - "variants": [ - { - "name": "East", - "type": "()" - }, - { - "name": "NorthEast", - "type": "()" - }, - { - "name": "NorthWest", - "type": "()" - }, - { - "name": "West", - "type": "()" - }, - { - "name": "SouthWest", - "type": "()" - }, - { - "name": "SouthEast", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::transport::contracts::travel_systems::ITravelSystems", - "items": [ - { - "type": "function", - "name": "travel_hex", - "inputs": [ - { - "name": "travelling_entity_id", - "type": "core::integer::u32" - }, - { - "name": "directions", - "type": "core::array::Span::" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::transport::contracts::travel_systems::travel_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-travel_systems", - "selector": "0x4928d4294639e944ff93869e10cee7533ffd910f5791fc486c04b91f2fcf8fe", - "systems": [ - "travel_hex", - "upgrade" - ] - }, - { - "address": "0x26be0ed574aa9ee6f73b53b12f0a199ddbf4ac697470316cdb3d9d1f5680cab", - "class_hash": "0x73a377e55a1833ac9ab16ad9eb29c941cc182bf8cf4a10720d6737dc7c826ff", - "abi": [ - { - "type": "impl", - "name": "troop_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "troop_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "TroopContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::troop_systems::ITroopContract" - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::combat::Troops", - "members": [ - { - "name": "knight_count", - "type": "core::integer::u64" - }, - { - "name": "paladin_count", - "type": "core::integer::u64" - }, - { - "name": "crossbowman_count", - "type": "core::integer::u64" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::combat::contracts::troop_systems::ITroopContract", - "items": [ - { - "type": "function", - "name": "army_create", - "inputs": [ - { - "name": "army_owner_id", - "type": "core::integer::u32" - }, - { - "name": "is_defensive_army", - "type": "core::bool" - } - ], - "outputs": [ - { - "type": "core::integer::u32" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "army_delete", - "inputs": [ - { - "name": "army_id", - "type": "core::integer::u32" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "army_buy_troops", - "inputs": [ - { - "name": "army_id", - "type": "core::integer::u32" - }, - { - "name": "payer_id", - "type": "core::integer::u32" - }, - { - "name": "troops", - "type": "s0_eternum::models::combat::Troops" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "army_merge_troops", - "inputs": [ - { - "name": "from_army_id", - "type": "core::integer::u32" - }, - { - "name": "to_army_id", - "type": "core::integer::u32" - }, - { - "name": "troops", - "type": "s0_eternum::models::combat::Troops" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::combat::contracts::troop_systems::troop_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-troop_systems", - "selector": "0x5f97ab78613558d9346649708e6829b417ad55826ba2e4f7b0fc79ad276180a", - "systems": [ - "army_create", - "army_delete", - "army_buy_troops", - "army_merge_troops", - "upgrade" - ] - } - ], - "models": [ - { - "members": [], - "class_hash": "0x25603f4597c7b9476318af1bf26c9e0f9f7a3f24b8aa4fd4aa095289c74e2bb", - "tag": "s0_eternum-AddressName", - "selector": "0x2a33e6e963e8f80fb8f00a69a8b55ec9834adda81bbb305024500c4b4356e24" - }, - { - "members": [], - "class_hash": "0x7c8598486eb6f5bc890ccac17cc5c4f7400998f5c50247d90e5df0f643f9f2b", - "tag": "s0_eternum-Army", - "selector": "0x34cab5fd09c4f5f5b8624e52c883afec2462c2fc2e7227121f70de648e68dcc" - }, - { - "members": [], - "class_hash": "0x7833dddc0296ff97ec9f1dc202d471ed80888935579f156737927c9207e0417", - "tag": "s0_eternum-ArrivalTime", - "selector": "0xd334451a97858d6173423408cd0c4da2a3878f6ec4f3909e134193d07682c4" - }, - { - "members": [], - "class_hash": "0x189b3d6d05402af89cfefc45b6c6ce579ab81ee7da7cce1fdf08ecb881de732", - "tag": "s0_eternum-Bank", - "selector": "0x6f71dd64e5e14a5ab47d15cfabd84490061490c8c203993790f30cafd5d117e" - }, - { - "members": [], - "class_hash": "0xa7a02d408072e5f97ebf3f0d69acb4fb176223379091948a452c10c314a0d2", - "tag": "s0_eternum-BankConfig", - "selector": "0x2a507ce5bff2ddf50eced9c753dc0a160ba64fc6efe3be4cb26ce51210e2b81" - }, - { - "members": [], - "class_hash": "0x809fe36ec53a3cfa77f64648430007c5bc0bb148c31652b3956bb318a8f7ae", - "tag": "s0_eternum-Battle", - "selector": "0x28394f9c3c874b586a25bf96d137256eab0a702fc3f66aa83464a5a0e062172" - }, - { - "members": [], - "class_hash": "0x715169dd601b742605451b231c47de8970be609fb85f48115b01333766bedf4", - "tag": "s0_eternum-BattleConfig", - "selector": "0x224e4f9b37ed3d9cc06297ea8507e62538b864a92232f0ec53a4c7a4cf6ccfd" - }, - { - "members": [], - "class_hash": "0x551b3f9ea6504a59d70f1fc420d6e20797bdfe822c7c5e8d5d0d6bff8ad679a", - "tag": "s0_eternum-Building", - "selector": "0x74f3912ea921e93e11f5c8267c29d94f367b3c52840c0ec93292ff5d2374d6c" - }, - { - "members": [], - "class_hash": "0x3d1ed9f1e9280e3f046561cfb77244866cc919517e62762cef17779d91a9d4e", - "tag": "s0_eternum-BuildingCategoryPopConfig", - "selector": "0x7713338d5bb53067dd8a10c158385c2744d0dfba8260ddb0658394359b6b5e2" - }, - { - "members": [], - "class_hash": "0x6619a6a57a8361ac09e034d95d26df7608a1314a89386bfbc9fbbc385dfb090", - "tag": "s0_eternum-BuildingConfig", - "selector": "0x1f8462fbfd271244b0144b93124ee213e9ef6edec50e6fc4b0ea41d2b756d87" - }, - { - "members": [], - "class_hash": "0x2fdd5ae262983f3645779ab454a188dd555dcbc3dc3ceb438bf1ee7958b6c5f", - "tag": "s0_eternum-BuildingGeneralConfig", - "selector": "0x1fc4af90bddbc3edb2446f5839d3274131bd7023a2bde3aeddbe29769c0be84" - }, - { - "members": [], - "class_hash": "0x1d3ddebfe5bbb35348ac03a42b77be34ff050b5f60d5370ff5a6415d61f8a11", - "tag": "s0_eternum-BuildingQuantityv2", - "selector": "0xe74ab1d939c8b4763331ecee9187cc91e4a363228e596e0a655667aeedb117" - }, - { - "members": [], - "class_hash": "0x6cafd04dceeb148a4f3cdb0fc76083c74677f11a046f3be2a50cc22279a8074", - "tag": "s0_eternum-CapacityCategory", - "selector": "0x166cc667881fc0d333660d7668601cf536082cc577b720cea8be0f24549473c" - }, - { - "members": [], - "class_hash": "0x3a19b4d090591b5be5a300e1fd02e3b0d52bc20b30b47d7a0255a48a678e29d", - "tag": "s0_eternum-CapacityConfig", - "selector": "0x4bb69cf85cfa897830312e40bb75ab1c0f58c01cbbadf4e835ee5fa37d1bb2e" - }, - { - "members": [], - "class_hash": "0x105a94789b0a8342a90b8878fa4f06553af01b9416d86a0a80d65fc169d3092", - "tag": "s0_eternum-Contribution", - "selector": "0x48fb552387fed5f3f7bcb55468f85ac92efeb06817e5f5e329358b69b4a7d6" - }, - { - "members": [], - "class_hash": "0x56087bbaf3245d64e62c0afd732ffdbe7584493d1a39316a09082182d809da1", - "tag": "s0_eternum-DetachedResource", - "selector": "0x34cc163b0f7a78e671da441bbbfe6dd3632f7f62cbee8e1734c6dec2971478c" - }, - { - "members": [], - "class_hash": "0x71b9c7843ab6be7de6ade56f21be309f9bf08a6e4fc33318dd9f43307e1008", - "tag": "s0_eternum-EntityName", - "selector": "0x4ea8f072e356080ed18f016cbb7f0c43807c733d037c3ad9e52da5fd98e11f0" - }, - { - "members": [], - "class_hash": "0x2d0dd3c37fa25edc072c4fd231c6ec51dbed2ea0304a334a8b47568d9a1ec4f", - "tag": "s0_eternum-EntityOwner", - "selector": "0x19fbc5ce760d680c185bbefb04a4b1870a4f23bc8fda0fbf77b4a241b7ce04a" - }, - { - "members": [], - "class_hash": "0x76ab75f20ec824383b34afe1315ec9e59fe9f23599086b354f43e3c08aa8e24", - "tag": "s0_eternum-Epoch", - "selector": "0x62827d2605e74e8c4ea2f40a6407477a0eae355a2e6485261acbc95e3219fc3" - }, - { - "members": [], - "class_hash": "0x22001c3a27555a192b0a134e76a443707ca89af8fb7a01265473cd609b04a41", - "tag": "s0_eternum-Guild", - "selector": "0x49ac80c25fa65d45250f4dd7a253dd79561a9460e108c173aa413ef246c3e6b" - }, - { - "members": [], - "class_hash": "0x2ba8f917f23ee021008384816f0ad038a1cae8b004c53e18f6bac455ec9efa6", - "tag": "s0_eternum-GuildMember", - "selector": "0x517c08e6a498a5a56742edce432fd533bc4cb16589acf1bb025999a5cec0e66" - }, - { - "members": [], - "class_hash": "0x2f72606313ed3fca8c1d6ec0257466e6b9301cc9fba8ec67d114f7fab0dc23a", - "tag": "s0_eternum-GuildWhitelist", - "selector": "0x5da3d8f80bab03feaa3c5158e1e4584b6b5e213a0feb4d4125798f73b4a528a" - }, - { - "members": [], - "class_hash": "0x111b1a81032822367c6d57b2fe7b2baaaf8304ec0f8075bda6dd83b0827f35d", - "tag": "s0_eternum-Health", - "selector": "0x1aa97583b6abc29f779ed14e03d820d29e64168389ca94367abf35ea7f103a1" - }, - { - "members": [], - "class_hash": "0x6277bc0b34ccf11b00b086ca2c7e83a5ac144532b6b4f843caddfcf01c02327", - "tag": "s0_eternum-Hyperstructure", - "selector": "0x5a47c8b59e367cc045b847bd4f63955ceeeffbc43055ecd11d2d77796bddd73" - }, - { - "members": [], - "class_hash": "0x1f90aa30d9d5d978f71b991daa57bc5ce51070034c3c3749c3378eae720e1b5", - "tag": "s0_eternum-HyperstructureConfig", - "selector": "0x538fcd59a65ece056337c3f4563a41b0922e14c0892d9e0f2e9980716487be3" - }, - { - "members": [], - "class_hash": "0x4f85a565011171be648bda2095b1448773804f29d967448aa2fa81554cbfab1", - "tag": "s0_eternum-HyperstructureResourceConfig", - "selector": "0x3841ccb4835caa2dd2433ed893d593a63d74afea4ec67eccb905df41d6b95b1" - }, - { - "members": [], - "class_hash": "0x7dfe538eaecf8e98fc578ef98c8766c050d1e6fd853f2a663a42d99813b4e23", - "tag": "s0_eternum-Leaderboard", - "selector": "0x2feedf0fc0a7bb2c53a51fee44e1c8a2cbf182ed000b57865c108eaaa463bcf" - }, - { - "members": [], - "class_hash": "0x792ff7a8ffffbaff0859d84e2d87ee5a71996bfeb349248cbf63d7dd1b8a1f4", - "tag": "s0_eternum-LeaderboardEntry", - "selector": "0x446f6cb1881e354935007b6a51033216f2f66cab52573d1bb2a03d7bc7fb4fb" - }, - { - "members": [], - "class_hash": "0x6a6b0e38324523a4d7c9406ad059adc0244353ae86fdb28589419643152d42a", - "tag": "s0_eternum-LeaderboardRegistered", - "selector": "0x3d2cbb167883a8ff584dad6276fc1df0b7757d5e2282f1658d746a8c936116b" - }, - { - "members": [], - "class_hash": "0x19baf80e6ba59bfb8c94643f2ed7c15e902d00d313ac92c90f4071e3ddf0129", - "tag": "s0_eternum-LeaderboardRewardClaimed", - "selector": "0xc7744e31a4ae5a2f24008b6147fac5c735bfa7fc4bbff8224f2833f73a8e93" - }, - { - "members": [], - "class_hash": "0x1a812bd54f7a074e8a1289ab1d7e41e659ef15c607d934abfeda35d987a834", - "tag": "s0_eternum-LevelingConfig", - "selector": "0x57307c2d18e8c1e060fcb4cc9d63ce0abfa90f9e9bca63f00fb08a8b6a6584d" - }, - { - "members": [], - "class_hash": "0x465e09976306288f9d5ba76464636aa3570b50d3dd537e62df642524007eab8", - "tag": "s0_eternum-Liquidity", - "selector": "0x88855562f77d4da524f33db24ad881dd1c3b4d809fa37d2508b5ab1fd4310e" - }, - { - "members": [], - "class_hash": "0x3acaf90122ee7bec0d7e0c29b9d227fb3f7576661157acf5817d2875acdeb24", - "tag": "s0_eternum-MapConfig", - "selector": "0x1c44934bf878736b0ffd224a4d0065ca92072daa6e846de657f58b7b5a4374a" - }, - { - "members": [], - "class_hash": "0x1c99e7ffe68d55ac3fc421eb979fd5d7d197d6dc99cc8893fcaae5abbaedfa9", - "tag": "s0_eternum-Market", - "selector": "0x18457324069342b71d49b485b3b2ced814726c5a978581a172dd806de3d9bac" - }, - { - "members": [], - "class_hash": "0x16eef0d1d4096a35efebc74a9c8254cb8c1af27a8c7d22fda96edc796b4cdac", - "tag": "s0_eternum-MercenariesConfig", - "selector": "0x7983d4a611b82abb59e4320d8032fcb84f3c372c60c83a01d680f14f64bd3c6" - }, - { - "members": [], - "class_hash": "0x247307d7e5299e6b3ce6377a08a9d41497229eaa6a9e591858d0a088c61af4a", - "tag": "s0_eternum-Message", - "selector": "0x3262fb0b2f51323ea7116e1ef4735a6e1be97bc86bbe19fcba298d0edfa0c5c" - }, - { - "members": [], - "class_hash": "0x355984d124ab086115f9b6855c05a7c6ab416e01a45e57a08e13b28ec7db02d", - "tag": "s0_eternum-Movable", - "selector": "0x354103241a35f6b87bb0e9c4ac055975dd5324a93ab74b5b30edcce0067c59" - }, - { - "members": [], - "class_hash": "0x51b6a84422ddfda104af1cb45bbce0609edd265d2b909237ec37dc7aa5a2afd", - "tag": "s0_eternum-Orders", - "selector": "0x2b8ed5e03d3934c534f66fc8194cd3cc112003028691019c9d1dd5ceacf6bc" - }, - { - "members": [], - "class_hash": "0x787159e5bbd67c0eba40db3b4984a9b1ace232ce3991bf96abb6a964b57d2", - "tag": "s0_eternum-OwnedResourcesTracker", - "selector": "0x50b64757716328c2639f72f641130df11177b01695167ec2ffb63f4c5ac8c93" - }, - { - "members": [], - "class_hash": "0x6943ea1c8aee5d7749a85d2e333a8d97dce8d1d661e5bba0d93c850ab33d7da", - "tag": "s0_eternum-Owner", - "selector": "0x2ac70068901471291f27e386276bb51ce50c89e144a6e8e11d4f91b78236241" - }, - { - "members": [], - "class_hash": "0x77effa7d6e9cdaf053e31ddb864c29cc587e756673d8a2bdc8b919ac8eb0373", - "tag": "s0_eternum-Population", - "selector": "0x999f9ad8790ee0ec873b5e149fa1ef1054039e90bba49ac4975ba2cdb54429" - }, - { - "members": [], - "class_hash": "0x58397e297c6e9d5fb96965dd7241321667199c25918efeb27bbb830ab0948c3", - "tag": "s0_eternum-PopulationConfig", - "selector": "0x5cd485b0e678c36a4a14b0fcf5880e58e206c5b8199c9640d88f5ea86efe9b5" - }, - { - "members": [], - "class_hash": "0x4953b4f720c6479aae4d8b84b2d749ad5ab816f03e6ce500d5bcf609c59e77c", - "tag": "s0_eternum-Position", - "selector": "0x77c1a504cea841ea9ee0819e994d66d453d0652ecb7a51e80682ff8abd57f65" - }, - { - "members": [], - "class_hash": "0x681143e22335e72474d3921e0c0de14be253faa5b5c5c46a4adb8ecd3e2f6c9", - "tag": "s0_eternum-Production", - "selector": "0x12c4d44e2b854c8481b4da2b2dcc648b3a9d4e9006b4143acfedbd6aa8641db" - }, - { - "members": [], - "class_hash": "0x2ae1387960b8602eab9567676f73317344ae7ded34e9fc0c012966e8d3cf2ce", - "tag": "s0_eternum-ProductionConfig", - "selector": "0x520a8a0dec76799ca6b1198154f32247aa76da785d2cc7a56dabe401f80416c" - }, - { - "members": [], - "class_hash": "0x429e0c7c8e81306023b8d502d4e7737646720b8769a13581d54e99b76a6052e", - "tag": "s0_eternum-ProductionDeadline", - "selector": "0x18bea71025a244df48319cca495154feeec10353885e4e9b73aa18239584fee" - }, - { - "members": [], - "class_hash": "0x7c98db7992d639ca0be54bd97dd342e80e4b5a8f9fab93fa3d37a5c027eb8ef", - "tag": "s0_eternum-ProductionInput", - "selector": "0x3df010b82ccfbdd80db14af6e47dc79038aec508f795b9d0f9968edba040c07" - }, - { - "members": [], - "class_hash": "0x297e32982827c7ca0e9950f7ab0593a7334289d004cff93809522a45774d858", - "tag": "s0_eternum-ProductionOutput", - "selector": "0x5ad2bb76ff0fcf39f0a6399770ae2f78b6999f03e5c9b9aa7b2216477772ffe" - }, - { - "members": [], - "class_hash": "0x3736456c345cc770abd64231513bd58269d6fb382e48c411be7bb5c66a54322", - "tag": "s0_eternum-Progress", - "selector": "0x2b63dd696d82b19fa1421e9e47be1c573b761c39f6b58c0d14ed0c562f26b3f" - }, - { - "members": [], - "class_hash": "0x375116ae74219639eab6fd408cdd263e4c6c93fb0b544d3ba3ef8e876ef561", - "tag": "s0_eternum-Protectee", - "selector": "0x2ac4b9ed0d69ae66f6feff3272811293fa6e8196bd602183271d07ae7a5d3bb" - }, - { - "members": [], - "class_hash": "0x3eff2b8014606f2522063b0803a9f0456c0be34f4ec6b7f31d2b0948a4aa0c1", - "tag": "s0_eternum-Protector", - "selector": "0x72426f978a43c915d92511ce3efb7fdd6c962f4344e37d38ed00d0d95eb37b5" - }, - { - "members": [], - "class_hash": "0x7577aac22db1cb4db007701d6292ed0edddb54a27a947f2fdbce4615cb0c178", - "tag": "s0_eternum-Quantity", - "selector": "0x399416904300b2d9bc98601f480dcdd403fac4845279504082f1775505fb41" - }, - { - "members": [], - "class_hash": "0x2c17a1b5a72fc1c99fcc98629008b8cf539162e67a39813fadb9f407e20b2fb", - "tag": "s0_eternum-QuantityTracker", - "selector": "0x29c1ad2966a8d135fb73179ff12b872776a13fef4e7dcc14955f71950ad65aa" - }, - { - "members": [], - "class_hash": "0x3c9e64e617d829d6ef52f3cc63ee1872892697641ece5c3562494655751ee92", - "tag": "s0_eternum-Quest", - "selector": "0x7be72bb5626ead15f8756586fc89f32ca4e65fcbe00e8d49a222d94460b40ac" - }, - { - "members": [], - "class_hash": "0x6d7d41fa73f6a0cafcc95b905c394f420dbe512afb245f63c5aaf9d440c1c90", - "tag": "s0_eternum-QuestBonus", - "selector": "0x3e946c05a7448654a3f0f8e3983c98daca1d6727d3a595076b232f21aa9bf61" - }, - { - "members": [], - "class_hash": "0x6d7fa03d466e40e61eb5f9e8920ed1723e386147ece32faabfe48a3d96d8acb", - "tag": "s0_eternum-QuestConfig", - "selector": "0x10baf692d4bb6ab5fa51d3bcdb33b443bbb89178f74ad35c0f39df34972d97a" - }, - { - "members": [], - "class_hash": "0x5c8dbcc5c43eef6f7bebe035cfab3f0d97fc98cb7468c27494032ee7c477682", - "tag": "s0_eternum-QuestRewardConfig", - "selector": "0x1ee6b0ff29db9cdeecda6f947a65007ef951ac7b80242fe22cbc641bfcd24c5" - }, - { - "members": [], - "class_hash": "0x442cd0a9cac38ceadfe1f6ff64cf9df8a08036e1aa83e9fc8afdb34cb94af86", - "tag": "s0_eternum-Realm", - "selector": "0x73d618f4cfd6974371417e6fbe450ff219d703d52cd92acd3e0362d18754876" - }, - { - "members": [], - "class_hash": "0x37903a2f2a111216ca18f3d52cd3b7ac241700c929d0f532d82c8d0eef0db26", - "tag": "s0_eternum-RealmLevelConfig", - "selector": "0x7430cd339058f757d8da2972d4609124b232fac288cd84efb4975ef17783fa3" - }, - { - "members": [], - "class_hash": "0xb05b9f8bd0de85e837c571d3b7555c1dd54b8601049eb250f25193581a3813", - "tag": "s0_eternum-RealmMaxLevelConfig", - "selector": "0x454f0915256598d53f9fdd192a32a5886d2b006532ea05b1981694951e62fb7" - }, - { - "members": [], - "class_hash": "0x6e316e67743d138e6ee73ed2a1e6f6e9b814a888ca4e06d61d066853949c906", - "tag": "s0_eternum-Resource", - "selector": "0x6d9f80d9fc8d932eaf382b0dc61539511e229b2dec5a275dfb836095d8f0521" - }, - { - "members": [], - "class_hash": "0x63b70cb7538cdbf5d9c29df596130839d21a2a3327cea598931b590d0ad3199", - "tag": "s0_eternum-ResourceAllowance", - "selector": "0x5d040dde8317e13b9643f324a18afc64c5044e79569552f8496e919c312b44a" - }, - { - "members": [], - "class_hash": "0x2e09899ffdc52704cf7d5881b2b9576b99ac5d1a0939caaa79ba005f941ef8c", - "tag": "s0_eternum-ResourceBridgeConfig", - "selector": "0x462f28b5568fb3e258400d85241d45cd31e053723d029bb0a3542da9ef2ece6" - }, - { - "members": [], - "class_hash": "0x7773a272288d8f6746b61d40015b44f451a5f4418785ebb893cdd8a3f101924", - "tag": "s0_eternum-ResourceBridgeFeeSplitConfig", - "selector": "0x33b2e568d65393f26dffa1e9fcb1c8e5aac80bf8ecd96a62c56fa7626d08d4a" - }, - { - "members": [], - "class_hash": "0x69f85789f3cd09073415acea848b4121fb7ab57660d65efc0902f9b9088cfec", - "tag": "s0_eternum-ResourceBridgeWhitelistConfig", - "selector": "0x291a767dc981735be14609c8ef267d33c389f58393358ce20f757680d065bbb" - }, - { - "members": [], - "class_hash": "0x5ca96e7981e9fa033962a04953fe271d795fc28a77dcd09d5271d8da3714c9f", - "tag": "s0_eternum-ResourceCost", - "selector": "0x15d8989d3b9ba9d2d089e1e920d2d0c428811ec0ac77b09ab12bfc3b42121d" - }, - { - "members": [], - "class_hash": "0x1c08b438614f48ce953db0bd0621cc61e499be8dad256a681d0f8981525fee9", - "tag": "s0_eternum-ResourceTransferLock", - "selector": "0x7deca04dad26fe5bed5def8be8e9fc199906496dfe2aa982e9cd11fe35300b" - }, - { - "members": [], - "class_hash": "0x1661ce7179939f89588fcf3d6ea91416e265772e6cdca45dac1441e4b3db807", - "tag": "s0_eternum-Season", - "selector": "0x4f8865388e8136115c535f8be3bca980cc55ce5cde180fdf43877a9ac42cf10" - }, - { - "members": [], - "class_hash": "0x5908399449b220b2799f9c6c1d90531548d6a921676a73d5b18e3c73211349c", - "tag": "s0_eternum-SeasonAddressesConfig", - "selector": "0x2d1f2883267358910522f3abc2d86e377bf44b7a85eb1ce9a9a936af9872400" - }, - { - "members": [], - "class_hash": "0x6f19a8e8f55464fb398bf457038b10a01d6cfcf5051aa6c7a7296024fc78f9c", - "tag": "s0_eternum-SeasonBridgeConfig", - "selector": "0x67d6487b53941b5d6614c1f8f8fd0c620904fffed74e740a95f99485854896e" - }, - { - "members": [], - "class_hash": "0x68dbc517a95bd1643828c7f03c53b34cc6a2b9ab364825b676b19245380bec4", - "tag": "s0_eternum-SettlementConfig", - "selector": "0x2df09676383e67499863f6671e25031b67c0344b2d3e2177081d16640cef28b" - }, - { - "members": [], - "class_hash": "0x5a674566f968363982331c6e454e8046e123ce141cbe9ccb031a6f44d7fab3a", - "tag": "s0_eternum-SpeedConfig", - "selector": "0x7f66a20a5fc5f3b3a3b77fa1a3f8c30cc0a5e7fe03eed54a4c1f3a50d3421a4" - }, - { - "members": [], - "class_hash": "0x5c31bd0ec3923ca88f01ac658fcdfc8e8e73d22f4362b96a5ee55ae5232a2c8", - "tag": "s0_eternum-Stamina", - "selector": "0x39518c19003fa9f7525361cc92b886b541122d0ef323ad02f0a5ab8baf1dd4b" - }, - { - "members": [], - "class_hash": "0x4e57c7bc107c4d7f740589732138414790b76320bb831fc912d0ac30d699738", - "tag": "s0_eternum-StaminaConfig", - "selector": "0x72604cb9cc861ecdb0e70b00137564390c5ccafde0d9d37ba014122e9288df9" - }, - { - "members": [], - "class_hash": "0x68eaa4e6a99462bf94073ba9b2e3a580b4db9170d28f47cfdefb47023e91eb7", - "tag": "s0_eternum-StaminaRefillConfig", - "selector": "0x269f27b58ce568cd0a1187c785445f746a959f915fc35b999aaf2afa95c04b9" - }, - { - "members": [], - "class_hash": "0x6d8349a51048775ad58a5e14c77606d882ab3a4d18f5a1b59138d973156b8f6", - "tag": "s0_eternum-Status", - "selector": "0x6819b601c22df29790f76f061612ee4c23e6d77cf850a685fa8c7ea6defe1bb" - }, - { - "members": [], - "class_hash": "0x3669757d103c83f6fca79bd6c75a49d8a273fb92dcf6bba1ab4ccaafa6137ea", - "tag": "s0_eternum-Structure", - "selector": "0x67d49b2755ef1c37f1efaa29dcd3b4c483691d9a969211f49bae940e757b033" - }, - { - "members": [], - "class_hash": "0x6e04e36fce10b6885b2180899d40134304afd733807bf45183839c37276d44d", - "tag": "s0_eternum-StructureCount", - "selector": "0x2add29083cc23bb0da9d45470d574877e3a63de4eca3730bfc35fc32d7256bd" - }, - { - "members": [], - "class_hash": "0x229093b1da22e9f70eb9818a6873854bc5f7a9c3c254b32e33b8ac8ef7e6a78", - "tag": "s0_eternum-TickConfig", - "selector": "0x3dacec234467fc19b55d08363ec6c5128d40513e9c785cc8d6fa96a10e1e2fe" - }, - { - "members": [], - "class_hash": "0x4789f1e5905969a83009f355f5e2bc6882f5228f2dff1beae21f6c315f4d3f1", - "tag": "s0_eternum-Tile", - "selector": "0x2be20d4e39863a5ae902d8a1d7d218f011bc5fd0b144656c1ec555e95939d7a" - }, - { - "members": [], - "class_hash": "0x4a83f3518a2a3b7fd4a69303275fc35dc9d5b08d3b3bf19a6ec9cb8779b34b9", - "tag": "s0_eternum-Trade", - "selector": "0xb8f1c0b8b5c9b646a2275babf4f493a4dd50440775aa1a52f07612a3f699bf" - }, - { - "members": [], - "class_hash": "0x35b1c94e4a2c44b7484df407cba0df8042fd2c8bb2cb7c14e3a54b5c78f9724", - "tag": "s0_eternum-TravelFoodCostConfig", - "selector": "0x5effa64ae71be8b1d19c231fefb1056039306d3b1d8885baed5f774d4da2a9a" - }, - { - "members": [], - "class_hash": "0x24f902eba1a1f00afbb06c6d6358a5b9d9831e5f01fa19d20d54e4610d266e2", - "tag": "s0_eternum-TravelStaminaCostConfig", - "selector": "0x49e464fb66d305b9b58610bfb89bed1df4e2cde87f523936e71e5fa5562f9cf" - }, - { - "members": [], - "class_hash": "0x13787b670988065ecde86c7622e4dfc79e9752b1b093e22e81cb9797af3eaa0", - "tag": "s0_eternum-TroopConfig", - "selector": "0x6ae523bfd49a164bfc5949f568674f7b4e09cca39f55d389d398f159b363178" - }, - { - "members": [], - "class_hash": "0x6effa334a8558bcffbb55620d842fe9fc355a497100768c7ebeb1e5f01c85d2", - "tag": "s0_eternum-VRFConfig", - "selector": "0x325d18df666336f28e2027292fb9164e890d520368b4e150d3fffddb95b2304" - }, - { - "members": [], - "class_hash": "0x239c7e9007b36b7105d01e2d5fb2cc87a2f0123cf02308d78299fb1b2c0286b", - "tag": "s0_eternum-Weight", - "selector": "0x3af9b99c6bed5e58f52a76ef3616395e8ae96acee151395134ab5199fe5b36a" - }, - { - "members": [], - "class_hash": "0x342088461be2657e2281e9f5a773aa8e7c6584dd62e125edf4ca71e39400e57", - "tag": "s0_eternum-WeightConfig", - "selector": "0x5b42c2cdd790597f7f8125e69d38f2db0469a37ba2a436c5fbc6f54ab16f2a6" - }, - { - "members": [], - "class_hash": "0x3f493c16b07f9edf224672fd7d0a1766b42863e70e08e4ce21f8b9368a95486", - "tag": "s0_eternum-WorldConfig", - "selector": "0x2640c924e58d9c307bff3a21564eeccf889b9d22e9d1b99eaf3d3ca79ba29e9" - } - ], - "events": [ - { - "members": [], - "class_hash": "0x308165ad0fe528e9f62f91851e42cd02186c284133e0f716bf618e2a89a064", - "tag": "s0_eternum-AcceptOrder", - "selector": "0x34724f2592dc93feb914074bbe4e6abc093e7ca15f6755824c7f694662853fc" - }, - { - "members": [], - "class_hash": "0x4fca4dcdf02fdc00635fdbdbfa78b928f907e5a82f58e24f17e95ec9d9e2475", - "tag": "s0_eternum-AcceptPartialOrder", - "selector": "0x34b84575baeaa398556ab0a3889fabb7b08d2520d8838734eaf12282776900b" - }, - { - "members": [], - "class_hash": "0x56a5736da894e6774c628874b21f414a2c4f035065b75e36f1c7facd27420ee", - "tag": "s0_eternum-BattleClaimData", - "selector": "0x41d29e106dc5491be952bbe2faaddf7f61d2822a533f17116600e7ef9c76c18" - }, - { - "members": [], - "class_hash": "0x1aab9d5811dd52241b604e734cd3527f3723320d2e8a16d8d2f9ab9657cf07a", - "tag": "s0_eternum-BattleJoinData", - "selector": "0x4410ca9a121bdc7bd8847dc77b08361cc88574ae4ff18bdfb1f56ebd168a377" - }, - { - "members": [], - "class_hash": "0x483a25c8985f722179db7ab176625c2f0415004e315c89ddd569a546c0ff352", - "tag": "s0_eternum-BattleLeaveData", - "selector": "0x817ae7123b2cf2c241e4a1cee0acb2a6537270d32f68da46c222a19b7a6b7e" - }, - { - "members": [], - "class_hash": "0x6bd170bb8c9642bd582be27066fc5baa71ab6a5c989b6147c16b7187ae8b2de", - "tag": "s0_eternum-BattlePillageData", - "selector": "0x1e6374e36d81091d4c72eb16936e2afc86ed695397fb5fc54780a01187bfbe2" - }, - { - "members": [], - "class_hash": "0x75e03d907604ffc855f6fa954001870813f8731f049aa1a65b4fc0335b53989", - "tag": "s0_eternum-BattleStartData", - "selector": "0x39cee4993b5b6698ea69be399295a54faabb31613ddc297bd452b7db0c79081" - }, - { - "members": [], - "class_hash": "0x53ea30ee96d0e5b7eefcd0b3c5ff8ec23062b6a8af282c235dbd06db0c4d77", - "tag": "s0_eternum-BurnDonkey", - "selector": "0x61be67037fa3f9fa7655102f1fe0c3f35d352d5919aba6a204b0af556649e55" - }, - { - "members": [], - "class_hash": "0x3cd551d7e4b53f2b4afcab56040f3dfff20f2dd3e75f346c4f86f15d6f2aab8", - "tag": "s0_eternum-CancelOrder", - "selector": "0x37baed7c5d5da7ddcfe014daac5b3f37b4b959b832e8c4c70df06c8b530478" - }, - { - "members": [], - "class_hash": "0x54ebf96034d04a3febfaaa17372961a8746cdb440f451d4e3acfcedd4992db6", - "tag": "s0_eternum-CreateGuild", - "selector": "0x55a0213c9d81381326def8de071ea32d31f412ae525cb58b8b2a29cdbf3821" - }, - { - "members": [], - "class_hash": "0x3da4824e6b15595ea7c4906de6ae545f1de3c6997655c55fa040d9bc466fbcb", - "tag": "s0_eternum-CreateOrder", - "selector": "0x6cd5deb58306ff9ed529e7e496193ac3b8dadc4927768951a16afd5cee79291" - }, - { - "members": [], - "class_hash": "0x411bb0ec4ce2af05182f278331717c86aab7b154ea844fa05f5dc693b4f5f65", - "tag": "s0_eternum-FragmentMineDiscovered", - "selector": "0x5afb247cb5972fc84d96b10c69f31a96666642065816bfa74f4d0fdd715fac6" - }, - { - "members": [], - "class_hash": "0xf00b2af42e9108761ad47e50a2605c55203a83b342235def07252a85d6db85", - "tag": "s0_eternum-GameEnded", - "selector": "0x7552b1455aaf939a5cee7dfe7d65ef0341647b2b1dc97bbdac22e38f81b6f75" - }, - { - "members": [], - "class_hash": "0x5cddcd628958870243552341afbf5859b87d5f623d9ccec87fc217218301da", - "tag": "s0_eternum-HyperstructureCoOwnersChange", - "selector": "0x16aa9c3ff1e2229ec3989607dee034c26f555386c3fda2f57ae23a5da08bcd2" - }, - { - "members": [], - "class_hash": "0x5bf722c02c026a13863bc061f7f31d3e9a94a409e60a0b020355c621b3c8848", - "tag": "s0_eternum-HyperstructureContribution", - "selector": "0x11b57482819f44946c794b42bb3d6f9b5111e416abddd5590e48933db4e8c1c" - }, - { - "members": [], - "class_hash": "0x4bf46b14a1878f03209d4c6af988281d51fc7cc98fd8f1603e23092c67fcb5e", - "tag": "s0_eternum-HyperstructureFinished", - "selector": "0x18188e073773854e47229a73718f205c22955838714d847ff4bab4ed315852c" - }, - { - "members": [], - "class_hash": "0x19167b2efb0019a2d2547e6b97653c2e44eaa0648110a8d0492857d48f7628", - "tag": "s0_eternum-HyperstructureStarted", - "selector": "0x524d52c11289b16c879df0675bb7168b4556196e805130884ff7399568955f4" - }, - { - "members": [], - "class_hash": "0x10489827f673705da04f7c52b54164e01679958dec37bf8c97f45b6229adde", - "tag": "s0_eternum-JoinGuild", - "selector": "0x490fb23242de6839d879e576254121a224786783b288f05e8e57e942f0d0c44" - }, - { - "members": [], - "class_hash": "0x1de238739f2586354bfefc4c7d49a8e392b3c911515c9ad6445e96027a0dcb3", - "tag": "s0_eternum-LiquidityEvent", - "selector": "0x5ca594f7a676a13c4b15d34ffd0e922bf64e127d0fa6b6a9bd29a4bb6dcfd19" - }, - { - "members": [], - "class_hash": "0x6f57b19aaa43496f97785e8d6b18e21dc116bbd690e54a4fd03ccbb98ae760b", - "tag": "s0_eternum-MapExplored", - "selector": "0x5238d4838007cb371e0a62aff2a2d4241868fa579edc867125fa71c493fb2c8" - }, - { - "members": [], - "class_hash": "0x65b91709428bb484001943f1662d614fb4b6318b3fca1c4ed4b2fe53d822f6", - "tag": "s0_eternum-SettleRealmData", - "selector": "0x11b4babbcafbf1834c8e535877d14f1fc5dc0bd0b126a97a98bb1093d30e873" - }, - { - "members": [], - "class_hash": "0x4db6f101a1cff37f8e4709053f1ae4c1d8b8ec3dda5a2284b606439d051fb86", - "tag": "s0_eternum-SwapEvent", - "selector": "0x783a3cc6562fe31ae83bac3e69e636d8b58c357d5d3621c6d2e5d74da51e5db" - }, - { - "members": [], - "class_hash": "0x6059f5ee6fd551e038f65eac650a50c7af4401d3ce90cf257693b3eab27b8a3", - "tag": "s0_eternum-Transfer", - "selector": "0x4ff88ec4fe7fc992e29c980b4c0abfb2c35ecacce7e63248c2731984995fcbd" - }, - { - "members": [], - "class_hash": "0x40aee82a2213fb870290370044eeafec0c98eb8953299883251f870a9fd1e4c", - "tag": "s0_eternum-Travel", - "selector": "0x4e45f9632599eeb9a25d0977cd5aebf8a4aa209fea4134a862e592d31e387c0" - }, - { - "members": [], - "class_hash": "0x6b38999d987627835d4c20e7e571c73d32ddc856786d9790a131bdb3372a246", - "tag": "s0_eternum-TrophyCreation", - "selector": "0x5633ebee65e16c483940f284a816ac8b31e08ddd3932f80db960a40573d4dc2" - }, - { - "members": [], - "class_hash": "0xf05f290a704ad2671544b391f0c33d50d6d43d468d52791282852a833a00c7", - "tag": "s0_eternum-TrophyProgression", - "selector": "0x5a8f3fedb72efc9d358b86574cf362f8ed1ec12a02ca9f276e6190f49191217" - } - ] -} \ No newline at end of file diff --git a/contracts/game/manifest_mainnet.json b/contracts/game/manifest_mainnet.json index 087fa55df6..4c0981cabd 100644 --- a/contracts/game/manifest_mainnet.json +++ b/contracts/game/manifest_mainnet.json @@ -1,8 +1,8 @@ { "world": { "class_hash": "0x45575a88cc5cef1e444c77ce60b7b4c9e73a01cbbe20926d5a4c72a94011410", - "address": "0x6a9e4c6f0799160ea8ddc43ff982a5f83d7f633e9732ce42701de1288ff705f", - "seed": "s0_eternum", + "address": "0x0009dd5e66cfa83f893c2a70b9ea5221e2df18aaf52a111fe9003264f948c7aa", + "seed": "s1_eternum", "name": "Realms: Eternum", "entrypoints": [ "uuid", @@ -1308,11 +1308,11 @@ { "type": "impl", "name": "BankSystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::bank::IBankSystems" + "interface_name": "s1_eternum::systems::bank::contracts::bank::IBankSystems" }, { "type": "interface", - "name": "s0_eternum::systems::bank::contracts::bank::IBankSystems", + "name": "s1_eternum::systems::bank::contracts::bank::IBankSystems", "items": [ { "type": "function", @@ -1455,7 +1455,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::bank::contracts::bank::bank_systems::Event", + "name": "s1_eternum::systems::bank::contracts::bank::bank_systems::Event", "kind": "enum", "variants": [ { @@ -1472,13 +1472,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-bank_systems", + "tag": "s1_eternum-bank_systems", "selector": "0x16cf356882260a01771aedaab01f8e3afdab764944c3c4d41c617cd76b91e6a", - "systems": [ - "change_owner_amm_fee", - "change_owner_bridge_fee", - "upgrade" - ] + "systems": ["change_owner_amm_fee", "change_owner_bridge_fee", "upgrade"] }, { "address": "0x4ed3a7c5f53c6e96186eaf1b670bd2e2a3699c08e070aedf4e5fc6ac246ddc1", @@ -1537,11 +1533,11 @@ { "type": "impl", "name": "BattlePillageContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract" + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract" }, { "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract", "items": [ { "type": "function", @@ -1660,7 +1656,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_pillage_systems::Event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_pillage_systems::Event", "kind": "enum", "variants": [ { @@ -1677,12 +1673,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-battle_pillage_systems", + "tag": "s1_eternum-battle_pillage_systems", "selector": "0x9861172f7b864354b6e23d8971f0b054c518337a3cea854724658c43f9f580", - "systems": [ - "battle_pillage", - "upgrade" - ] + "systems": ["battle_pillage", "upgrade"] }, { "address": "0x2620f65aa2fd72d705306ada1ee7410023a3df03da9291f1ccb744fabfebc0", @@ -1741,11 +1734,11 @@ { "type": "impl", "name": "BattleContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleContract" + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleContract" }, { "type": "enum", - "name": "s0_eternum::models::combat::BattleSide", + "name": "s1_eternum::models::combat::BattleSide", "variants": [ { "name": "None", @@ -1763,7 +1756,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleContract", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleContract", "items": [ { "type": "function", @@ -1811,7 +1804,7 @@ }, { "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" + "type": "s1_eternum::models::combat::BattleSide" }, { "name": "army_id", @@ -1970,7 +1963,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_systems::Event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_systems::Event", "kind": "enum", "variants": [ { @@ -1987,7 +1980,7 @@ } ], "init_calldata": [], - "tag": "s0_eternum-battle_systems", + "tag": "s1_eternum-battle_systems", "selector": "0x28fc8bb4b5e0140b71566a257468e491e41a12f2f284cae6d4e731abd862067", "systems": [ "battle_start", @@ -2056,11 +2049,11 @@ { "type": "impl", "name": "BattleUtilsContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract" + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract" }, { "type": "struct", - "name": "s0_eternum::models::combat::Troops", + "name": "s1_eternum::models::combat::Troops", "members": [ { "name": "knight_count", @@ -2078,7 +2071,7 @@ }, { "type": "enum", - "name": "s0_eternum::models::combat::BattleSide", + "name": "s1_eternum::models::combat::BattleSide", "variants": [ { "name": "None", @@ -2096,11 +2089,11 @@ }, { "type": "struct", - "name": "s0_eternum::models::combat::BattleArmy", + "name": "s1_eternum::models::combat::BattleArmy", "members": [ { "name": "troops", - "type": "s0_eternum::models::combat::Troops" + "type": "s1_eternum::models::combat::Troops" }, { "name": "battle_id", @@ -2108,13 +2101,13 @@ }, { "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" + "type": "s1_eternum::models::combat::BattleSide" } ] }, { "type": "struct", - "name": "s0_eternum::models::combat::BattleHealth", + "name": "s1_eternum::models::combat::BattleHealth", "members": [ { "name": "current", @@ -2128,7 +2121,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::combat::Battle", + "name": "s1_eternum::models::combat::Battle", "members": [ { "name": "entity_id", @@ -2136,19 +2129,19 @@ }, { "name": "attack_army", - "type": "s0_eternum::models::combat::BattleArmy" + "type": "s1_eternum::models::combat::BattleArmy" }, { "name": "attack_army_lifetime", - "type": "s0_eternum::models::combat::BattleArmy" + "type": "s1_eternum::models::combat::BattleArmy" }, { "name": "defence_army", - "type": "s0_eternum::models::combat::BattleArmy" + "type": "s1_eternum::models::combat::BattleArmy" }, { "name": "defence_army_lifetime", - "type": "s0_eternum::models::combat::BattleArmy" + "type": "s1_eternum::models::combat::BattleArmy" }, { "name": "attackers_resources_escrow_id", @@ -2160,11 +2153,11 @@ }, { "name": "attack_army_health", - "type": "s0_eternum::models::combat::BattleHealth" + "type": "s1_eternum::models::combat::BattleHealth" }, { "name": "defence_army_health", - "type": "s0_eternum::models::combat::BattleHealth" + "type": "s1_eternum::models::combat::BattleHealth" }, { "name": "attack_delta", @@ -2190,7 +2183,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::combat::Army", + "name": "s1_eternum::models::combat::Army", "members": [ { "name": "entity_id", @@ -2198,7 +2191,7 @@ }, { "name": "troops", - "type": "s0_eternum::models::combat::Troops" + "type": "s1_eternum::models::combat::Troops" }, { "name": "battle_id", @@ -2206,13 +2199,13 @@ }, { "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" + "type": "s1_eternum::models::combat::BattleSide" } ] }, { "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract", "items": [ { "type": "function", @@ -2220,16 +2213,16 @@ "inputs": [ { "name": "battle", - "type": "s0_eternum::models::combat::Battle" + "type": "s1_eternum::models::combat::Battle" }, { "name": "army", - "type": "s0_eternum::models::combat::Army" + "type": "s1_eternum::models::combat::Army" } ], "outputs": [ { - "type": "(s0_eternum::models::combat::Battle, s0_eternum::models::combat::Army)" + "type": "(s1_eternum::models::combat::Battle, s1_eternum::models::combat::Army)" } ], "state_mutability": "external" @@ -2240,16 +2233,16 @@ "inputs": [ { "name": "battle", - "type": "s0_eternum::models::combat::Battle" + "type": "s1_eternum::models::combat::Battle" }, { "name": "army", - "type": "s0_eternum::models::combat::Army" + "type": "s1_eternum::models::combat::Army" } ], "outputs": [ { - "type": "(s0_eternum::models::combat::Battle, s0_eternum::models::combat::Army)" + "type": "(s1_eternum::models::combat::Battle, s1_eternum::models::combat::Army)" } ], "state_mutability": "external" @@ -2355,7 +2348,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_utils_systems::Event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_utils_systems::Event", "kind": "enum", "variants": [ { @@ -2372,13 +2365,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-battle_utils_systems", + "tag": "s1_eternum-battle_utils_systems", "selector": "0x4199f9a24edfc349a8a16e338daaaea77af951bcc40d636e85107731d52d2b7", - "systems": [ - "leave_battle", - "leave_battle_if_ended", - "upgrade" - ] + "systems": ["leave_battle", "leave_battle_if_ended", "upgrade"] }, { "address": "0x4b6a35c0c541467674ebb9640113a6d79c6f5a468796e9299b8e484a770032a", @@ -2437,11 +2426,11 @@ { "type": "impl", "name": "BuildingContractImpl", - "interface_name": "s0_eternum::systems::buildings::contracts::IBuildingContract" + "interface_name": "s1_eternum::systems::buildings::contracts::IBuildingContract" }, { "type": "enum", - "name": "s0_eternum::models::position::Direction", + "name": "s1_eternum::models::position::Direction", "variants": [ { "name": "East", @@ -2471,17 +2460,17 @@ }, { "type": "struct", - "name": "core::array::Span::", + "name": "core::array::Span::", "members": [ { "name": "snapshot", - "type": "@core::array::Array::" + "type": "@core::array::Array::" } ] }, { "type": "enum", - "name": "s0_eternum::models::buildings::BuildingCategory", + "name": "s1_eternum::models::resource::production::building::BuildingCategory", "variants": [ { "name": "None", @@ -2557,7 +2546,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::position::Coord", + "name": "s1_eternum::models::position::Coord", "members": [ { "name": "x", @@ -2571,7 +2560,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::buildings::contracts::IBuildingContract", + "name": "s1_eternum::systems::buildings::contracts::IBuildingContract", "items": [ { "type": "function", @@ -2583,11 +2572,11 @@ }, { "name": "directions", - "type": "core::array::Span::" + "type": "core::array::Span::" }, { "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" + "type": "s1_eternum::models::resource::production::building::BuildingCategory" }, { "name": "produce_resource_type", @@ -2607,7 +2596,7 @@ }, { "name": "building_coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" } ], "outputs": [], @@ -2623,7 +2612,7 @@ }, { "name": "building_coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" } ], "outputs": [], @@ -2639,7 +2628,7 @@ }, { "name": "building_coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" } ], "outputs": [], @@ -2746,7 +2735,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::buildings::contracts::building_systems::Event", + "name": "s1_eternum::systems::buildings::contracts::building_systems::Event", "kind": "enum", "variants": [ { @@ -2763,7 +2752,7 @@ } ], "init_calldata": [], - "tag": "s0_eternum-building_systems", + "tag": "s1_eternum-building_systems", "selector": "0x5f7b231f89cc7ec90785783e2484266d4b35e7f1488ec406ffea0cf92fac777", "systems": [ "create", @@ -2837,11 +2826,11 @@ { "type": "impl", "name": "WorldConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IWorldConfig" + "interface_name": "s1_eternum::systems::config::contracts::IWorldConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IWorldConfig", + "name": "s1_eternum::systems::config::contracts::IWorldConfig", "items": [ { "type": "function", @@ -2864,11 +2853,11 @@ { "type": "impl", "name": "SeasonConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ISeasonConfig" + "interface_name": "s1_eternum::systems::config::contracts::ISeasonConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ISeasonConfig", + "name": "s1_eternum::systems::config::contracts::ISeasonConfig", "items": [ { "type": "function", @@ -2911,11 +2900,11 @@ { "type": "impl", "name": "VRFConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IVRFConfig" + "interface_name": "s1_eternum::systems::config::contracts::IVRFConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IVRFConfig", + "name": "s1_eternum::systems::config::contracts::IVRFConfig", "items": [ { "type": "function", @@ -2934,7 +2923,7 @@ { "type": "impl", "name": "QuestConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IQuestConfig" + "interface_name": "s1_eternum::systems::config::contracts::IQuestConfig" }, { "type": "struct", @@ -2948,7 +2937,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IQuestConfig", + "name": "s1_eternum::systems::config::contracts::IQuestConfig", "items": [ { "type": "function", @@ -2983,11 +2972,11 @@ { "type": "impl", "name": "MapConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IMapConfig" + "interface_name": "s1_eternum::systems::config::contracts::IMapConfig" }, { "type": "struct", - "name": "s0_eternum::models::config::MapConfig", + "name": "s1_eternum::models::config::MapConfig", "members": [ { "name": "config_id", @@ -3005,7 +2994,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IMapConfig", + "name": "s1_eternum::systems::config::contracts::IMapConfig", "items": [ { "type": "function", @@ -3013,7 +3002,7 @@ "inputs": [ { "name": "map_config", - "type": "s0_eternum::models::config::MapConfig" + "type": "s1_eternum::models::config::MapConfig" } ], "outputs": [], @@ -3024,11 +3013,11 @@ { "type": "impl", "name": "CapacityConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ICapacityConfig" + "interface_name": "s1_eternum::systems::config::contracts::ICapacityConfig" }, { "type": "enum", - "name": "s0_eternum::models::config::CapacityConfigCategory", + "name": "s1_eternum::models::config::CapacityConfigCategory", "variants": [ { "name": "None", @@ -3054,11 +3043,11 @@ }, { "type": "struct", - "name": "s0_eternum::models::config::CapacityConfig", + "name": "s1_eternum::models::config::CapacityConfig", "members": [ { "name": "category", - "type": "s0_eternum::models::config::CapacityConfigCategory" + "type": "s1_eternum::models::config::CapacityConfigCategory" }, { "name": "weight_gram", @@ -3068,7 +3057,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ICapacityConfig", + "name": "s1_eternum::systems::config::contracts::ICapacityConfig", "items": [ { "type": "function", @@ -3076,7 +3065,7 @@ "inputs": [ { "name": "capacity_config", - "type": "s0_eternum::models::config::CapacityConfig" + "type": "s1_eternum::models::config::CapacityConfig" } ], "outputs": [], @@ -3087,11 +3076,11 @@ { "type": "impl", "name": "TravelStaminaCostConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITravelStaminaCostConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITravelStaminaCostConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITravelStaminaCostConfig", + "name": "s1_eternum::systems::config::contracts::ITravelStaminaCostConfig", "items": [ { "type": "function", @@ -3114,11 +3103,11 @@ { "type": "impl", "name": "WeightConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IWeightConfig" + "interface_name": "s1_eternum::systems::config::contracts::IWeightConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IWeightConfig", + "name": "s1_eternum::systems::config::contracts::IWeightConfig", "items": [ { "type": "function", @@ -3141,11 +3130,11 @@ { "type": "impl", "name": "BattleConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBattleConfig" + "interface_name": "s1_eternum::systems::config::contracts::IBattleConfig" }, { "type": "struct", - "name": "s0_eternum::models::config::BattleConfig", + "name": "s1_eternum::models::config::BattleConfig", "members": [ { "name": "config_id", @@ -3167,7 +3156,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBattleConfig", + "name": "s1_eternum::systems::config::contracts::IBattleConfig", "items": [ { "type": "function", @@ -3175,7 +3164,7 @@ "inputs": [ { "name": "battle_config", - "type": "s0_eternum::models::config::BattleConfig" + "type": "s1_eternum::models::config::BattleConfig" } ], "outputs": [], @@ -3186,11 +3175,11 @@ { "type": "impl", "name": "TickConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITickConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITickConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITickConfig", + "name": "s1_eternum::systems::config::contracts::ITickConfig", "items": [ { "type": "function", @@ -3213,11 +3202,11 @@ { "type": "impl", "name": "StaminaConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IStaminaConfig" + "interface_name": "s1_eternum::systems::config::contracts::IStaminaConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IStaminaConfig", + "name": "s1_eternum::systems::config::contracts::IStaminaConfig", "items": [ { "type": "function", @@ -3240,11 +3229,11 @@ { "type": "impl", "name": "TravelFoodCostConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITravelFoodCostConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITravelFoodCostConfig" }, { "type": "struct", - "name": "s0_eternum::models::config::TravelFoodCostConfig", + "name": "s1_eternum::models::config::TravelFoodCostConfig", "members": [ { "name": "config_id", @@ -3274,7 +3263,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITravelFoodCostConfig", + "name": "s1_eternum::systems::config::contracts::ITravelFoodCostConfig", "items": [ { "type": "function", @@ -3282,7 +3271,7 @@ "inputs": [ { "name": "travel_food_cost_config", - "type": "s0_eternum::models::config::TravelFoodCostConfig" + "type": "s1_eternum::models::config::TravelFoodCostConfig" } ], "outputs": [], @@ -3293,11 +3282,11 @@ { "type": "impl", "name": "StaminaRefillConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IStaminaRefillConfig" + "interface_name": "s1_eternum::systems::config::contracts::IStaminaRefillConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IStaminaRefillConfig", + "name": "s1_eternum::systems::config::contracts::IStaminaRefillConfig", "items": [ { "type": "function", @@ -3320,11 +3309,11 @@ { "type": "impl", "name": "LevelingConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ILevelingConfig" + "interface_name": "s1_eternum::systems::config::contracts::ILevelingConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ILevelingConfig", + "name": "s1_eternum::systems::config::contracts::ILevelingConfig", "items": [ { "type": "function", @@ -3383,11 +3372,11 @@ { "type": "impl", "name": "ProductionConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IProductionConfig" + "interface_name": "s1_eternum::systems::config::contracts::IProductionConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IProductionConfig", + "name": "s1_eternum::systems::config::contracts::IProductionConfig", "items": [ { "type": "function", @@ -3414,11 +3403,11 @@ { "type": "impl", "name": "TransportConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITransportConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITransportConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITransportConfig", + "name": "s1_eternum::systems::config::contracts::ITransportConfig", "items": [ { "type": "function", @@ -3441,7 +3430,7 @@ { "type": "impl", "name": "HyperstructureConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IHyperstructureConfig" + "interface_name": "s1_eternum::systems::config::contracts::IHyperstructureConfig" }, { "type": "struct", @@ -3455,7 +3444,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IHyperstructureConfig", + "name": "s1_eternum::systems::config::contracts::IHyperstructureConfig", "items": [ { "type": "function", @@ -3490,11 +3479,11 @@ { "type": "impl", "name": "BankConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBankConfig" + "interface_name": "s1_eternum::systems::config::contracts::IBankConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBankConfig", + "name": "s1_eternum::systems::config::contracts::IBankConfig", "items": [ { "type": "function", @@ -3521,11 +3510,11 @@ { "type": "impl", "name": "TroopConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITroopConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITroopConfig" }, { "type": "struct", - "name": "s0_eternum::models::config::TroopConfig", + "name": "s1_eternum::models::config::TroopConfig", "members": [ { "name": "config_id", @@ -3595,7 +3584,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITroopConfig", + "name": "s1_eternum::systems::config::contracts::ITroopConfig", "items": [ { "type": "function", @@ -3603,7 +3592,7 @@ "inputs": [ { "name": "troop_config", - "type": "s0_eternum::models::config::TroopConfig" + "type": "s1_eternum::models::config::TroopConfig" } ], "outputs": [], @@ -3614,11 +3603,11 @@ { "type": "impl", "name": "BuildingCategoryPopulationConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBuildingCategoryPopConfig" + "interface_name": "s1_eternum::systems::config::contracts::IBuildingCategoryPopConfig" }, { "type": "enum", - "name": "s0_eternum::models::buildings::BuildingCategory", + "name": "s1_eternum::models::resource::production::building::BuildingCategory", "variants": [ { "name": "None", @@ -3680,7 +3669,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBuildingCategoryPopConfig", + "name": "s1_eternum::systems::config::contracts::IBuildingCategoryPopConfig", "items": [ { "type": "function", @@ -3688,7 +3677,7 @@ "inputs": [ { "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" + "type": "s1_eternum::models::resource::production::building::BuildingCategory" }, { "name": "population", @@ -3707,11 +3696,11 @@ { "type": "impl", "name": "PopulationConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IPopulationConfig" + "interface_name": "s1_eternum::systems::config::contracts::IPopulationConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IPopulationConfig", + "name": "s1_eternum::systems::config::contracts::IPopulationConfig", "items": [ { "type": "function", @@ -3730,11 +3719,11 @@ { "type": "impl", "name": "BuildingConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBuildingConfig" + "interface_name": "s1_eternum::systems::config::contracts::IBuildingConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBuildingConfig", + "name": "s1_eternum::systems::config::contracts::IBuildingConfig", "items": [ { "type": "function", @@ -3754,7 +3743,7 @@ "inputs": [ { "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" + "type": "s1_eternum::models::resource::production::building::BuildingCategory" }, { "name": "building_resource_type", @@ -3773,11 +3762,11 @@ { "type": "impl", "name": "IMercenariesConfig", - "interface_name": "s0_eternum::systems::config::contracts::IMercenariesConfig" + "interface_name": "s1_eternum::systems::config::contracts::IMercenariesConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IMercenariesConfig", + "name": "s1_eternum::systems::config::contracts::IMercenariesConfig", "items": [ { "type": "function", @@ -3820,7 +3809,7 @@ { "type": "impl", "name": "IResourceBridgeConfig", - "interface_name": "s0_eternum::systems::config::contracts::IResourceBridgeConfig" + "interface_name": "s1_eternum::systems::config::contracts::IResourceBridgeConfig" }, { "type": "enum", @@ -3838,7 +3827,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeConfig", + "name": "s1_eternum::models::config::ResourceBridgeConfig", "members": [ { "name": "config_id", @@ -3856,7 +3845,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeFeeSplitConfig", + "name": "s1_eternum::models::config::ResourceBridgeFeeSplitConfig", "members": [ { "name": "config_id", @@ -3906,7 +3895,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeWhitelistConfig", + "name": "s1_eternum::models::config::ResourceBridgeWhitelistConfig", "members": [ { "name": "token", @@ -3920,7 +3909,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IResourceBridgeConfig", + "name": "s1_eternum::systems::config::contracts::IResourceBridgeConfig", "items": [ { "type": "function", @@ -3928,7 +3917,7 @@ "inputs": [ { "name": "resource_bridge_config", - "type": "s0_eternum::models::config::ResourceBridgeConfig" + "type": "s1_eternum::models::config::ResourceBridgeConfig" } ], "outputs": [], @@ -3940,7 +3929,7 @@ "inputs": [ { "name": "resource_bridge_fee_split_config", - "type": "s0_eternum::models::config::ResourceBridgeFeeSplitConfig" + "type": "s1_eternum::models::config::ResourceBridgeFeeSplitConfig" } ], "outputs": [], @@ -3952,7 +3941,7 @@ "inputs": [ { "name": "resource_bridge_whitelist_config", - "type": "s0_eternum::models::config::ResourceBridgeWhitelistConfig" + "type": "s1_eternum::models::config::ResourceBridgeWhitelistConfig" } ], "outputs": [], @@ -3963,11 +3952,11 @@ { "type": "impl", "name": "RealmLevelConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IRealmLevelConfig" + "interface_name": "s1_eternum::systems::config::contracts::IRealmLevelConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IRealmLevelConfig", + "name": "s1_eternum::systems::config::contracts::IRealmLevelConfig", "items": [ { "type": "function", @@ -4002,11 +3991,11 @@ { "type": "impl", "name": "ISettlementConfig", - "interface_name": "s0_eternum::systems::config::contracts::ISettlementConfig" + "interface_name": "s1_eternum::systems::config::contracts::ISettlementConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ISettlementConfig", + "name": "s1_eternum::systems::config::contracts::ISettlementConfig", "items": [ { "type": "function", @@ -4144,7 +4133,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::config::contracts::config_systems::Event", + "name": "s1_eternum::systems::config::contracts::config_systems::Event", "kind": "enum", "variants": [ { @@ -4166,7 +4155,7 @@ } ], "init_calldata": [], - "tag": "s0_eternum-config_systems", + "tag": "s1_eternum-config_systems", "selector": "0x4deb9db2b1005876b689d07a98673dacb6beea64ef9f564a19a38228d798204", "systems": [ "set_world_config", @@ -4261,11 +4250,11 @@ { "type": "impl", "name": "BankSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::bank::IBankSystems" + "interface_name": "s1_eternum::systems::dev::contracts::bank::IBankSystems" }, { "type": "struct", - "name": "s0_eternum::models::position::Coord", + "name": "s1_eternum::models::position::Coord", "members": [ { "name": "x", @@ -4279,7 +4268,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::dev::contracts::bank::IBankSystems", + "name": "s1_eternum::systems::dev::contracts::bank::IBankSystems", "items": [ { "type": "function", @@ -4291,7 +4280,7 @@ }, { "name": "coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" }, { "name": "owner_fee_num", @@ -4418,7 +4407,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::dev::contracts::bank::dev_bank_systems::Event", + "name": "s1_eternum::systems::dev::contracts::bank::dev_bank_systems::Event", "kind": "enum", "variants": [ { @@ -4435,12 +4424,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-dev_bank_systems", + "tag": "s1_eternum-dev_bank_systems", "selector": "0x436d7ef5fa5753c742f95b4fd3a7722399b309251363684474bfcba389fb607", - "systems": [ - "create_admin_bank", - "upgrade" - ] + "systems": ["create_admin_bank", "upgrade"] }, { "address": "0x729222a8e3757daec72d37dd434a3a44d3c0bddbec95cf087fb1b983b166b1a", @@ -4499,11 +4485,11 @@ { "type": "impl", "name": "DevRealmSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::realm::IDevRealmSystems" + "interface_name": "s1_eternum::systems::dev::contracts::realm::IDevRealmSystems" }, { "type": "interface", - "name": "s0_eternum::systems::dev::contracts::realm::IDevRealmSystems", + "name": "s1_eternum::systems::dev::contracts::realm::IDevRealmSystems", "items": [ { "type": "function", @@ -4622,7 +4608,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::dev::contracts::realm::dev_realm_systems::Event", + "name": "s1_eternum::systems::dev::contracts::realm::dev_realm_systems::Event", "kind": "enum", "variants": [ { @@ -4639,12 +4625,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-dev_realm_systems", + "tag": "s1_eternum-dev_realm_systems", "selector": "0x2a2f52f1a66a15e1e6bee3b5ea2d104bc146e82c1625c5421f6f45c44640824", - "systems": [ - "create", - "upgrade" - ] + "systems": ["create", "upgrade"] }, { "address": "0x17410a6c37040ef285251f763799939f69033c69c6d5f9ddb61ff4a139d3f58", @@ -4703,7 +4686,7 @@ { "type": "impl", "name": "ResourceSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::resource::IResourceSystems" + "interface_name": "s1_eternum::systems::dev::contracts::resource::IResourceSystems" }, { "type": "struct", @@ -4717,7 +4700,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::dev::contracts::resource::IResourceSystems", + "name": "s1_eternum::systems::dev::contracts::resource::IResourceSystems", "items": [ { "type": "function", @@ -4836,7 +4819,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::dev::contracts::resource::dev_resource_systems::Event", + "name": "s1_eternum::systems::dev::contracts::resource::dev_resource_systems::Event", "kind": "enum", "variants": [ { @@ -4853,12 +4836,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-dev_resource_systems", + "tag": "s1_eternum-dev_resource_systems", "selector": "0x6125379dcbb305b4f4b955271c3c4d472ece9852c3592d9d38a9fbc63fe9025", - "systems": [ - "mint", - "upgrade" - ] + "systems": ["mint", "upgrade"] }, { "address": "0x68a2cb801dc504acb121c7609d13f1f4bea6739dc80c31d789868ebda339067", @@ -5013,7 +4993,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::transport::contracts::donkey_systems::donkey_systems::Event", + "name": "s1_eternum::systems::transport::contracts::donkey_systems::donkey_systems::Event", "kind": "enum", "variants": [ { @@ -5030,11 +5010,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-donkey_systems", + "tag": "s1_eternum-donkey_systems", "selector": "0x76a0f4e4cdc01c969350b612c38d49d38689d5fde54e4afb3205a4629db83b6", - "systems": [ - "upgrade" - ] + "systems": ["upgrade"] }, { "address": "0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4", @@ -5093,7 +5071,7 @@ { "type": "impl", "name": "GuildSystemsImpl", - "interface_name": "s0_eternum::systems::guild::contracts::IGuildSystems" + "interface_name": "s1_eternum::systems::guild::contracts::IGuildSystems" }, { "type": "enum", @@ -5111,7 +5089,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::guild::contracts::IGuildSystems", + "name": "s1_eternum::systems::guild::contracts::IGuildSystems", "items": [ { "type": "function", @@ -5306,7 +5284,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::guild::contracts::guild_systems::Event", + "name": "s1_eternum::systems::guild::contracts::guild_systems::Event", "kind": "enum", "variants": [ { @@ -5323,7 +5301,7 @@ } ], "init_calldata": [], - "tag": "s0_eternum-guild_systems", + "tag": "s1_eternum-guild_systems", "selector": "0x6b2e6f3912853c9745b74266fe1d344bfe8ba99561982c5b4c3ac0e081f956b", "systems": [ "create_guild", @@ -5392,7 +5370,7 @@ { "type": "impl", "name": "HyperstructureSystemsImpl", - "interface_name": "s0_eternum::systems::hyperstructure::contracts::IHyperstructureSystems" + "interface_name": "s1_eternum::systems::hyperstructure::contracts::IHyperstructureSystems" }, { "type": "struct", @@ -5416,7 +5394,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::position::Coord", + "name": "s1_eternum::models::position::Coord", "members": [ { "name": "x", @@ -5450,7 +5428,7 @@ }, { "type": "enum", - "name": "s0_eternum::models::hyperstructure::Access", + "name": "s1_eternum::models::hyperstructure::Access", "variants": [ { "name": "Public", @@ -5468,7 +5446,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::hyperstructure::contracts::IHyperstructureSystems", + "name": "s1_eternum::systems::hyperstructure::contracts::IHyperstructureSystems", "items": [ { "type": "function", @@ -5504,7 +5482,7 @@ }, { "name": "coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" } ], "outputs": [ @@ -5576,7 +5554,7 @@ }, { "name": "access", - "type": "s0_eternum::models::hyperstructure::Access" + "type": "s1_eternum::models::hyperstructure::Access" } ], "outputs": [], @@ -5683,7 +5661,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::hyperstructure::contracts::hyperstructure_systems::Event", + "name": "s1_eternum::systems::hyperstructure::contracts::hyperstructure_systems::Event", "kind": "enum", "variants": [ { @@ -5700,7 +5678,7 @@ } ], "init_calldata": [], - "tag": "s0_eternum-hyperstructure_systems", + "tag": "s1_eternum-hyperstructure_systems", "selector": "0x44f825ffb89246cbeda203107846db0efad60bbedb24dc67dbd4a42593e6c82", "systems": [ "get_points", @@ -5769,7 +5747,7 @@ { "type": "impl", "name": "LiquiditySystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::liquidity::ILiquiditySystems" + "interface_name": "s1_eternum::systems::bank::contracts::liquidity::ILiquiditySystems" }, { "type": "enum", @@ -5801,7 +5779,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::bank::contracts::liquidity::ILiquiditySystems", + "name": "s1_eternum::systems::bank::contracts::liquidity::ILiquiditySystems", "items": [ { "type": "function", @@ -5960,7 +5938,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::bank::contracts::liquidity::liquidity_systems::Event", + "name": "s1_eternum::systems::bank::contracts::liquidity::liquidity_systems::Event", "kind": "enum", "variants": [ { @@ -5977,13 +5955,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-liquidity_systems", + "tag": "s1_eternum-liquidity_systems", "selector": "0x3cc30307c653c6c1ba1a6e99364f57c94360b8f73787d1518eaab02e9d0d6b", - "systems": [ - "add", - "remove", - "upgrade" - ] + "systems": ["add", "remove", "upgrade"] }, { "address": "0x7f274766f8f7fb0503d3d72b15a4d853f6189402a2ad1c9780fc7a1b017f678", @@ -6042,11 +6016,11 @@ { "type": "impl", "name": "MapGenerationSystemsImpl", - "interface_name": "s0_eternum::systems::map::map_generation::IMapGenerationSystems" + "interface_name": "s1_eternum::systems::map::map_generation::IMapGenerationSystems" }, { "type": "struct", - "name": "s0_eternum::models::owner::EntityOwner", + "name": "s1_eternum::models::owner::EntityOwner", "members": [ { "name": "entity_id", @@ -6060,7 +6034,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::position::Coord", + "name": "s1_eternum::models::position::Coord", "members": [ { "name": "x", @@ -6102,7 +6076,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::map::map_generation::IMapGenerationSystems", + "name": "s1_eternum::systems::map::map_generation::IMapGenerationSystems", "items": [ { "type": "function", @@ -6110,11 +6084,11 @@ "inputs": [ { "name": "unit_entity_owner", - "type": "s0_eternum::models::owner::EntityOwner" + "type": "s1_eternum::models::owner::EntityOwner" }, { "name": "coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" } ], "outputs": [ @@ -6245,7 +6219,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::map::map_generation::map_generation_systems::Event", + "name": "s1_eternum::systems::map::map_generation::map_generation_systems::Event", "kind": "enum", "variants": [ { @@ -6262,7 +6236,7 @@ } ], "init_calldata": [], - "tag": "s0_eternum-map_generation_systems", + "tag": "s1_eternum-map_generation_systems", "selector": "0x29daec1bf7e70863ae1f9a4b455a1e12030394562eb21b214c9037f9fb71424", "systems": [ "discover_shards_mine", @@ -6327,11 +6301,11 @@ { "type": "impl", "name": "MapSystemsImpl", - "interface_name": "s0_eternum::systems::map::contracts::IMapSystems" + "interface_name": "s1_eternum::systems::map::contracts::IMapSystems" }, { "type": "enum", - "name": "s0_eternum::models::position::Direction", + "name": "s1_eternum::models::position::Direction", "variants": [ { "name": "East", @@ -6361,7 +6335,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::map::contracts::IMapSystems", + "name": "s1_eternum::systems::map::contracts::IMapSystems", "items": [ { "type": "function", @@ -6373,7 +6347,7 @@ }, { "name": "direction", - "type": "s0_eternum::models::position::Direction" + "type": "s1_eternum::models::position::Direction" } ], "outputs": [], @@ -6480,7 +6454,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::map::contracts::map_systems::Event", + "name": "s1_eternum::systems::map::contracts::map_systems::Event", "kind": "enum", "variants": [ { @@ -6497,12 +6471,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-map_systems", + "tag": "s1_eternum-map_systems", "selector": "0x27a92961f46c5ac43e19fa2b7d50d169c2776dbb98478a96a8a3050647431cd", - "systems": [ - "explore", - "upgrade" - ] + "systems": ["explore", "upgrade"] }, { "address": "0x7e3bae0e253a0131063b63ee4d7b27b50329c617ae88b82d529a70f1a11c63", @@ -6561,11 +6532,11 @@ { "type": "impl", "name": "NameSystemsImpl", - "interface_name": "s0_eternum::systems::name::contracts::INameSystems" + "interface_name": "s1_eternum::systems::name::contracts::INameSystems" }, { "type": "interface", - "name": "s0_eternum::systems::name::contracts::INameSystems", + "name": "s1_eternum::systems::name::contracts::INameSystems", "items": [ { "type": "function", @@ -6696,7 +6667,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::name::contracts::name_systems::Event", + "name": "s1_eternum::systems::name::contracts::name_systems::Event", "kind": "enum", "variants": [ { @@ -6713,13 +6684,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-name_systems", + "tag": "s1_eternum-name_systems", "selector": "0x57061191efce4db08b753f5d6119a16595a3ac2b91db70e971630c34ff5e16e", - "systems": [ - "set_address_name", - "set_entity_name", - "upgrade" - ] + "systems": ["set_address_name", "set_entity_name", "upgrade"] }, { "address": "0x30516789ee1b822d7b448f01be67cec7bf383d3ac4b2380a09f85ad0765f846", @@ -6778,11 +6745,11 @@ { "type": "impl", "name": "OwnershipSystemsImpl", - "interface_name": "s0_eternum::systems::ownership::contracts::IOwnershipSystems" + "interface_name": "s1_eternum::systems::ownership::contracts::IOwnershipSystems" }, { "type": "interface", - "name": "s0_eternum::systems::ownership::contracts::IOwnershipSystems", + "name": "s1_eternum::systems::ownership::contracts::IOwnershipSystems", "items": [ { "type": "function", @@ -6901,7 +6868,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::ownership::contracts::ownership_systems::Event", + "name": "s1_eternum::systems::ownership::contracts::ownership_systems::Event", "kind": "enum", "variants": [ { @@ -6918,12 +6885,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-ownership_systems", + "tag": "s1_eternum-ownership_systems", "selector": "0x419b9f1d9d3cbe8dd78cb553b0e1895fa2d3cfb9e7e578866056fca72f9108b", - "systems": [ - "transfer_ownership", - "upgrade" - ] + "systems": ["transfer_ownership", "upgrade"] }, { "address": "0x1b480f620ea35431ab43dba634795b14f547ef3e77370db6f0a31f2fdc21d86", @@ -6982,11 +6946,11 @@ { "type": "impl", "name": "RealmSystemsImpl", - "interface_name": "s0_eternum::systems::realm::contracts::IRealmSystems" + "interface_name": "s1_eternum::systems::realm::contracts::IRealmSystems" }, { "type": "interface", - "name": "s0_eternum::systems::realm::contracts::IRealmSystems", + "name": "s1_eternum::systems::realm::contracts::IRealmSystems", "items": [ { "type": "function", @@ -7141,7 +7105,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::realm::contracts::realm_systems::Event", + "name": "s1_eternum::systems::realm::contracts::realm_systems::Event", "kind": "enum", "variants": [ { @@ -7158,14 +7122,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-realm_systems", + "tag": "s1_eternum-realm_systems", "selector": "0x6ae6691704d5df34326545ad7d15afebdd83066596af8c0dcb5d216d1ede909", - "systems": [ - "create", - "upgrade_level", - "quest_claim", - "upgrade" - ] + "systems": ["create", "upgrade_level", "quest_claim", "upgrade"] }, { "address": "0x691a60b709ca5c1c5ff86824831f84deb26f0f5d07d70c0f807eab48110d2f6", @@ -7224,7 +7183,7 @@ { "type": "impl", "name": "ResourceBridgeImpl", - "interface_name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems" + "interface_name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems" }, { "type": "struct", @@ -7242,7 +7201,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems", + "name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems", "items": [ { "type": "function", @@ -7449,7 +7408,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::resource_bridge_systems::Event", + "name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::resource_bridge_systems::Event", "kind": "enum", "variants": [ { @@ -7466,7 +7425,7 @@ } ], "init_calldata": [], - "tag": "s0_eternum-resource_bridge_systems", + "tag": "s1_eternum-resource_bridge_systems", "selector": "0x5916a4c5e4fb7f1105244015fcc1e9950efab35919af199a4a2c1aef2c3aa61", "systems": [ "deposit_initial", @@ -7533,7 +7492,7 @@ { "type": "impl", "name": "ResourceSystemsImpl", - "interface_name": "s0_eternum::systems::resources::contracts::resource_systems::IResourceSystems" + "interface_name": "s1_eternum::systems::resources::contracts::resource_systems::IResourceSystems" }, { "type": "struct", @@ -7547,7 +7506,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::resources::contracts::resource_systems::IResourceSystems", + "name": "s1_eternum::systems::resources::contracts::resource_systems::IResourceSystems", "items": [ { "type": "function", @@ -7710,7 +7669,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::resources::contracts::resource_systems::resource_systems::Event", + "name": "s1_eternum::systems::resources::contracts::resource_systems::resource_systems::Event", "kind": "enum", "variants": [ { @@ -7727,14 +7686,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-resource_systems", + "tag": "s1_eternum-resource_systems", "selector": "0x31e8be63af9c072934c219dd6cbd2fea3b49fce2311adceb8a8a8870a760b62", - "systems": [ - "approve", - "send", - "pickup", - "upgrade" - ] + "systems": ["approve", "send", "pickup", "upgrade"] }, { "address": "0x4b5e65a9617c7ba3c7ea64324ff4338a400adb1a3cfe903b3f8b647cbb59fb7", @@ -7793,7 +7747,7 @@ { "type": "impl", "name": "SeasonSystemsImpl", - "interface_name": "s0_eternum::systems::season::contracts::ISeasonSystems" + "interface_name": "s1_eternum::systems::season::contracts::ISeasonSystems" }, { "type": "struct", @@ -7817,7 +7771,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::season::contracts::ISeasonSystems", + "name": "s1_eternum::systems::season::contracts::ISeasonSystems", "items": [ { "type": "function", @@ -7948,7 +7902,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::season::contracts::season_systems::Event", + "name": "s1_eternum::systems::season::contracts::season_systems::Event", "kind": "enum", "variants": [ { @@ -7965,7 +7919,7 @@ } ], "init_calldata": [], - "tag": "s0_eternum-season_systems", + "tag": "s1_eternum-season_systems", "selector": "0x384e61da11b2e476dc992c9556f8d1d42814136a36400b5cb34175de183ac9", "systems": [ "register_to_leaderboard", @@ -8030,11 +7984,11 @@ { "type": "impl", "name": "SwapSystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::swap::ISwapSystems" + "interface_name": "s1_eternum::systems::bank::contracts::swap::ISwapSystems" }, { "type": "interface", - "name": "s0_eternum::systems::bank::contracts::swap::ISwapSystems", + "name": "s1_eternum::systems::bank::contracts::swap::ISwapSystems", "items": [ { "type": "function", @@ -8193,7 +8147,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::bank::contracts::swap::swap_systems::Event", + "name": "s1_eternum::systems::bank::contracts::swap::swap_systems::Event", "kind": "enum", "variants": [ { @@ -8210,13 +8164,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-swap_systems", + "tag": "s1_eternum-swap_systems", "selector": "0x14a06d11e0f26724e8e61c141842f95425009d07620b3c369f9f517d568e591", - "systems": [ - "buy", - "sell", - "upgrade" - ] + "systems": ["buy", "sell", "upgrade"] }, { "address": "0x7e2b1334398fafbe640f34bacae99b649d633417960ee397b6a8fb117fec819", @@ -8275,7 +8225,7 @@ { "type": "impl", "name": "TradeSystemsImpl", - "interface_name": "s0_eternum::systems::trade::contracts::trade_systems::ITradeSystems" + "interface_name": "s1_eternum::systems::trade::contracts::trade_systems::ITradeSystems" }, { "type": "struct", @@ -8289,7 +8239,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::trade::contracts::trade_systems::ITradeSystems", + "name": "s1_eternum::systems::trade::contracts::trade_systems::ITradeSystems", "items": [ { "type": "function", @@ -8492,7 +8442,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::trade::contracts::trade_systems::trade_systems::Event", + "name": "s1_eternum::systems::trade::contracts::trade_systems::trade_systems::Event", "kind": "enum", "variants": [ { @@ -8509,7 +8459,7 @@ } ], "init_calldata": [], - "tag": "s0_eternum-trade_systems", + "tag": "s1_eternum-trade_systems", "selector": "0x5272cd9b34062cb8bd8ec92ecca87f92a884d4bd2f5bf6c563265a018ac22a5", "systems": [ "create_order", @@ -8576,11 +8526,11 @@ { "type": "impl", "name": "TravelSystemsImpl", - "interface_name": "s0_eternum::systems::transport::contracts::travel_systems::ITravelSystems" + "interface_name": "s1_eternum::systems::transport::contracts::travel_systems::ITravelSystems" }, { "type": "enum", - "name": "s0_eternum::models::position::Direction", + "name": "s1_eternum::models::position::Direction", "variants": [ { "name": "East", @@ -8610,17 +8560,17 @@ }, { "type": "struct", - "name": "core::array::Span::", + "name": "core::array::Span::", "members": [ { "name": "snapshot", - "type": "@core::array::Array::" + "type": "@core::array::Array::" } ] }, { "type": "interface", - "name": "s0_eternum::systems::transport::contracts::travel_systems::ITravelSystems", + "name": "s1_eternum::systems::transport::contracts::travel_systems::ITravelSystems", "items": [ { "type": "function", @@ -8632,7 +8582,7 @@ }, { "name": "directions", - "type": "core::array::Span::" + "type": "core::array::Span::" } ], "outputs": [], @@ -8739,7 +8689,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::transport::contracts::travel_systems::travel_systems::Event", + "name": "s1_eternum::systems::transport::contracts::travel_systems::travel_systems::Event", "kind": "enum", "variants": [ { @@ -8756,12 +8706,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-travel_systems", + "tag": "s1_eternum-travel_systems", "selector": "0x4928d4294639e944ff93869e10cee7533ffd910f5791fc486c04b91f2fcf8fe", - "systems": [ - "travel_hex", - "upgrade" - ] + "systems": ["travel_hex", "upgrade"] }, { "address": "0x26be0ed574aa9ee6f73b53b12f0a199ddbf4ac697470316cdb3d9d1f5680cab", @@ -8820,7 +8767,7 @@ { "type": "impl", "name": "TroopContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::troop_systems::ITroopContract" + "interface_name": "s1_eternum::systems::combat::contracts::troop_systems::ITroopContract" }, { "type": "enum", @@ -8838,7 +8785,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::combat::Troops", + "name": "s1_eternum::models::combat::Troops", "members": [ { "name": "knight_count", @@ -8856,7 +8803,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::combat::contracts::troop_systems::ITroopContract", + "name": "s1_eternum::systems::combat::contracts::troop_systems::ITroopContract", "items": [ { "type": "function", @@ -8904,7 +8851,7 @@ }, { "name": "troops", - "type": "s0_eternum::models::combat::Troops" + "type": "s1_eternum::models::combat::Troops" } ], "outputs": [], @@ -8924,7 +8871,7 @@ }, { "name": "troops", - "type": "s0_eternum::models::combat::Troops" + "type": "s1_eternum::models::combat::Troops" } ], "outputs": [], @@ -9031,7 +8978,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::combat::contracts::troop_systems::troop_systems::Event", + "name": "s1_eternum::systems::combat::contracts::troop_systems::troop_systems::Event", "kind": "enum", "variants": [ { @@ -9048,7 +8995,7 @@ } ], "init_calldata": [], - "tag": "s0_eternum-troop_systems", + "tag": "s1_eternum-troop_systems", "selector": "0x5f97ab78613558d9346649708e6829b417ad55826ba2e4f7b0fc79ad276180a", "systems": [ "army_create", @@ -9063,541 +9010,541 @@ { "members": [], "class_hash": "0x25603f4597c7b9476318af1bf26c9e0f9f7a3f24b8aa4fd4aa095289c74e2bb", - "tag": "s0_eternum-AddressName", + "tag": "s1_eternum-AddressName", "selector": "0x2a33e6e963e8f80fb8f00a69a8b55ec9834adda81bbb305024500c4b4356e24" }, { "members": [], "class_hash": "0x7c8598486eb6f5bc890ccac17cc5c4f7400998f5c50247d90e5df0f643f9f2b", - "tag": "s0_eternum-Army", + "tag": "s1_eternum-Army", "selector": "0x34cab5fd09c4f5f5b8624e52c883afec2462c2fc2e7227121f70de648e68dcc" }, { "members": [], "class_hash": "0x7833dddc0296ff97ec9f1dc202d471ed80888935579f156737927c9207e0417", - "tag": "s0_eternum-ArrivalTime", + "tag": "s1_eternum-ArrivalTime", "selector": "0xd334451a97858d6173423408cd0c4da2a3878f6ec4f3909e134193d07682c4" }, { "members": [], "class_hash": "0x189b3d6d05402af89cfefc45b6c6ce579ab81ee7da7cce1fdf08ecb881de732", - "tag": "s0_eternum-Bank", + "tag": "s1_eternum-Bank", "selector": "0x6f71dd64e5e14a5ab47d15cfabd84490061490c8c203993790f30cafd5d117e" }, { "members": [], "class_hash": "0xa7a02d408072e5f97ebf3f0d69acb4fb176223379091948a452c10c314a0d2", - "tag": "s0_eternum-BankConfig", + "tag": "s1_eternum-BankConfig", "selector": "0x2a507ce5bff2ddf50eced9c753dc0a160ba64fc6efe3be4cb26ce51210e2b81" }, { "members": [], "class_hash": "0x809fe36ec53a3cfa77f64648430007c5bc0bb148c31652b3956bb318a8f7ae", - "tag": "s0_eternum-Battle", + "tag": "s1_eternum-Battle", "selector": "0x28394f9c3c874b586a25bf96d137256eab0a702fc3f66aa83464a5a0e062172" }, { "members": [], "class_hash": "0x715169dd601b742605451b231c47de8970be609fb85f48115b01333766bedf4", - "tag": "s0_eternum-BattleConfig", + "tag": "s1_eternum-BattleConfig", "selector": "0x224e4f9b37ed3d9cc06297ea8507e62538b864a92232f0ec53a4c7a4cf6ccfd" }, { "members": [], "class_hash": "0x551b3f9ea6504a59d70f1fc420d6e20797bdfe822c7c5e8d5d0d6bff8ad679a", - "tag": "s0_eternum-Building", + "tag": "s1_eternum-Building", "selector": "0x74f3912ea921e93e11f5c8267c29d94f367b3c52840c0ec93292ff5d2374d6c" }, { "members": [], "class_hash": "0x3d1ed9f1e9280e3f046561cfb77244866cc919517e62762cef17779d91a9d4e", - "tag": "s0_eternum-BuildingCategoryPopConfig", + "tag": "s1_eternum-BuildingCategoryPopConfig", "selector": "0x7713338d5bb53067dd8a10c158385c2744d0dfba8260ddb0658394359b6b5e2" }, { "members": [], "class_hash": "0x6619a6a57a8361ac09e034d95d26df7608a1314a89386bfbc9fbbc385dfb090", - "tag": "s0_eternum-BuildingConfig", + "tag": "s1_eternum-BuildingConfig", "selector": "0x1f8462fbfd271244b0144b93124ee213e9ef6edec50e6fc4b0ea41d2b756d87" }, { "members": [], "class_hash": "0x2fdd5ae262983f3645779ab454a188dd555dcbc3dc3ceb438bf1ee7958b6c5f", - "tag": "s0_eternum-BuildingGeneralConfig", + "tag": "s1_eternum-BuildingGeneralConfig", "selector": "0x1fc4af90bddbc3edb2446f5839d3274131bd7023a2bde3aeddbe29769c0be84" }, { "members": [], "class_hash": "0x1d3ddebfe5bbb35348ac03a42b77be34ff050b5f60d5370ff5a6415d61f8a11", - "tag": "s0_eternum-BuildingQuantityv2", + "tag": "s1_eternum-BuildingQuantityv2", "selector": "0xe74ab1d939c8b4763331ecee9187cc91e4a363228e596e0a655667aeedb117" }, { "members": [], "class_hash": "0x6cafd04dceeb148a4f3cdb0fc76083c74677f11a046f3be2a50cc22279a8074", - "tag": "s0_eternum-CapacityCategory", + "tag": "s1_eternum-CapacityCategory", "selector": "0x166cc667881fc0d333660d7668601cf536082cc577b720cea8be0f24549473c" }, { "members": [], "class_hash": "0x3a19b4d090591b5be5a300e1fd02e3b0d52bc20b30b47d7a0255a48a678e29d", - "tag": "s0_eternum-CapacityConfig", + "tag": "s1_eternum-CapacityConfig", "selector": "0x4bb69cf85cfa897830312e40bb75ab1c0f58c01cbbadf4e835ee5fa37d1bb2e" }, { "members": [], "class_hash": "0x105a94789b0a8342a90b8878fa4f06553af01b9416d86a0a80d65fc169d3092", - "tag": "s0_eternum-Contribution", + "tag": "s1_eternum-Contribution", "selector": "0x48fb552387fed5f3f7bcb55468f85ac92efeb06817e5f5e329358b69b4a7d6" }, { "members": [], "class_hash": "0x56087bbaf3245d64e62c0afd732ffdbe7584493d1a39316a09082182d809da1", - "tag": "s0_eternum-DetachedResource", + "tag": "s1_eternum-DetachedResource", "selector": "0x34cc163b0f7a78e671da441bbbfe6dd3632f7f62cbee8e1734c6dec2971478c" }, { "members": [], "class_hash": "0x71b9c7843ab6be7de6ade56f21be309f9bf08a6e4fc33318dd9f43307e1008", - "tag": "s0_eternum-EntityName", + "tag": "s1_eternum-EntityName", "selector": "0x4ea8f072e356080ed18f016cbb7f0c43807c733d037c3ad9e52da5fd98e11f0" }, { "members": [], "class_hash": "0x2d0dd3c37fa25edc072c4fd231c6ec51dbed2ea0304a334a8b47568d9a1ec4f", - "tag": "s0_eternum-EntityOwner", + "tag": "s1_eternum-EntityOwner", "selector": "0x19fbc5ce760d680c185bbefb04a4b1870a4f23bc8fda0fbf77b4a241b7ce04a" }, { "members": [], "class_hash": "0x76ab75f20ec824383b34afe1315ec9e59fe9f23599086b354f43e3c08aa8e24", - "tag": "s0_eternum-Epoch", + "tag": "s1_eternum-Epoch", "selector": "0x62827d2605e74e8c4ea2f40a6407477a0eae355a2e6485261acbc95e3219fc3" }, { "members": [], "class_hash": "0x22001c3a27555a192b0a134e76a443707ca89af8fb7a01265473cd609b04a41", - "tag": "s0_eternum-Guild", + "tag": "s1_eternum-Guild", "selector": "0x49ac80c25fa65d45250f4dd7a253dd79561a9460e108c173aa413ef246c3e6b" }, { "members": [], "class_hash": "0x2ba8f917f23ee021008384816f0ad038a1cae8b004c53e18f6bac455ec9efa6", - "tag": "s0_eternum-GuildMember", + "tag": "s1_eternum-GuildMember", "selector": "0x517c08e6a498a5a56742edce432fd533bc4cb16589acf1bb025999a5cec0e66" }, { "members": [], "class_hash": "0x2f72606313ed3fca8c1d6ec0257466e6b9301cc9fba8ec67d114f7fab0dc23a", - "tag": "s0_eternum-GuildWhitelist", + "tag": "s1_eternum-GuildWhitelist", "selector": "0x5da3d8f80bab03feaa3c5158e1e4584b6b5e213a0feb4d4125798f73b4a528a" }, { "members": [], "class_hash": "0x111b1a81032822367c6d57b2fe7b2baaaf8304ec0f8075bda6dd83b0827f35d", - "tag": "s0_eternum-Health", + "tag": "s1_eternum-Health", "selector": "0x1aa97583b6abc29f779ed14e03d820d29e64168389ca94367abf35ea7f103a1" }, { "members": [], "class_hash": "0x6277bc0b34ccf11b00b086ca2c7e83a5ac144532b6b4f843caddfcf01c02327", - "tag": "s0_eternum-Hyperstructure", + "tag": "s1_eternum-Hyperstructure", "selector": "0x5a47c8b59e367cc045b847bd4f63955ceeeffbc43055ecd11d2d77796bddd73" }, { "members": [], "class_hash": "0x1f90aa30d9d5d978f71b991daa57bc5ce51070034c3c3749c3378eae720e1b5", - "tag": "s0_eternum-HyperstructureConfig", + "tag": "s1_eternum-HyperstructureConfig", "selector": "0x538fcd59a65ece056337c3f4563a41b0922e14c0892d9e0f2e9980716487be3" }, { "members": [], "class_hash": "0x4f85a565011171be648bda2095b1448773804f29d967448aa2fa81554cbfab1", - "tag": "s0_eternum-HyperstructureResourceConfig", + "tag": "s1_eternum-HyperstructureResourceConfig", "selector": "0x3841ccb4835caa2dd2433ed893d593a63d74afea4ec67eccb905df41d6b95b1" }, { "members": [], "class_hash": "0x7dfe538eaecf8e98fc578ef98c8766c050d1e6fd853f2a663a42d99813b4e23", - "tag": "s0_eternum-Leaderboard", + "tag": "s1_eternum-Leaderboard", "selector": "0x2feedf0fc0a7bb2c53a51fee44e1c8a2cbf182ed000b57865c108eaaa463bcf" }, { "members": [], "class_hash": "0x792ff7a8ffffbaff0859d84e2d87ee5a71996bfeb349248cbf63d7dd1b8a1f4", - "tag": "s0_eternum-LeaderboardEntry", + "tag": "s1_eternum-LeaderboardEntry", "selector": "0x446f6cb1881e354935007b6a51033216f2f66cab52573d1bb2a03d7bc7fb4fb" }, { "members": [], "class_hash": "0x3d74e8cac527985922387788dbf8d902a90ae15d21468719ba2d5f7b74cc881", - "tag": "s0_eternum-LeaderboardRegisterContribution", + "tag": "s1_eternum-LeaderboardRegisterContribution", "selector": "0x751fee2d8620c3b1f24b201044ac4414a808e5cc57cbf99b305a66ac3dc6334" }, { "members": [], "class_hash": "0x671185f10d3a8d6917e10b6c8686fbc556755e8eb7fe8b871e9660db26a16db", - "tag": "s0_eternum-LeaderboardRegisterShare", + "tag": "s1_eternum-LeaderboardRegisterShare", "selector": "0x2781c647b95b04aba3e293318e83e5ab139e95a13630336badd83197225f679" }, { "members": [], "class_hash": "0x6a6b0e38324523a4d7c9406ad059adc0244353ae86fdb28589419643152d42a", - "tag": "s0_eternum-LeaderboardRegistered", + "tag": "s1_eternum-LeaderboardRegistered", "selector": "0x3d2cbb167883a8ff584dad6276fc1df0b7757d5e2282f1658d746a8c936116b" }, { "members": [], "class_hash": "0x19baf80e6ba59bfb8c94643f2ed7c15e902d00d313ac92c90f4071e3ddf0129", - "tag": "s0_eternum-LeaderboardRewardClaimed", + "tag": "s1_eternum-LeaderboardRewardClaimed", "selector": "0xc7744e31a4ae5a2f24008b6147fac5c735bfa7fc4bbff8224f2833f73a8e93" }, { "members": [], "class_hash": "0x1a812bd54f7a074e8a1289ab1d7e41e659ef15c607d934abfeda35d987a834", - "tag": "s0_eternum-LevelingConfig", + "tag": "s1_eternum-LevelingConfig", "selector": "0x57307c2d18e8c1e060fcb4cc9d63ce0abfa90f9e9bca63f00fb08a8b6a6584d" }, { "members": [], "class_hash": "0x465e09976306288f9d5ba76464636aa3570b50d3dd537e62df642524007eab8", - "tag": "s0_eternum-Liquidity", + "tag": "s1_eternum-Liquidity", "selector": "0x88855562f77d4da524f33db24ad881dd1c3b4d809fa37d2508b5ab1fd4310e" }, { "members": [], "class_hash": "0x3acaf90122ee7bec0d7e0c29b9d227fb3f7576661157acf5817d2875acdeb24", - "tag": "s0_eternum-MapConfig", + "tag": "s1_eternum-MapConfig", "selector": "0x1c44934bf878736b0ffd224a4d0065ca92072daa6e846de657f58b7b5a4374a" }, { "members": [], "class_hash": "0x1c99e7ffe68d55ac3fc421eb979fd5d7d197d6dc99cc8893fcaae5abbaedfa9", - "tag": "s0_eternum-Market", + "tag": "s1_eternum-Market", "selector": "0x18457324069342b71d49b485b3b2ced814726c5a978581a172dd806de3d9bac" }, { "members": [], "class_hash": "0x16eef0d1d4096a35efebc74a9c8254cb8c1af27a8c7d22fda96edc796b4cdac", - "tag": "s0_eternum-MercenariesConfig", + "tag": "s1_eternum-MercenariesConfig", "selector": "0x7983d4a611b82abb59e4320d8032fcb84f3c372c60c83a01d680f14f64bd3c6" }, { "members": [], "class_hash": "0x247307d7e5299e6b3ce6377a08a9d41497229eaa6a9e591858d0a088c61af4a", - "tag": "s0_eternum-Message", + "tag": "s1_eternum-Message", "selector": "0x3262fb0b2f51323ea7116e1ef4735a6e1be97bc86bbe19fcba298d0edfa0c5c" }, { "members": [], "class_hash": "0x355984d124ab086115f9b6855c05a7c6ab416e01a45e57a08e13b28ec7db02d", - "tag": "s0_eternum-Movable", + "tag": "s1_eternum-Movable", "selector": "0x354103241a35f6b87bb0e9c4ac055975dd5324a93ab74b5b30edcce0067c59" }, { "members": [], "class_hash": "0x51b6a84422ddfda104af1cb45bbce0609edd265d2b909237ec37dc7aa5a2afd", - "tag": "s0_eternum-Orders", + "tag": "s1_eternum-Orders", "selector": "0x2b8ed5e03d3934c534f66fc8194cd3cc112003028691019c9d1dd5ceacf6bc" }, { "members": [], "class_hash": "0x787159e5bbd67c0eba40db3b4984a9b1ace232ce3991bf96abb6a964b57d2", - "tag": "s0_eternum-OwnedResourcesTracker", + "tag": "s1_eternum-OwnedResourcesTracker", "selector": "0x50b64757716328c2639f72f641130df11177b01695167ec2ffb63f4c5ac8c93" }, { "members": [], "class_hash": "0x6943ea1c8aee5d7749a85d2e333a8d97dce8d1d661e5bba0d93c850ab33d7da", - "tag": "s0_eternum-Owner", + "tag": "s1_eternum-Owner", "selector": "0x2ac70068901471291f27e386276bb51ce50c89e144a6e8e11d4f91b78236241" }, { "members": [], "class_hash": "0x77effa7d6e9cdaf053e31ddb864c29cc587e756673d8a2bdc8b919ac8eb0373", - "tag": "s0_eternum-Population", + "tag": "s1_eternum-Population", "selector": "0x999f9ad8790ee0ec873b5e149fa1ef1054039e90bba49ac4975ba2cdb54429" }, { "members": [], "class_hash": "0x58397e297c6e9d5fb96965dd7241321667199c25918efeb27bbb830ab0948c3", - "tag": "s0_eternum-PopulationConfig", + "tag": "s1_eternum-PopulationConfig", "selector": "0x5cd485b0e678c36a4a14b0fcf5880e58e206c5b8199c9640d88f5ea86efe9b5" }, { "members": [], "class_hash": "0x4953b4f720c6479aae4d8b84b2d749ad5ab816f03e6ce500d5bcf609c59e77c", - "tag": "s0_eternum-Position", + "tag": "s1_eternum-Position", "selector": "0x77c1a504cea841ea9ee0819e994d66d453d0652ecb7a51e80682ff8abd57f65" }, { "members": [], "class_hash": "0x681143e22335e72474d3921e0c0de14be253faa5b5c5c46a4adb8ecd3e2f6c9", - "tag": "s0_eternum-Production", + "tag": "s1_eternum-Production", "selector": "0x12c4d44e2b854c8481b4da2b2dcc648b3a9d4e9006b4143acfedbd6aa8641db" }, { "members": [], "class_hash": "0x2ae1387960b8602eab9567676f73317344ae7ded34e9fc0c012966e8d3cf2ce", - "tag": "s0_eternum-ProductionConfig", + "tag": "s1_eternum-ProductionConfig", "selector": "0x520a8a0dec76799ca6b1198154f32247aa76da785d2cc7a56dabe401f80416c" }, { "members": [], "class_hash": "0x429e0c7c8e81306023b8d502d4e7737646720b8769a13581d54e99b76a6052e", - "tag": "s0_eternum-ProductionDeadline", + "tag": "s1_eternum-ProductionDeadline", "selector": "0x18bea71025a244df48319cca495154feeec10353885e4e9b73aa18239584fee" }, { "members": [], "class_hash": "0x7c98db7992d639ca0be54bd97dd342e80e4b5a8f9fab93fa3d37a5c027eb8ef", - "tag": "s0_eternum-ProductionInput", + "tag": "s1_eternum-ProductionInput", "selector": "0x3df010b82ccfbdd80db14af6e47dc79038aec508f795b9d0f9968edba040c07" }, { "members": [], "class_hash": "0x297e32982827c7ca0e9950f7ab0593a7334289d004cff93809522a45774d858", - "tag": "s0_eternum-ProductionOutput", + "tag": "s1_eternum-ProductionOutput", "selector": "0x5ad2bb76ff0fcf39f0a6399770ae2f78b6999f03e5c9b9aa7b2216477772ffe" }, { "members": [], "class_hash": "0x3736456c345cc770abd64231513bd58269d6fb382e48c411be7bb5c66a54322", - "tag": "s0_eternum-Progress", + "tag": "s1_eternum-Progress", "selector": "0x2b63dd696d82b19fa1421e9e47be1c573b761c39f6b58c0d14ed0c562f26b3f" }, { "members": [], "class_hash": "0x375116ae74219639eab6fd408cdd263e4c6c93fb0b544d3ba3ef8e876ef561", - "tag": "s0_eternum-Protectee", + "tag": "s1_eternum-Protectee", "selector": "0x2ac4b9ed0d69ae66f6feff3272811293fa6e8196bd602183271d07ae7a5d3bb" }, { "members": [], "class_hash": "0x3eff2b8014606f2522063b0803a9f0456c0be34f4ec6b7f31d2b0948a4aa0c1", - "tag": "s0_eternum-Protector", + "tag": "s1_eternum-Protector", "selector": "0x72426f978a43c915d92511ce3efb7fdd6c962f4344e37d38ed00d0d95eb37b5" }, { "members": [], "class_hash": "0x7577aac22db1cb4db007701d6292ed0edddb54a27a947f2fdbce4615cb0c178", - "tag": "s0_eternum-Quantity", + "tag": "s1_eternum-Quantity", "selector": "0x399416904300b2d9bc98601f480dcdd403fac4845279504082f1775505fb41" }, { "members": [], "class_hash": "0x2c17a1b5a72fc1c99fcc98629008b8cf539162e67a39813fadb9f407e20b2fb", - "tag": "s0_eternum-QuantityTracker", + "tag": "s1_eternum-QuantityTracker", "selector": "0x29c1ad2966a8d135fb73179ff12b872776a13fef4e7dcc14955f71950ad65aa" }, { "members": [], "class_hash": "0x3c9e64e617d829d6ef52f3cc63ee1872892697641ece5c3562494655751ee92", - "tag": "s0_eternum-Quest", + "tag": "s1_eternum-Quest", "selector": "0x7be72bb5626ead15f8756586fc89f32ca4e65fcbe00e8d49a222d94460b40ac" }, { "members": [], "class_hash": "0x6d7d41fa73f6a0cafcc95b905c394f420dbe512afb245f63c5aaf9d440c1c90", - "tag": "s0_eternum-QuestBonus", + "tag": "s1_eternum-QuestBonus", "selector": "0x3e946c05a7448654a3f0f8e3983c98daca1d6727d3a595076b232f21aa9bf61" }, { "members": [], "class_hash": "0x6d7fa03d466e40e61eb5f9e8920ed1723e386147ece32faabfe48a3d96d8acb", - "tag": "s0_eternum-QuestConfig", + "tag": "s1_eternum-QuestConfig", "selector": "0x10baf692d4bb6ab5fa51d3bcdb33b443bbb89178f74ad35c0f39df34972d97a" }, { "members": [], "class_hash": "0x5c8dbcc5c43eef6f7bebe035cfab3f0d97fc98cb7468c27494032ee7c477682", - "tag": "s0_eternum-QuestRewardConfig", + "tag": "s1_eternum-QuestRewardConfig", "selector": "0x1ee6b0ff29db9cdeecda6f947a65007ef951ac7b80242fe22cbc641bfcd24c5" }, { "members": [], "class_hash": "0x442cd0a9cac38ceadfe1f6ff64cf9df8a08036e1aa83e9fc8afdb34cb94af86", - "tag": "s0_eternum-Realm", + "tag": "s1_eternum-Realm", "selector": "0x73d618f4cfd6974371417e6fbe450ff219d703d52cd92acd3e0362d18754876" }, { "members": [], "class_hash": "0x37903a2f2a111216ca18f3d52cd3b7ac241700c929d0f532d82c8d0eef0db26", - "tag": "s0_eternum-RealmLevelConfig", + "tag": "s1_eternum-RealmLevelConfig", "selector": "0x7430cd339058f757d8da2972d4609124b232fac288cd84efb4975ef17783fa3" }, { "members": [], "class_hash": "0xb05b9f8bd0de85e837c571d3b7555c1dd54b8601049eb250f25193581a3813", - "tag": "s0_eternum-RealmMaxLevelConfig", + "tag": "s1_eternum-RealmMaxLevelConfig", "selector": "0x454f0915256598d53f9fdd192a32a5886d2b006532ea05b1981694951e62fb7" }, { "members": [], "class_hash": "0x6e316e67743d138e6ee73ed2a1e6f6e9b814a888ca4e06d61d066853949c906", - "tag": "s0_eternum-Resource", + "tag": "s1_eternum-Resource", "selector": "0x6d9f80d9fc8d932eaf382b0dc61539511e229b2dec5a275dfb836095d8f0521" }, { "members": [], "class_hash": "0x63b70cb7538cdbf5d9c29df596130839d21a2a3327cea598931b590d0ad3199", - "tag": "s0_eternum-ResourceAllowance", + "tag": "s1_eternum-ResourceAllowance", "selector": "0x5d040dde8317e13b9643f324a18afc64c5044e79569552f8496e919c312b44a" }, { "members": [], "class_hash": "0x2e09899ffdc52704cf7d5881b2b9576b99ac5d1a0939caaa79ba005f941ef8c", - "tag": "s0_eternum-ResourceBridgeConfig", + "tag": "s1_eternum-ResourceBridgeConfig", "selector": "0x462f28b5568fb3e258400d85241d45cd31e053723d029bb0a3542da9ef2ece6" }, { "members": [], "class_hash": "0x7773a272288d8f6746b61d40015b44f451a5f4418785ebb893cdd8a3f101924", - "tag": "s0_eternum-ResourceBridgeFeeSplitConfig", + "tag": "s1_eternum-ResourceBridgeFeeSplitConfig", "selector": "0x33b2e568d65393f26dffa1e9fcb1c8e5aac80bf8ecd96a62c56fa7626d08d4a" }, { "members": [], "class_hash": "0x69f85789f3cd09073415acea848b4121fb7ab57660d65efc0902f9b9088cfec", - "tag": "s0_eternum-ResourceBridgeWhitelistConfig", + "tag": "s1_eternum-ResourceBridgeWhitelistConfig", "selector": "0x291a767dc981735be14609c8ef267d33c389f58393358ce20f757680d065bbb" }, { "members": [], "class_hash": "0x5ca96e7981e9fa033962a04953fe271d795fc28a77dcd09d5271d8da3714c9f", - "tag": "s0_eternum-ResourceCost", + "tag": "s1_eternum-ResourceCost", "selector": "0x15d8989d3b9ba9d2d089e1e920d2d0c428811ec0ac77b09ab12bfc3b42121d" }, { "members": [], "class_hash": "0x1c08b438614f48ce953db0bd0621cc61e499be8dad256a681d0f8981525fee9", - "tag": "s0_eternum-ResourceTransferLock", + "tag": "s1_eternum-ResourceTransferLock", "selector": "0x7deca04dad26fe5bed5def8be8e9fc199906496dfe2aa982e9cd11fe35300b" }, { "members": [], "class_hash": "0x1661ce7179939f89588fcf3d6ea91416e265772e6cdca45dac1441e4b3db807", - "tag": "s0_eternum-Season", + "tag": "s1_eternum-Season", "selector": "0x4f8865388e8136115c535f8be3bca980cc55ce5cde180fdf43877a9ac42cf10" }, { "members": [], "class_hash": "0x5908399449b220b2799f9c6c1d90531548d6a921676a73d5b18e3c73211349c", - "tag": "s0_eternum-SeasonAddressesConfig", + "tag": "s1_eternum-SeasonAddressesConfig", "selector": "0x2d1f2883267358910522f3abc2d86e377bf44b7a85eb1ce9a9a936af9872400" }, { "members": [], "class_hash": "0x6f19a8e8f55464fb398bf457038b10a01d6cfcf5051aa6c7a7296024fc78f9c", - "tag": "s0_eternum-SeasonBridgeConfig", + "tag": "s1_eternum-SeasonBridgeConfig", "selector": "0x67d6487b53941b5d6614c1f8f8fd0c620904fffed74e740a95f99485854896e" }, { "members": [], "class_hash": "0x68dbc517a95bd1643828c7f03c53b34cc6a2b9ab364825b676b19245380bec4", - "tag": "s0_eternum-SettlementConfig", + "tag": "s1_eternum-SettlementConfig", "selector": "0x2df09676383e67499863f6671e25031b67c0344b2d3e2177081d16640cef28b" }, { "members": [], "class_hash": "0x5a674566f968363982331c6e454e8046e123ce141cbe9ccb031a6f44d7fab3a", - "tag": "s0_eternum-SpeedConfig", + "tag": "s1_eternum-SpeedConfig", "selector": "0x7f66a20a5fc5f3b3a3b77fa1a3f8c30cc0a5e7fe03eed54a4c1f3a50d3421a4" }, { "members": [], "class_hash": "0x5c31bd0ec3923ca88f01ac658fcdfc8e8e73d22f4362b96a5ee55ae5232a2c8", - "tag": "s0_eternum-Stamina", + "tag": "s1_eternum-Stamina", "selector": "0x39518c19003fa9f7525361cc92b886b541122d0ef323ad02f0a5ab8baf1dd4b" }, { "members": [], "class_hash": "0x4e57c7bc107c4d7f740589732138414790b76320bb831fc912d0ac30d699738", - "tag": "s0_eternum-StaminaConfig", + "tag": "s1_eternum-StaminaConfig", "selector": "0x72604cb9cc861ecdb0e70b00137564390c5ccafde0d9d37ba014122e9288df9" }, { "members": [], "class_hash": "0x68eaa4e6a99462bf94073ba9b2e3a580b4db9170d28f47cfdefb47023e91eb7", - "tag": "s0_eternum-StaminaRefillConfig", + "tag": "s1_eternum-StaminaRefillConfig", "selector": "0x269f27b58ce568cd0a1187c785445f746a959f915fc35b999aaf2afa95c04b9" }, { "members": [], "class_hash": "0x6d8349a51048775ad58a5e14c77606d882ab3a4d18f5a1b59138d973156b8f6", - "tag": "s0_eternum-Status", + "tag": "s1_eternum-Status", "selector": "0x6819b601c22df29790f76f061612ee4c23e6d77cf850a685fa8c7ea6defe1bb" }, { "members": [], "class_hash": "0x3669757d103c83f6fca79bd6c75a49d8a273fb92dcf6bba1ab4ccaafa6137ea", - "tag": "s0_eternum-Structure", + "tag": "s1_eternum-Structure", "selector": "0x67d49b2755ef1c37f1efaa29dcd3b4c483691d9a969211f49bae940e757b033" }, { "members": [], "class_hash": "0x6e04e36fce10b6885b2180899d40134304afd733807bf45183839c37276d44d", - "tag": "s0_eternum-StructureCount", + "tag": "s1_eternum-StructureCount", "selector": "0x2add29083cc23bb0da9d45470d574877e3a63de4eca3730bfc35fc32d7256bd" }, { "members": [], "class_hash": "0x229093b1da22e9f70eb9818a6873854bc5f7a9c3c254b32e33b8ac8ef7e6a78", - "tag": "s0_eternum-TickConfig", + "tag": "s1_eternum-TickConfig", "selector": "0x3dacec234467fc19b55d08363ec6c5128d40513e9c785cc8d6fa96a10e1e2fe" }, { "members": [], "class_hash": "0x4789f1e5905969a83009f355f5e2bc6882f5228f2dff1beae21f6c315f4d3f1", - "tag": "s0_eternum-Tile", + "tag": "s1_eternum-Tile", "selector": "0x2be20d4e39863a5ae902d8a1d7d218f011bc5fd0b144656c1ec555e95939d7a" }, { "members": [], "class_hash": "0x4a83f3518a2a3b7fd4a69303275fc35dc9d5b08d3b3bf19a6ec9cb8779b34b9", - "tag": "s0_eternum-Trade", + "tag": "s1_eternum-Trade", "selector": "0xb8f1c0b8b5c9b646a2275babf4f493a4dd50440775aa1a52f07612a3f699bf" }, { "members": [], "class_hash": "0x35b1c94e4a2c44b7484df407cba0df8042fd2c8bb2cb7c14e3a54b5c78f9724", - "tag": "s0_eternum-TravelFoodCostConfig", + "tag": "s1_eternum-TravelFoodCostConfig", "selector": "0x5effa64ae71be8b1d19c231fefb1056039306d3b1d8885baed5f774d4da2a9a" }, { "members": [], "class_hash": "0x24f902eba1a1f00afbb06c6d6358a5b9d9831e5f01fa19d20d54e4610d266e2", - "tag": "s0_eternum-TravelStaminaCostConfig", + "tag": "s1_eternum-TravelStaminaCostConfig", "selector": "0x49e464fb66d305b9b58610bfb89bed1df4e2cde87f523936e71e5fa5562f9cf" }, { "members": [], "class_hash": "0x13787b670988065ecde86c7622e4dfc79e9752b1b093e22e81cb9797af3eaa0", - "tag": "s0_eternum-TroopConfig", + "tag": "s1_eternum-TroopConfig", "selector": "0x6ae523bfd49a164bfc5949f568674f7b4e09cca39f55d389d398f159b363178" }, { "members": [], "class_hash": "0x6effa334a8558bcffbb55620d842fe9fc355a497100768c7ebeb1e5f01c85d2", - "tag": "s0_eternum-VRFConfig", + "tag": "s1_eternum-VRFConfig", "selector": "0x325d18df666336f28e2027292fb9164e890d520368b4e150d3fffddb95b2304" }, { "members": [], "class_hash": "0x239c7e9007b36b7105d01e2d5fb2cc87a2f0123cf02308d78299fb1b2c0286b", - "tag": "s0_eternum-Weight", + "tag": "s1_eternum-Weight", "selector": "0x3af9b99c6bed5e58f52a76ef3616395e8ae96acee151395134ab5199fe5b36a" }, { "members": [], "class_hash": "0x342088461be2657e2281e9f5a773aa8e7c6584dd62e125edf4ca71e39400e57", - "tag": "s0_eternum-WeightConfig", + "tag": "s1_eternum-WeightConfig", "selector": "0x5b42c2cdd790597f7f8125e69d38f2db0469a37ba2a436c5fbc6f54ab16f2a6" }, { "members": [], "class_hash": "0x3f493c16b07f9edf224672fd7d0a1766b42863e70e08e4ce21f8b9368a95486", - "tag": "s0_eternum-WorldConfig", + "tag": "s1_eternum-WorldConfig", "selector": "0x2640c924e58d9c307bff3a21564eeccf889b9d22e9d1b99eaf3d3ca79ba29e9" } ], @@ -9605,158 +9552,158 @@ { "members": [], "class_hash": "0x308165ad0fe528e9f62f91851e42cd02186c284133e0f716bf618e2a89a064", - "tag": "s0_eternum-AcceptOrder", + "tag": "s1_eternum-AcceptOrder", "selector": "0x34724f2592dc93feb914074bbe4e6abc093e7ca15f6755824c7f694662853fc" }, { "members": [], "class_hash": "0x4fca4dcdf02fdc00635fdbdbfa78b928f907e5a82f58e24f17e95ec9d9e2475", - "tag": "s0_eternum-AcceptPartialOrder", + "tag": "s1_eternum-AcceptPartialOrder", "selector": "0x34b84575baeaa398556ab0a3889fabb7b08d2520d8838734eaf12282776900b" }, { "members": [], "class_hash": "0x56a5736da894e6774c628874b21f414a2c4f035065b75e36f1c7facd27420ee", - "tag": "s0_eternum-BattleClaimData", + "tag": "s1_eternum-BattleClaimData", "selector": "0x41d29e106dc5491be952bbe2faaddf7f61d2822a533f17116600e7ef9c76c18" }, { "members": [], "class_hash": "0x1aab9d5811dd52241b604e734cd3527f3723320d2e8a16d8d2f9ab9657cf07a", - "tag": "s0_eternum-BattleJoinData", + "tag": "s1_eternum-BattleJoinData", "selector": "0x4410ca9a121bdc7bd8847dc77b08361cc88574ae4ff18bdfb1f56ebd168a377" }, { "members": [], "class_hash": "0x483a25c8985f722179db7ab176625c2f0415004e315c89ddd569a546c0ff352", - "tag": "s0_eternum-BattleLeaveData", + "tag": "s1_eternum-BattleLeaveData", "selector": "0x817ae7123b2cf2c241e4a1cee0acb2a6537270d32f68da46c222a19b7a6b7e" }, { "members": [], "class_hash": "0x6bd170bb8c9642bd582be27066fc5baa71ab6a5c989b6147c16b7187ae8b2de", - "tag": "s0_eternum-BattlePillageData", + "tag": "s1_eternum-BattlePillageData", "selector": "0x1e6374e36d81091d4c72eb16936e2afc86ed695397fb5fc54780a01187bfbe2" }, { "members": [], "class_hash": "0x75e03d907604ffc855f6fa954001870813f8731f049aa1a65b4fc0335b53989", - "tag": "s0_eternum-BattleStartData", + "tag": "s1_eternum-BattleStartData", "selector": "0x39cee4993b5b6698ea69be399295a54faabb31613ddc297bd452b7db0c79081" }, { "members": [], "class_hash": "0x53ea30ee96d0e5b7eefcd0b3c5ff8ec23062b6a8af282c235dbd06db0c4d77", - "tag": "s0_eternum-BurnDonkey", + "tag": "s1_eternum-BurnDonkey", "selector": "0x61be67037fa3f9fa7655102f1fe0c3f35d352d5919aba6a204b0af556649e55" }, { "members": [], "class_hash": "0x3cd551d7e4b53f2b4afcab56040f3dfff20f2dd3e75f346c4f86f15d6f2aab8", - "tag": "s0_eternum-CancelOrder", + "tag": "s1_eternum-CancelOrder", "selector": "0x37baed7c5d5da7ddcfe014daac5b3f37b4b959b832e8c4c70df06c8b530478" }, { "members": [], "class_hash": "0x54ebf96034d04a3febfaaa17372961a8746cdb440f451d4e3acfcedd4992db6", - "tag": "s0_eternum-CreateGuild", + "tag": "s1_eternum-CreateGuild", "selector": "0x55a0213c9d81381326def8de071ea32d31f412ae525cb58b8b2a29cdbf3821" }, { "members": [], "class_hash": "0x3da4824e6b15595ea7c4906de6ae545f1de3c6997655c55fa040d9bc466fbcb", - "tag": "s0_eternum-CreateOrder", + "tag": "s1_eternum-CreateOrder", "selector": "0x6cd5deb58306ff9ed529e7e496193ac3b8dadc4927768951a16afd5cee79291" }, { "members": [], "class_hash": "0x411bb0ec4ce2af05182f278331717c86aab7b154ea844fa05f5dc693b4f5f65", - "tag": "s0_eternum-FragmentMineDiscovered", + "tag": "s1_eternum-FragmentMineDiscovered", "selector": "0x5afb247cb5972fc84d96b10c69f31a96666642065816bfa74f4d0fdd715fac6" }, { "members": [], "class_hash": "0xf00b2af42e9108761ad47e50a2605c55203a83b342235def07252a85d6db85", - "tag": "s0_eternum-GameEnded", + "tag": "s1_eternum-GameEnded", "selector": "0x7552b1455aaf939a5cee7dfe7d65ef0341647b2b1dc97bbdac22e38f81b6f75" }, { "members": [], "class_hash": "0x5cddcd628958870243552341afbf5859b87d5f623d9ccec87fc217218301da", - "tag": "s0_eternum-HyperstructureCoOwnersChange", + "tag": "s1_eternum-HyperstructureCoOwnersChange", "selector": "0x16aa9c3ff1e2229ec3989607dee034c26f555386c3fda2f57ae23a5da08bcd2" }, { "members": [], "class_hash": "0x5bf722c02c026a13863bc061f7f31d3e9a94a409e60a0b020355c621b3c8848", - "tag": "s0_eternum-HyperstructureContribution", + "tag": "s1_eternum-HyperstructureContribution", "selector": "0x11b57482819f44946c794b42bb3d6f9b5111e416abddd5590e48933db4e8c1c" }, { "members": [], "class_hash": "0x3a5f236a8854f32ed034b3f68bda881b3a28be9b2f5563fbd479ee415fa489b", - "tag": "s0_eternum-HyperstructureFinished", + "tag": "s1_eternum-HyperstructureFinished", "selector": "0x18188e073773854e47229a73718f205c22955838714d847ff4bab4ed315852c" }, { "members": [], "class_hash": "0x19167b2efb0019a2d2547e6b97653c2e44eaa0648110a8d0492857d48f7628", - "tag": "s0_eternum-HyperstructureStarted", + "tag": "s1_eternum-HyperstructureStarted", "selector": "0x524d52c11289b16c879df0675bb7168b4556196e805130884ff7399568955f4" }, { "members": [], "class_hash": "0x10489827f673705da04f7c52b54164e01679958dec37bf8c97f45b6229adde", - "tag": "s0_eternum-JoinGuild", + "tag": "s1_eternum-JoinGuild", "selector": "0x490fb23242de6839d879e576254121a224786783b288f05e8e57e942f0d0c44" }, { "members": [], "class_hash": "0x1de238739f2586354bfefc4c7d49a8e392b3c911515c9ad6445e96027a0dcb3", - "tag": "s0_eternum-LiquidityEvent", + "tag": "s1_eternum-LiquidityEvent", "selector": "0x5ca594f7a676a13c4b15d34ffd0e922bf64e127d0fa6b6a9bd29a4bb6dcfd19" }, { "members": [], "class_hash": "0x6f57b19aaa43496f97785e8d6b18e21dc116bbd690e54a4fd03ccbb98ae760b", - "tag": "s0_eternum-MapExplored", + "tag": "s1_eternum-MapExplored", "selector": "0x5238d4838007cb371e0a62aff2a2d4241868fa579edc867125fa71c493fb2c8" }, { "members": [], "class_hash": "0x65b91709428bb484001943f1662d614fb4b6318b3fca1c4ed4b2fe53d822f6", - "tag": "s0_eternum-SettleRealmData", + "tag": "s1_eternum-SettleRealmData", "selector": "0x11b4babbcafbf1834c8e535877d14f1fc5dc0bd0b126a97a98bb1093d30e873" }, { "members": [], "class_hash": "0x4db6f101a1cff37f8e4709053f1ae4c1d8b8ec3dda5a2284b606439d051fb86", - "tag": "s0_eternum-SwapEvent", + "tag": "s1_eternum-SwapEvent", "selector": "0x783a3cc6562fe31ae83bac3e69e636d8b58c357d5d3621c6d2e5d74da51e5db" }, { "members": [], "class_hash": "0x6059f5ee6fd551e038f65eac650a50c7af4401d3ce90cf257693b3eab27b8a3", - "tag": "s0_eternum-Transfer", + "tag": "s1_eternum-Transfer", "selector": "0x4ff88ec4fe7fc992e29c980b4c0abfb2c35ecacce7e63248c2731984995fcbd" }, { "members": [], "class_hash": "0x40aee82a2213fb870290370044eeafec0c98eb8953299883251f870a9fd1e4c", - "tag": "s0_eternum-Travel", + "tag": "s1_eternum-Travel", "selector": "0x4e45f9632599eeb9a25d0977cd5aebf8a4aa209fea4134a862e592d31e387c0" }, { "members": [], "class_hash": "0x6b38999d987627835d4c20e7e571c73d32ddc856786d9790a131bdb3372a246", - "tag": "s0_eternum-TrophyCreation", + "tag": "s1_eternum-TrophyCreation", "selector": "0x5633ebee65e16c483940f284a816ac8b31e08ddd3932f80db960a40573d4dc2" }, { "members": [], "class_hash": "0xf05f290a704ad2671544b391f0c33d50d6d43d468d52791282852a833a00c7", - "tag": "s0_eternum-TrophyProgression", + "tag": "s1_eternum-TrophyProgression", "selector": "0x5a8f3fedb72efc9d358b86574cf362f8ed1ec12a02ca9f276e6190f49191217" } ] -} \ No newline at end of file +} diff --git a/contracts/game/manifest_prod.json b/contracts/game/manifest_sepolia.json similarity index 93% rename from contracts/game/manifest_prod.json rename to contracts/game/manifest_sepolia.json index bec32075f6..d2857d98df 100644 --- a/contracts/game/manifest_prod.json +++ b/contracts/game/manifest_sepolia.json @@ -2,7 +2,7 @@ "world": { "class_hash": "0x45575a88cc5cef1e444c77ce60b7b4c9e73a01cbbe20926d5a4c72a94011410", "address": "0x3dc74e8caadbde233bb750a6608e095daba2891d9784ea0fb7fbf9988948c15", - "seed": "s0_eternum-11", + "seed": "s1_eternum-11", "name": "Realms: Eternum", "entrypoints": [ "uuid", @@ -1308,11 +1308,11 @@ { "type": "impl", "name": "BankSystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::bank::IBankSystems" + "interface_name": "s1_eternum::systems::bank::contracts::bank::IBankSystems" }, { "type": "interface", - "name": "s0_eternum::systems::bank::contracts::bank::IBankSystems", + "name": "s1_eternum::systems::bank::contracts::bank::IBankSystems", "items": [ { "type": "function", @@ -1455,7 +1455,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::bank::contracts::bank::bank_systems::Event", + "name": "s1_eternum::systems::bank::contracts::bank::bank_systems::Event", "kind": "enum", "variants": [ { @@ -1472,13 +1472,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-bank_systems", + "tag": "s1_eternum-bank_systems", "selector": "0x16cf356882260a01771aedaab01f8e3afdab764944c3c4d41c617cd76b91e6a", - "systems": [ - "change_owner_amm_fee", - "change_owner_bridge_fee", - "upgrade" - ] + "systems": ["change_owner_amm_fee", "change_owner_bridge_fee", "upgrade"] }, { "address": "0x267b8cc82862b1451652a1606629bcf3ad200973f0ca096493b4693f697c80e", @@ -1537,11 +1533,11 @@ { "type": "impl", "name": "BattlePillageContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract" + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract" }, { "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract", "items": [ { "type": "function", @@ -1660,7 +1656,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_pillage_systems::Event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_pillage_systems::Event", "kind": "enum", "variants": [ { @@ -1677,12 +1673,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-battle_pillage_systems", + "tag": "s1_eternum-battle_pillage_systems", "selector": "0x9861172f7b864354b6e23d8971f0b054c518337a3cea854724658c43f9f580", - "systems": [ - "battle_pillage", - "upgrade" - ] + "systems": ["battle_pillage", "upgrade"] }, { "address": "0x1fd0b5233b521873898e99517a70f96a5023840692d189476c2550055fb8086", @@ -1741,11 +1734,11 @@ { "type": "impl", "name": "BattleContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleContract" + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleContract" }, { "type": "enum", - "name": "s0_eternum::models::combat::BattleSide", + "name": "s1_eternum::models::combat::BattleSide", "variants": [ { "name": "None", @@ -1763,7 +1756,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleContract", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleContract", "items": [ { "type": "function", @@ -1811,7 +1804,7 @@ }, { "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" + "type": "s1_eternum::models::combat::BattleSide" }, { "name": "army_id", @@ -1970,7 +1963,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_systems::Event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_systems::Event", "kind": "enum", "variants": [ { @@ -1987,7 +1980,7 @@ } ], "init_calldata": [], - "tag": "s0_eternum-battle_systems", + "tag": "s1_eternum-battle_systems", "selector": "0x28fc8bb4b5e0140b71566a257468e491e41a12f2f284cae6d4e731abd862067", "systems": [ "battle_start", @@ -2056,11 +2049,11 @@ { "type": "impl", "name": "BattleUtilsContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract" + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract" }, { "type": "struct", - "name": "s0_eternum::models::combat::Troops", + "name": "s1_eternum::models::combat::Troops", "members": [ { "name": "knight_count", @@ -2078,7 +2071,7 @@ }, { "type": "enum", - "name": "s0_eternum::models::combat::BattleSide", + "name": "s1_eternum::models::combat::BattleSide", "variants": [ { "name": "None", @@ -2096,11 +2089,11 @@ }, { "type": "struct", - "name": "s0_eternum::models::combat::BattleArmy", + "name": "s1_eternum::models::combat::BattleArmy", "members": [ { "name": "troops", - "type": "s0_eternum::models::combat::Troops" + "type": "s1_eternum::models::combat::Troops" }, { "name": "battle_id", @@ -2108,13 +2101,13 @@ }, { "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" + "type": "s1_eternum::models::combat::BattleSide" } ] }, { "type": "struct", - "name": "s0_eternum::models::combat::BattleHealth", + "name": "s1_eternum::models::combat::BattleHealth", "members": [ { "name": "current", @@ -2128,7 +2121,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::combat::Battle", + "name": "s1_eternum::models::combat::Battle", "members": [ { "name": "entity_id", @@ -2136,19 +2129,19 @@ }, { "name": "attack_army", - "type": "s0_eternum::models::combat::BattleArmy" + "type": "s1_eternum::models::combat::BattleArmy" }, { "name": "attack_army_lifetime", - "type": "s0_eternum::models::combat::BattleArmy" + "type": "s1_eternum::models::combat::BattleArmy" }, { "name": "defence_army", - "type": "s0_eternum::models::combat::BattleArmy" + "type": "s1_eternum::models::combat::BattleArmy" }, { "name": "defence_army_lifetime", - "type": "s0_eternum::models::combat::BattleArmy" + "type": "s1_eternum::models::combat::BattleArmy" }, { "name": "attackers_resources_escrow_id", @@ -2160,11 +2153,11 @@ }, { "name": "attack_army_health", - "type": "s0_eternum::models::combat::BattleHealth" + "type": "s1_eternum::models::combat::BattleHealth" }, { "name": "defence_army_health", - "type": "s0_eternum::models::combat::BattleHealth" + "type": "s1_eternum::models::combat::BattleHealth" }, { "name": "attack_delta", @@ -2190,7 +2183,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::combat::Army", + "name": "s1_eternum::models::combat::Army", "members": [ { "name": "entity_id", @@ -2198,7 +2191,7 @@ }, { "name": "troops", - "type": "s0_eternum::models::combat::Troops" + "type": "s1_eternum::models::combat::Troops" }, { "name": "battle_id", @@ -2206,13 +2199,13 @@ }, { "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" + "type": "s1_eternum::models::combat::BattleSide" } ] }, { "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract", "items": [ { "type": "function", @@ -2220,16 +2213,16 @@ "inputs": [ { "name": "battle", - "type": "s0_eternum::models::combat::Battle" + "type": "s1_eternum::models::combat::Battle" }, { "name": "army", - "type": "s0_eternum::models::combat::Army" + "type": "s1_eternum::models::combat::Army" } ], "outputs": [ { - "type": "(s0_eternum::models::combat::Battle, s0_eternum::models::combat::Army)" + "type": "(s1_eternum::models::combat::Battle, s1_eternum::models::combat::Army)" } ], "state_mutability": "external" @@ -2240,16 +2233,16 @@ "inputs": [ { "name": "battle", - "type": "s0_eternum::models::combat::Battle" + "type": "s1_eternum::models::combat::Battle" }, { "name": "army", - "type": "s0_eternum::models::combat::Army" + "type": "s1_eternum::models::combat::Army" } ], "outputs": [ { - "type": "(s0_eternum::models::combat::Battle, s0_eternum::models::combat::Army)" + "type": "(s1_eternum::models::combat::Battle, s1_eternum::models::combat::Army)" } ], "state_mutability": "external" @@ -2355,7 +2348,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_utils_systems::Event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_utils_systems::Event", "kind": "enum", "variants": [ { @@ -2372,13 +2365,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-battle_utils_systems", + "tag": "s1_eternum-battle_utils_systems", "selector": "0x4199f9a24edfc349a8a16e338daaaea77af951bcc40d636e85107731d52d2b7", - "systems": [ - "leave_battle", - "leave_battle_if_ended", - "upgrade" - ] + "systems": ["leave_battle", "leave_battle_if_ended", "upgrade"] }, { "address": "0x5ad0e42e034430f752a0c4e210c903df016ad10e349dbf63cc82988c99a571e", @@ -2437,11 +2426,11 @@ { "type": "impl", "name": "BuildingContractImpl", - "interface_name": "s0_eternum::systems::buildings::contracts::IBuildingContract" + "interface_name": "s1_eternum::systems::buildings::contracts::IBuildingContract" }, { "type": "enum", - "name": "s0_eternum::models::position::Direction", + "name": "s1_eternum::models::position::Direction", "variants": [ { "name": "East", @@ -2471,17 +2460,17 @@ }, { "type": "struct", - "name": "core::array::Span::", + "name": "core::array::Span::", "members": [ { "name": "snapshot", - "type": "@core::array::Array::" + "type": "@core::array::Array::" } ] }, { "type": "enum", - "name": "s0_eternum::models::buildings::BuildingCategory", + "name": "s1_eternum::models::resource::production::building::BuildingCategory", "variants": [ { "name": "None", @@ -2557,7 +2546,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::position::Coord", + "name": "s1_eternum::models::position::Coord", "members": [ { "name": "x", @@ -2571,7 +2560,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::buildings::contracts::IBuildingContract", + "name": "s1_eternum::systems::buildings::contracts::IBuildingContract", "items": [ { "type": "function", @@ -2583,11 +2572,11 @@ }, { "name": "directions", - "type": "core::array::Span::" + "type": "core::array::Span::" }, { "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" + "type": "s1_eternum::models::resource::production::building::BuildingCategory" }, { "name": "produce_resource_type", @@ -2607,7 +2596,7 @@ }, { "name": "building_coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" } ], "outputs": [], @@ -2623,7 +2612,7 @@ }, { "name": "building_coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" } ], "outputs": [], @@ -2639,7 +2628,7 @@ }, { "name": "building_coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" } ], "outputs": [], @@ -2746,7 +2735,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::buildings::contracts::building_systems::Event", + "name": "s1_eternum::systems::buildings::contracts::building_systems::Event", "kind": "enum", "variants": [ { @@ -2763,15 +2752,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-building_systems", + "tag": "s1_eternum-building_systems", "selector": "0x5f7b231f89cc7ec90785783e2484266d4b35e7f1488ec406ffea0cf92fac777", - "systems": [ - "create", - "pause_production", - "resume_production", - "destroy", - "upgrade" - ] + "systems": ["create", "pause_production", "resume_production", "destroy", "upgrade"] }, { "address": "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", @@ -2837,11 +2820,11 @@ { "type": "impl", "name": "WorldConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IWorldConfig" + "interface_name": "s1_eternum::systems::config::contracts::IWorldConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IWorldConfig", + "name": "s1_eternum::systems::config::contracts::IWorldConfig", "items": [ { "type": "function", @@ -2864,11 +2847,11 @@ { "type": "impl", "name": "SeasonConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ISeasonConfig" + "interface_name": "s1_eternum::systems::config::contracts::ISeasonConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ISeasonConfig", + "name": "s1_eternum::systems::config::contracts::ISeasonConfig", "items": [ { "type": "function", @@ -2911,11 +2894,11 @@ { "type": "impl", "name": "VRFConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IVRFConfig" + "interface_name": "s1_eternum::systems::config::contracts::IVRFConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IVRFConfig", + "name": "s1_eternum::systems::config::contracts::IVRFConfig", "items": [ { "type": "function", @@ -2934,7 +2917,7 @@ { "type": "impl", "name": "QuestConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IQuestConfig" + "interface_name": "s1_eternum::systems::config::contracts::IQuestConfig" }, { "type": "struct", @@ -2948,7 +2931,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IQuestConfig", + "name": "s1_eternum::systems::config::contracts::IQuestConfig", "items": [ { "type": "function", @@ -2983,11 +2966,11 @@ { "type": "impl", "name": "MapConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IMapConfig" + "interface_name": "s1_eternum::systems::config::contracts::IMapConfig" }, { "type": "struct", - "name": "s0_eternum::models::config::MapConfig", + "name": "s1_eternum::models::config::MapConfig", "members": [ { "name": "config_id", @@ -3005,7 +2988,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IMapConfig", + "name": "s1_eternum::systems::config::contracts::IMapConfig", "items": [ { "type": "function", @@ -3013,7 +2996,7 @@ "inputs": [ { "name": "map_config", - "type": "s0_eternum::models::config::MapConfig" + "type": "s1_eternum::models::config::MapConfig" } ], "outputs": [], @@ -3024,11 +3007,11 @@ { "type": "impl", "name": "CapacityConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ICapacityConfig" + "interface_name": "s1_eternum::systems::config::contracts::ICapacityConfig" }, { "type": "enum", - "name": "s0_eternum::models::config::CapacityConfigCategory", + "name": "s1_eternum::models::config::CapacityConfigCategory", "variants": [ { "name": "None", @@ -3054,11 +3037,11 @@ }, { "type": "struct", - "name": "s0_eternum::models::config::CapacityConfig", + "name": "s1_eternum::models::config::CapacityConfig", "members": [ { "name": "category", - "type": "s0_eternum::models::config::CapacityConfigCategory" + "type": "s1_eternum::models::config::CapacityConfigCategory" }, { "name": "weight_gram", @@ -3068,7 +3051,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ICapacityConfig", + "name": "s1_eternum::systems::config::contracts::ICapacityConfig", "items": [ { "type": "function", @@ -3076,7 +3059,7 @@ "inputs": [ { "name": "capacity_config", - "type": "s0_eternum::models::config::CapacityConfig" + "type": "s1_eternum::models::config::CapacityConfig" } ], "outputs": [], @@ -3087,11 +3070,11 @@ { "type": "impl", "name": "TravelStaminaCostConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITravelStaminaCostConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITravelStaminaCostConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITravelStaminaCostConfig", + "name": "s1_eternum::systems::config::contracts::ITravelStaminaCostConfig", "items": [ { "type": "function", @@ -3114,11 +3097,11 @@ { "type": "impl", "name": "WeightConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IWeightConfig" + "interface_name": "s1_eternum::systems::config::contracts::IWeightConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IWeightConfig", + "name": "s1_eternum::systems::config::contracts::IWeightConfig", "items": [ { "type": "function", @@ -3141,11 +3124,11 @@ { "type": "impl", "name": "BattleConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBattleConfig" + "interface_name": "s1_eternum::systems::config::contracts::IBattleConfig" }, { "type": "struct", - "name": "s0_eternum::models::config::BattleConfig", + "name": "s1_eternum::models::config::BattleConfig", "members": [ { "name": "config_id", @@ -3167,7 +3150,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBattleConfig", + "name": "s1_eternum::systems::config::contracts::IBattleConfig", "items": [ { "type": "function", @@ -3175,7 +3158,7 @@ "inputs": [ { "name": "battle_config", - "type": "s0_eternum::models::config::BattleConfig" + "type": "s1_eternum::models::config::BattleConfig" } ], "outputs": [], @@ -3186,11 +3169,11 @@ { "type": "impl", "name": "TickConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITickConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITickConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITickConfig", + "name": "s1_eternum::systems::config::contracts::ITickConfig", "items": [ { "type": "function", @@ -3213,11 +3196,11 @@ { "type": "impl", "name": "StaminaConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IStaminaConfig" + "interface_name": "s1_eternum::systems::config::contracts::IStaminaConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IStaminaConfig", + "name": "s1_eternum::systems::config::contracts::IStaminaConfig", "items": [ { "type": "function", @@ -3240,11 +3223,11 @@ { "type": "impl", "name": "TravelFoodCostConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITravelFoodCostConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITravelFoodCostConfig" }, { "type": "struct", - "name": "s0_eternum::models::config::TravelFoodCostConfig", + "name": "s1_eternum::models::config::TravelFoodCostConfig", "members": [ { "name": "config_id", @@ -3274,7 +3257,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITravelFoodCostConfig", + "name": "s1_eternum::systems::config::contracts::ITravelFoodCostConfig", "items": [ { "type": "function", @@ -3282,7 +3265,7 @@ "inputs": [ { "name": "travel_food_cost_config", - "type": "s0_eternum::models::config::TravelFoodCostConfig" + "type": "s1_eternum::models::config::TravelFoodCostConfig" } ], "outputs": [], @@ -3293,11 +3276,11 @@ { "type": "impl", "name": "StaminaRefillConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IStaminaRefillConfig" + "interface_name": "s1_eternum::systems::config::contracts::IStaminaRefillConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IStaminaRefillConfig", + "name": "s1_eternum::systems::config::contracts::IStaminaRefillConfig", "items": [ { "type": "function", @@ -3320,11 +3303,11 @@ { "type": "impl", "name": "LevelingConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ILevelingConfig" + "interface_name": "s1_eternum::systems::config::contracts::ILevelingConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ILevelingConfig", + "name": "s1_eternum::systems::config::contracts::ILevelingConfig", "items": [ { "type": "function", @@ -3383,11 +3366,11 @@ { "type": "impl", "name": "ProductionConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IProductionConfig" + "interface_name": "s1_eternum::systems::config::contracts::IProductionConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IProductionConfig", + "name": "s1_eternum::systems::config::contracts::IProductionConfig", "items": [ { "type": "function", @@ -3414,11 +3397,11 @@ { "type": "impl", "name": "TransportConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITransportConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITransportConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITransportConfig", + "name": "s1_eternum::systems::config::contracts::ITransportConfig", "items": [ { "type": "function", @@ -3441,7 +3424,7 @@ { "type": "impl", "name": "HyperstructureConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IHyperstructureConfig" + "interface_name": "s1_eternum::systems::config::contracts::IHyperstructureConfig" }, { "type": "struct", @@ -3455,7 +3438,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IHyperstructureConfig", + "name": "s1_eternum::systems::config::contracts::IHyperstructureConfig", "items": [ { "type": "function", @@ -3490,11 +3473,11 @@ { "type": "impl", "name": "BankConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBankConfig" + "interface_name": "s1_eternum::systems::config::contracts::IBankConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBankConfig", + "name": "s1_eternum::systems::config::contracts::IBankConfig", "items": [ { "type": "function", @@ -3521,11 +3504,11 @@ { "type": "impl", "name": "TroopConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITroopConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITroopConfig" }, { "type": "struct", - "name": "s0_eternum::models::config::TroopConfig", + "name": "s1_eternum::models::config::TroopConfig", "members": [ { "name": "config_id", @@ -3595,7 +3578,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITroopConfig", + "name": "s1_eternum::systems::config::contracts::ITroopConfig", "items": [ { "type": "function", @@ -3603,7 +3586,7 @@ "inputs": [ { "name": "troop_config", - "type": "s0_eternum::models::config::TroopConfig" + "type": "s1_eternum::models::config::TroopConfig" } ], "outputs": [], @@ -3614,11 +3597,11 @@ { "type": "impl", "name": "BuildingCategoryPopulationConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBuildingCategoryPopConfig" + "interface_name": "s1_eternum::systems::config::contracts::IBuildingCategoryPopConfig" }, { "type": "enum", - "name": "s0_eternum::models::buildings::BuildingCategory", + "name": "s1_eternum::models::resource::production::building::BuildingCategory", "variants": [ { "name": "None", @@ -3680,7 +3663,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBuildingCategoryPopConfig", + "name": "s1_eternum::systems::config::contracts::IBuildingCategoryPopConfig", "items": [ { "type": "function", @@ -3688,7 +3671,7 @@ "inputs": [ { "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" + "type": "s1_eternum::models::resource::production::building::BuildingCategory" }, { "name": "population", @@ -3707,11 +3690,11 @@ { "type": "impl", "name": "PopulationConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IPopulationConfig" + "interface_name": "s1_eternum::systems::config::contracts::IPopulationConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IPopulationConfig", + "name": "s1_eternum::systems::config::contracts::IPopulationConfig", "items": [ { "type": "function", @@ -3730,11 +3713,11 @@ { "type": "impl", "name": "BuildingConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBuildingConfig" + "interface_name": "s1_eternum::systems::config::contracts::IBuildingConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBuildingConfig", + "name": "s1_eternum::systems::config::contracts::IBuildingConfig", "items": [ { "type": "function", @@ -3754,7 +3737,7 @@ "inputs": [ { "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" + "type": "s1_eternum::models::resource::production::building::BuildingCategory" }, { "name": "building_resource_type", @@ -3773,11 +3756,11 @@ { "type": "impl", "name": "IMercenariesConfig", - "interface_name": "s0_eternum::systems::config::contracts::IMercenariesConfig" + "interface_name": "s1_eternum::systems::config::contracts::IMercenariesConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IMercenariesConfig", + "name": "s1_eternum::systems::config::contracts::IMercenariesConfig", "items": [ { "type": "function", @@ -3820,7 +3803,7 @@ { "type": "impl", "name": "IResourceBridgeConfig", - "interface_name": "s0_eternum::systems::config::contracts::IResourceBridgeConfig" + "interface_name": "s1_eternum::systems::config::contracts::IResourceBridgeConfig" }, { "type": "enum", @@ -3838,7 +3821,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeConfig", + "name": "s1_eternum::models::config::ResourceBridgeConfig", "members": [ { "name": "config_id", @@ -3856,7 +3839,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeFeeSplitConfig", + "name": "s1_eternum::models::config::ResourceBridgeFeeSplitConfig", "members": [ { "name": "config_id", @@ -3906,7 +3889,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeWhitelistConfig", + "name": "s1_eternum::models::config::ResourceBridgeWhitelistConfig", "members": [ { "name": "token", @@ -3920,7 +3903,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IResourceBridgeConfig", + "name": "s1_eternum::systems::config::contracts::IResourceBridgeConfig", "items": [ { "type": "function", @@ -3928,7 +3911,7 @@ "inputs": [ { "name": "resource_bridge_config", - "type": "s0_eternum::models::config::ResourceBridgeConfig" + "type": "s1_eternum::models::config::ResourceBridgeConfig" } ], "outputs": [], @@ -3940,7 +3923,7 @@ "inputs": [ { "name": "resource_bridge_fee_split_config", - "type": "s0_eternum::models::config::ResourceBridgeFeeSplitConfig" + "type": "s1_eternum::models::config::ResourceBridgeFeeSplitConfig" } ], "outputs": [], @@ -3952,7 +3935,7 @@ "inputs": [ { "name": "resource_bridge_whitelist_config", - "type": "s0_eternum::models::config::ResourceBridgeWhitelistConfig" + "type": "s1_eternum::models::config::ResourceBridgeWhitelistConfig" } ], "outputs": [], @@ -3963,11 +3946,11 @@ { "type": "impl", "name": "RealmLevelConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IRealmLevelConfig" + "interface_name": "s1_eternum::systems::config::contracts::IRealmLevelConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IRealmLevelConfig", + "name": "s1_eternum::systems::config::contracts::IRealmLevelConfig", "items": [ { "type": "function", @@ -4002,11 +3985,11 @@ { "type": "impl", "name": "ISettlementConfig", - "interface_name": "s0_eternum::systems::config::contracts::ISettlementConfig" + "interface_name": "s1_eternum::systems::config::contracts::ISettlementConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ISettlementConfig", + "name": "s1_eternum::systems::config::contracts::ISettlementConfig", "items": [ { "type": "function", @@ -4144,7 +4127,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::config::contracts::config_systems::Event", + "name": "s1_eternum::systems::config::contracts::config_systems::Event", "kind": "enum", "variants": [ { @@ -4166,7 +4149,7 @@ } ], "init_calldata": [], - "tag": "s0_eternum-config_systems", + "tag": "s1_eternum-config_systems", "selector": "0x4deb9db2b1005876b689d07a98673dacb6beea64ef9f564a19a38228d798204", "systems": [ "set_world_config", @@ -4261,11 +4244,11 @@ { "type": "impl", "name": "BankSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::bank::IBankSystems" + "interface_name": "s1_eternum::systems::dev::contracts::bank::IBankSystems" }, { "type": "struct", - "name": "s0_eternum::models::position::Coord", + "name": "s1_eternum::models::position::Coord", "members": [ { "name": "x", @@ -4279,7 +4262,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::dev::contracts::bank::IBankSystems", + "name": "s1_eternum::systems::dev::contracts::bank::IBankSystems", "items": [ { "type": "function", @@ -4291,7 +4274,7 @@ }, { "name": "coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" }, { "name": "owner_fee_num", @@ -4418,7 +4401,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::dev::contracts::bank::dev_bank_systems::Event", + "name": "s1_eternum::systems::dev::contracts::bank::dev_bank_systems::Event", "kind": "enum", "variants": [ { @@ -4435,12 +4418,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-dev_bank_systems", + "tag": "s1_eternum-dev_bank_systems", "selector": "0x436d7ef5fa5753c742f95b4fd3a7722399b309251363684474bfcba389fb607", - "systems": [ - "create_admin_bank", - "upgrade" - ] + "systems": ["create_admin_bank", "upgrade"] }, { "address": "0x56c668f4e561ec08a5e6b32064a42855f6ea8693806713f4f04ad2ca38353d2", @@ -4499,11 +4479,11 @@ { "type": "impl", "name": "DevRealmSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::realm::IDevRealmSystems" + "interface_name": "s1_eternum::systems::dev::contracts::realm::IDevRealmSystems" }, { "type": "interface", - "name": "s0_eternum::systems::dev::contracts::realm::IDevRealmSystems", + "name": "s1_eternum::systems::dev::contracts::realm::IDevRealmSystems", "items": [ { "type": "function", @@ -4622,7 +4602,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::dev::contracts::realm::dev_realm_systems::Event", + "name": "s1_eternum::systems::dev::contracts::realm::dev_realm_systems::Event", "kind": "enum", "variants": [ { @@ -4639,12 +4619,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-dev_realm_systems", + "tag": "s1_eternum-dev_realm_systems", "selector": "0x2a2f52f1a66a15e1e6bee3b5ea2d104bc146e82c1625c5421f6f45c44640824", - "systems": [ - "create", - "upgrade" - ] + "systems": ["create", "upgrade"] }, { "address": "0x789a850d97d714ca0d2ebef8d61c25cd2342fc310fa10bb3b6c2edad1172351", @@ -4703,7 +4680,7 @@ { "type": "impl", "name": "ResourceSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::resource::IResourceSystems" + "interface_name": "s1_eternum::systems::dev::contracts::resource::IResourceSystems" }, { "type": "struct", @@ -4717,7 +4694,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::dev::contracts::resource::IResourceSystems", + "name": "s1_eternum::systems::dev::contracts::resource::IResourceSystems", "items": [ { "type": "function", @@ -4836,7 +4813,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::dev::contracts::resource::dev_resource_systems::Event", + "name": "s1_eternum::systems::dev::contracts::resource::dev_resource_systems::Event", "kind": "enum", "variants": [ { @@ -4853,12 +4830,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-dev_resource_systems", + "tag": "s1_eternum-dev_resource_systems", "selector": "0x6125379dcbb305b4f4b955271c3c4d472ece9852c3592d9d38a9fbc63fe9025", - "systems": [ - "mint", - "upgrade" - ] + "systems": ["mint", "upgrade"] }, { "address": "0x40236e6868cfc14d4a73b3ad4be0df18a7c88877a684be223c1a8593109d7d9", @@ -5013,7 +4987,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::transport::contracts::donkey_systems::donkey_systems::Event", + "name": "s1_eternum::systems::transport::contracts::donkey_systems::donkey_systems::Event", "kind": "enum", "variants": [ { @@ -5030,11 +5004,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-donkey_systems", + "tag": "s1_eternum-donkey_systems", "selector": "0x76a0f4e4cdc01c969350b612c38d49d38689d5fde54e4afb3205a4629db83b6", - "systems": [ - "upgrade" - ] + "systems": ["upgrade"] }, { "address": "0x3920dbf33145cca955528fee24474def2f7e48b0071c04cd31572216e5abdce", @@ -5093,7 +5065,7 @@ { "type": "impl", "name": "GuildSystemsImpl", - "interface_name": "s0_eternum::systems::guild::contracts::IGuildSystems" + "interface_name": "s1_eternum::systems::guild::contracts::IGuildSystems" }, { "type": "enum", @@ -5111,7 +5083,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::guild::contracts::IGuildSystems", + "name": "s1_eternum::systems::guild::contracts::IGuildSystems", "items": [ { "type": "function", @@ -5306,7 +5278,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::guild::contracts::guild_systems::Event", + "name": "s1_eternum::systems::guild::contracts::guild_systems::Event", "kind": "enum", "variants": [ { @@ -5323,7 +5295,7 @@ } ], "init_calldata": [], - "tag": "s0_eternum-guild_systems", + "tag": "s1_eternum-guild_systems", "selector": "0x6b2e6f3912853c9745b74266fe1d344bfe8ba99561982c5b4c3ac0e081f956b", "systems": [ "create_guild", @@ -5392,7 +5364,7 @@ { "type": "impl", "name": "HyperstructureSystemsImpl", - "interface_name": "s0_eternum::systems::hyperstructure::contracts::IHyperstructureSystems" + "interface_name": "s1_eternum::systems::hyperstructure::contracts::IHyperstructureSystems" }, { "type": "struct", @@ -5416,7 +5388,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::position::Coord", + "name": "s1_eternum::models::position::Coord", "members": [ { "name": "x", @@ -5450,7 +5422,7 @@ }, { "type": "enum", - "name": "s0_eternum::models::hyperstructure::Access", + "name": "s1_eternum::models::hyperstructure::Access", "variants": [ { "name": "Public", @@ -5468,7 +5440,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::hyperstructure::contracts::IHyperstructureSystems", + "name": "s1_eternum::systems::hyperstructure::contracts::IHyperstructureSystems", "items": [ { "type": "function", @@ -5504,7 +5476,7 @@ }, { "name": "coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" } ], "outputs": [ @@ -5576,7 +5548,7 @@ }, { "name": "access", - "type": "s0_eternum::models::hyperstructure::Access" + "type": "s1_eternum::models::hyperstructure::Access" } ], "outputs": [], @@ -5683,7 +5655,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::hyperstructure::contracts::hyperstructure_systems::Event", + "name": "s1_eternum::systems::hyperstructure::contracts::hyperstructure_systems::Event", "kind": "enum", "variants": [ { @@ -5700,7 +5672,7 @@ } ], "init_calldata": [], - "tag": "s0_eternum-hyperstructure_systems", + "tag": "s1_eternum-hyperstructure_systems", "selector": "0x44f825ffb89246cbeda203107846db0efad60bbedb24dc67dbd4a42593e6c82", "systems": [ "get_points", @@ -5769,7 +5741,7 @@ { "type": "impl", "name": "LiquiditySystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::liquidity::ILiquiditySystems" + "interface_name": "s1_eternum::systems::bank::contracts::liquidity::ILiquiditySystems" }, { "type": "enum", @@ -5801,7 +5773,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::bank::contracts::liquidity::ILiquiditySystems", + "name": "s1_eternum::systems::bank::contracts::liquidity::ILiquiditySystems", "items": [ { "type": "function", @@ -5960,7 +5932,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::bank::contracts::liquidity::liquidity_systems::Event", + "name": "s1_eternum::systems::bank::contracts::liquidity::liquidity_systems::Event", "kind": "enum", "variants": [ { @@ -5977,13 +5949,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-liquidity_systems", + "tag": "s1_eternum-liquidity_systems", "selector": "0x3cc30307c653c6c1ba1a6e99364f57c94360b8f73787d1518eaab02e9d0d6b", - "systems": [ - "add", - "remove", - "upgrade" - ] + "systems": ["add", "remove", "upgrade"] }, { "address": "0x1fd92361d6679473f165797c5285e1c346dc84246798f7e9459bb337531e56f", @@ -6042,11 +6010,11 @@ { "type": "impl", "name": "MapGenerationSystemsImpl", - "interface_name": "s0_eternum::systems::map::map_generation::IMapGenerationSystems" + "interface_name": "s1_eternum::systems::map::map_generation::IMapGenerationSystems" }, { "type": "struct", - "name": "s0_eternum::models::owner::EntityOwner", + "name": "s1_eternum::models::owner::EntityOwner", "members": [ { "name": "entity_id", @@ -6060,7 +6028,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::position::Coord", + "name": "s1_eternum::models::position::Coord", "members": [ { "name": "x", @@ -6102,7 +6070,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::map::map_generation::IMapGenerationSystems", + "name": "s1_eternum::systems::map::map_generation::IMapGenerationSystems", "items": [ { "type": "function", @@ -6110,11 +6078,11 @@ "inputs": [ { "name": "unit_entity_owner", - "type": "s0_eternum::models::owner::EntityOwner" + "type": "s1_eternum::models::owner::EntityOwner" }, { "name": "coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" } ], "outputs": [ @@ -6245,7 +6213,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::map::map_generation::map_generation_systems::Event", + "name": "s1_eternum::systems::map::map_generation::map_generation_systems::Event", "kind": "enum", "variants": [ { @@ -6262,13 +6230,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-map_generation_systems", + "tag": "s1_eternum-map_generation_systems", "selector": "0x29daec1bf7e70863ae1f9a4b455a1e12030394562eb21b214c9037f9fb71424", - "systems": [ - "discover_shards_mine", - "add_mercenaries_to_structure", - "upgrade" - ] + "systems": ["discover_shards_mine", "add_mercenaries_to_structure", "upgrade"] }, { "address": "0xe63ce3d808072f67ac366cff1e44ff148eaf4ddd1e836b98a1ba44af66faa3", @@ -6327,11 +6291,11 @@ { "type": "impl", "name": "MapSystemsImpl", - "interface_name": "s0_eternum::systems::map::contracts::IMapSystems" + "interface_name": "s1_eternum::systems::map::contracts::IMapSystems" }, { "type": "enum", - "name": "s0_eternum::models::position::Direction", + "name": "s1_eternum::models::position::Direction", "variants": [ { "name": "East", @@ -6361,7 +6325,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::map::contracts::IMapSystems", + "name": "s1_eternum::systems::map::contracts::IMapSystems", "items": [ { "type": "function", @@ -6373,7 +6337,7 @@ }, { "name": "direction", - "type": "s0_eternum::models::position::Direction" + "type": "s1_eternum::models::position::Direction" } ], "outputs": [], @@ -6480,7 +6444,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::map::contracts::map_systems::Event", + "name": "s1_eternum::systems::map::contracts::map_systems::Event", "kind": "enum", "variants": [ { @@ -6497,12 +6461,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-map_systems", + "tag": "s1_eternum-map_systems", "selector": "0x27a92961f46c5ac43e19fa2b7d50d169c2776dbb98478a96a8a3050647431cd", - "systems": [ - "explore", - "upgrade" - ] + "systems": ["explore", "upgrade"] }, { "address": "0x3e6ad1a5ca5dd74c4abfced52e6649cd7e99763f8aaa695175043cfa5aad8f7", @@ -6561,11 +6522,11 @@ { "type": "impl", "name": "NameSystemsImpl", - "interface_name": "s0_eternum::systems::name::contracts::INameSystems" + "interface_name": "s1_eternum::systems::name::contracts::INameSystems" }, { "type": "interface", - "name": "s0_eternum::systems::name::contracts::INameSystems", + "name": "s1_eternum::systems::name::contracts::INameSystems", "items": [ { "type": "function", @@ -6696,7 +6657,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::name::contracts::name_systems::Event", + "name": "s1_eternum::systems::name::contracts::name_systems::Event", "kind": "enum", "variants": [ { @@ -6713,13 +6674,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-name_systems", + "tag": "s1_eternum-name_systems", "selector": "0x57061191efce4db08b753f5d6119a16595a3ac2b91db70e971630c34ff5e16e", - "systems": [ - "set_address_name", - "set_entity_name", - "upgrade" - ] + "systems": ["set_address_name", "set_entity_name", "upgrade"] }, { "address": "0x368661fcdc42f68583bc09db6642918704fcea2a3c432bfdb508f7194537910", @@ -6778,11 +6735,11 @@ { "type": "impl", "name": "OwnershipSystemsImpl", - "interface_name": "s0_eternum::systems::ownership::contracts::IOwnershipSystems" + "interface_name": "s1_eternum::systems::ownership::contracts::IOwnershipSystems" }, { "type": "interface", - "name": "s0_eternum::systems::ownership::contracts::IOwnershipSystems", + "name": "s1_eternum::systems::ownership::contracts::IOwnershipSystems", "items": [ { "type": "function", @@ -6901,7 +6858,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::ownership::contracts::ownership_systems::Event", + "name": "s1_eternum::systems::ownership::contracts::ownership_systems::Event", "kind": "enum", "variants": [ { @@ -6918,12 +6875,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-ownership_systems", + "tag": "s1_eternum-ownership_systems", "selector": "0x419b9f1d9d3cbe8dd78cb553b0e1895fa2d3cfb9e7e578866056fca72f9108b", - "systems": [ - "transfer_ownership", - "upgrade" - ] + "systems": ["transfer_ownership", "upgrade"] }, { "address": "0x395bd73f4abb836bb7eb6dc7f0f761be93596a6d892a118d2b82f77c54618b4", @@ -6982,11 +6936,11 @@ { "type": "impl", "name": "RealmSystemsImpl", - "interface_name": "s0_eternum::systems::realm::contracts::IRealmSystems" + "interface_name": "s1_eternum::systems::realm::contracts::IRealmSystems" }, { "type": "interface", - "name": "s0_eternum::systems::realm::contracts::IRealmSystems", + "name": "s1_eternum::systems::realm::contracts::IRealmSystems", "items": [ { "type": "function", @@ -7141,7 +7095,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::realm::contracts::realm_systems::Event", + "name": "s1_eternum::systems::realm::contracts::realm_systems::Event", "kind": "enum", "variants": [ { @@ -7158,14 +7112,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-realm_systems", + "tag": "s1_eternum-realm_systems", "selector": "0x6ae6691704d5df34326545ad7d15afebdd83066596af8c0dcb5d216d1ede909", - "systems": [ - "create", - "upgrade_level", - "quest_claim", - "upgrade" - ] + "systems": ["create", "upgrade_level", "quest_claim", "upgrade"] }, { "address": "0x1e21e76506aff91e258bbe8cb8c80393faa1dcb72569b4a9ba72eb10c2c01b7", @@ -7224,7 +7173,7 @@ { "type": "impl", "name": "ResourceBridgeImpl", - "interface_name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems" + "interface_name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems" }, { "type": "struct", @@ -7242,7 +7191,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems", + "name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems", "items": [ { "type": "function", @@ -7449,7 +7398,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::resource_bridge_systems::Event", + "name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::resource_bridge_systems::Event", "kind": "enum", "variants": [ { @@ -7466,15 +7415,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-resource_bridge_systems", + "tag": "s1_eternum-resource_bridge_systems", "selector": "0x5916a4c5e4fb7f1105244015fcc1e9950efab35919af199a4a2c1aef2c3aa61", - "systems": [ - "deposit_initial", - "deposit", - "start_withdraw", - "finish_withdraw", - "upgrade" - ] + "systems": ["deposit_initial", "deposit", "start_withdraw", "finish_withdraw", "upgrade"] }, { "address": "0x3d266b405275aeb27660eeaa4e8d5c3e24f8c3075da67276e0300da1df66c33", @@ -7533,7 +7476,7 @@ { "type": "impl", "name": "ResourceSystemsImpl", - "interface_name": "s0_eternum::systems::resources::contracts::resource_systems::IResourceSystems" + "interface_name": "s1_eternum::systems::resources::contracts::resource_systems::IResourceSystems" }, { "type": "struct", @@ -7547,7 +7490,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::resources::contracts::resource_systems::IResourceSystems", + "name": "s1_eternum::systems::resources::contracts::resource_systems::IResourceSystems", "items": [ { "type": "function", @@ -7710,7 +7653,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::resources::contracts::resource_systems::resource_systems::Event", + "name": "s1_eternum::systems::resources::contracts::resource_systems::resource_systems::Event", "kind": "enum", "variants": [ { @@ -7727,14 +7670,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-resource_systems", + "tag": "s1_eternum-resource_systems", "selector": "0x31e8be63af9c072934c219dd6cbd2fea3b49fce2311adceb8a8a8870a760b62", - "systems": [ - "approve", - "send", - "pickup", - "upgrade" - ] + "systems": ["approve", "send", "pickup", "upgrade"] }, { "address": "0x14f385db5b18cd094d9b4961f4d2a4a170e305385e2a3d9c5a1bd7cd499928b", @@ -7793,7 +7731,7 @@ { "type": "impl", "name": "SeasonSystemsImpl", - "interface_name": "s0_eternum::systems::season::contracts::ISeasonSystems" + "interface_name": "s1_eternum::systems::season::contracts::ISeasonSystems" }, { "type": "struct", @@ -7817,7 +7755,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::season::contracts::ISeasonSystems", + "name": "s1_eternum::systems::season::contracts::ISeasonSystems", "items": [ { "type": "function", @@ -7948,7 +7886,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::season::contracts::season_systems::Event", + "name": "s1_eternum::systems::season::contracts::season_systems::Event", "kind": "enum", "variants": [ { @@ -7965,13 +7903,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-season_systems", + "tag": "s1_eternum-season_systems", "selector": "0x384e61da11b2e476dc992c9556f8d1d42814136a36400b5cb34175de183ac9", - "systems": [ - "register_to_leaderboard", - "claim_leaderboard_rewards", - "upgrade" - ] + "systems": ["register_to_leaderboard", "claim_leaderboard_rewards", "upgrade"] }, { "address": "0x5422c3c15cff91dedd781d6a24228dc7bdd65a0a9130e77375085c4fe6f06d4", @@ -8030,11 +7964,11 @@ { "type": "impl", "name": "SwapSystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::swap::ISwapSystems" + "interface_name": "s1_eternum::systems::bank::contracts::swap::ISwapSystems" }, { "type": "interface", - "name": "s0_eternum::systems::bank::contracts::swap::ISwapSystems", + "name": "s1_eternum::systems::bank::contracts::swap::ISwapSystems", "items": [ { "type": "function", @@ -8193,7 +8127,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::bank::contracts::swap::swap_systems::Event", + "name": "s1_eternum::systems::bank::contracts::swap::swap_systems::Event", "kind": "enum", "variants": [ { @@ -8210,13 +8144,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-swap_systems", + "tag": "s1_eternum-swap_systems", "selector": "0x14a06d11e0f26724e8e61c141842f95425009d07620b3c369f9f517d568e591", - "systems": [ - "buy", - "sell", - "upgrade" - ] + "systems": ["buy", "sell", "upgrade"] }, { "address": "0x675662c85d93e590ab147f5af80eb359b3a6cc388f44578b7aebdc2e735b43", @@ -8275,7 +8205,7 @@ { "type": "impl", "name": "TradeSystemsImpl", - "interface_name": "s0_eternum::systems::trade::contracts::trade_systems::ITradeSystems" + "interface_name": "s1_eternum::systems::trade::contracts::trade_systems::ITradeSystems" }, { "type": "struct", @@ -8289,7 +8219,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::trade::contracts::trade_systems::ITradeSystems", + "name": "s1_eternum::systems::trade::contracts::trade_systems::ITradeSystems", "items": [ { "type": "function", @@ -8492,7 +8422,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::trade::contracts::trade_systems::trade_systems::Event", + "name": "s1_eternum::systems::trade::contracts::trade_systems::trade_systems::Event", "kind": "enum", "variants": [ { @@ -8509,15 +8439,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-trade_systems", + "tag": "s1_eternum-trade_systems", "selector": "0x5272cd9b34062cb8bd8ec92ecca87f92a884d4bd2f5bf6c563265a018ac22a5", - "systems": [ - "create_order", - "accept_order", - "accept_partial_order", - "cancel_order", - "upgrade" - ] + "systems": ["create_order", "accept_order", "accept_partial_order", "cancel_order", "upgrade"] }, { "address": "0xef2b5150890396d22c3183a69b22b747ccac4429b5415ec35d9dab635a65b8", @@ -8576,11 +8500,11 @@ { "type": "impl", "name": "TravelSystemsImpl", - "interface_name": "s0_eternum::systems::transport::contracts::travel_systems::ITravelSystems" + "interface_name": "s1_eternum::systems::transport::contracts::travel_systems::ITravelSystems" }, { "type": "enum", - "name": "s0_eternum::models::position::Direction", + "name": "s1_eternum::models::position::Direction", "variants": [ { "name": "East", @@ -8610,17 +8534,17 @@ }, { "type": "struct", - "name": "core::array::Span::", + "name": "core::array::Span::", "members": [ { "name": "snapshot", - "type": "@core::array::Array::" + "type": "@core::array::Array::" } ] }, { "type": "interface", - "name": "s0_eternum::systems::transport::contracts::travel_systems::ITravelSystems", + "name": "s1_eternum::systems::transport::contracts::travel_systems::ITravelSystems", "items": [ { "type": "function", @@ -8632,7 +8556,7 @@ }, { "name": "directions", - "type": "core::array::Span::" + "type": "core::array::Span::" } ], "outputs": [], @@ -8739,7 +8663,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::transport::contracts::travel_systems::travel_systems::Event", + "name": "s1_eternum::systems::transport::contracts::travel_systems::travel_systems::Event", "kind": "enum", "variants": [ { @@ -8756,12 +8680,9 @@ } ], "init_calldata": [], - "tag": "s0_eternum-travel_systems", + "tag": "s1_eternum-travel_systems", "selector": "0x4928d4294639e944ff93869e10cee7533ffd910f5791fc486c04b91f2fcf8fe", - "systems": [ - "travel_hex", - "upgrade" - ] + "systems": ["travel_hex", "upgrade"] }, { "address": "0xc592377a9b924df5d609994a7561dd989254b736d22085c9c78e6979a2969e", @@ -8820,7 +8741,7 @@ { "type": "impl", "name": "TroopContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::troop_systems::ITroopContract" + "interface_name": "s1_eternum::systems::combat::contracts::troop_systems::ITroopContract" }, { "type": "enum", @@ -8838,7 +8759,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::combat::Troops", + "name": "s1_eternum::models::combat::Troops", "members": [ { "name": "knight_count", @@ -8856,7 +8777,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::combat::contracts::troop_systems::ITroopContract", + "name": "s1_eternum::systems::combat::contracts::troop_systems::ITroopContract", "items": [ { "type": "function", @@ -8904,7 +8825,7 @@ }, { "name": "troops", - "type": "s0_eternum::models::combat::Troops" + "type": "s1_eternum::models::combat::Troops" } ], "outputs": [], @@ -8924,7 +8845,7 @@ }, { "name": "troops", - "type": "s0_eternum::models::combat::Troops" + "type": "s1_eternum::models::combat::Troops" } ], "outputs": [], @@ -9031,7 +8952,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::combat::contracts::troop_systems::troop_systems::Event", + "name": "s1_eternum::systems::combat::contracts::troop_systems::troop_systems::Event", "kind": "enum", "variants": [ { @@ -9048,556 +8969,550 @@ } ], "init_calldata": [], - "tag": "s0_eternum-troop_systems", + "tag": "s1_eternum-troop_systems", "selector": "0x5f97ab78613558d9346649708e6829b417ad55826ba2e4f7b0fc79ad276180a", - "systems": [ - "army_create", - "army_delete", - "army_buy_troops", - "army_merge_troops", - "upgrade" - ] + "systems": ["army_create", "army_delete", "army_buy_troops", "army_merge_troops", "upgrade"] } ], "models": [ { "members": [], "class_hash": "0x25603f4597c7b9476318af1bf26c9e0f9f7a3f24b8aa4fd4aa095289c74e2bb", - "tag": "s0_eternum-AddressName", + "tag": "s1_eternum-AddressName", "selector": "0x2a33e6e963e8f80fb8f00a69a8b55ec9834adda81bbb305024500c4b4356e24" }, { "members": [], "class_hash": "0x7c8598486eb6f5bc890ccac17cc5c4f7400998f5c50247d90e5df0f643f9f2b", - "tag": "s0_eternum-Army", + "tag": "s1_eternum-Army", "selector": "0x34cab5fd09c4f5f5b8624e52c883afec2462c2fc2e7227121f70de648e68dcc" }, { "members": [], "class_hash": "0x7833dddc0296ff97ec9f1dc202d471ed80888935579f156737927c9207e0417", - "tag": "s0_eternum-ArrivalTime", + "tag": "s1_eternum-ArrivalTime", "selector": "0xd334451a97858d6173423408cd0c4da2a3878f6ec4f3909e134193d07682c4" }, { "members": [], "class_hash": "0x189b3d6d05402af89cfefc45b6c6ce579ab81ee7da7cce1fdf08ecb881de732", - "tag": "s0_eternum-Bank", + "tag": "s1_eternum-Bank", "selector": "0x6f71dd64e5e14a5ab47d15cfabd84490061490c8c203993790f30cafd5d117e" }, { "members": [], "class_hash": "0xa7a02d408072e5f97ebf3f0d69acb4fb176223379091948a452c10c314a0d2", - "tag": "s0_eternum-BankConfig", + "tag": "s1_eternum-BankConfig", "selector": "0x2a507ce5bff2ddf50eced9c753dc0a160ba64fc6efe3be4cb26ce51210e2b81" }, { "members": [], "class_hash": "0x809fe36ec53a3cfa77f64648430007c5bc0bb148c31652b3956bb318a8f7ae", - "tag": "s0_eternum-Battle", + "tag": "s1_eternum-Battle", "selector": "0x28394f9c3c874b586a25bf96d137256eab0a702fc3f66aa83464a5a0e062172" }, { "members": [], "class_hash": "0x715169dd601b742605451b231c47de8970be609fb85f48115b01333766bedf4", - "tag": "s0_eternum-BattleConfig", + "tag": "s1_eternum-BattleConfig", "selector": "0x224e4f9b37ed3d9cc06297ea8507e62538b864a92232f0ec53a4c7a4cf6ccfd" }, { "members": [], "class_hash": "0x551b3f9ea6504a59d70f1fc420d6e20797bdfe822c7c5e8d5d0d6bff8ad679a", - "tag": "s0_eternum-Building", + "tag": "s1_eternum-Building", "selector": "0x74f3912ea921e93e11f5c8267c29d94f367b3c52840c0ec93292ff5d2374d6c" }, { "members": [], "class_hash": "0x3d1ed9f1e9280e3f046561cfb77244866cc919517e62762cef17779d91a9d4e", - "tag": "s0_eternum-BuildingCategoryPopConfig", + "tag": "s1_eternum-BuildingCategoryPopConfig", "selector": "0x7713338d5bb53067dd8a10c158385c2744d0dfba8260ddb0658394359b6b5e2" }, { "members": [], "class_hash": "0x6619a6a57a8361ac09e034d95d26df7608a1314a89386bfbc9fbbc385dfb090", - "tag": "s0_eternum-BuildingConfig", + "tag": "s1_eternum-BuildingConfig", "selector": "0x1f8462fbfd271244b0144b93124ee213e9ef6edec50e6fc4b0ea41d2b756d87" }, { "members": [], "class_hash": "0x2fdd5ae262983f3645779ab454a188dd555dcbc3dc3ceb438bf1ee7958b6c5f", - "tag": "s0_eternum-BuildingGeneralConfig", + "tag": "s1_eternum-BuildingGeneralConfig", "selector": "0x1fc4af90bddbc3edb2446f5839d3274131bd7023a2bde3aeddbe29769c0be84" }, { "members": [], "class_hash": "0x1d3ddebfe5bbb35348ac03a42b77be34ff050b5f60d5370ff5a6415d61f8a11", - "tag": "s0_eternum-BuildingQuantityv2", + "tag": "s1_eternum-BuildingQuantityv2", "selector": "0xe74ab1d939c8b4763331ecee9187cc91e4a363228e596e0a655667aeedb117" }, { "members": [], "class_hash": "0x6cafd04dceeb148a4f3cdb0fc76083c74677f11a046f3be2a50cc22279a8074", - "tag": "s0_eternum-CapacityCategory", + "tag": "s1_eternum-CapacityCategory", "selector": "0x166cc667881fc0d333660d7668601cf536082cc577b720cea8be0f24549473c" }, { "members": [], "class_hash": "0x3a19b4d090591b5be5a300e1fd02e3b0d52bc20b30b47d7a0255a48a678e29d", - "tag": "s0_eternum-CapacityConfig", + "tag": "s1_eternum-CapacityConfig", "selector": "0x4bb69cf85cfa897830312e40bb75ab1c0f58c01cbbadf4e835ee5fa37d1bb2e" }, { "members": [], "class_hash": "0x105a94789b0a8342a90b8878fa4f06553af01b9416d86a0a80d65fc169d3092", - "tag": "s0_eternum-Contribution", + "tag": "s1_eternum-Contribution", "selector": "0x48fb552387fed5f3f7bcb55468f85ac92efeb06817e5f5e329358b69b4a7d6" }, { "members": [], "class_hash": "0x56087bbaf3245d64e62c0afd732ffdbe7584493d1a39316a09082182d809da1", - "tag": "s0_eternum-DetachedResource", + "tag": "s1_eternum-DetachedResource", "selector": "0x34cc163b0f7a78e671da441bbbfe6dd3632f7f62cbee8e1734c6dec2971478c" }, { "members": [], "class_hash": "0x71b9c7843ab6be7de6ade56f21be309f9bf08a6e4fc33318dd9f43307e1008", - "tag": "s0_eternum-EntityName", + "tag": "s1_eternum-EntityName", "selector": "0x4ea8f072e356080ed18f016cbb7f0c43807c733d037c3ad9e52da5fd98e11f0" }, { "members": [], "class_hash": "0x2d0dd3c37fa25edc072c4fd231c6ec51dbed2ea0304a334a8b47568d9a1ec4f", - "tag": "s0_eternum-EntityOwner", + "tag": "s1_eternum-EntityOwner", "selector": "0x19fbc5ce760d680c185bbefb04a4b1870a4f23bc8fda0fbf77b4a241b7ce04a" }, { "members": [], "class_hash": "0x76ab75f20ec824383b34afe1315ec9e59fe9f23599086b354f43e3c08aa8e24", - "tag": "s0_eternum-Epoch", + "tag": "s1_eternum-Epoch", "selector": "0x62827d2605e74e8c4ea2f40a6407477a0eae355a2e6485261acbc95e3219fc3" }, { "members": [], "class_hash": "0x22001c3a27555a192b0a134e76a443707ca89af8fb7a01265473cd609b04a41", - "tag": "s0_eternum-Guild", + "tag": "s1_eternum-Guild", "selector": "0x49ac80c25fa65d45250f4dd7a253dd79561a9460e108c173aa413ef246c3e6b" }, { "members": [], "class_hash": "0x2ba8f917f23ee021008384816f0ad038a1cae8b004c53e18f6bac455ec9efa6", - "tag": "s0_eternum-GuildMember", + "tag": "s1_eternum-GuildMember", "selector": "0x517c08e6a498a5a56742edce432fd533bc4cb16589acf1bb025999a5cec0e66" }, { "members": [], "class_hash": "0x2f72606313ed3fca8c1d6ec0257466e6b9301cc9fba8ec67d114f7fab0dc23a", - "tag": "s0_eternum-GuildWhitelist", + "tag": "s1_eternum-GuildWhitelist", "selector": "0x5da3d8f80bab03feaa3c5158e1e4584b6b5e213a0feb4d4125798f73b4a528a" }, { "members": [], "class_hash": "0x111b1a81032822367c6d57b2fe7b2baaaf8304ec0f8075bda6dd83b0827f35d", - "tag": "s0_eternum-Health", + "tag": "s1_eternum-Health", "selector": "0x1aa97583b6abc29f779ed14e03d820d29e64168389ca94367abf35ea7f103a1" }, { "members": [], "class_hash": "0x6277bc0b34ccf11b00b086ca2c7e83a5ac144532b6b4f843caddfcf01c02327", - "tag": "s0_eternum-Hyperstructure", + "tag": "s1_eternum-Hyperstructure", "selector": "0x5a47c8b59e367cc045b847bd4f63955ceeeffbc43055ecd11d2d77796bddd73" }, { "members": [], "class_hash": "0x1f90aa30d9d5d978f71b991daa57bc5ce51070034c3c3749c3378eae720e1b5", - "tag": "s0_eternum-HyperstructureConfig", + "tag": "s1_eternum-HyperstructureConfig", "selector": "0x538fcd59a65ece056337c3f4563a41b0922e14c0892d9e0f2e9980716487be3" }, { "members": [], "class_hash": "0x4f85a565011171be648bda2095b1448773804f29d967448aa2fa81554cbfab1", - "tag": "s0_eternum-HyperstructureResourceConfig", + "tag": "s1_eternum-HyperstructureResourceConfig", "selector": "0x3841ccb4835caa2dd2433ed893d593a63d74afea4ec67eccb905df41d6b95b1" }, { "members": [], "class_hash": "0x7dfe538eaecf8e98fc578ef98c8766c050d1e6fd853f2a663a42d99813b4e23", - "tag": "s0_eternum-Leaderboard", + "tag": "s1_eternum-Leaderboard", "selector": "0x2feedf0fc0a7bb2c53a51fee44e1c8a2cbf182ed000b57865c108eaaa463bcf" }, { "members": [], "class_hash": "0x792ff7a8ffffbaff0859d84e2d87ee5a71996bfeb349248cbf63d7dd1b8a1f4", - "tag": "s0_eternum-LeaderboardEntry", + "tag": "s1_eternum-LeaderboardEntry", "selector": "0x446f6cb1881e354935007b6a51033216f2f66cab52573d1bb2a03d7bc7fb4fb" }, { "members": [], "class_hash": "0x3d74e8cac527985922387788dbf8d902a90ae15d21468719ba2d5f7b74cc881", - "tag": "s0_eternum-LeaderboardRegisterContribution", + "tag": "s1_eternum-LeaderboardRegisterContribution", "selector": "0x751fee2d8620c3b1f24b201044ac4414a808e5cc57cbf99b305a66ac3dc6334" }, { "members": [], "class_hash": "0x671185f10d3a8d6917e10b6c8686fbc556755e8eb7fe8b871e9660db26a16db", - "tag": "s0_eternum-LeaderboardRegisterShare", + "tag": "s1_eternum-LeaderboardRegisterShare", "selector": "0x2781c647b95b04aba3e293318e83e5ab139e95a13630336badd83197225f679" }, { "members": [], "class_hash": "0x6a6b0e38324523a4d7c9406ad059adc0244353ae86fdb28589419643152d42a", - "tag": "s0_eternum-LeaderboardRegistered", + "tag": "s1_eternum-LeaderboardRegistered", "selector": "0x3d2cbb167883a8ff584dad6276fc1df0b7757d5e2282f1658d746a8c936116b" }, { "members": [], "class_hash": "0x19baf80e6ba59bfb8c94643f2ed7c15e902d00d313ac92c90f4071e3ddf0129", - "tag": "s0_eternum-LeaderboardRewardClaimed", + "tag": "s1_eternum-LeaderboardRewardClaimed", "selector": "0xc7744e31a4ae5a2f24008b6147fac5c735bfa7fc4bbff8224f2833f73a8e93" }, { "members": [], "class_hash": "0x1a812bd54f7a074e8a1289ab1d7e41e659ef15c607d934abfeda35d987a834", - "tag": "s0_eternum-LevelingConfig", + "tag": "s1_eternum-LevelingConfig", "selector": "0x57307c2d18e8c1e060fcb4cc9d63ce0abfa90f9e9bca63f00fb08a8b6a6584d" }, { "members": [], "class_hash": "0x465e09976306288f9d5ba76464636aa3570b50d3dd537e62df642524007eab8", - "tag": "s0_eternum-Liquidity", + "tag": "s1_eternum-Liquidity", "selector": "0x88855562f77d4da524f33db24ad881dd1c3b4d809fa37d2508b5ab1fd4310e" }, { "members": [], "class_hash": "0x3acaf90122ee7bec0d7e0c29b9d227fb3f7576661157acf5817d2875acdeb24", - "tag": "s0_eternum-MapConfig", + "tag": "s1_eternum-MapConfig", "selector": "0x1c44934bf878736b0ffd224a4d0065ca92072daa6e846de657f58b7b5a4374a" }, { "members": [], "class_hash": "0x1c99e7ffe68d55ac3fc421eb979fd5d7d197d6dc99cc8893fcaae5abbaedfa9", - "tag": "s0_eternum-Market", + "tag": "s1_eternum-Market", "selector": "0x18457324069342b71d49b485b3b2ced814726c5a978581a172dd806de3d9bac" }, { "members": [], "class_hash": "0x16eef0d1d4096a35efebc74a9c8254cb8c1af27a8c7d22fda96edc796b4cdac", - "tag": "s0_eternum-MercenariesConfig", + "tag": "s1_eternum-MercenariesConfig", "selector": "0x7983d4a611b82abb59e4320d8032fcb84f3c372c60c83a01d680f14f64bd3c6" }, { "members": [], "class_hash": "0x247307d7e5299e6b3ce6377a08a9d41497229eaa6a9e591858d0a088c61af4a", - "tag": "s0_eternum-Message", + "tag": "s1_eternum-Message", "selector": "0x3262fb0b2f51323ea7116e1ef4735a6e1be97bc86bbe19fcba298d0edfa0c5c" }, { "members": [], "class_hash": "0x355984d124ab086115f9b6855c05a7c6ab416e01a45e57a08e13b28ec7db02d", - "tag": "s0_eternum-Movable", + "tag": "s1_eternum-Movable", "selector": "0x354103241a35f6b87bb0e9c4ac055975dd5324a93ab74b5b30edcce0067c59" }, { "members": [], "class_hash": "0x51b6a84422ddfda104af1cb45bbce0609edd265d2b909237ec37dc7aa5a2afd", - "tag": "s0_eternum-Orders", + "tag": "s1_eternum-Orders", "selector": "0x2b8ed5e03d3934c534f66fc8194cd3cc112003028691019c9d1dd5ceacf6bc" }, { "members": [], "class_hash": "0x787159e5bbd67c0eba40db3b4984a9b1ace232ce3991bf96abb6a964b57d2", - "tag": "s0_eternum-OwnedResourcesTracker", + "tag": "s1_eternum-OwnedResourcesTracker", "selector": "0x50b64757716328c2639f72f641130df11177b01695167ec2ffb63f4c5ac8c93" }, { "members": [], "class_hash": "0x6943ea1c8aee5d7749a85d2e333a8d97dce8d1d661e5bba0d93c850ab33d7da", - "tag": "s0_eternum-Owner", + "tag": "s1_eternum-Owner", "selector": "0x2ac70068901471291f27e386276bb51ce50c89e144a6e8e11d4f91b78236241" }, { "members": [], "class_hash": "0x77effa7d6e9cdaf053e31ddb864c29cc587e756673d8a2bdc8b919ac8eb0373", - "tag": "s0_eternum-Population", + "tag": "s1_eternum-Population", "selector": "0x999f9ad8790ee0ec873b5e149fa1ef1054039e90bba49ac4975ba2cdb54429" }, { "members": [], "class_hash": "0x58397e297c6e9d5fb96965dd7241321667199c25918efeb27bbb830ab0948c3", - "tag": "s0_eternum-PopulationConfig", + "tag": "s1_eternum-PopulationConfig", "selector": "0x5cd485b0e678c36a4a14b0fcf5880e58e206c5b8199c9640d88f5ea86efe9b5" }, { "members": [], "class_hash": "0x4953b4f720c6479aae4d8b84b2d749ad5ab816f03e6ce500d5bcf609c59e77c", - "tag": "s0_eternum-Position", + "tag": "s1_eternum-Position", "selector": "0x77c1a504cea841ea9ee0819e994d66d453d0652ecb7a51e80682ff8abd57f65" }, { "members": [], "class_hash": "0x681143e22335e72474d3921e0c0de14be253faa5b5c5c46a4adb8ecd3e2f6c9", - "tag": "s0_eternum-Production", + "tag": "s1_eternum-Production", "selector": "0x12c4d44e2b854c8481b4da2b2dcc648b3a9d4e9006b4143acfedbd6aa8641db" }, { "members": [], "class_hash": "0x2ae1387960b8602eab9567676f73317344ae7ded34e9fc0c012966e8d3cf2ce", - "tag": "s0_eternum-ProductionConfig", + "tag": "s1_eternum-ProductionConfig", "selector": "0x520a8a0dec76799ca6b1198154f32247aa76da785d2cc7a56dabe401f80416c" }, { "members": [], "class_hash": "0x429e0c7c8e81306023b8d502d4e7737646720b8769a13581d54e99b76a6052e", - "tag": "s0_eternum-ProductionDeadline", + "tag": "s1_eternum-ProductionDeadline", "selector": "0x18bea71025a244df48319cca495154feeec10353885e4e9b73aa18239584fee" }, { "members": [], "class_hash": "0x7c98db7992d639ca0be54bd97dd342e80e4b5a8f9fab93fa3d37a5c027eb8ef", - "tag": "s0_eternum-ProductionInput", + "tag": "s1_eternum-ProductionInput", "selector": "0x3df010b82ccfbdd80db14af6e47dc79038aec508f795b9d0f9968edba040c07" }, { "members": [], "class_hash": "0x297e32982827c7ca0e9950f7ab0593a7334289d004cff93809522a45774d858", - "tag": "s0_eternum-ProductionOutput", + "tag": "s1_eternum-ProductionOutput", "selector": "0x5ad2bb76ff0fcf39f0a6399770ae2f78b6999f03e5c9b9aa7b2216477772ffe" }, { "members": [], "class_hash": "0x3736456c345cc770abd64231513bd58269d6fb382e48c411be7bb5c66a54322", - "tag": "s0_eternum-Progress", + "tag": "s1_eternum-Progress", "selector": "0x2b63dd696d82b19fa1421e9e47be1c573b761c39f6b58c0d14ed0c562f26b3f" }, { "members": [], "class_hash": "0x375116ae74219639eab6fd408cdd263e4c6c93fb0b544d3ba3ef8e876ef561", - "tag": "s0_eternum-Protectee", + "tag": "s1_eternum-Protectee", "selector": "0x2ac4b9ed0d69ae66f6feff3272811293fa6e8196bd602183271d07ae7a5d3bb" }, { "members": [], "class_hash": "0x3eff2b8014606f2522063b0803a9f0456c0be34f4ec6b7f31d2b0948a4aa0c1", - "tag": "s0_eternum-Protector", + "tag": "s1_eternum-Protector", "selector": "0x72426f978a43c915d92511ce3efb7fdd6c962f4344e37d38ed00d0d95eb37b5" }, { "members": [], "class_hash": "0x7577aac22db1cb4db007701d6292ed0edddb54a27a947f2fdbce4615cb0c178", - "tag": "s0_eternum-Quantity", + "tag": "s1_eternum-Quantity", "selector": "0x399416904300b2d9bc98601f480dcdd403fac4845279504082f1775505fb41" }, { "members": [], "class_hash": "0x2c17a1b5a72fc1c99fcc98629008b8cf539162e67a39813fadb9f407e20b2fb", - "tag": "s0_eternum-QuantityTracker", + "tag": "s1_eternum-QuantityTracker", "selector": "0x29c1ad2966a8d135fb73179ff12b872776a13fef4e7dcc14955f71950ad65aa" }, { "members": [], "class_hash": "0x3c9e64e617d829d6ef52f3cc63ee1872892697641ece5c3562494655751ee92", - "tag": "s0_eternum-Quest", + "tag": "s1_eternum-Quest", "selector": "0x7be72bb5626ead15f8756586fc89f32ca4e65fcbe00e8d49a222d94460b40ac" }, { "members": [], "class_hash": "0x6d7d41fa73f6a0cafcc95b905c394f420dbe512afb245f63c5aaf9d440c1c90", - "tag": "s0_eternum-QuestBonus", + "tag": "s1_eternum-QuestBonus", "selector": "0x3e946c05a7448654a3f0f8e3983c98daca1d6727d3a595076b232f21aa9bf61" }, { "members": [], "class_hash": "0x6d7fa03d466e40e61eb5f9e8920ed1723e386147ece32faabfe48a3d96d8acb", - "tag": "s0_eternum-QuestConfig", + "tag": "s1_eternum-QuestConfig", "selector": "0x10baf692d4bb6ab5fa51d3bcdb33b443bbb89178f74ad35c0f39df34972d97a" }, { "members": [], "class_hash": "0x5c8dbcc5c43eef6f7bebe035cfab3f0d97fc98cb7468c27494032ee7c477682", - "tag": "s0_eternum-QuestRewardConfig", + "tag": "s1_eternum-QuestRewardConfig", "selector": "0x1ee6b0ff29db9cdeecda6f947a65007ef951ac7b80242fe22cbc641bfcd24c5" }, { "members": [], "class_hash": "0x442cd0a9cac38ceadfe1f6ff64cf9df8a08036e1aa83e9fc8afdb34cb94af86", - "tag": "s0_eternum-Realm", + "tag": "s1_eternum-Realm", "selector": "0x73d618f4cfd6974371417e6fbe450ff219d703d52cd92acd3e0362d18754876" }, { "members": [], "class_hash": "0x37903a2f2a111216ca18f3d52cd3b7ac241700c929d0f532d82c8d0eef0db26", - "tag": "s0_eternum-RealmLevelConfig", + "tag": "s1_eternum-RealmLevelConfig", "selector": "0x7430cd339058f757d8da2972d4609124b232fac288cd84efb4975ef17783fa3" }, { "members": [], "class_hash": "0xb05b9f8bd0de85e837c571d3b7555c1dd54b8601049eb250f25193581a3813", - "tag": "s0_eternum-RealmMaxLevelConfig", + "tag": "s1_eternum-RealmMaxLevelConfig", "selector": "0x454f0915256598d53f9fdd192a32a5886d2b006532ea05b1981694951e62fb7" }, { "members": [], "class_hash": "0x6e316e67743d138e6ee73ed2a1e6f6e9b814a888ca4e06d61d066853949c906", - "tag": "s0_eternum-Resource", + "tag": "s1_eternum-Resource", "selector": "0x6d9f80d9fc8d932eaf382b0dc61539511e229b2dec5a275dfb836095d8f0521" }, { "members": [], "class_hash": "0x63b70cb7538cdbf5d9c29df596130839d21a2a3327cea598931b590d0ad3199", - "tag": "s0_eternum-ResourceAllowance", + "tag": "s1_eternum-ResourceAllowance", "selector": "0x5d040dde8317e13b9643f324a18afc64c5044e79569552f8496e919c312b44a" }, { "members": [], "class_hash": "0x2e09899ffdc52704cf7d5881b2b9576b99ac5d1a0939caaa79ba005f941ef8c", - "tag": "s0_eternum-ResourceBridgeConfig", + "tag": "s1_eternum-ResourceBridgeConfig", "selector": "0x462f28b5568fb3e258400d85241d45cd31e053723d029bb0a3542da9ef2ece6" }, { "members": [], "class_hash": "0x7773a272288d8f6746b61d40015b44f451a5f4418785ebb893cdd8a3f101924", - "tag": "s0_eternum-ResourceBridgeFeeSplitConfig", + "tag": "s1_eternum-ResourceBridgeFeeSplitConfig", "selector": "0x33b2e568d65393f26dffa1e9fcb1c8e5aac80bf8ecd96a62c56fa7626d08d4a" }, { "members": [], "class_hash": "0x69f85789f3cd09073415acea848b4121fb7ab57660d65efc0902f9b9088cfec", - "tag": "s0_eternum-ResourceBridgeWhitelistConfig", + "tag": "s1_eternum-ResourceBridgeWhitelistConfig", "selector": "0x291a767dc981735be14609c8ef267d33c389f58393358ce20f757680d065bbb" }, { "members": [], "class_hash": "0x5ca96e7981e9fa033962a04953fe271d795fc28a77dcd09d5271d8da3714c9f", - "tag": "s0_eternum-ResourceCost", + "tag": "s1_eternum-ResourceCost", "selector": "0x15d8989d3b9ba9d2d089e1e920d2d0c428811ec0ac77b09ab12bfc3b42121d" }, { "members": [], "class_hash": "0x1c08b438614f48ce953db0bd0621cc61e499be8dad256a681d0f8981525fee9", - "tag": "s0_eternum-ResourceTransferLock", + "tag": "s1_eternum-ResourceTransferLock", "selector": "0x7deca04dad26fe5bed5def8be8e9fc199906496dfe2aa982e9cd11fe35300b" }, { "members": [], "class_hash": "0x1661ce7179939f89588fcf3d6ea91416e265772e6cdca45dac1441e4b3db807", - "tag": "s0_eternum-Season", + "tag": "s1_eternum-Season", "selector": "0x4f8865388e8136115c535f8be3bca980cc55ce5cde180fdf43877a9ac42cf10" }, { "members": [], "class_hash": "0x5908399449b220b2799f9c6c1d90531548d6a921676a73d5b18e3c73211349c", - "tag": "s0_eternum-SeasonAddressesConfig", + "tag": "s1_eternum-SeasonAddressesConfig", "selector": "0x2d1f2883267358910522f3abc2d86e377bf44b7a85eb1ce9a9a936af9872400" }, { "members": [], "class_hash": "0x6f19a8e8f55464fb398bf457038b10a01d6cfcf5051aa6c7a7296024fc78f9c", - "tag": "s0_eternum-SeasonBridgeConfig", + "tag": "s1_eternum-SeasonBridgeConfig", "selector": "0x67d6487b53941b5d6614c1f8f8fd0c620904fffed74e740a95f99485854896e" }, { "members": [], "class_hash": "0x68dbc517a95bd1643828c7f03c53b34cc6a2b9ab364825b676b19245380bec4", - "tag": "s0_eternum-SettlementConfig", + "tag": "s1_eternum-SettlementConfig", "selector": "0x2df09676383e67499863f6671e25031b67c0344b2d3e2177081d16640cef28b" }, { "members": [], "class_hash": "0x5a674566f968363982331c6e454e8046e123ce141cbe9ccb031a6f44d7fab3a", - "tag": "s0_eternum-SpeedConfig", + "tag": "s1_eternum-SpeedConfig", "selector": "0x7f66a20a5fc5f3b3a3b77fa1a3f8c30cc0a5e7fe03eed54a4c1f3a50d3421a4" }, { "members": [], "class_hash": "0x5c31bd0ec3923ca88f01ac658fcdfc8e8e73d22f4362b96a5ee55ae5232a2c8", - "tag": "s0_eternum-Stamina", + "tag": "s1_eternum-Stamina", "selector": "0x39518c19003fa9f7525361cc92b886b541122d0ef323ad02f0a5ab8baf1dd4b" }, { "members": [], "class_hash": "0x4e57c7bc107c4d7f740589732138414790b76320bb831fc912d0ac30d699738", - "tag": "s0_eternum-StaminaConfig", + "tag": "s1_eternum-StaminaConfig", "selector": "0x72604cb9cc861ecdb0e70b00137564390c5ccafde0d9d37ba014122e9288df9" }, { "members": [], "class_hash": "0x68eaa4e6a99462bf94073ba9b2e3a580b4db9170d28f47cfdefb47023e91eb7", - "tag": "s0_eternum-StaminaRefillConfig", + "tag": "s1_eternum-StaminaRefillConfig", "selector": "0x269f27b58ce568cd0a1187c785445f746a959f915fc35b999aaf2afa95c04b9" }, { "members": [], "class_hash": "0x6d8349a51048775ad58a5e14c77606d882ab3a4d18f5a1b59138d973156b8f6", - "tag": "s0_eternum-Status", + "tag": "s1_eternum-Status", "selector": "0x6819b601c22df29790f76f061612ee4c23e6d77cf850a685fa8c7ea6defe1bb" }, { "members": [], "class_hash": "0x3669757d103c83f6fca79bd6c75a49d8a273fb92dcf6bba1ab4ccaafa6137ea", - "tag": "s0_eternum-Structure", + "tag": "s1_eternum-Structure", "selector": "0x67d49b2755ef1c37f1efaa29dcd3b4c483691d9a969211f49bae940e757b033" }, { "members": [], "class_hash": "0x6e04e36fce10b6885b2180899d40134304afd733807bf45183839c37276d44d", - "tag": "s0_eternum-StructureCount", + "tag": "s1_eternum-StructureCount", "selector": "0x2add29083cc23bb0da9d45470d574877e3a63de4eca3730bfc35fc32d7256bd" }, { "members": [], "class_hash": "0x229093b1da22e9f70eb9818a6873854bc5f7a9c3c254b32e33b8ac8ef7e6a78", - "tag": "s0_eternum-TickConfig", + "tag": "s1_eternum-TickConfig", "selector": "0x3dacec234467fc19b55d08363ec6c5128d40513e9c785cc8d6fa96a10e1e2fe" }, { "members": [], "class_hash": "0x4789f1e5905969a83009f355f5e2bc6882f5228f2dff1beae21f6c315f4d3f1", - "tag": "s0_eternum-Tile", + "tag": "s1_eternum-Tile", "selector": "0x2be20d4e39863a5ae902d8a1d7d218f011bc5fd0b144656c1ec555e95939d7a" }, { "members": [], "class_hash": "0x4a83f3518a2a3b7fd4a69303275fc35dc9d5b08d3b3bf19a6ec9cb8779b34b9", - "tag": "s0_eternum-Trade", + "tag": "s1_eternum-Trade", "selector": "0xb8f1c0b8b5c9b646a2275babf4f493a4dd50440775aa1a52f07612a3f699bf" }, { "members": [], "class_hash": "0x35b1c94e4a2c44b7484df407cba0df8042fd2c8bb2cb7c14e3a54b5c78f9724", - "tag": "s0_eternum-TravelFoodCostConfig", + "tag": "s1_eternum-TravelFoodCostConfig", "selector": "0x5effa64ae71be8b1d19c231fefb1056039306d3b1d8885baed5f774d4da2a9a" }, { "members": [], "class_hash": "0x24f902eba1a1f00afbb06c6d6358a5b9d9831e5f01fa19d20d54e4610d266e2", - "tag": "s0_eternum-TravelStaminaCostConfig", + "tag": "s1_eternum-TravelStaminaCostConfig", "selector": "0x49e464fb66d305b9b58610bfb89bed1df4e2cde87f523936e71e5fa5562f9cf" }, { "members": [], "class_hash": "0x13787b670988065ecde86c7622e4dfc79e9752b1b093e22e81cb9797af3eaa0", - "tag": "s0_eternum-TroopConfig", + "tag": "s1_eternum-TroopConfig", "selector": "0x6ae523bfd49a164bfc5949f568674f7b4e09cca39f55d389d398f159b363178" }, { "members": [], "class_hash": "0x6effa334a8558bcffbb55620d842fe9fc355a497100768c7ebeb1e5f01c85d2", - "tag": "s0_eternum-VRFConfig", + "tag": "s1_eternum-VRFConfig", "selector": "0x325d18df666336f28e2027292fb9164e890d520368b4e150d3fffddb95b2304" }, { "members": [], "class_hash": "0x239c7e9007b36b7105d01e2d5fb2cc87a2f0123cf02308d78299fb1b2c0286b", - "tag": "s0_eternum-Weight", + "tag": "s1_eternum-Weight", "selector": "0x3af9b99c6bed5e58f52a76ef3616395e8ae96acee151395134ab5199fe5b36a" }, { "members": [], "class_hash": "0x342088461be2657e2281e9f5a773aa8e7c6584dd62e125edf4ca71e39400e57", - "tag": "s0_eternum-WeightConfig", + "tag": "s1_eternum-WeightConfig", "selector": "0x5b42c2cdd790597f7f8125e69d38f2db0469a37ba2a436c5fbc6f54ab16f2a6" }, { "members": [], "class_hash": "0x3f493c16b07f9edf224672fd7d0a1766b42863e70e08e4ce21f8b9368a95486", - "tag": "s0_eternum-WorldConfig", + "tag": "s1_eternum-WorldConfig", "selector": "0x2640c924e58d9c307bff3a21564eeccf889b9d22e9d1b99eaf3d3ca79ba29e9" } ], @@ -9605,158 +9520,158 @@ { "members": [], "class_hash": "0x308165ad0fe528e9f62f91851e42cd02186c284133e0f716bf618e2a89a064", - "tag": "s0_eternum-AcceptOrder", + "tag": "s1_eternum-AcceptOrder", "selector": "0x34724f2592dc93feb914074bbe4e6abc093e7ca15f6755824c7f694662853fc" }, { "members": [], "class_hash": "0x4fca4dcdf02fdc00635fdbdbfa78b928f907e5a82f58e24f17e95ec9d9e2475", - "tag": "s0_eternum-AcceptPartialOrder", + "tag": "s1_eternum-AcceptPartialOrder", "selector": "0x34b84575baeaa398556ab0a3889fabb7b08d2520d8838734eaf12282776900b" }, { "members": [], "class_hash": "0x56a5736da894e6774c628874b21f414a2c4f035065b75e36f1c7facd27420ee", - "tag": "s0_eternum-BattleClaimData", + "tag": "s1_eternum-BattleClaimData", "selector": "0x41d29e106dc5491be952bbe2faaddf7f61d2822a533f17116600e7ef9c76c18" }, { "members": [], "class_hash": "0x1aab9d5811dd52241b604e734cd3527f3723320d2e8a16d8d2f9ab9657cf07a", - "tag": "s0_eternum-BattleJoinData", + "tag": "s1_eternum-BattleJoinData", "selector": "0x4410ca9a121bdc7bd8847dc77b08361cc88574ae4ff18bdfb1f56ebd168a377" }, { "members": [], "class_hash": "0x483a25c8985f722179db7ab176625c2f0415004e315c89ddd569a546c0ff352", - "tag": "s0_eternum-BattleLeaveData", + "tag": "s1_eternum-BattleLeaveData", "selector": "0x817ae7123b2cf2c241e4a1cee0acb2a6537270d32f68da46c222a19b7a6b7e" }, { "members": [], "class_hash": "0x6bd170bb8c9642bd582be27066fc5baa71ab6a5c989b6147c16b7187ae8b2de", - "tag": "s0_eternum-BattlePillageData", + "tag": "s1_eternum-BattlePillageData", "selector": "0x1e6374e36d81091d4c72eb16936e2afc86ed695397fb5fc54780a01187bfbe2" }, { "members": [], "class_hash": "0x75e03d907604ffc855f6fa954001870813f8731f049aa1a65b4fc0335b53989", - "tag": "s0_eternum-BattleStartData", + "tag": "s1_eternum-BattleStartData", "selector": "0x39cee4993b5b6698ea69be399295a54faabb31613ddc297bd452b7db0c79081" }, { "members": [], "class_hash": "0x53ea30ee96d0e5b7eefcd0b3c5ff8ec23062b6a8af282c235dbd06db0c4d77", - "tag": "s0_eternum-BurnDonkey", + "tag": "s1_eternum-BurnDonkey", "selector": "0x61be67037fa3f9fa7655102f1fe0c3f35d352d5919aba6a204b0af556649e55" }, { "members": [], "class_hash": "0x3cd551d7e4b53f2b4afcab56040f3dfff20f2dd3e75f346c4f86f15d6f2aab8", - "tag": "s0_eternum-CancelOrder", + "tag": "s1_eternum-CancelOrder", "selector": "0x37baed7c5d5da7ddcfe014daac5b3f37b4b959b832e8c4c70df06c8b530478" }, { "members": [], "class_hash": "0x54ebf96034d04a3febfaaa17372961a8746cdb440f451d4e3acfcedd4992db6", - "tag": "s0_eternum-CreateGuild", + "tag": "s1_eternum-CreateGuild", "selector": "0x55a0213c9d81381326def8de071ea32d31f412ae525cb58b8b2a29cdbf3821" }, { "members": [], "class_hash": "0x3da4824e6b15595ea7c4906de6ae545f1de3c6997655c55fa040d9bc466fbcb", - "tag": "s0_eternum-CreateOrder", + "tag": "s1_eternum-CreateOrder", "selector": "0x6cd5deb58306ff9ed529e7e496193ac3b8dadc4927768951a16afd5cee79291" }, { "members": [], "class_hash": "0x411bb0ec4ce2af05182f278331717c86aab7b154ea844fa05f5dc693b4f5f65", - "tag": "s0_eternum-FragmentMineDiscovered", + "tag": "s1_eternum-FragmentMineDiscovered", "selector": "0x5afb247cb5972fc84d96b10c69f31a96666642065816bfa74f4d0fdd715fac6" }, { "members": [], "class_hash": "0xf00b2af42e9108761ad47e50a2605c55203a83b342235def07252a85d6db85", - "tag": "s0_eternum-GameEnded", + "tag": "s1_eternum-GameEnded", "selector": "0x7552b1455aaf939a5cee7dfe7d65ef0341647b2b1dc97bbdac22e38f81b6f75" }, { "members": [], "class_hash": "0x5cddcd628958870243552341afbf5859b87d5f623d9ccec87fc217218301da", - "tag": "s0_eternum-HyperstructureCoOwnersChange", + "tag": "s1_eternum-HyperstructureCoOwnersChange", "selector": "0x16aa9c3ff1e2229ec3989607dee034c26f555386c3fda2f57ae23a5da08bcd2" }, { "members": [], "class_hash": "0x5bf722c02c026a13863bc061f7f31d3e9a94a409e60a0b020355c621b3c8848", - "tag": "s0_eternum-HyperstructureContribution", + "tag": "s1_eternum-HyperstructureContribution", "selector": "0x11b57482819f44946c794b42bb3d6f9b5111e416abddd5590e48933db4e8c1c" }, { "members": [], "class_hash": "0x3a5f236a8854f32ed034b3f68bda881b3a28be9b2f5563fbd479ee415fa489b", - "tag": "s0_eternum-HyperstructureFinished", + "tag": "s1_eternum-HyperstructureFinished", "selector": "0x18188e073773854e47229a73718f205c22955838714d847ff4bab4ed315852c" }, { "members": [], "class_hash": "0x19167b2efb0019a2d2547e6b97653c2e44eaa0648110a8d0492857d48f7628", - "tag": "s0_eternum-HyperstructureStarted", + "tag": "s1_eternum-HyperstructureStarted", "selector": "0x524d52c11289b16c879df0675bb7168b4556196e805130884ff7399568955f4" }, { "members": [], "class_hash": "0x10489827f673705da04f7c52b54164e01679958dec37bf8c97f45b6229adde", - "tag": "s0_eternum-JoinGuild", + "tag": "s1_eternum-JoinGuild", "selector": "0x490fb23242de6839d879e576254121a224786783b288f05e8e57e942f0d0c44" }, { "members": [], "class_hash": "0x1de238739f2586354bfefc4c7d49a8e392b3c911515c9ad6445e96027a0dcb3", - "tag": "s0_eternum-LiquidityEvent", + "tag": "s1_eternum-LiquidityEvent", "selector": "0x5ca594f7a676a13c4b15d34ffd0e922bf64e127d0fa6b6a9bd29a4bb6dcfd19" }, { "members": [], "class_hash": "0x6f57b19aaa43496f97785e8d6b18e21dc116bbd690e54a4fd03ccbb98ae760b", - "tag": "s0_eternum-MapExplored", + "tag": "s1_eternum-MapExplored", "selector": "0x5238d4838007cb371e0a62aff2a2d4241868fa579edc867125fa71c493fb2c8" }, { "members": [], "class_hash": "0x65b91709428bb484001943f1662d614fb4b6318b3fca1c4ed4b2fe53d822f6", - "tag": "s0_eternum-SettleRealmData", + "tag": "s1_eternum-SettleRealmData", "selector": "0x11b4babbcafbf1834c8e535877d14f1fc5dc0bd0b126a97a98bb1093d30e873" }, { "members": [], "class_hash": "0x4db6f101a1cff37f8e4709053f1ae4c1d8b8ec3dda5a2284b606439d051fb86", - "tag": "s0_eternum-SwapEvent", + "tag": "s1_eternum-SwapEvent", "selector": "0x783a3cc6562fe31ae83bac3e69e636d8b58c357d5d3621c6d2e5d74da51e5db" }, { "members": [], "class_hash": "0x6059f5ee6fd551e038f65eac650a50c7af4401d3ce90cf257693b3eab27b8a3", - "tag": "s0_eternum-Transfer", + "tag": "s1_eternum-Transfer", "selector": "0x4ff88ec4fe7fc992e29c980b4c0abfb2c35ecacce7e63248c2731984995fcbd" }, { "members": [], "class_hash": "0x40aee82a2213fb870290370044eeafec0c98eb8953299883251f870a9fd1e4c", - "tag": "s0_eternum-Travel", + "tag": "s1_eternum-Travel", "selector": "0x4e45f9632599eeb9a25d0977cd5aebf8a4aa209fea4134a862e592d31e387c0" }, { "members": [], "class_hash": "0x6b38999d987627835d4c20e7e571c73d32ddc856786d9790a131bdb3372a246", - "tag": "s0_eternum-TrophyCreation", + "tag": "s1_eternum-TrophyCreation", "selector": "0x5633ebee65e16c483940f284a816ac8b31e08ddd3932f80db960a40573d4dc2" }, { "members": [], "class_hash": "0xf05f290a704ad2671544b391f0c33d50d6d43d468d52791282852a833a00c7", - "tag": "s0_eternum-TrophyProgression", + "tag": "s1_eternum-TrophyProgression", "selector": "0x5a8f3fedb72efc9d358b86574cf362f8ed1ec12a02ca9f276e6190f49191217" } ] -} \ No newline at end of file +} diff --git a/client/common/manifests/manifest_prod.json b/contracts/game/manifest_slot.json similarity index 84% rename from client/common/manifests/manifest_prod.json rename to contracts/game/manifest_slot.json index bec32075f6..e140d9497e 100644 --- a/client/common/manifests/manifest_prod.json +++ b/contracts/game/manifest_slot.json @@ -1,8 +1,8 @@ { "world": { "class_hash": "0x45575a88cc5cef1e444c77ce60b7b4c9e73a01cbbe20926d5a4c72a94011410", - "address": "0x3dc74e8caadbde233bb750a6608e095daba2891d9784ea0fb7fbf9988948c15", - "seed": "s0_eternum-11", + "address": "0x9dd5e66cfa83f893c2a70b9ea5221e2df18aaf52a111fe9003264f948c7aa", + "seed": "s1_eternum", "name": "Realms: Eternum", "entrypoints": [ "uuid", @@ -1252,8 +1252,8 @@ }, "contracts": [ { - "address": "0x52af4d4b243462e91f68309722dc42f9f970cdce2c80a4f0240b60c3f8dab44", - "class_hash": "0x78b9f6c5bf71c8f9fc992f0c3a955dfc17fa6384bd2857d5ba32206a354ff9b", + "address": "0x12dea4f1017885f3caf0f2307769bf7a22e1138756170d6b0089052287978d4", + "class_hash": "0x38b8eea12d619d5ef8dd3ce5fd038a6bef762b64d911a3e3947892f09ceaeab", "abi": [ { "type": "impl", @@ -1308,11 +1308,11 @@ { "type": "impl", "name": "BankSystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::bank::IBankSystems" + "interface_name": "s1_eternum::systems::bank::contracts::bank::IBankSystems" }, { "type": "interface", - "name": "s0_eternum::systems::bank::contracts::bank::IBankSystems", + "name": "s1_eternum::systems::bank::contracts::bank::IBankSystems", "items": [ { "type": "function", @@ -1455,7 +1455,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::bank::contracts::bank::bank_systems::Event", + "name": "s1_eternum::systems::bank::contracts::bank::bank_systems::Event", "kind": "enum", "variants": [ { @@ -1472,8 +1472,8 @@ } ], "init_calldata": [], - "tag": "s0_eternum-bank_systems", - "selector": "0x16cf356882260a01771aedaab01f8e3afdab764944c3c4d41c617cd76b91e6a", + "tag": "s1_eternum-bank_systems", + "selector": "0x44475a775d79049bbe99567b7c00a1e4d8d582cade61a8aec07ca3bb234f6e6", "systems": [ "change_owner_amm_fee", "change_owner_bridge_fee", @@ -1481,8 +1481,8 @@ ] }, { - "address": "0x267b8cc82862b1451652a1606629bcf3ad200973f0ca096493b4693f697c80e", - "class_hash": "0x201104f5060cf70aada2986e9569d578251884db4208862b88aa48bf491eed1", + "address": "0x352ce7d5737aaa6315bd01d85f0e03e6b52f533a3a4a89294f49cbb0b57bc07", + "class_hash": "0x2d35042bdc3fe8f799396ce2cf9c31deb666e63df2427688a4a8605e34d846", "abi": [ { "type": "impl", @@ -1537,11 +1537,11 @@ { "type": "impl", "name": "BattlePillageContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract" + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract" }, { "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattlePillageContract", "items": [ { "type": "function", @@ -1660,7 +1660,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_pillage_systems::Event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_pillage_systems::Event", "kind": "enum", "variants": [ { @@ -1677,16 +1677,16 @@ } ], "init_calldata": [], - "tag": "s0_eternum-battle_pillage_systems", - "selector": "0x9861172f7b864354b6e23d8971f0b054c518337a3cea854724658c43f9f580", + "tag": "s1_eternum-battle_pillage_systems", + "selector": "0x6e8963ce01de14fbf50434fd001ac86e45313c4d43e7a255192eb26dcb5d63d", "systems": [ "battle_pillage", "upgrade" ] }, { - "address": "0x1fd0b5233b521873898e99517a70f96a5023840692d189476c2550055fb8086", - "class_hash": "0x40e7660b0e34f56e08bbdf7573bc55eb94f9d88e580f76890c136f418aa60bd", + "address": "0x7cdc9a51cdeb4c7f1716345abc325fb8e7ebcd7cdceb1fa2083b97fe84716ea", + "class_hash": "0x1f9260c45aed95e060c98434c5922c5dfef7c82a62b47ae42496815c3dc6401", "abi": [ { "type": "impl", @@ -1741,11 +1741,11 @@ { "type": "impl", "name": "BattleContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleContract" + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleContract" }, { "type": "enum", - "name": "s0_eternum::models::combat::BattleSide", + "name": "s1_eternum::models::combat::BattleSide", "variants": [ { "name": "None", @@ -1763,7 +1763,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleContract", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleContract", "items": [ { "type": "function", @@ -1811,7 +1811,7 @@ }, { "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" + "type": "s1_eternum::models::combat::BattleSide" }, { "name": "army_id", @@ -1970,7 +1970,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_systems::Event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_systems::Event", "kind": "enum", "variants": [ { @@ -1987,8 +1987,8 @@ } ], "init_calldata": [], - "tag": "s0_eternum-battle_systems", - "selector": "0x28fc8bb4b5e0140b71566a257468e491e41a12f2f284cae6d4e731abd862067", + "tag": "s1_eternum-battle_systems", + "selector": "0x7bb97d7199b14973d6f05b84579bda637cef5714be078064da3cb80d273c79b", "systems": [ "battle_start", "battle_force_start", @@ -2000,8 +2000,8 @@ ] }, { - "address": "0x477996a3e273e590b2a8bdbca65cc9f84be437872933e11dac1ef5090f7d32d", - "class_hash": "0x1986f4fea425f9b595997a08b2d5217e0f743e98086c1f147ff2e44dcfbab47", + "address": "0x6066a64d97dd37aed41748a86aa11524c7e29f20235011ef8d16c7a067b2664", + "class_hash": "0x688863adfa91d251a6d09d09c156264d2c6d1128e70c759bd2848abbbe11fc6", "abi": [ { "type": "impl", @@ -2056,11 +2056,11 @@ { "type": "impl", "name": "BattleUtilsContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract" + "interface_name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract" }, { "type": "struct", - "name": "s0_eternum::models::combat::Troops", + "name": "s1_eternum::models::combat::Troops", "members": [ { "name": "knight_count", @@ -2078,7 +2078,7 @@ }, { "type": "enum", - "name": "s0_eternum::models::combat::BattleSide", + "name": "s1_eternum::models::combat::BattleSide", "variants": [ { "name": "None", @@ -2096,11 +2096,11 @@ }, { "type": "struct", - "name": "s0_eternum::models::combat::BattleArmy", + "name": "s1_eternum::models::combat::BattleArmy", "members": [ { "name": "troops", - "type": "s0_eternum::models::combat::Troops" + "type": "s1_eternum::models::combat::Troops" }, { "name": "battle_id", @@ -2108,13 +2108,13 @@ }, { "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" + "type": "s1_eternum::models::combat::BattleSide" } ] }, { "type": "struct", - "name": "s0_eternum::models::combat::BattleHealth", + "name": "s1_eternum::models::combat::BattleHealth", "members": [ { "name": "current", @@ -2128,7 +2128,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::combat::Battle", + "name": "s1_eternum::models::combat::Battle", "members": [ { "name": "entity_id", @@ -2136,19 +2136,19 @@ }, { "name": "attack_army", - "type": "s0_eternum::models::combat::BattleArmy" + "type": "s1_eternum::models::combat::BattleArmy" }, { "name": "attack_army_lifetime", - "type": "s0_eternum::models::combat::BattleArmy" + "type": "s1_eternum::models::combat::BattleArmy" }, { "name": "defence_army", - "type": "s0_eternum::models::combat::BattleArmy" + "type": "s1_eternum::models::combat::BattleArmy" }, { "name": "defence_army_lifetime", - "type": "s0_eternum::models::combat::BattleArmy" + "type": "s1_eternum::models::combat::BattleArmy" }, { "name": "attackers_resources_escrow_id", @@ -2160,11 +2160,11 @@ }, { "name": "attack_army_health", - "type": "s0_eternum::models::combat::BattleHealth" + "type": "s1_eternum::models::combat::BattleHealth" }, { "name": "defence_army_health", - "type": "s0_eternum::models::combat::BattleHealth" + "type": "s1_eternum::models::combat::BattleHealth" }, { "name": "attack_delta", @@ -2190,7 +2190,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::combat::Army", + "name": "s1_eternum::models::combat::Army", "members": [ { "name": "entity_id", @@ -2198,7 +2198,7 @@ }, { "name": "troops", - "type": "s0_eternum::models::combat::Troops" + "type": "s1_eternum::models::combat::Troops" }, { "name": "battle_id", @@ -2206,13 +2206,13 @@ }, { "name": "battle_side", - "type": "s0_eternum::models::combat::BattleSide" + "type": "s1_eternum::models::combat::BattleSide" } ] }, { "type": "interface", - "name": "s0_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract", + "name": "s1_eternum::systems::combat::contracts::battle_systems::IBattleUtilsContract", "items": [ { "type": "function", @@ -2220,16 +2220,16 @@ "inputs": [ { "name": "battle", - "type": "s0_eternum::models::combat::Battle" + "type": "s1_eternum::models::combat::Battle" }, { "name": "army", - "type": "s0_eternum::models::combat::Army" + "type": "s1_eternum::models::combat::Army" } ], "outputs": [ { - "type": "(s0_eternum::models::combat::Battle, s0_eternum::models::combat::Army)" + "type": "(s1_eternum::models::combat::Battle, s1_eternum::models::combat::Army)" } ], "state_mutability": "external" @@ -2240,16 +2240,16 @@ "inputs": [ { "name": "battle", - "type": "s0_eternum::models::combat::Battle" + "type": "s1_eternum::models::combat::Battle" }, { "name": "army", - "type": "s0_eternum::models::combat::Army" + "type": "s1_eternum::models::combat::Army" } ], "outputs": [ { - "type": "(s0_eternum::models::combat::Battle, s0_eternum::models::combat::Army)" + "type": "(s1_eternum::models::combat::Battle, s1_eternum::models::combat::Army)" } ], "state_mutability": "external" @@ -2355,7 +2355,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::combat::contracts::battle_systems::battle_utils_systems::Event", + "name": "s1_eternum::systems::combat::contracts::battle_systems::battle_utils_systems::Event", "kind": "enum", "variants": [ { @@ -2372,8 +2372,8 @@ } ], "init_calldata": [], - "tag": "s0_eternum-battle_utils_systems", - "selector": "0x4199f9a24edfc349a8a16e338daaaea77af951bcc40d636e85107731d52d2b7", + "tag": "s1_eternum-battle_utils_systems", + "selector": "0x2b94e5432b691bad81584af7e9e97102aa0070f13aa91c6ff8c980e54d5ca33", "systems": [ "leave_battle", "leave_battle_if_ended", @@ -2381,401 +2381,8 @@ ] }, { - "address": "0x5ad0e42e034430f752a0c4e210c903df016ad10e349dbf63cc82988c99a571e", - "class_hash": "0x63b571819526e64bcde41b7dcddcc8bc687b4ee52b6b44a771236a14cc8dbf7", - "abi": [ - { - "type": "impl", - "name": "building_systems__ContractImpl", - "interface_name": "dojo::contract::interface::IContract" - }, - { - "type": "interface", - "name": "dojo::contract::interface::IContract", - "items": [] - }, - { - "type": "impl", - "name": "building_systems__DeployedContractImpl", - "interface_name": "dojo::meta::interface::IDeployedResource" - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "dojo::meta::interface::IDeployedResource", - "items": [ - { - "type": "function", - "name": "dojo_name", - "inputs": [], - "outputs": [ - { - "type": "core::byte_array::ByteArray" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "BuildingContractImpl", - "interface_name": "s0_eternum::systems::buildings::contracts::IBuildingContract" - }, - { - "type": "enum", - "name": "s0_eternum::models::position::Direction", - "variants": [ - { - "name": "East", - "type": "()" - }, - { - "name": "NorthEast", - "type": "()" - }, - { - "name": "NorthWest", - "type": "()" - }, - { - "name": "West", - "type": "()" - }, - { - "name": "SouthWest", - "type": "()" - }, - { - "name": "SouthEast", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "enum", - "name": "s0_eternum::models::buildings::BuildingCategory", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Castle", - "type": "()" - }, - { - "name": "Resource", - "type": "()" - }, - { - "name": "Farm", - "type": "()" - }, - { - "name": "FishingVillage", - "type": "()" - }, - { - "name": "Barracks", - "type": "()" - }, - { - "name": "Market", - "type": "()" - }, - { - "name": "ArcheryRange", - "type": "()" - }, - { - "name": "Stable", - "type": "()" - }, - { - "name": "TradingPost", - "type": "()" - }, - { - "name": "WorkersHut", - "type": "()" - }, - { - "name": "WatchTower", - "type": "()" - }, - { - "name": "Walls", - "type": "()" - }, - { - "name": "Storehouse", - "type": "()" - } - ] - }, - { - "type": "enum", - "name": "core::option::Option::", - "variants": [ - { - "name": "Some", - "type": "core::integer::u8" - }, - { - "name": "None", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "s0_eternum::models::position::Coord", - "members": [ - { - "name": "x", - "type": "core::integer::u32" - }, - { - "name": "y", - "type": "core::integer::u32" - } - ] - }, - { - "type": "interface", - "name": "s0_eternum::systems::buildings::contracts::IBuildingContract", - "items": [ - { - "type": "function", - "name": "create", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "directions", - "type": "core::array::Span::" - }, - { - "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" - }, - { - "name": "produce_resource_type", - "type": "core::option::Option::" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "pause_production", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "building_coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "resume_production", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "building_coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "destroy", - "inputs": [ - { - "name": "entity_id", - "type": "core::integer::u32" - }, - { - "name": "building_coord", - "type": "s0_eternum::models::position::Coord" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "function", - "name": "dojo_init", - "inputs": [], - "outputs": [], - "state_mutability": "view" - }, - { - "type": "impl", - "name": "WorldProviderImpl", - "interface_name": "dojo::contract::components::world_provider::IWorldProvider" - }, - { - "type": "struct", - "name": "dojo::world::iworld::IWorldDispatcher", - "members": [ - { - "name": "contract_address", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "interface", - "name": "dojo::contract::components::world_provider::IWorldProvider", - "items": [ - { - "type": "function", - "name": "world_dispatcher", - "inputs": [], - "outputs": [ - { - "type": "dojo::world::iworld::IWorldDispatcher" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "impl", - "name": "UpgradeableImpl", - "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" - }, - { - "type": "interface", - "name": "dojo::contract::components::upgradeable::IUpgradeable", - "items": [ - { - "type": "function", - "name": "upgrade", - "inputs": [ - { - "name": "new_class_hash", - "type": "core::starknet::class_hash::ClassHash" - } - ], - "outputs": [], - "state_mutability": "external" - } - ] - }, - { - "type": "constructor", - "name": "constructor", - "inputs": [] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "struct", - "members": [ - { - "name": "class_hash", - "type": "core::starknet::class_hash::ClassHash", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "enum", - "variants": [ - { - "name": "Upgraded", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", - "kind": "nested" - } - ] - }, - { - "type": "event", - "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "enum", - "variants": [] - }, - { - "type": "event", - "name": "s0_eternum::systems::buildings::contracts::building_systems::Event", - "kind": "enum", - "variants": [ - { - "name": "UpgradeableEvent", - "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", - "kind": "nested" - }, - { - "name": "WorldProviderEvent", - "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", - "kind": "nested" - } - ] - } - ], - "init_calldata": [], - "tag": "s0_eternum-building_systems", - "selector": "0x5f7b231f89cc7ec90785783e2484266d4b35e7f1488ec406ffea0cf92fac777", - "systems": [ - "create", - "pause_production", - "resume_production", - "destroy", - "upgrade" - ] - }, - { - "address": "0x62392a4777dde7362055349c5a2cafc49a1488a4a2bc634e2dbef55807fa2a0", - "class_hash": "0x2a1623aa93f362b754f5c9dc9c592ef42bf820498ba120b256002463aa89292", + "address": "0x4db43369a7b0ab29f7356d5d0568c0d06cd6da5199daf06f9bec633d3e934ff", + "class_hash": "0x7fb2e9574aa693d81a15f3734dd0a8612ba8d64057b2aef692bd3117118a446", "abi": [ { "type": "impl", @@ -2837,11 +2444,11 @@ { "type": "impl", "name": "WorldConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IWorldConfig" + "interface_name": "s1_eternum::systems::config::contracts::IWorldConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IWorldConfig", + "name": "s1_eternum::systems::config::contracts::IWorldConfig", "items": [ { "type": "function", @@ -2864,11 +2471,11 @@ { "type": "impl", "name": "SeasonConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ISeasonConfig" + "interface_name": "s1_eternum::systems::config::contracts::ISeasonConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ISeasonConfig", + "name": "s1_eternum::systems::config::contracts::ISeasonConfig", "items": [ { "type": "function", @@ -2911,11 +2518,11 @@ { "type": "impl", "name": "VRFConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IVRFConfig" + "interface_name": "s1_eternum::systems::config::contracts::IVRFConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IVRFConfig", + "name": "s1_eternum::systems::config::contracts::IVRFConfig", "items": [ { "type": "function", @@ -2934,7 +2541,7 @@ { "type": "impl", "name": "QuestConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IQuestConfig" + "interface_name": "s1_eternum::systems::config::contracts::IQuestConfig" }, { "type": "struct", @@ -2948,20 +2555,8 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IQuestConfig", + "name": "s1_eternum::systems::config::contracts::IQuestConfig", "items": [ - { - "type": "function", - "name": "set_quest_config", - "inputs": [ - { - "name": "production_material_multiplier", - "type": "core::integer::u16" - } - ], - "outputs": [], - "state_mutability": "external" - }, { "type": "function", "name": "set_quest_reward_config", @@ -2983,11 +2578,11 @@ { "type": "impl", "name": "MapConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IMapConfig" + "interface_name": "s1_eternum::systems::config::contracts::IMapConfig" }, { "type": "struct", - "name": "s0_eternum::models::config::MapConfig", + "name": "s1_eternum::models::config::MapConfig", "members": [ { "name": "config_id", @@ -3005,7 +2600,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IMapConfig", + "name": "s1_eternum::systems::config::contracts::IMapConfig", "items": [ { "type": "function", @@ -3013,7 +2608,7 @@ "inputs": [ { "name": "map_config", - "type": "s0_eternum::models::config::MapConfig" + "type": "s1_eternum::models::config::MapConfig" } ], "outputs": [], @@ -3024,11 +2619,11 @@ { "type": "impl", "name": "CapacityConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ICapacityConfig" + "interface_name": "s1_eternum::systems::config::contracts::ICapacityConfig" }, { "type": "enum", - "name": "s0_eternum::models::config::CapacityConfigCategory", + "name": "s1_eternum::models::config::CapacityConfigCategory", "variants": [ { "name": "None", @@ -3054,11 +2649,11 @@ }, { "type": "struct", - "name": "s0_eternum::models::config::CapacityConfig", + "name": "s1_eternum::models::config::CapacityConfig", "members": [ { "name": "category", - "type": "s0_eternum::models::config::CapacityConfigCategory" + "type": "s1_eternum::models::config::CapacityConfigCategory" }, { "name": "weight_gram", @@ -3068,7 +2663,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ICapacityConfig", + "name": "s1_eternum::systems::config::contracts::ICapacityConfig", "items": [ { "type": "function", @@ -3076,7 +2671,7 @@ "inputs": [ { "name": "capacity_config", - "type": "s0_eternum::models::config::CapacityConfig" + "type": "s1_eternum::models::config::CapacityConfig" } ], "outputs": [], @@ -3087,11 +2682,11 @@ { "type": "impl", "name": "TravelStaminaCostConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITravelStaminaCostConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITravelStaminaCostConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITravelStaminaCostConfig", + "name": "s1_eternum::systems::config::contracts::ITravelStaminaCostConfig", "items": [ { "type": "function", @@ -3114,11 +2709,11 @@ { "type": "impl", "name": "WeightConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IWeightConfig" + "interface_name": "s1_eternum::systems::config::contracts::IWeightConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IWeightConfig", + "name": "s1_eternum::systems::config::contracts::IWeightConfig", "items": [ { "type": "function", @@ -3141,11 +2736,11 @@ { "type": "impl", "name": "BattleConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBattleConfig" + "interface_name": "s1_eternum::systems::config::contracts::IBattleConfig" }, { "type": "struct", - "name": "s0_eternum::models::config::BattleConfig", + "name": "s1_eternum::models::config::BattleConfig", "members": [ { "name": "config_id", @@ -3167,7 +2762,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBattleConfig", + "name": "s1_eternum::systems::config::contracts::IBattleConfig", "items": [ { "type": "function", @@ -3175,7 +2770,7 @@ "inputs": [ { "name": "battle_config", - "type": "s0_eternum::models::config::BattleConfig" + "type": "s1_eternum::models::config::BattleConfig" } ], "outputs": [], @@ -3186,11 +2781,11 @@ { "type": "impl", "name": "TickConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITickConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITickConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITickConfig", + "name": "s1_eternum::systems::config::contracts::ITickConfig", "items": [ { "type": "function", @@ -3213,11 +2808,11 @@ { "type": "impl", "name": "StaminaConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IStaminaConfig" + "interface_name": "s1_eternum::systems::config::contracts::IStaminaConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IStaminaConfig", + "name": "s1_eternum::systems::config::contracts::IStaminaConfig", "items": [ { "type": "function", @@ -3240,11 +2835,11 @@ { "type": "impl", "name": "TravelFoodCostConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITravelFoodCostConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITravelFoodCostConfig" }, { "type": "struct", - "name": "s0_eternum::models::config::TravelFoodCostConfig", + "name": "s1_eternum::models::config::TravelFoodCostConfig", "members": [ { "name": "config_id", @@ -3274,7 +2869,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITravelFoodCostConfig", + "name": "s1_eternum::systems::config::contracts::ITravelFoodCostConfig", "items": [ { "type": "function", @@ -3282,7 +2877,7 @@ "inputs": [ { "name": "travel_food_cost_config", - "type": "s0_eternum::models::config::TravelFoodCostConfig" + "type": "s1_eternum::models::config::TravelFoodCostConfig" } ], "outputs": [], @@ -3293,11 +2888,11 @@ { "type": "impl", "name": "StaminaRefillConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IStaminaRefillConfig" + "interface_name": "s1_eternum::systems::config::contracts::IStaminaRefillConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IStaminaRefillConfig", + "name": "s1_eternum::systems::config::contracts::IStaminaRefillConfig", "items": [ { "type": "function", @@ -3320,11 +2915,11 @@ { "type": "impl", "name": "LevelingConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ILevelingConfig" + "interface_name": "s1_eternum::systems::config::contracts::ILevelingConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ILevelingConfig", + "name": "s1_eternum::systems::config::contracts::ILevelingConfig", "items": [ { "type": "function", @@ -3383,11 +2978,11 @@ { "type": "impl", "name": "ProductionConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IProductionConfig" + "interface_name": "s1_eternum::systems::config::contracts::IProductionConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IProductionConfig", + "name": "s1_eternum::systems::config::contracts::IProductionConfig", "items": [ { "type": "function", @@ -3398,9 +2993,36 @@ "type": "core::integer::u8" }, { - "name": "amount", + "name": "produced_amount", "type": "core::integer::u128" }, + { + "name": "labor_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "LaborConfigImpl", + "interface_name": "s1_eternum::systems::config::contracts::ILaborConfig" + }, + { + "type": "interface", + "name": "s1_eternum::systems::config::contracts::ILaborConfig", + "items": [ + { + "type": "function", + "name": "set_labor_config", + "inputs": [ + { + "name": "resource_type", + "type": "core::integer::u8" + }, { "name": "cost", "type": "core::array::Span::<(core::integer::u8, core::integer::u128)>" @@ -3414,11 +3036,11 @@ { "type": "impl", "name": "TransportConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITransportConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITransportConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITransportConfig", + "name": "s1_eternum::systems::config::contracts::ITransportConfig", "items": [ { "type": "function", @@ -3441,7 +3063,7 @@ { "type": "impl", "name": "HyperstructureConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IHyperstructureConfig" + "interface_name": "s1_eternum::systems::config::contracts::IHyperstructureConfig" }, { "type": "struct", @@ -3455,7 +3077,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IHyperstructureConfig", + "name": "s1_eternum::systems::config::contracts::IHyperstructureConfig", "items": [ { "type": "function", @@ -3490,11 +3112,11 @@ { "type": "impl", "name": "BankConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBankConfig" + "interface_name": "s1_eternum::systems::config::contracts::IBankConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBankConfig", + "name": "s1_eternum::systems::config::contracts::IBankConfig", "items": [ { "type": "function", @@ -3521,11 +3143,11 @@ { "type": "impl", "name": "TroopConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::ITroopConfig" + "interface_name": "s1_eternum::systems::config::contracts::ITroopConfig" }, { "type": "struct", - "name": "s0_eternum::models::config::TroopConfig", + "name": "s1_eternum::models::config::TroopConfig", "members": [ { "name": "config_id", @@ -3595,7 +3217,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ITroopConfig", + "name": "s1_eternum::systems::config::contracts::ITroopConfig", "items": [ { "type": "function", @@ -3603,7 +3225,7 @@ "inputs": [ { "name": "troop_config", - "type": "s0_eternum::models::config::TroopConfig" + "type": "s1_eternum::models::config::TroopConfig" } ], "outputs": [], @@ -3614,11 +3236,11 @@ { "type": "impl", "name": "BuildingCategoryPopulationConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBuildingCategoryPopConfig" + "interface_name": "s1_eternum::systems::config::contracts::IBuildingCategoryPopConfig" }, { "type": "enum", - "name": "s0_eternum::models::buildings::BuildingCategory", + "name": "s1_eternum::models::resource::production::building::BuildingCategory", "variants": [ { "name": "None", @@ -3680,7 +3302,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBuildingCategoryPopConfig", + "name": "s1_eternum::systems::config::contracts::IBuildingCategoryPopConfig", "items": [ { "type": "function", @@ -3688,7 +3310,7 @@ "inputs": [ { "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" + "type": "s1_eternum::models::resource::production::building::BuildingCategory" }, { "name": "population", @@ -3707,11 +3329,11 @@ { "type": "impl", "name": "PopulationConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IPopulationConfig" + "interface_name": "s1_eternum::systems::config::contracts::IPopulationConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IPopulationConfig", + "name": "s1_eternum::systems::config::contracts::IPopulationConfig", "items": [ { "type": "function", @@ -3730,11 +3352,11 @@ { "type": "impl", "name": "BuildingConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IBuildingConfig" + "interface_name": "s1_eternum::systems::config::contracts::IBuildingConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IBuildingConfig", + "name": "s1_eternum::systems::config::contracts::IBuildingConfig", "items": [ { "type": "function", @@ -3754,7 +3376,7 @@ "inputs": [ { "name": "building_category", - "type": "s0_eternum::models::buildings::BuildingCategory" + "type": "s1_eternum::models::resource::production::building::BuildingCategory" }, { "name": "building_resource_type", @@ -3773,11 +3395,11 @@ { "type": "impl", "name": "IMercenariesConfig", - "interface_name": "s0_eternum::systems::config::contracts::IMercenariesConfig" + "interface_name": "s1_eternum::systems::config::contracts::IMercenariesConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IMercenariesConfig", + "name": "s1_eternum::systems::config::contracts::IMercenariesConfig", "items": [ { "type": "function", @@ -3820,7 +3442,7 @@ { "type": "impl", "name": "IResourceBridgeConfig", - "interface_name": "s0_eternum::systems::config::contracts::IResourceBridgeConfig" + "interface_name": "s1_eternum::systems::config::contracts::IResourceBridgeConfig" }, { "type": "enum", @@ -3838,7 +3460,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeConfig", + "name": "s1_eternum::models::config::ResourceBridgeConfig", "members": [ { "name": "config_id", @@ -3856,7 +3478,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeFeeSplitConfig", + "name": "s1_eternum::models::config::ResourceBridgeFeeSplitConfig", "members": [ { "name": "config_id", @@ -3906,7 +3528,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::config::ResourceBridgeWhitelistConfig", + "name": "s1_eternum::models::config::ResourceBridgeWhitelistConfig", "members": [ { "name": "token", @@ -3920,7 +3542,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IResourceBridgeConfig", + "name": "s1_eternum::systems::config::contracts::IResourceBridgeConfig", "items": [ { "type": "function", @@ -3928,7 +3550,7 @@ "inputs": [ { "name": "resource_bridge_config", - "type": "s0_eternum::models::config::ResourceBridgeConfig" + "type": "s1_eternum::models::config::ResourceBridgeConfig" } ], "outputs": [], @@ -3940,7 +3562,7 @@ "inputs": [ { "name": "resource_bridge_fee_split_config", - "type": "s0_eternum::models::config::ResourceBridgeFeeSplitConfig" + "type": "s1_eternum::models::config::ResourceBridgeFeeSplitConfig" } ], "outputs": [], @@ -3952,7 +3574,7 @@ "inputs": [ { "name": "resource_bridge_whitelist_config", - "type": "s0_eternum::models::config::ResourceBridgeWhitelistConfig" + "type": "s1_eternum::models::config::ResourceBridgeWhitelistConfig" } ], "outputs": [], @@ -3963,11 +3585,11 @@ { "type": "impl", "name": "RealmLevelConfigImpl", - "interface_name": "s0_eternum::systems::config::contracts::IRealmLevelConfig" + "interface_name": "s1_eternum::systems::config::contracts::IRealmLevelConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::IRealmLevelConfig", + "name": "s1_eternum::systems::config::contracts::IRealmLevelConfig", "items": [ { "type": "function", @@ -4002,11 +3624,11 @@ { "type": "impl", "name": "ISettlementConfig", - "interface_name": "s0_eternum::systems::config::contracts::ISettlementConfig" + "interface_name": "s1_eternum::systems::config::contracts::ISettlementConfig" }, { "type": "interface", - "name": "s0_eternum::systems::config::contracts::ISettlementConfig", + "name": "s1_eternum::systems::config::contracts::ISettlementConfig", "items": [ { "type": "function", @@ -4144,7 +3766,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::config::contracts::config_systems::Event", + "name": "s1_eternum::systems::config::contracts::config_systems::Event", "kind": "enum", "variants": [ { @@ -4166,14 +3788,13 @@ } ], "init_calldata": [], - "tag": "s0_eternum-config_systems", - "selector": "0x4deb9db2b1005876b689d07a98673dacb6beea64ef9f564a19a38228d798204", + "tag": "s1_eternum-config_systems", + "selector": "0x1cb4608b18b40cb6420be7cf67ff21abe727a2bf599f2727d8eed5e36099fc2", "systems": [ "set_world_config", "set_season_config", "set_season_bridge_config", "set_vrf_config", - "set_quest_config", "set_quest_reward_config", "set_map_config", "set_capacity_config", @@ -4186,6 +3807,7 @@ "set_stamina_refill_config", "set_leveling_config", "set_production_config", + "set_labor_config", "set_speed_config", "set_hyperstructure_config", "set_bank_config", @@ -4205,8 +3827,8 @@ ] }, { - "address": "0x730dc36e3ac2726d2373ae50965dd4ba793ab3bbfc4d51d73d5a8108cb80175", - "class_hash": "0x5ffed6c73f9f2219e87b2fc6b2a35c14e50c0ee70a0c914b098049ab86ea228", + "address": "0x2368b70232d701b4be5e32d03d8ab13b3d0a3c5d44a7b8e704d24a5e2c723ad", + "class_hash": "0x52cc13796077949a91149c8870679bff30e880faacc1696c444db1ffc2e03ba", "abi": [ { "type": "impl", @@ -4261,11 +3883,11 @@ { "type": "impl", "name": "BankSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::bank::IBankSystems" + "interface_name": "s1_eternum::systems::dev::contracts::bank::IBankSystems" }, { "type": "struct", - "name": "s0_eternum::models::position::Coord", + "name": "s1_eternum::models::position::Coord", "members": [ { "name": "x", @@ -4279,7 +3901,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::dev::contracts::bank::IBankSystems", + "name": "s1_eternum::systems::dev::contracts::bank::IBankSystems", "items": [ { "type": "function", @@ -4291,7 +3913,7 @@ }, { "name": "coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" }, { "name": "owner_fee_num", @@ -4418,7 +4040,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::dev::contracts::bank::dev_bank_systems::Event", + "name": "s1_eternum::systems::dev::contracts::bank::dev_bank_systems::Event", "kind": "enum", "variants": [ { @@ -4435,16 +4057,16 @@ } ], "init_calldata": [], - "tag": "s0_eternum-dev_bank_systems", - "selector": "0x436d7ef5fa5753c742f95b4fd3a7722399b309251363684474bfcba389fb607", + "tag": "s1_eternum-dev_bank_systems", + "selector": "0x653ceec4af5e357119149b66228aece89c47a9c85dbba76955cec24e809f191", "systems": [ "create_admin_bank", "upgrade" ] }, { - "address": "0x56c668f4e561ec08a5e6b32064a42855f6ea8693806713f4f04ad2ca38353d2", - "class_hash": "0x1b92ab9641011892a0ee9b70dd142bbe52b53bef66ae2ff5e92a20e445375f4", + "address": "0x69a706af0da6fc3d1b4b148069c467c68c4171694eea8f2012f3560c72ea9a6", + "class_hash": "0x5eade382aa35597f5cbbee1c9366af3e78caef7ba002534aabfe11c24487bce", "abi": [ { "type": "impl", @@ -4499,11 +4121,11 @@ { "type": "impl", "name": "DevRealmSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::realm::IDevRealmSystems" + "interface_name": "s1_eternum::systems::dev::contracts::realm::IDevRealmSystems" }, { "type": "interface", - "name": "s0_eternum::systems::dev::contracts::realm::IDevRealmSystems", + "name": "s1_eternum::systems::dev::contracts::realm::IDevRealmSystems", "items": [ { "type": "function", @@ -4622,7 +4244,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::dev::contracts::realm::dev_realm_systems::Event", + "name": "s1_eternum::systems::dev::contracts::realm::dev_realm_systems::Event", "kind": "enum", "variants": [ { @@ -4639,16 +4261,16 @@ } ], "init_calldata": [], - "tag": "s0_eternum-dev_realm_systems", - "selector": "0x2a2f52f1a66a15e1e6bee3b5ea2d104bc146e82c1625c5421f6f45c44640824", + "tag": "s1_eternum-dev_realm_systems", + "selector": "0x32279d1c73c6356f5f15ff0e59adc6bfc45ffcde796c785452f6944b9b36ef1", "systems": [ "create", "upgrade" ] }, { - "address": "0x789a850d97d714ca0d2ebef8d61c25cd2342fc310fa10bb3b6c2edad1172351", - "class_hash": "0x36772edb97443579ee3f8e7c590bcf623e6a383f3323229df75544eb2a97129", + "address": "0x3b574cdf884243f01296332ef73e4994f98b063773a056b0a46f5eebdc10f32", + "class_hash": "0x7d9a070d9ded75006a3b6ee02cee0601012901e7910978c390cb28a232a26cc", "abi": [ { "type": "impl", @@ -4703,7 +4325,7 @@ { "type": "impl", "name": "ResourceSystemsImpl", - "interface_name": "s0_eternum::systems::dev::contracts::resource::IResourceSystems" + "interface_name": "s1_eternum::systems::dev::contracts::resource::IResourceSystems" }, { "type": "struct", @@ -4717,7 +4339,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::dev::contracts::resource::IResourceSystems", + "name": "s1_eternum::systems::dev::contracts::resource::IResourceSystems", "items": [ { "type": "function", @@ -4836,7 +4458,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::dev::contracts::resource::dev_resource_systems::Event", + "name": "s1_eternum::systems::dev::contracts::resource::dev_resource_systems::Event", "kind": "enum", "variants": [ { @@ -4853,16 +4475,16 @@ } ], "init_calldata": [], - "tag": "s0_eternum-dev_resource_systems", - "selector": "0x6125379dcbb305b4f4b955271c3c4d472ece9852c3592d9d38a9fbc63fe9025", + "tag": "s1_eternum-dev_resource_systems", + "selector": "0x4d5cfcb90997c42faaec636a440b73118f54d7e5321a8e6e134bdb0ac946333", "systems": [ "mint", "upgrade" ] }, { - "address": "0x40236e6868cfc14d4a73b3ad4be0df18a7c88877a684be223c1a8593109d7d9", - "class_hash": "0x2727b507b2d724b109bc2f969ccb090ee75e78b4c0d2d685e5e8cbce47f07f7", + "address": "0xa4e32c74166a9b817f53e13ba1f06bf0e5dd324dccf38e2b9e9dad255c5026", + "class_hash": "0x41e1faef49fb72e1e20ffcf0c2c15e99f80cf95dc8ae3414b5c0e31ecce6b6f", "abi": [ { "type": "impl", @@ -5013,7 +4635,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::transport::contracts::donkey_systems::donkey_systems::Event", + "name": "s1_eternum::systems::transport::contracts::donkey_systems::donkey_systems::Event", "kind": "enum", "variants": [ { @@ -5030,15 +4652,15 @@ } ], "init_calldata": [], - "tag": "s0_eternum-donkey_systems", - "selector": "0x76a0f4e4cdc01c969350b612c38d49d38689d5fde54e4afb3205a4629db83b6", + "tag": "s1_eternum-donkey_systems", + "selector": "0x3d69880d4cc048ff9cbc100f9667649cb239b66e1245bf3cccb47119ea29a95", "systems": [ "upgrade" ] }, { - "address": "0x3920dbf33145cca955528fee24474def2f7e48b0071c04cd31572216e5abdce", - "class_hash": "0x2107679161457e3f08fcd5bbb8f8473983e5c8b3c48c1ef67840958e994547c", + "address": "0x315de68b9d148a842f4aa6e16d6c5d2d6ae1e7787a03c778a3691a894f9142d", + "class_hash": "0x6178332d6302e2ccebecc0cdf7ef676443384f9e3dcffbcbb1cb9056c05b11e", "abi": [ { "type": "impl", @@ -5093,7 +4715,7 @@ { "type": "impl", "name": "GuildSystemsImpl", - "interface_name": "s0_eternum::systems::guild::contracts::IGuildSystems" + "interface_name": "s1_eternum::systems::guild::contracts::IGuildSystems" }, { "type": "enum", @@ -5111,7 +4733,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::guild::contracts::IGuildSystems", + "name": "s1_eternum::systems::guild::contracts::IGuildSystems", "items": [ { "type": "function", @@ -5306,7 +4928,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::guild::contracts::guild_systems::Event", + "name": "s1_eternum::systems::guild::contracts::guild_systems::Event", "kind": "enum", "variants": [ { @@ -5323,8 +4945,8 @@ } ], "init_calldata": [], - "tag": "s0_eternum-guild_systems", - "selector": "0x6b2e6f3912853c9745b74266fe1d344bfe8ba99561982c5b4c3ac0e081f956b", + "tag": "s1_eternum-guild_systems", + "selector": "0x15516acac71fbb80f953b9a8fac7d65ceff957f7f2d568fecbccba36bec6263", "systems": [ "create_guild", "join_guild", @@ -5336,8 +4958,8 @@ ] }, { - "address": "0x67dfe2d094f457fc478568d433efcbbad8ed98f35351199f1aae72424727713", - "class_hash": "0x10309b3f3943f076c9064f664c9b4f0b82369bf6f6a21fdb560718693588bc7", + "address": "0x5d9b021d46b861f532b88e1a5b09e5ab7c46d1a11c7fcc11335e0cc459383d9", + "class_hash": "0x1af127b3e1737bc103072be80c6927cdc90616df78597a5e225f6ab981ad6e4", "abi": [ { "type": "impl", @@ -5392,7 +5014,7 @@ { "type": "impl", "name": "HyperstructureSystemsImpl", - "interface_name": "s0_eternum::systems::hyperstructure::contracts::IHyperstructureSystems" + "interface_name": "s1_eternum::systems::hyperstructure::contracts::IHyperstructureSystems" }, { "type": "struct", @@ -5416,7 +5038,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::position::Coord", + "name": "s1_eternum::models::position::Coord", "members": [ { "name": "x", @@ -5450,7 +5072,7 @@ }, { "type": "enum", - "name": "s0_eternum::models::hyperstructure::Access", + "name": "s1_eternum::models::hyperstructure::Access", "variants": [ { "name": "Public", @@ -5468,7 +5090,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::hyperstructure::contracts::IHyperstructureSystems", + "name": "s1_eternum::systems::hyperstructure::contracts::IHyperstructureSystems", "items": [ { "type": "function", @@ -5504,7 +5126,7 @@ }, { "name": "coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" } ], "outputs": [ @@ -5576,7 +5198,7 @@ }, { "name": "access", - "type": "s0_eternum::models::hyperstructure::Access" + "type": "s1_eternum::models::hyperstructure::Access" } ], "outputs": [], @@ -5683,7 +5305,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::hyperstructure::contracts::hyperstructure_systems::Event", + "name": "s1_eternum::systems::hyperstructure::contracts::hyperstructure_systems::Event", "kind": "enum", "variants": [ { @@ -5700,8 +5322,8 @@ } ], "init_calldata": [], - "tag": "s0_eternum-hyperstructure_systems", - "selector": "0x44f825ffb89246cbeda203107846db0efad60bbedb24dc67dbd4a42593e6c82", + "tag": "s1_eternum-hyperstructure_systems", + "selector": "0x4bdd8bcbb935577aba3b974bd7e906698504fcb75e0c3aa34913c21342b4498", "systems": [ "get_points", "create", @@ -5713,8 +5335,8 @@ ] }, { - "address": "0x2cf9b074003aeae091861585eade1d1007641c95978cbc67170a6a7002c6117", - "class_hash": "0x5790815c798b8e4b21dd876b91ce4114f51a4584ef6a5324d100fa825054e74", + "address": "0x5c0ae11ece0f9b47429f496ae8aa44c990457fd45ab3f99cf17dde52ea9c58e", + "class_hash": "0x39da4b5a4c779a5961a30a6bd3be3002f7ac8ca7fcb261bae647262cb03f8df", "abi": [ { "type": "impl", @@ -5769,7 +5391,7 @@ { "type": "impl", "name": "LiquiditySystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::liquidity::ILiquiditySystems" + "interface_name": "s1_eternum::systems::bank::contracts::liquidity::ILiquiditySystems" }, { "type": "enum", @@ -5801,7 +5423,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::bank::contracts::liquidity::ILiquiditySystems", + "name": "s1_eternum::systems::bank::contracts::liquidity::ILiquiditySystems", "items": [ { "type": "function", @@ -5960,7 +5582,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::bank::contracts::liquidity::liquidity_systems::Event", + "name": "s1_eternum::systems::bank::contracts::liquidity::liquidity_systems::Event", "kind": "enum", "variants": [ { @@ -5977,8 +5599,8 @@ } ], "init_calldata": [], - "tag": "s0_eternum-liquidity_systems", - "selector": "0x3cc30307c653c6c1ba1a6e99364f57c94360b8f73787d1518eaab02e9d0d6b", + "tag": "s1_eternum-liquidity_systems", + "selector": "0xf480ba1a0c3e5b85a74ba14244a1653f886654d67c71b4dd0804d9eecf1cd9", "systems": [ "add", "remove", @@ -5986,8 +5608,8 @@ ] }, { - "address": "0x1fd92361d6679473f165797c5285e1c346dc84246798f7e9459bb337531e56f", - "class_hash": "0x2e3c0d6a5a26c91cadd794a04329a23f030c89d03ec50a8199244d545b912d6", + "address": "0x4c9426847f591ff00e3bc81e31ef317ed7aa3d3f967e83d3b5da5b96d0f6128", + "class_hash": "0x23550c76e27c75c2c2aab7aaca5bc20b9595837ff35fdb95cd538c3d3f2466c", "abi": [ { "type": "impl", @@ -6042,11 +5664,11 @@ { "type": "impl", "name": "MapGenerationSystemsImpl", - "interface_name": "s0_eternum::systems::map::map_generation::IMapGenerationSystems" + "interface_name": "s1_eternum::systems::map::map_generation::IMapGenerationSystems" }, { "type": "struct", - "name": "s0_eternum::models::owner::EntityOwner", + "name": "s1_eternum::models::owner::EntityOwner", "members": [ { "name": "entity_id", @@ -6060,7 +5682,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::position::Coord", + "name": "s1_eternum::models::position::Coord", "members": [ { "name": "x", @@ -6102,7 +5724,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::map::map_generation::IMapGenerationSystems", + "name": "s1_eternum::systems::map::map_generation::IMapGenerationSystems", "items": [ { "type": "function", @@ -6110,11 +5732,11 @@ "inputs": [ { "name": "unit_entity_owner", - "type": "s0_eternum::models::owner::EntityOwner" + "type": "s1_eternum::models::owner::EntityOwner" }, { "name": "coord", - "type": "s0_eternum::models::position::Coord" + "type": "s1_eternum::models::position::Coord" } ], "outputs": [ @@ -6245,7 +5867,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::map::map_generation::map_generation_systems::Event", + "name": "s1_eternum::systems::map::map_generation::map_generation_systems::Event", "kind": "enum", "variants": [ { @@ -6262,8 +5884,8 @@ } ], "init_calldata": [], - "tag": "s0_eternum-map_generation_systems", - "selector": "0x29daec1bf7e70863ae1f9a4b455a1e12030394562eb21b214c9037f9fb71424", + "tag": "s1_eternum-map_generation_systems", + "selector": "0x6dbd060aee5437a68789ce311c098ad9e39dddab8447b335c10007afae949c6", "systems": [ "discover_shards_mine", "add_mercenaries_to_structure", @@ -6271,8 +5893,8 @@ ] }, { - "address": "0xe63ce3d808072f67ac366cff1e44ff148eaf4ddd1e836b98a1ba44af66faa3", - "class_hash": "0x5dd66452d42d01a490e933231094f081fe535d7ba8222cc56add27221f34cd9", + "address": "0x4b18cc8d4d59032998a58dc2cd075c3ccc4784e8e4796da8e9812eeaf7f7321", + "class_hash": "0x3bb707045c5ff3766935a9bece0717a1adf395e9f109cf9e0f8d025bfeadc6d", "abi": [ { "type": "impl", @@ -6327,11 +5949,11 @@ { "type": "impl", "name": "MapSystemsImpl", - "interface_name": "s0_eternum::systems::map::contracts::IMapSystems" + "interface_name": "s1_eternum::systems::map::contracts::IMapSystems" }, { "type": "enum", - "name": "s0_eternum::models::position::Direction", + "name": "s1_eternum::models::position::Direction", "variants": [ { "name": "East", @@ -6361,7 +5983,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::map::contracts::IMapSystems", + "name": "s1_eternum::systems::map::contracts::IMapSystems", "items": [ { "type": "function", @@ -6373,7 +5995,7 @@ }, { "name": "direction", - "type": "s0_eternum::models::position::Direction" + "type": "s1_eternum::models::position::Direction" } ], "outputs": [], @@ -6480,7 +6102,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::map::contracts::map_systems::Event", + "name": "s1_eternum::systems::map::contracts::map_systems::Event", "kind": "enum", "variants": [ { @@ -6497,16 +6119,16 @@ } ], "init_calldata": [], - "tag": "s0_eternum-map_systems", - "selector": "0x27a92961f46c5ac43e19fa2b7d50d169c2776dbb98478a96a8a3050647431cd", + "tag": "s1_eternum-map_systems", + "selector": "0x6ed75404dd23a9d2825f9459d23848133ae3e81050e63b85c0d37264695d998", "systems": [ "explore", "upgrade" ] }, { - "address": "0x3e6ad1a5ca5dd74c4abfced52e6649cd7e99763f8aaa695175043cfa5aad8f7", - "class_hash": "0x288d58cd0a2fa003e18768537e62f72649c451a647fd704096a4b1dae4bdcae", + "address": "0x3a3d2be02acf0e88dfd22e38dbb447e813250da83024d23109791acf1112ef1", + "class_hash": "0x6a06d111761024260598c4cab0bad06ba15ec09331b176f9223e62ef2093508", "abi": [ { "type": "impl", @@ -6560,36 +6182,241 @@ }, { "type": "impl", - "name": "NameSystemsImpl", - "interface_name": "s0_eternum::systems::name::contracts::INameSystems" + "name": "NameSystemsImpl", + "interface_name": "s1_eternum::systems::name::contracts::INameSystems" + }, + { + "type": "interface", + "name": "s1_eternum::systems::name::contracts::INameSystems", + "items": [ + { + "type": "function", + "name": "set_address_name", + "inputs": [ + { + "name": "name", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_entity_name", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "name", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "function", + "name": "dojo_init", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "impl", + "name": "WorldProviderImpl", + "interface_name": "dojo::contract::components::world_provider::IWorldProvider" + }, + { + "type": "struct", + "name": "dojo::world::iworld::IWorldDispatcher", + "members": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "type": "interface", + "name": "dojo::contract::components::world_provider::IWorldProvider", + "items": [ + { + "type": "function", + "name": "world_dispatcher", + "inputs": [], + "outputs": [ + { + "type": "dojo::world::iworld::IWorldDispatcher" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "dojo::contract::components::upgradeable::IUpgradeable" + }, + { + "type": "interface", + "name": "dojo::contract::components::upgradeable::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "s1_eternum::systems::name::contracts::name_systems::Event", + "kind": "enum", + "variants": [ + { + "name": "UpgradeableEvent", + "type": "dojo::contract::components::upgradeable::upgradeable_cpt::Event", + "kind": "nested" + }, + { + "name": "WorldProviderEvent", + "type": "dojo::contract::components::world_provider::world_provider_cpt::Event", + "kind": "nested" + } + ] + } + ], + "init_calldata": [], + "tag": "s1_eternum-name_systems", + "selector": "0x45b86c7ee3f36393c4d14a0da3c58fdf406677137f1d840c53f01e8544e3b80", + "systems": [ + "set_address_name", + "set_entity_name", + "upgrade" + ] + }, + { + "address": "0x5cb00d1d30c81404daa4dc084cbfb1ecb2114f2367fa77f5b04912bd8abd7e1", + "class_hash": "0x57f36faf3ab21b910521f361bbc7bcd09758bc4ba46015f2bad0f15f6bf53ff", + "abi": [ + { + "type": "impl", + "name": "ownership_systems__ContractImpl", + "interface_name": "dojo::contract::interface::IContract" + }, + { + "type": "interface", + "name": "dojo::contract::interface::IContract", + "items": [] + }, + { + "type": "impl", + "name": "ownership_systems__DeployedContractImpl", + "interface_name": "dojo::meta::interface::IDeployedResource" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "interface", + "name": "dojo::meta::interface::IDeployedResource", + "items": [ + { + "type": "function", + "name": "dojo_name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "OwnershipSystemsImpl", + "interface_name": "s1_eternum::systems::ownership::contracts::IOwnershipSystems" }, { "type": "interface", - "name": "s0_eternum::systems::name::contracts::INameSystems", + "name": "s1_eternum::systems::ownership::contracts::IOwnershipSystems", "items": [ { "type": "function", - "name": "set_address_name", - "inputs": [ - { - "name": "name", - "type": "core::felt252" - } - ], - "outputs": [], - "state_mutability": "external" - }, - { - "type": "function", - "name": "set_entity_name", + "name": "transfer_ownership", "inputs": [ { "name": "entity_id", "type": "core::integer::u32" }, { - "name": "name", - "type": "core::felt252" + "name": "new_owner", + "type": "core::starknet::contract_address::ContractAddress" } ], "outputs": [], @@ -6696,7 +6523,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::name::contracts::name_systems::Event", + "name": "s1_eternum::systems::ownership::contracts::ownership_systems::Event", "kind": "enum", "variants": [ { @@ -6713,21 +6540,20 @@ } ], "init_calldata": [], - "tag": "s0_eternum-name_systems", - "selector": "0x57061191efce4db08b753f5d6119a16595a3ac2b91db70e971630c34ff5e16e", + "tag": "s1_eternum-ownership_systems", + "selector": "0x5045fbdb3ad9b695ea6f218e57a3ca2ce575a2964f30e15f2e710f691aa0622", "systems": [ - "set_address_name", - "set_entity_name", + "transfer_ownership", "upgrade" ] }, { - "address": "0x368661fcdc42f68583bc09db6642918704fcea2a3c432bfdb508f7194537910", - "class_hash": "0x1896883a09bb110c705be2685eacb0b0e6ae67fde76602982f7f32daceb7fa7", + "address": "0xad55bb6ef5b58306f565c398d73dee2068d060a4a3e95a948b8badec4f6c3c", + "class_hash": "0x2d8e31a55fd8bf1e95262a07e57c0b97db4a1ae573f4e9d07b6b8fdb863cc43", "abi": [ { "type": "impl", - "name": "ownership_systems__ContractImpl", + "name": "production_systems__ContractImpl", "interface_name": "dojo::contract::interface::IContract" }, { @@ -6737,7 +6563,7 @@ }, { "type": "impl", - "name": "ownership_systems__DeployedContractImpl", + "name": "production_systems__DeployedContractImpl", "interface_name": "dojo::meta::interface::IDeployedResource" }, { @@ -6777,24 +6603,250 @@ }, { "type": "impl", - "name": "OwnershipSystemsImpl", - "interface_name": "s0_eternum::systems::ownership::contracts::IOwnershipSystems" + "name": "ProductionContractImpl", + "interface_name": "s1_eternum::systems::production::contracts::IProductionContract" + }, + { + "type": "enum", + "name": "s1_eternum::models::position::Direction", + "variants": [ + { + "name": "East", + "type": "()" + }, + { + "name": "NorthEast", + "type": "()" + }, + { + "name": "NorthWest", + "type": "()" + }, + { + "name": "West", + "type": "()" + }, + { + "name": "SouthWest", + "type": "()" + }, + { + "name": "SouthEast", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "s1_eternum::models::resource::production::building::BuildingCategory", + "variants": [ + { + "name": "None", + "type": "()" + }, + { + "name": "Castle", + "type": "()" + }, + { + "name": "Resource", + "type": "()" + }, + { + "name": "Farm", + "type": "()" + }, + { + "name": "FishingVillage", + "type": "()" + }, + { + "name": "Barracks", + "type": "()" + }, + { + "name": "Market", + "type": "()" + }, + { + "name": "ArcheryRange", + "type": "()" + }, + { + "name": "Stable", + "type": "()" + }, + { + "name": "TradingPost", + "type": "()" + }, + { + "name": "WorkersHut", + "type": "()" + }, + { + "name": "WatchTower", + "type": "()" + }, + { + "name": "Walls", + "type": "()" + }, + { + "name": "Storehouse", + "type": "()" + } + ] + }, + { + "type": "enum", + "name": "core::option::Option::", + "variants": [ + { + "name": "Some", + "type": "core::integer::u8" + }, + { + "name": "None", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "s1_eternum::models::position::Coord", + "members": [ + { + "name": "x", + "type": "core::integer::u32" + }, + { + "name": "y", + "type": "core::integer::u32" + } + ] }, { "type": "interface", - "name": "s0_eternum::systems::ownership::contracts::IOwnershipSystems", + "name": "s1_eternum::systems::production::contracts::IProductionContract", "items": [ { "type": "function", - "name": "transfer_ownership", + "name": "create_building", "inputs": [ { "name": "entity_id", "type": "core::integer::u32" }, { - "name": "new_owner", - "type": "core::starknet::contract_address::ContractAddress" + "name": "directions", + "type": "core::array::Span::" + }, + { + "name": "building_category", + "type": "s1_eternum::models::resource::production::building::BuildingCategory" + }, + { + "name": "produce_resource_type", + "type": "core::option::Option::" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "destroy_building", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "building_coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "pause_building_production", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "building_coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "resume_building_production", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "building_coord", + "type": "s1_eternum::models::position::Coord" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "make_production_labor", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "labor_amount", + "type": "core::integer::u128" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "burn_production_labor", + "inputs": [ + { + "name": "entity_id", + "type": "core::integer::u32" + }, + { + "name": "resource_type", + "type": "core::integer::u8" + }, + { + "name": "labor_amount", + "type": "core::integer::u128" } ], "outputs": [], @@ -6901,7 +6953,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::ownership::contracts::ownership_systems::Event", + "name": "s1_eternum::systems::production::contracts::production_systems::Event", "kind": "enum", "variants": [ { @@ -6918,16 +6970,21 @@ } ], "init_calldata": [], - "tag": "s0_eternum-ownership_systems", - "selector": "0x419b9f1d9d3cbe8dd78cb553b0e1895fa2d3cfb9e7e578866056fca72f9108b", + "tag": "s1_eternum-production_systems", + "selector": "0x6d70095d0a6ca6efc41633bafa4ac5202f1f83c75afbba78987b58f495a4c0", "systems": [ - "transfer_ownership", + "create_building", + "destroy_building", + "pause_building_production", + "resume_building_production", + "make_production_labor", + "burn_production_labor", "upgrade" ] }, { - "address": "0x395bd73f4abb836bb7eb6dc7f0f761be93596a6d892a118d2b82f77c54618b4", - "class_hash": "0x6aa56ec3dace30b73ad1764b63291cc4c6c6bd19e7fe522b255d6686d40befb", + "address": "0x33e0343497e2d58aa089f11f9f00faf6e2a543d58ec3670f99507d5ad9d9312", + "class_hash": "0x567e142c27b39221110078e7ffc6f3d24ee35d07978b548cb799d777d81baba", "abi": [ { "type": "impl", @@ -6982,11 +7039,11 @@ { "type": "impl", "name": "RealmSystemsImpl", - "interface_name": "s0_eternum::systems::realm::contracts::IRealmSystems" + "interface_name": "s1_eternum::systems::realm::contracts::IRealmSystems" }, { "type": "interface", - "name": "s0_eternum::systems::realm::contracts::IRealmSystems", + "name": "s1_eternum::systems::realm::contracts::IRealmSystems", "items": [ { "type": "function", @@ -7141,7 +7198,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::realm::contracts::realm_systems::Event", + "name": "s1_eternum::systems::realm::contracts::realm_systems::Event", "kind": "enum", "variants": [ { @@ -7158,8 +7215,8 @@ } ], "init_calldata": [], - "tag": "s0_eternum-realm_systems", - "selector": "0x6ae6691704d5df34326545ad7d15afebdd83066596af8c0dcb5d216d1ede909", + "tag": "s1_eternum-realm_systems", + "selector": "0x3b4cc14cbb49692c85e1b132ac8536fe7d0d1361cd2fb5ba8df29f726ca02d2", "systems": [ "create", "upgrade_level", @@ -7168,8 +7225,8 @@ ] }, { - "address": "0x1e21e76506aff91e258bbe8cb8c80393faa1dcb72569b4a9ba72eb10c2c01b7", - "class_hash": "0x5be66113526f96d4bb34d6a2b80b5d7dd8639104a30cf9d5d14ff930defa583", + "address": "0x348b0b20565b8616b0e4a42c75ff9cf48ed94ca0265b4c13b959759de9ca747", + "class_hash": "0x50d051cf375ddb6427d781b0e7f5c7670f3a0c3cea45ed487154c6fe33cdacf", "abi": [ { "type": "impl", @@ -7224,7 +7281,7 @@ { "type": "impl", "name": "ResourceBridgeImpl", - "interface_name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems" + "interface_name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems" }, { "type": "struct", @@ -7242,7 +7299,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems", + "name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::IResourceBridgeSystems", "items": [ { "type": "function", @@ -7449,7 +7506,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::resources::contracts::resource_bridge_systems::resource_bridge_systems::Event", + "name": "s1_eternum::systems::resources::contracts::resource_bridge_systems::resource_bridge_systems::Event", "kind": "enum", "variants": [ { @@ -7466,8 +7523,8 @@ } ], "init_calldata": [], - "tag": "s0_eternum-resource_bridge_systems", - "selector": "0x5916a4c5e4fb7f1105244015fcc1e9950efab35919af199a4a2c1aef2c3aa61", + "tag": "s1_eternum-resource_bridge_systems", + "selector": "0x4f94ba58902810acb653eeeb2a36e5f8f5a7096ceac7a2705c52732281e3cd2", "systems": [ "deposit_initial", "deposit", @@ -7477,8 +7534,8 @@ ] }, { - "address": "0x3d266b405275aeb27660eeaa4e8d5c3e24f8c3075da67276e0300da1df66c33", - "class_hash": "0x5e9b55f4acabd7ec7ef30f1cbd4d0fa397e0877234f1c7d46c9678a67248a17", + "address": "0x2174d311dc76dda4d8c82402d3c9ab4e0c8a56600c681caa3e17308b3f58390", + "class_hash": "0x4e3a61a93c7703b04df217cf8e8b43698187f9a7434c457f29f3602f8ceb190", "abi": [ { "type": "impl", @@ -7533,7 +7590,7 @@ { "type": "impl", "name": "ResourceSystemsImpl", - "interface_name": "s0_eternum::systems::resources::contracts::resource_systems::IResourceSystems" + "interface_name": "s1_eternum::systems::resources::contracts::resource_systems::IResourceSystems" }, { "type": "struct", @@ -7547,7 +7604,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::resources::contracts::resource_systems::IResourceSystems", + "name": "s1_eternum::systems::resources::contracts::resource_systems::IResourceSystems", "items": [ { "type": "function", @@ -7710,7 +7767,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::resources::contracts::resource_systems::resource_systems::Event", + "name": "s1_eternum::systems::resources::contracts::resource_systems::resource_systems::Event", "kind": "enum", "variants": [ { @@ -7727,8 +7784,8 @@ } ], "init_calldata": [], - "tag": "s0_eternum-resource_systems", - "selector": "0x31e8be63af9c072934c219dd6cbd2fea3b49fce2311adceb8a8a8870a760b62", + "tag": "s1_eternum-resource_systems", + "selector": "0x626970a749fd6b8230875061236c1a9446ae65287beb6107d5b88e5ca078019", "systems": [ "approve", "send", @@ -7737,8 +7794,8 @@ ] }, { - "address": "0x14f385db5b18cd094d9b4961f4d2a4a170e305385e2a3d9c5a1bd7cd499928b", - "class_hash": "0x58d34a3f335f4eabf39bff79e901b3e80b6f2065809a110070ad9db15433186", + "address": "0x3819b2fccc14b8dd7c885c33f835fd431742fb551c1fdc4b318fca3f6acf311", + "class_hash": "0x59c55e3ca487de1ccb5b6cf174ac5c70d98b4af6db76b9987843dc08520cef3", "abi": [ { "type": "impl", @@ -7793,7 +7850,7 @@ { "type": "impl", "name": "SeasonSystemsImpl", - "interface_name": "s0_eternum::systems::season::contracts::ISeasonSystems" + "interface_name": "s1_eternum::systems::season::contracts::ISeasonSystems" }, { "type": "struct", @@ -7817,7 +7874,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::season::contracts::ISeasonSystems", + "name": "s1_eternum::systems::season::contracts::ISeasonSystems", "items": [ { "type": "function", @@ -7948,7 +8005,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::season::contracts::season_systems::Event", + "name": "s1_eternum::systems::season::contracts::season_systems::Event", "kind": "enum", "variants": [ { @@ -7965,8 +8022,8 @@ } ], "init_calldata": [], - "tag": "s0_eternum-season_systems", - "selector": "0x384e61da11b2e476dc992c9556f8d1d42814136a36400b5cb34175de183ac9", + "tag": "s1_eternum-season_systems", + "selector": "0x44e1edf9ca51b11a8c1d6ffc341d3248fdbeebc7e7d3ee6314fee33174860c4", "systems": [ "register_to_leaderboard", "claim_leaderboard_rewards", @@ -7974,8 +8031,8 @@ ] }, { - "address": "0x5422c3c15cff91dedd781d6a24228dc7bdd65a0a9130e77375085c4fe6f06d4", - "class_hash": "0xeb430602e661e99572522646cde107ec514e61144be7d21b6d8f506253fb12", + "address": "0x7a267e053addb92514d51fcbed967b274a71381b8e6a95b1103323a80d34993", + "class_hash": "0x6ecba556869f9af550c06eebf09953b9a9b5e021d1841e1fdba2893f6375787", "abi": [ { "type": "impl", @@ -8030,11 +8087,11 @@ { "type": "impl", "name": "SwapSystemsImpl", - "interface_name": "s0_eternum::systems::bank::contracts::swap::ISwapSystems" + "interface_name": "s1_eternum::systems::bank::contracts::swap::ISwapSystems" }, { "type": "interface", - "name": "s0_eternum::systems::bank::contracts::swap::ISwapSystems", + "name": "s1_eternum::systems::bank::contracts::swap::ISwapSystems", "items": [ { "type": "function", @@ -8193,7 +8250,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::bank::contracts::swap::swap_systems::Event", + "name": "s1_eternum::systems::bank::contracts::swap::swap_systems::Event", "kind": "enum", "variants": [ { @@ -8210,8 +8267,8 @@ } ], "init_calldata": [], - "tag": "s0_eternum-swap_systems", - "selector": "0x14a06d11e0f26724e8e61c141842f95425009d07620b3c369f9f517d568e591", + "tag": "s1_eternum-swap_systems", + "selector": "0x187f170f62cb2f89334e291ddc0d0f388a855abcdd2b911425fed8304d3fdc3", "systems": [ "buy", "sell", @@ -8219,8 +8276,8 @@ ] }, { - "address": "0x675662c85d93e590ab147f5af80eb359b3a6cc388f44578b7aebdc2e735b43", - "class_hash": "0x82d4c26c51972a54cce8bdb3a2d75c88cba9435fef478cd548616144dc8cf7", + "address": "0x46b3c69414f2501d808b459b186ce20d12ecf6691953da7b2d15fb10d101e6d", + "class_hash": "0xc9da769a96f6e3aacd9c9329f89fc32c82a3318f82a92373cf4eaf3759f230", "abi": [ { "type": "impl", @@ -8275,7 +8332,7 @@ { "type": "impl", "name": "TradeSystemsImpl", - "interface_name": "s0_eternum::systems::trade::contracts::trade_systems::ITradeSystems" + "interface_name": "s1_eternum::systems::trade::contracts::trade_systems::ITradeSystems" }, { "type": "struct", @@ -8289,7 +8346,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::trade::contracts::trade_systems::ITradeSystems", + "name": "s1_eternum::systems::trade::contracts::trade_systems::ITradeSystems", "items": [ { "type": "function", @@ -8492,7 +8549,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::trade::contracts::trade_systems::trade_systems::Event", + "name": "s1_eternum::systems::trade::contracts::trade_systems::trade_systems::Event", "kind": "enum", "variants": [ { @@ -8509,8 +8566,8 @@ } ], "init_calldata": [], - "tag": "s0_eternum-trade_systems", - "selector": "0x5272cd9b34062cb8bd8ec92ecca87f92a884d4bd2f5bf6c563265a018ac22a5", + "tag": "s1_eternum-trade_systems", + "selector": "0x25205919a9c1be9b6b4c75d8435d21e748b4144575e3ed50d453ebd586f1467", "systems": [ "create_order", "accept_order", @@ -8520,8 +8577,8 @@ ] }, { - "address": "0xef2b5150890396d22c3183a69b22b747ccac4429b5415ec35d9dab635a65b8", - "class_hash": "0x265849dc16d9a9aea6fa88ba80d8daa77cc3323320eba61acef791980f7731d", + "address": "0x52b9c90b7e0037ccb1fe4377714e171886c78459a6dc288bb5c2ec9e656c0f4", + "class_hash": "0x1dea2c672934cc98154903b1e64e34287fbd24ffa3be05415371f9a21638484", "abi": [ { "type": "impl", @@ -8576,11 +8633,11 @@ { "type": "impl", "name": "TravelSystemsImpl", - "interface_name": "s0_eternum::systems::transport::contracts::travel_systems::ITravelSystems" + "interface_name": "s1_eternum::systems::transport::contracts::travel_systems::ITravelSystems" }, { "type": "enum", - "name": "s0_eternum::models::position::Direction", + "name": "s1_eternum::models::position::Direction", "variants": [ { "name": "East", @@ -8610,17 +8667,17 @@ }, { "type": "struct", - "name": "core::array::Span::", + "name": "core::array::Span::", "members": [ { "name": "snapshot", - "type": "@core::array::Array::" + "type": "@core::array::Array::" } ] }, { "type": "interface", - "name": "s0_eternum::systems::transport::contracts::travel_systems::ITravelSystems", + "name": "s1_eternum::systems::transport::contracts::travel_systems::ITravelSystems", "items": [ { "type": "function", @@ -8632,7 +8689,7 @@ }, { "name": "directions", - "type": "core::array::Span::" + "type": "core::array::Span::" } ], "outputs": [], @@ -8739,7 +8796,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::transport::contracts::travel_systems::travel_systems::Event", + "name": "s1_eternum::systems::transport::contracts::travel_systems::travel_systems::Event", "kind": "enum", "variants": [ { @@ -8756,16 +8813,16 @@ } ], "init_calldata": [], - "tag": "s0_eternum-travel_systems", - "selector": "0x4928d4294639e944ff93869e10cee7533ffd910f5791fc486c04b91f2fcf8fe", + "tag": "s1_eternum-travel_systems", + "selector": "0x309ed1eaf532082015ddf768dfea6a2d7b6c78f61892005f9af6efe505f3317", "systems": [ "travel_hex", "upgrade" ] }, { - "address": "0xc592377a9b924df5d609994a7561dd989254b736d22085c9c78e6979a2969e", - "class_hash": "0x73a377e55a1833ac9ab16ad9eb29c941cc182bf8cf4a10720d6737dc7c826ff", + "address": "0x61396cdd9898842f7f4b61d5e1494c5ced4eb559e0494f20c2dd7e272c0e6b5", + "class_hash": "0x710a28a02d258fc3ac7b008f52d1bcb472249ac0948221d328858c01b08a889", "abi": [ { "type": "impl", @@ -8820,7 +8877,7 @@ { "type": "impl", "name": "TroopContractImpl", - "interface_name": "s0_eternum::systems::combat::contracts::troop_systems::ITroopContract" + "interface_name": "s1_eternum::systems::combat::contracts::troop_systems::ITroopContract" }, { "type": "enum", @@ -8838,7 +8895,7 @@ }, { "type": "struct", - "name": "s0_eternum::models::combat::Troops", + "name": "s1_eternum::models::combat::Troops", "members": [ { "name": "knight_count", @@ -8856,7 +8913,7 @@ }, { "type": "interface", - "name": "s0_eternum::systems::combat::contracts::troop_systems::ITroopContract", + "name": "s1_eternum::systems::combat::contracts::troop_systems::ITroopContract", "items": [ { "type": "function", @@ -8904,7 +8961,7 @@ }, { "name": "troops", - "type": "s0_eternum::models::combat::Troops" + "type": "s1_eternum::models::combat::Troops" } ], "outputs": [], @@ -8924,7 +8981,7 @@ }, { "name": "troops", - "type": "s0_eternum::models::combat::Troops" + "type": "s1_eternum::models::combat::Troops" } ], "outputs": [], @@ -9031,7 +9088,7 @@ }, { "type": "event", - "name": "s0_eternum::systems::combat::contracts::troop_systems::troop_systems::Event", + "name": "s1_eternum::systems::combat::contracts::troop_systems::troop_systems::Event", "kind": "enum", "variants": [ { @@ -9048,8 +9105,8 @@ } ], "init_calldata": [], - "tag": "s0_eternum-troop_systems", - "selector": "0x5f97ab78613558d9346649708e6829b417ad55826ba2e4f7b0fc79ad276180a", + "tag": "s1_eternum-troop_systems", + "selector": "0x36dc6a7aac90e16df98cc6cef8b971d3432a436339f92352921ab2d542363b0", "systems": [ "army_create", "army_delete", @@ -9062,701 +9119,671 @@ "models": [ { "members": [], - "class_hash": "0x25603f4597c7b9476318af1bf26c9e0f9f7a3f24b8aa4fd4aa095289c74e2bb", - "tag": "s0_eternum-AddressName", - "selector": "0x2a33e6e963e8f80fb8f00a69a8b55ec9834adda81bbb305024500c4b4356e24" - }, - { - "members": [], - "class_hash": "0x7c8598486eb6f5bc890ccac17cc5c4f7400998f5c50247d90e5df0f643f9f2b", - "tag": "s0_eternum-Army", - "selector": "0x34cab5fd09c4f5f5b8624e52c883afec2462c2fc2e7227121f70de648e68dcc" - }, - { - "members": [], - "class_hash": "0x7833dddc0296ff97ec9f1dc202d471ed80888935579f156737927c9207e0417", - "tag": "s0_eternum-ArrivalTime", - "selector": "0xd334451a97858d6173423408cd0c4da2a3878f6ec4f3909e134193d07682c4" - }, - { - "members": [], - "class_hash": "0x189b3d6d05402af89cfefc45b6c6ce579ab81ee7da7cce1fdf08ecb881de732", - "tag": "s0_eternum-Bank", - "selector": "0x6f71dd64e5e14a5ab47d15cfabd84490061490c8c203993790f30cafd5d117e" - }, - { - "members": [], - "class_hash": "0xa7a02d408072e5f97ebf3f0d69acb4fb176223379091948a452c10c314a0d2", - "tag": "s0_eternum-BankConfig", - "selector": "0x2a507ce5bff2ddf50eced9c753dc0a160ba64fc6efe3be4cb26ce51210e2b81" - }, - { - "members": [], - "class_hash": "0x809fe36ec53a3cfa77f64648430007c5bc0bb148c31652b3956bb318a8f7ae", - "tag": "s0_eternum-Battle", - "selector": "0x28394f9c3c874b586a25bf96d137256eab0a702fc3f66aa83464a5a0e062172" + "class_hash": "0x15f3f6904f0500d87d6c57ababf28b0dffaf929e7b74701be185cd09fcd82d3", + "tag": "s1_eternum-AddressName", + "selector": "0x42709c94217aac1ce5900d6bb822dc5e203071e9f184165b4d32144ff0e326c" }, { "members": [], - "class_hash": "0x715169dd601b742605451b231c47de8970be609fb85f48115b01333766bedf4", - "tag": "s0_eternum-BattleConfig", - "selector": "0x224e4f9b37ed3d9cc06297ea8507e62538b864a92232f0ec53a4c7a4cf6ccfd" + "class_hash": "0x28f9ddc0b8df7e2dd4ebaae28edc221d3755cb2e2172353364bd6b05f39209d", + "tag": "s1_eternum-Army", + "selector": "0x16cd0112383678968a6dcc0476cc193ce544a0f2cb27bbf911b519cc66cb2e1" }, { "members": [], - "class_hash": "0x551b3f9ea6504a59d70f1fc420d6e20797bdfe822c7c5e8d5d0d6bff8ad679a", - "tag": "s0_eternum-Building", - "selector": "0x74f3912ea921e93e11f5c8267c29d94f367b3c52840c0ec93292ff5d2374d6c" + "class_hash": "0xf99d18de1389cd897d7c2eaac1d9a23eef4f2ee40f6fb017adfa59a6c6fe55", + "tag": "s1_eternum-ArrivalTime", + "selector": "0x15839d06bf0dd2c3ae1fef464555f3016e153bd6bac0cf62c5c1de9926eadd" }, { "members": [], - "class_hash": "0x3d1ed9f1e9280e3f046561cfb77244866cc919517e62762cef17779d91a9d4e", - "tag": "s0_eternum-BuildingCategoryPopConfig", - "selector": "0x7713338d5bb53067dd8a10c158385c2744d0dfba8260ddb0658394359b6b5e2" + "class_hash": "0xd5d3a9a0f87f881bb0c62d6383e0c1914a3263dd2788a72641ce15eba55345", + "tag": "s1_eternum-Bank", + "selector": "0x46318cd2cff6337f8934ee9e3cbe3ecf1ccb5b1b57dd1711f3b1eb7d7327aab" }, { "members": [], - "class_hash": "0x6619a6a57a8361ac09e034d95d26df7608a1314a89386bfbc9fbbc385dfb090", - "tag": "s0_eternum-BuildingConfig", - "selector": "0x1f8462fbfd271244b0144b93124ee213e9ef6edec50e6fc4b0ea41d2b756d87" + "class_hash": "0x58484f4b87730ec90812b21b0071478121b549694230ccfc380fe5bc7ce04bc", + "tag": "s1_eternum-BankConfig", + "selector": "0x2a590ba3496e4ade5081de7b2de27ed15ecd709e8d88c89f1eeafca9c852079" }, { "members": [], - "class_hash": "0x2fdd5ae262983f3645779ab454a188dd555dcbc3dc3ceb438bf1ee7958b6c5f", - "tag": "s0_eternum-BuildingGeneralConfig", - "selector": "0x1fc4af90bddbc3edb2446f5839d3274131bd7023a2bde3aeddbe29769c0be84" + "class_hash": "0x6108b6e1f6786a67f3864acec676ff7fe33772797a0c771878dd769aed59c0", + "tag": "s1_eternum-Battle", + "selector": "0x169c07a291ef2ba4cfb31ba5b81d45fc49f6a02169c766ac950f823879152fc" }, { "members": [], - "class_hash": "0x1d3ddebfe5bbb35348ac03a42b77be34ff050b5f60d5370ff5a6415d61f8a11", - "tag": "s0_eternum-BuildingQuantityv2", - "selector": "0xe74ab1d939c8b4763331ecee9187cc91e4a363228e596e0a655667aeedb117" + "class_hash": "0x722133bc4e72dec6f3ffb973622227b9f4d51001bf369832e44bca4cd90e414", + "tag": "s1_eternum-BattleConfig", + "selector": "0x506ef0f4b8e567ce2fd94517984758871ac3f9f965426073203aefdeec4fd21" }, { "members": [], - "class_hash": "0x6cafd04dceeb148a4f3cdb0fc76083c74677f11a046f3be2a50cc22279a8074", - "tag": "s0_eternum-CapacityCategory", - "selector": "0x166cc667881fc0d333660d7668601cf536082cc577b720cea8be0f24549473c" + "class_hash": "0x26132d9d528638aa4fdc6377b4f342982e15a796292ee9d8a7d9ff443f035b0", + "tag": "s1_eternum-Building", + "selector": "0x383bc83e69df10c0e58ce05aef021bb904346af8b28de6dd09ed16a497fae29" }, { "members": [], - "class_hash": "0x3a19b4d090591b5be5a300e1fd02e3b0d52bc20b30b47d7a0255a48a678e29d", - "tag": "s0_eternum-CapacityConfig", - "selector": "0x4bb69cf85cfa897830312e40bb75ab1c0f58c01cbbadf4e835ee5fa37d1bb2e" + "class_hash": "0x369a5260d31d6edd5c3d19b487fa8a2c4bd293845e804cd794a7f00f1fcc35c", + "tag": "s1_eternum-BuildingCategoryPopConfig", + "selector": "0x2b847fd482c7e77364e1a29d18c690661dee59631db5538e063065cd28a9157" }, { "members": [], - "class_hash": "0x105a94789b0a8342a90b8878fa4f06553af01b9416d86a0a80d65fc169d3092", - "tag": "s0_eternum-Contribution", - "selector": "0x48fb552387fed5f3f7bcb55468f85ac92efeb06817e5f5e329358b69b4a7d6" + "class_hash": "0xbcb13c22c1c2e177c9a7953f6db153d0b1435baa293e2d7fdc7aa22f380f53", + "tag": "s1_eternum-BuildingConfig", + "selector": "0x10ab036ccd4d1e968f0b3b3333d59911fd7f96cbd0fe73c9d639b80aaf10ef4" }, { "members": [], - "class_hash": "0x56087bbaf3245d64e62c0afd732ffdbe7584493d1a39316a09082182d809da1", - "tag": "s0_eternum-DetachedResource", - "selector": "0x34cc163b0f7a78e671da441bbbfe6dd3632f7f62cbee8e1734c6dec2971478c" + "class_hash": "0xf34fedb8b8bea2b87c8e17c6db5f2b284e46513b186cdb115464aacf72994d", + "tag": "s1_eternum-BuildingGeneralConfig", + "selector": "0x32c22b1ba3f414eff9d3684771ddf9a576adf879fb9db155d153e04092f06d1" }, { "members": [], - "class_hash": "0x71b9c7843ab6be7de6ade56f21be309f9bf08a6e4fc33318dd9f43307e1008", - "tag": "s0_eternum-EntityName", - "selector": "0x4ea8f072e356080ed18f016cbb7f0c43807c733d037c3ad9e52da5fd98e11f0" + "class_hash": "0x6ad15a23139b6577c1adfc3d8d2ad5cf4f55230f17f2ed957cef9a70bdac286", + "tag": "s1_eternum-BuildingQuantityv2", + "selector": "0x7f0d990d9539f02e2536fb9077c112528c214d6250597813b5637fcdf4faea1" }, { "members": [], - "class_hash": "0x2d0dd3c37fa25edc072c4fd231c6ec51dbed2ea0304a334a8b47568d9a1ec4f", - "tag": "s0_eternum-EntityOwner", - "selector": "0x19fbc5ce760d680c185bbefb04a4b1870a4f23bc8fda0fbf77b4a241b7ce04a" + "class_hash": "0x5a650bc0e579da2efb53a5ff5d49ace7a4836831001fe05a66de94e8a200fe", + "tag": "s1_eternum-CapacityCategory", + "selector": "0x77c5b56819d589d4ccf66c86b519f61fea422fadc3011bce01b68b36312a931" }, { "members": [], - "class_hash": "0x76ab75f20ec824383b34afe1315ec9e59fe9f23599086b354f43e3c08aa8e24", - "tag": "s0_eternum-Epoch", - "selector": "0x62827d2605e74e8c4ea2f40a6407477a0eae355a2e6485261acbc95e3219fc3" + "class_hash": "0xff54f724bb9d25b28e52c53402ff004324f9bf8551d21666569798e982537", + "tag": "s1_eternum-CapacityConfig", + "selector": "0x329d78ba810d64a65e56dc6d9648681b25cf5077b2b2a1b006b4280b4a46941" }, { "members": [], - "class_hash": "0x22001c3a27555a192b0a134e76a443707ca89af8fb7a01265473cd609b04a41", - "tag": "s0_eternum-Guild", - "selector": "0x49ac80c25fa65d45250f4dd7a253dd79561a9460e108c173aa413ef246c3e6b" + "class_hash": "0x10f6568d82fcf4a14aa2063fa811ceac7bd52923fe06e5c0c89d23d2959ba47", + "tag": "s1_eternum-Contribution", + "selector": "0x5610d7fde56cbda8d6714af14cb51989d77e24ffd867561e6f6ce36a5c8cda0" }, { "members": [], - "class_hash": "0x2ba8f917f23ee021008384816f0ad038a1cae8b004c53e18f6bac455ec9efa6", - "tag": "s0_eternum-GuildMember", - "selector": "0x517c08e6a498a5a56742edce432fd533bc4cb16589acf1bb025999a5cec0e66" + "class_hash": "0x4ca6ae3ddda2725df1d3f656b45d376bff55f2556fc63188f33436e54cad458", + "tag": "s1_eternum-DetachedResource", + "selector": "0x5fbe88f3b3abf51a9a1e58a0423a555786a2e557f480a7f804a6a89afee5b2c" }, { "members": [], - "class_hash": "0x2f72606313ed3fca8c1d6ec0257466e6b9301cc9fba8ec67d114f7fab0dc23a", - "tag": "s0_eternum-GuildWhitelist", - "selector": "0x5da3d8f80bab03feaa3c5158e1e4584b6b5e213a0feb4d4125798f73b4a528a" + "class_hash": "0x10c87458dd8a14eba7aa1771e8288f46be3b60a738d5dc0af7f45eb2ed4e326", + "tag": "s1_eternum-EntityName", + "selector": "0x4d2ad6e4875bb784306ee539c87d6ea84bd77cd3e7a6a98c7cb073003131c80" }, { "members": [], - "class_hash": "0x111b1a81032822367c6d57b2fe7b2baaaf8304ec0f8075bda6dd83b0827f35d", - "tag": "s0_eternum-Health", - "selector": "0x1aa97583b6abc29f779ed14e03d820d29e64168389ca94367abf35ea7f103a1" + "class_hash": "0x3ae0ab3e0bc8e3ad2288634e6a286bfb08d466a91e9d6a2e37f025bf1d5749f", + "tag": "s1_eternum-EntityOwner", + "selector": "0x45cac7458f40ce855a5d63cf402a25425ad1a761fa4a2657c722d124e6aa540" }, { "members": [], - "class_hash": "0x6277bc0b34ccf11b00b086ca2c7e83a5ac144532b6b4f843caddfcf01c02327", - "tag": "s0_eternum-Hyperstructure", - "selector": "0x5a47c8b59e367cc045b847bd4f63955ceeeffbc43055ecd11d2d77796bddd73" + "class_hash": "0x5ced63836e14228fb5398d583aa7e603f011951859784a767a0da67d5d1ee82", + "tag": "s1_eternum-Epoch", + "selector": "0x7538402a46c4b333f00ed41744e67a26bb14f26753fdbe032f0ff218f83ff6a" }, { "members": [], - "class_hash": "0x1f90aa30d9d5d978f71b991daa57bc5ce51070034c3c3749c3378eae720e1b5", - "tag": "s0_eternum-HyperstructureConfig", - "selector": "0x538fcd59a65ece056337c3f4563a41b0922e14c0892d9e0f2e9980716487be3" + "class_hash": "0x5893d1ef16dd422bf83ed0622527c59e061c0e80431c2dd7bee08b4d1445071", + "tag": "s1_eternum-Guild", + "selector": "0x1005f12b60fb0b9955acaa3d2ef4e839a9d9ca0de11ba53c74c3a4b5d324142" }, { "members": [], - "class_hash": "0x4f85a565011171be648bda2095b1448773804f29d967448aa2fa81554cbfab1", - "tag": "s0_eternum-HyperstructureResourceConfig", - "selector": "0x3841ccb4835caa2dd2433ed893d593a63d74afea4ec67eccb905df41d6b95b1" + "class_hash": "0x503feaac2cbb9b6e3568daa741bd89db2a9206d315fca008ea4cf44d87dce88", + "tag": "s1_eternum-GuildMember", + "selector": "0x4e1c4b07b2c1113f22a01d146dbe1224007cd027c7681007de3828761f92c1" }, { "members": [], - "class_hash": "0x7dfe538eaecf8e98fc578ef98c8766c050d1e6fd853f2a663a42d99813b4e23", - "tag": "s0_eternum-Leaderboard", - "selector": "0x2feedf0fc0a7bb2c53a51fee44e1c8a2cbf182ed000b57865c108eaaa463bcf" + "class_hash": "0x51e97f9e0e1b92c53d309c07a145d8786aaec64518b87c3bb970d4685759081", + "tag": "s1_eternum-GuildWhitelist", + "selector": "0x58ba641332348c46d0aad19ab754598e63a4d8736db7ef9654918c79d6ad071" }, { "members": [], - "class_hash": "0x792ff7a8ffffbaff0859d84e2d87ee5a71996bfeb349248cbf63d7dd1b8a1f4", - "tag": "s0_eternum-LeaderboardEntry", - "selector": "0x446f6cb1881e354935007b6a51033216f2f66cab52573d1bb2a03d7bc7fb4fb" + "class_hash": "0x4eb153ffe6fce442cee9384e6a7e95159480a4aee2c563b74c7b1b50eff73d6", + "tag": "s1_eternum-Health", + "selector": "0x2f45d2395ab511a8e093bc7830fe25b18b387f360e515107021e75eaea474b5" }, { "members": [], - "class_hash": "0x3d74e8cac527985922387788dbf8d902a90ae15d21468719ba2d5f7b74cc881", - "tag": "s0_eternum-LeaderboardRegisterContribution", - "selector": "0x751fee2d8620c3b1f24b201044ac4414a808e5cc57cbf99b305a66ac3dc6334" + "class_hash": "0x490bea09a254afb811b6a26d88507598193d366a05fe6e9d28455ca51930c9b", + "tag": "s1_eternum-Hyperstructure", + "selector": "0x5894102a0f9c53bf2298d3bdaf4b0f8a0f92777d57ff0d585ca3b5c5b25b7bc" }, { "members": [], - "class_hash": "0x671185f10d3a8d6917e10b6c8686fbc556755e8eb7fe8b871e9660db26a16db", - "tag": "s0_eternum-LeaderboardRegisterShare", - "selector": "0x2781c647b95b04aba3e293318e83e5ab139e95a13630336badd83197225f679" + "class_hash": "0x47718f195842c1e7de343f276874d6cbd4e3af43e46d91779219bb775f07b30", + "tag": "s1_eternum-HyperstructureConfig", + "selector": "0x555fffbe98ed821a2943490fa9ec2fd479940fb1a06434031a6ed49fce06413" }, { "members": [], - "class_hash": "0x6a6b0e38324523a4d7c9406ad059adc0244353ae86fdb28589419643152d42a", - "tag": "s0_eternum-LeaderboardRegistered", - "selector": "0x3d2cbb167883a8ff584dad6276fc1df0b7757d5e2282f1658d746a8c936116b" + "class_hash": "0x298c3a93889760e341ab90f7ec3432fb9f564ec90ab6dae8ca160cb477fd64b", + "tag": "s1_eternum-HyperstructureResourceConfig", + "selector": "0x344c119cf22cf69ac0954dadeb846930657d9d80e550aec607fe0d285e2d1b6" }, { "members": [], - "class_hash": "0x19baf80e6ba59bfb8c94643f2ed7c15e902d00d313ac92c90f4071e3ddf0129", - "tag": "s0_eternum-LeaderboardRewardClaimed", - "selector": "0xc7744e31a4ae5a2f24008b6147fac5c735bfa7fc4bbff8224f2833f73a8e93" + "class_hash": "0x328f1fff82bb8aeba6b1e75fc1edf15d815324486c97df194a8ad682bd419f6", + "tag": "s1_eternum-LaborConfig", + "selector": "0x6f056844c678da88f4b2829f7252b9264702448b0305224729f30026db3f644" }, { "members": [], - "class_hash": "0x1a812bd54f7a074e8a1289ab1d7e41e659ef15c607d934abfeda35d987a834", - "tag": "s0_eternum-LevelingConfig", - "selector": "0x57307c2d18e8c1e060fcb4cc9d63ce0abfa90f9e9bca63f00fb08a8b6a6584d" + "class_hash": "0x5f9e1048bc3fcab978c16ea514c906e08a6a908a551b01c9d8d56991eb3be12", + "tag": "s1_eternum-Leaderboard", + "selector": "0x2731a4b2cc1d25c3605cbd9f58fb010860aa57f2fd978b012309815622bad38" }, { "members": [], - "class_hash": "0x465e09976306288f9d5ba76464636aa3570b50d3dd537e62df642524007eab8", - "tag": "s0_eternum-Liquidity", - "selector": "0x88855562f77d4da524f33db24ad881dd1c3b4d809fa37d2508b5ab1fd4310e" + "class_hash": "0x6098e4bd9970a954a3a7581ae0c272d7b0e4134bd1b701f376480627678c260", + "tag": "s1_eternum-LeaderboardEntry", + "selector": "0x64d192ab245076ad4a8fc1065a8ed826370b3b9ac74e19e5ba62c4778afbd0e" }, { "members": [], - "class_hash": "0x3acaf90122ee7bec0d7e0c29b9d227fb3f7576661157acf5817d2875acdeb24", - "tag": "s0_eternum-MapConfig", - "selector": "0x1c44934bf878736b0ffd224a4d0065ca92072daa6e846de657f58b7b5a4374a" + "class_hash": "0x278cfb9c271d230ae30c965120df0ceb1772b42982abceb4c5696afc5a91d3c", + "tag": "s1_eternum-LeaderboardRegisterContribution", + "selector": "0x19570cd480372cee10d9c139bc552086c7b8222c1bc012113bbfd39b56a7e8" }, { "members": [], - "class_hash": "0x1c99e7ffe68d55ac3fc421eb979fd5d7d197d6dc99cc8893fcaae5abbaedfa9", - "tag": "s0_eternum-Market", - "selector": "0x18457324069342b71d49b485b3b2ced814726c5a978581a172dd806de3d9bac" + "class_hash": "0x6ea5e22c4403403c4ef68ce5789b68da3ff18607693fb048bae52293204ce9b", + "tag": "s1_eternum-LeaderboardRegisterShare", + "selector": "0x75ac5be2d09aae03d624ea55302b474702a77e282b53b6ae223e7e2f2fcf331" }, { "members": [], - "class_hash": "0x16eef0d1d4096a35efebc74a9c8254cb8c1af27a8c7d22fda96edc796b4cdac", - "tag": "s0_eternum-MercenariesConfig", - "selector": "0x7983d4a611b82abb59e4320d8032fcb84f3c372c60c83a01d680f14f64bd3c6" + "class_hash": "0x94162e9c662781d890a9ab0dfba07a5ec2248410ef1b42d4913e1a4a489cc6", + "tag": "s1_eternum-LeaderboardRegistered", + "selector": "0x23cb90d19983cc3481c16b0daca97a2e9d61ccca2887ec43a37e8d0c8bc8a82" }, { "members": [], - "class_hash": "0x247307d7e5299e6b3ce6377a08a9d41497229eaa6a9e591858d0a088c61af4a", - "tag": "s0_eternum-Message", - "selector": "0x3262fb0b2f51323ea7116e1ef4735a6e1be97bc86bbe19fcba298d0edfa0c5c" + "class_hash": "0x50bdffa18201a51190d38b3a83d62dbc9314b5634b8543f92c6fa692fbed6be", + "tag": "s1_eternum-LeaderboardRewardClaimed", + "selector": "0x4a2604638f545e33a48aaa88165cdf7c14d2e3e90dc0ffef45efaafce0a7acb" }, { "members": [], - "class_hash": "0x355984d124ab086115f9b6855c05a7c6ab416e01a45e57a08e13b28ec7db02d", - "tag": "s0_eternum-Movable", - "selector": "0x354103241a35f6b87bb0e9c4ac055975dd5324a93ab74b5b30edcce0067c59" + "class_hash": "0xe08cd3f99dea6cb5ac7af83788cf444cc5961187685f2c54179b990d3a4ae7", + "tag": "s1_eternum-LevelingConfig", + "selector": "0x1ae8c072019c12fbf04cba6e1a71a0a645dffc7fff83847d97ef2229e3abb33" }, { "members": [], - "class_hash": "0x51b6a84422ddfda104af1cb45bbce0609edd265d2b909237ec37dc7aa5a2afd", - "tag": "s0_eternum-Orders", - "selector": "0x2b8ed5e03d3934c534f66fc8194cd3cc112003028691019c9d1dd5ceacf6bc" + "class_hash": "0x41389837334c7959eddc48a3a3c0b3f8d77ea4f0be3d5b908087873323fc3f6", + "tag": "s1_eternum-Liquidity", + "selector": "0x4ba2cf13ce80401e973629d0ba586aad1cae4ac3cf68ed3140f3373d361659" }, { "members": [], - "class_hash": "0x787159e5bbd67c0eba40db3b4984a9b1ace232ce3991bf96abb6a964b57d2", - "tag": "s0_eternum-OwnedResourcesTracker", - "selector": "0x50b64757716328c2639f72f641130df11177b01695167ec2ffb63f4c5ac8c93" + "class_hash": "0x2e6bbce3307779bb4e22bfa12b254f648bda3e5667bb4aff23a189ee68a0ecb", + "tag": "s1_eternum-MapConfig", + "selector": "0xc723bc276585620edab428548e0c62b996567932757495abf2346153959bbd" }, { "members": [], - "class_hash": "0x6943ea1c8aee5d7749a85d2e333a8d97dce8d1d661e5bba0d93c850ab33d7da", - "tag": "s0_eternum-Owner", - "selector": "0x2ac70068901471291f27e386276bb51ce50c89e144a6e8e11d4f91b78236241" + "class_hash": "0x3e5a538297e5b4a973a580d26b347779d457a0813e552e71d56ac9347d143b0", + "tag": "s1_eternum-Market", + "selector": "0x1fcfb4aa02fa062c2f9fe4a658759a4cbe73fc5db42c595184e770c9076750a" }, { "members": [], - "class_hash": "0x77effa7d6e9cdaf053e31ddb864c29cc587e756673d8a2bdc8b919ac8eb0373", - "tag": "s0_eternum-Population", - "selector": "0x999f9ad8790ee0ec873b5e149fa1ef1054039e90bba49ac4975ba2cdb54429" + "class_hash": "0x3eb553163a235623d1a4cd887565391f6183aef59993752b018fdcd99e7ec6e", + "tag": "s1_eternum-MercenariesConfig", + "selector": "0x76cec8905e7623b482bec7afebbbd87f2556ffa6068c887ff2fc9e8ef97373a" }, { "members": [], - "class_hash": "0x58397e297c6e9d5fb96965dd7241321667199c25918efeb27bbb830ab0948c3", - "tag": "s0_eternum-PopulationConfig", - "selector": "0x5cd485b0e678c36a4a14b0fcf5880e58e206c5b8199c9640d88f5ea86efe9b5" + "class_hash": "0x4e9acf58624786c7d118f4d0a1eb23bd2dccb7b7ab1755b012a3b0412af70f9", + "tag": "s1_eternum-Message", + "selector": "0x3ce31878ad62fd485eb46bdbd403bbe7daf2e544c15d386dcc7ac519a10678a" }, { "members": [], - "class_hash": "0x4953b4f720c6479aae4d8b84b2d749ad5ab816f03e6ce500d5bcf609c59e77c", - "tag": "s0_eternum-Position", - "selector": "0x77c1a504cea841ea9ee0819e994d66d453d0652ecb7a51e80682ff8abd57f65" + "class_hash": "0x78bf5c45268df4bc02c367db341e1aa4331857c21304683feb2e65306204bf9", + "tag": "s1_eternum-Movable", + "selector": "0x2f6cc9ab06c7e016297339e078c3755e568fce8048462de2033e8d42e5d94e0" }, { "members": [], - "class_hash": "0x681143e22335e72474d3921e0c0de14be253faa5b5c5c46a4adb8ecd3e2f6c9", - "tag": "s0_eternum-Production", - "selector": "0x12c4d44e2b854c8481b4da2b2dcc648b3a9d4e9006b4143acfedbd6aa8641db" + "class_hash": "0x4dff527f0c7b7b73e3ac91dab4ad66ae4dae4f3616cb6338dd4bad8c3246382", + "tag": "s1_eternum-Orders", + "selector": "0x3d92d333e580695c5676529fc9b81f0fdab316ad7385d7c362ea7074413b99a" }, { "members": [], - "class_hash": "0x2ae1387960b8602eab9567676f73317344ae7ded34e9fc0c012966e8d3cf2ce", - "tag": "s0_eternum-ProductionConfig", - "selector": "0x520a8a0dec76799ca6b1198154f32247aa76da785d2cc7a56dabe401f80416c" + "class_hash": "0x60330a73e8c079c062165120e11d002eafa7a8b4970d0b7dc3e73904e014544", + "tag": "s1_eternum-OwnedResourcesTracker", + "selector": "0x1a8f5317e84356a084dbf2555cdf3c429e285e6f161654a678eaf73c137e52b" }, { "members": [], - "class_hash": "0x429e0c7c8e81306023b8d502d4e7737646720b8769a13581d54e99b76a6052e", - "tag": "s0_eternum-ProductionDeadline", - "selector": "0x18bea71025a244df48319cca495154feeec10353885e4e9b73aa18239584fee" + "class_hash": "0x6619f0441ff7330f6291777da5a95a3121189f8c5b136cc5f3e85cc6f728f44", + "tag": "s1_eternum-Owner", + "selector": "0x35bfd77bc5bbf7f39cbe2c9ced8de632af641500a672e876dffbc89cc10441d" }, { "members": [], - "class_hash": "0x7c98db7992d639ca0be54bd97dd342e80e4b5a8f9fab93fa3d37a5c027eb8ef", - "tag": "s0_eternum-ProductionInput", - "selector": "0x3df010b82ccfbdd80db14af6e47dc79038aec508f795b9d0f9968edba040c07" + "class_hash": "0xf29140e158b9089a938917604b82d2ec14daa08f21f9d742a97cf17f30c18", + "tag": "s1_eternum-Population", + "selector": "0x6f2e4171b9907e7629eea2a19485a64d97f104121c4337452de122f897c0be8" }, { "members": [], - "class_hash": "0x297e32982827c7ca0e9950f7ab0593a7334289d004cff93809522a45774d858", - "tag": "s0_eternum-ProductionOutput", - "selector": "0x5ad2bb76ff0fcf39f0a6399770ae2f78b6999f03e5c9b9aa7b2216477772ffe" + "class_hash": "0x7e5024ab76ebcd616507b1998768d29b5372c54de3ac88bcd6fdfafcbf67720", + "tag": "s1_eternum-PopulationConfig", + "selector": "0x441576bc8f9ac5063b8ca88eeae1b33156078c75de8cbdf506139e8450b78cf" }, { "members": [], - "class_hash": "0x3736456c345cc770abd64231513bd58269d6fb382e48c411be7bb5c66a54322", - "tag": "s0_eternum-Progress", - "selector": "0x2b63dd696d82b19fa1421e9e47be1c573b761c39f6b58c0d14ed0c562f26b3f" + "class_hash": "0x2c8600cc8411484671075036b8dca8f03524e5b0503617e36ac306b95cf87fd", + "tag": "s1_eternum-Position", + "selector": "0xe340ea49c8540928b5c4010db9108cd13f719d89a5f7b18cb30902e01104ae" }, { "members": [], - "class_hash": "0x375116ae74219639eab6fd408cdd263e4c6c93fb0b544d3ba3ef8e876ef561", - "tag": "s0_eternum-Protectee", - "selector": "0x2ac4b9ed0d69ae66f6feff3272811293fa6e8196bd602183271d07ae7a5d3bb" + "class_hash": "0x4482f857b3d5e6d6d1fb9d5680663a1e0eda04699b105aa565490498e395d1e", + "tag": "s1_eternum-ProductionConfig", + "selector": "0x38bacafc2ceed54f95033f7529efa9559f877aea41db072b797235cee383a06" }, { "members": [], - "class_hash": "0x3eff2b8014606f2522063b0803a9f0456c0be34f4ec6b7f31d2b0948a4aa0c1", - "tag": "s0_eternum-Protector", - "selector": "0x72426f978a43c915d92511ce3efb7fdd6c962f4344e37d38ed00d0d95eb37b5" + "class_hash": "0xef748f29f1ce62c69e4c0bfcaaca0cc20c90d69411fbbfabb5883e53444c94", + "tag": "s1_eternum-Progress", + "selector": "0x510024ae0ff452228a083d9fb3aba5e3521c107ab7a84246efcac7bcdfddcb5" }, { "members": [], - "class_hash": "0x7577aac22db1cb4db007701d6292ed0edddb54a27a947f2fdbce4615cb0c178", - "tag": "s0_eternum-Quantity", - "selector": "0x399416904300b2d9bc98601f480dcdd403fac4845279504082f1775505fb41" + "class_hash": "0x2eb9f6f9ea6824c466ded7da0b97f77d4b54be4e0b5180c0f0696ec7311c142", + "tag": "s1_eternum-Protectee", + "selector": "0x60fac544ae19c3bdb391a986108823d052d2d65891459589b6f3c698f206ce1" }, { "members": [], - "class_hash": "0x2c17a1b5a72fc1c99fcc98629008b8cf539162e67a39813fadb9f407e20b2fb", - "tag": "s0_eternum-QuantityTracker", - "selector": "0x29c1ad2966a8d135fb73179ff12b872776a13fef4e7dcc14955f71950ad65aa" + "class_hash": "0x756cbd91b86e9eb15a8454b066b7e593cbf9a121ee1aee4bcd34023d5076591", + "tag": "s1_eternum-Protector", + "selector": "0x7c858e96804191100397f8a4683ca93d81d7d341dc68d163c7cea59dc974ec4" }, { "members": [], - "class_hash": "0x3c9e64e617d829d6ef52f3cc63ee1872892697641ece5c3562494655751ee92", - "tag": "s0_eternum-Quest", - "selector": "0x7be72bb5626ead15f8756586fc89f32ca4e65fcbe00e8d49a222d94460b40ac" + "class_hash": "0xfd49d43ef8943b2e262ca7ce1d43c5187969b3cee4007f4d0e177b92981c03", + "tag": "s1_eternum-Quantity", + "selector": "0x8646cb000744430c5d95cf5616ce8ba4913401760158aa1ad6738475a36591" }, { "members": [], - "class_hash": "0x6d7d41fa73f6a0cafcc95b905c394f420dbe512afb245f63c5aaf9d440c1c90", - "tag": "s0_eternum-QuestBonus", - "selector": "0x3e946c05a7448654a3f0f8e3983c98daca1d6727d3a595076b232f21aa9bf61" + "class_hash": "0xdeb7bcee3ae613715225d0980526d7c9d4735829be2e7f080c914876bf5ff3", + "tag": "s1_eternum-QuantityTracker", + "selector": "0x5f336941c172ea1a837a1c82d98ff802817688e6e5f66a32ac3a9ff320cfb18" }, { "members": [], - "class_hash": "0x6d7fa03d466e40e61eb5f9e8920ed1723e386147ece32faabfe48a3d96d8acb", - "tag": "s0_eternum-QuestConfig", - "selector": "0x10baf692d4bb6ab5fa51d3bcdb33b443bbb89178f74ad35c0f39df34972d97a" + "class_hash": "0x1922623eed2f3eb9d7d770af2514efcd2d40e6773e9c2c1944bc2741e07b3b7", + "tag": "s1_eternum-Quest", + "selector": "0x5748c683cbda725287adb63a5b5c7c471d1d782f2779609d4f66efeda03ff68" }, { "members": [], - "class_hash": "0x5c8dbcc5c43eef6f7bebe035cfab3f0d97fc98cb7468c27494032ee7c477682", - "tag": "s0_eternum-QuestRewardConfig", - "selector": "0x1ee6b0ff29db9cdeecda6f947a65007ef951ac7b80242fe22cbc641bfcd24c5" + "class_hash": "0x59846aef7554c61f02aa00ba350ed1001b00b5d7a26e3c66c95901bc7bfd797", + "tag": "s1_eternum-QuestRewardConfig", + "selector": "0x2f5fb5139fc5144da42495b348183b95708defe554ca9d6768498cccecb0066" }, { "members": [], - "class_hash": "0x442cd0a9cac38ceadfe1f6ff64cf9df8a08036e1aa83e9fc8afdb34cb94af86", - "tag": "s0_eternum-Realm", - "selector": "0x73d618f4cfd6974371417e6fbe450ff219d703d52cd92acd3e0362d18754876" + "class_hash": "0x5ab6ce70c4041941408e527f5e677cf0e68b9ca4bbfcaaa3c7dcd6deba090b6", + "tag": "s1_eternum-Realm", + "selector": "0x6b15a2a9c9d60eefc6c82731f77ae2167b6abc68a909e06ed4f0a0c20a447ae" }, { "members": [], - "class_hash": "0x37903a2f2a111216ca18f3d52cd3b7ac241700c929d0f532d82c8d0eef0db26", - "tag": "s0_eternum-RealmLevelConfig", - "selector": "0x7430cd339058f757d8da2972d4609124b232fac288cd84efb4975ef17783fa3" + "class_hash": "0x271add51127069822688df385865088bb78d39040babb928223896e9cf90a60", + "tag": "s1_eternum-RealmLevelConfig", + "selector": "0x7a5266268ba6febaa9248d1ec5543f7731c07391553c9d9b089023790344d78" }, { "members": [], - "class_hash": "0xb05b9f8bd0de85e837c571d3b7555c1dd54b8601049eb250f25193581a3813", - "tag": "s0_eternum-RealmMaxLevelConfig", - "selector": "0x454f0915256598d53f9fdd192a32a5886d2b006532ea05b1981694951e62fb7" + "class_hash": "0x56c6a40b5d709cd4c5669c7a92664b7220ab156e793b6d0df694baa0d29b99", + "tag": "s1_eternum-RealmMaxLevelConfig", + "selector": "0x23ce30f931b91b01eb8a34f92c50de018fa49e05b9ea5cd0b4350a4c94fa7a7" }, { "members": [], - "class_hash": "0x6e316e67743d138e6ee73ed2a1e6f6e9b814a888ca4e06d61d066853949c906", - "tag": "s0_eternum-Resource", - "selector": "0x6d9f80d9fc8d932eaf382b0dc61539511e229b2dec5a275dfb836095d8f0521" + "class_hash": "0xc58be0c889a407b92a5b1df7f1221567a43ee5a3f5315464f3c598aafa1725", + "tag": "s1_eternum-Resource", + "selector": "0x6bd14dc16a7f05252fcf2fb66630b8f05d39d75b36f55013334a4b3bb8fec57" }, { "members": [], - "class_hash": "0x63b70cb7538cdbf5d9c29df596130839d21a2a3327cea598931b590d0ad3199", - "tag": "s0_eternum-ResourceAllowance", - "selector": "0x5d040dde8317e13b9643f324a18afc64c5044e79569552f8496e919c312b44a" + "class_hash": "0x32648f303c21fcdc338110b1b5a06b419832c5432787228d9bfe330ff65ebfd", + "tag": "s1_eternum-ResourceAllowance", + "selector": "0xf21a6f41bed8651cea6e86ea4d796e7c2be9e0e798b48b971b82f489e68a3d" }, { "members": [], - "class_hash": "0x2e09899ffdc52704cf7d5881b2b9576b99ac5d1a0939caaa79ba005f941ef8c", - "tag": "s0_eternum-ResourceBridgeConfig", - "selector": "0x462f28b5568fb3e258400d85241d45cd31e053723d029bb0a3542da9ef2ece6" + "class_hash": "0x7d04749bc8b5042f74fd6cf08f00dd4b1a1af9da5db5f9d0e21da9eb574620a", + "tag": "s1_eternum-ResourceBridgeConfig", + "selector": "0x5b58fe2f01c7767c5885c18997654853caf0765fbd6e72d2f54b8d8163a2105" }, { "members": [], - "class_hash": "0x7773a272288d8f6746b61d40015b44f451a5f4418785ebb893cdd8a3f101924", - "tag": "s0_eternum-ResourceBridgeFeeSplitConfig", - "selector": "0x33b2e568d65393f26dffa1e9fcb1c8e5aac80bf8ecd96a62c56fa7626d08d4a" + "class_hash": "0x369998561431ccfd4977aab82c53ae491bae58a867ee91ce77701c68c64d2bc", + "tag": "s1_eternum-ResourceBridgeFeeSplitConfig", + "selector": "0xda0261867f8d357360b3d3c651e6f26a72caaa5401021843d7515acf5a7300" }, { "members": [], - "class_hash": "0x69f85789f3cd09073415acea848b4121fb7ab57660d65efc0902f9b9088cfec", - "tag": "s0_eternum-ResourceBridgeWhitelistConfig", - "selector": "0x291a767dc981735be14609c8ef267d33c389f58393358ce20f757680d065bbb" + "class_hash": "0x505f9ac2bcabc71c14489b2327e757a0c1d9b0721257c7cbaae10a5f4c90c6", + "tag": "s1_eternum-ResourceBridgeWhitelistConfig", + "selector": "0x3af6fef221ed38a459a75bf2c20c5534745e6e9fa3d6c9df899c43a6aee1eee" }, { "members": [], - "class_hash": "0x5ca96e7981e9fa033962a04953fe271d795fc28a77dcd09d5271d8da3714c9f", - "tag": "s0_eternum-ResourceCost", - "selector": "0x15d8989d3b9ba9d2d089e1e920d2d0c428811ec0ac77b09ab12bfc3b42121d" + "class_hash": "0x6c52d4ea5109c6be197e8f64fda6ebf06f8a9fbfc9ae44c4fc479817bc46d33", + "tag": "s1_eternum-ResourceCost", + "selector": "0x5e5b5b182766e23d14ca1bde33304c8b6c2e348d037073fa87cb23adb3acd2d" }, { "members": [], - "class_hash": "0x1c08b438614f48ce953db0bd0621cc61e499be8dad256a681d0f8981525fee9", - "tag": "s0_eternum-ResourceTransferLock", - "selector": "0x7deca04dad26fe5bed5def8be8e9fc199906496dfe2aa982e9cd11fe35300b" + "class_hash": "0x32512653d00dbf62a310e75a52a4c555c66dea91eae09adadb4a9c26ec6e065", + "tag": "s1_eternum-ResourceTransferLock", + "selector": "0xfb5fa4535e4bca521abeb02621675a6550ea74c791f4342f7e5a3a2d6c19b0" }, { "members": [], - "class_hash": "0x1661ce7179939f89588fcf3d6ea91416e265772e6cdca45dac1441e4b3db807", - "tag": "s0_eternum-Season", - "selector": "0x4f8865388e8136115c535f8be3bca980cc55ce5cde180fdf43877a9ac42cf10" + "class_hash": "0x5e33063c9c71448f97e418619192c0bb534cc1d6b130690675020b12c53abc1", + "tag": "s1_eternum-Season", + "selector": "0x7a6034c750e0dc9a1fad3776dd6e6c6697eb36993aed5228e7729206dd560ab" }, { "members": [], - "class_hash": "0x5908399449b220b2799f9c6c1d90531548d6a921676a73d5b18e3c73211349c", - "tag": "s0_eternum-SeasonAddressesConfig", - "selector": "0x2d1f2883267358910522f3abc2d86e377bf44b7a85eb1ce9a9a936af9872400" + "class_hash": "0x440e7887f604b152a04b9de6fc119d9278259cec2ca4050133b951d28ac9897", + "tag": "s1_eternum-SeasonAddressesConfig", + "selector": "0xa98bd556a5b641497f413f155e4bdce557ba25a48080540ac1e827d0dae5b3" }, { "members": [], - "class_hash": "0x6f19a8e8f55464fb398bf457038b10a01d6cfcf5051aa6c7a7296024fc78f9c", - "tag": "s0_eternum-SeasonBridgeConfig", - "selector": "0x67d6487b53941b5d6614c1f8f8fd0c620904fffed74e740a95f99485854896e" + "class_hash": "0x488068b6a2aeab65ba68fc47404d00482be3e34473f557e5fa189a2ed916679", + "tag": "s1_eternum-SeasonBridgeConfig", + "selector": "0x53dcfaf952a8e333e8212bf13c39cfb7d02f26ca8cf47aba06e4a90282481e3" }, { "members": [], - "class_hash": "0x68dbc517a95bd1643828c7f03c53b34cc6a2b9ab364825b676b19245380bec4", - "tag": "s0_eternum-SettlementConfig", - "selector": "0x2df09676383e67499863f6671e25031b67c0344b2d3e2177081d16640cef28b" + "class_hash": "0x59de73957bcca5ee7a6523eaf9e450d30e5a8d179b756d59a4ad76bd39fe31d", + "tag": "s1_eternum-SettlementConfig", + "selector": "0x4d38d3858af58aab284639984a674293c5689216c5e0b9f3574aef9f3a9dad0" }, { "members": [], - "class_hash": "0x5a674566f968363982331c6e454e8046e123ce141cbe9ccb031a6f44d7fab3a", - "tag": "s0_eternum-SpeedConfig", - "selector": "0x7f66a20a5fc5f3b3a3b77fa1a3f8c30cc0a5e7fe03eed54a4c1f3a50d3421a4" + "class_hash": "0x2b346ce8db28ee8e45ff1dd81535f00b044a3fdc5c8841f4de9106afbd22a16", + "tag": "s1_eternum-SpeedConfig", + "selector": "0x56c1e6bea9218e0afdd55a3cc2c5360d969a6a0ccf3f6d1078e4b200cce51cc" }, { "members": [], - "class_hash": "0x5c31bd0ec3923ca88f01ac658fcdfc8e8e73d22f4362b96a5ee55ae5232a2c8", - "tag": "s0_eternum-Stamina", - "selector": "0x39518c19003fa9f7525361cc92b886b541122d0ef323ad02f0a5ab8baf1dd4b" + "class_hash": "0x234946625a5b48f2e490906ab36e28c0a24d6c5778276475c6bf8034b2ace8a", + "tag": "s1_eternum-Stamina", + "selector": "0x1b2f9a5ab3ea1bc2565fc5cc30f432b41848f7909b64fd3d97d76dcddacbd3d" }, { "members": [], - "class_hash": "0x4e57c7bc107c4d7f740589732138414790b76320bb831fc912d0ac30d699738", - "tag": "s0_eternum-StaminaConfig", - "selector": "0x72604cb9cc861ecdb0e70b00137564390c5ccafde0d9d37ba014122e9288df9" + "class_hash": "0x38bf80ee86dca16edc5ec0302d52efc5b5f01672c3ef09b49aee393d5de8fde", + "tag": "s1_eternum-StaminaConfig", + "selector": "0x1049adf44800338362f91c904678f82fa47fd0ea0828711bee3e36bee63b97e" }, { "members": [], - "class_hash": "0x68eaa4e6a99462bf94073ba9b2e3a580b4db9170d28f47cfdefb47023e91eb7", - "tag": "s0_eternum-StaminaRefillConfig", - "selector": "0x269f27b58ce568cd0a1187c785445f746a959f915fc35b999aaf2afa95c04b9" + "class_hash": "0x626911965fc08d9d620dba8722c90e677371f046248b06f3adcf4390622f287", + "tag": "s1_eternum-StaminaRefillConfig", + "selector": "0x7c6db9d03dc473ddec8a0bb2c50b5988a8af928935daea336bb6f0f766a3b41" }, { "members": [], - "class_hash": "0x6d8349a51048775ad58a5e14c77606d882ab3a4d18f5a1b59138d973156b8f6", - "tag": "s0_eternum-Status", - "selector": "0x6819b601c22df29790f76f061612ee4c23e6d77cf850a685fa8c7ea6defe1bb" + "class_hash": "0x8184163f4573706c555f878a960da7dd6dd73e550759c26ddf31bb15b265dd", + "tag": "s1_eternum-Status", + "selector": "0x3ebd20c50f05e81810279f60088898425cb0ae9e35f5ac99359e8552292be24" }, { "members": [], - "class_hash": "0x3669757d103c83f6fca79bd6c75a49d8a273fb92dcf6bba1ab4ccaafa6137ea", - "tag": "s0_eternum-Structure", - "selector": "0x67d49b2755ef1c37f1efaa29dcd3b4c483691d9a969211f49bae940e757b033" + "class_hash": "0x445850a334dc7395fb4b0773760908c704d6cd343acb309f787364e2d6f027b", + "tag": "s1_eternum-Structure", + "selector": "0x3b407b0e3490f7044ce3870614a93f2a0fcbec02710f0975bfdb6c28fdfbecc" }, { "members": [], - "class_hash": "0x6e04e36fce10b6885b2180899d40134304afd733807bf45183839c37276d44d", - "tag": "s0_eternum-StructureCount", - "selector": "0x2add29083cc23bb0da9d45470d574877e3a63de4eca3730bfc35fc32d7256bd" + "class_hash": "0x3c90dfd7d56f15d47d5fd20d2ac9eb956788c90c66c8d9c61cd2797114704e9", + "tag": "s1_eternum-StructureCount", + "selector": "0x23b5a2b877c85f0d71bc36b420ec53e12e5ef8369cf1aedffa0bc838eea2dc4" }, { "members": [], - "class_hash": "0x229093b1da22e9f70eb9818a6873854bc5f7a9c3c254b32e33b8ac8ef7e6a78", - "tag": "s0_eternum-TickConfig", - "selector": "0x3dacec234467fc19b55d08363ec6c5128d40513e9c785cc8d6fa96a10e1e2fe" + "class_hash": "0x78bcb719dc3c363d315c54e49acf539a6b206f8094a8df13905300c90c54e2c", + "tag": "s1_eternum-TickConfig", + "selector": "0x576d27d39e416d211c923deeebe1505c982fe3aaeb511c7bcb0ef063f566e66" }, { "members": [], - "class_hash": "0x4789f1e5905969a83009f355f5e2bc6882f5228f2dff1beae21f6c315f4d3f1", - "tag": "s0_eternum-Tile", - "selector": "0x2be20d4e39863a5ae902d8a1d7d218f011bc5fd0b144656c1ec555e95939d7a" + "class_hash": "0x1571af1924102cd1a6b9796935ad85debfc12fd1057c7738f22ab6bf9d0a734", + "tag": "s1_eternum-Tile", + "selector": "0x66c306156fe0c5b2785192d61977ac8475e3cb3dbc5d68f5547ade25fe1f4f2" }, { "members": [], - "class_hash": "0x4a83f3518a2a3b7fd4a69303275fc35dc9d5b08d3b3bf19a6ec9cb8779b34b9", - "tag": "s0_eternum-Trade", - "selector": "0xb8f1c0b8b5c9b646a2275babf4f493a4dd50440775aa1a52f07612a3f699bf" + "class_hash": "0x3e187fcc088b7453ee843c1a4534139b7d1527860c64c609279afcb7bccba93", + "tag": "s1_eternum-Trade", + "selector": "0x6ddb8e334e9c33541fce1e72774d6c43c1057a1057a570f2eb12426f51291" }, { "members": [], - "class_hash": "0x35b1c94e4a2c44b7484df407cba0df8042fd2c8bb2cb7c14e3a54b5c78f9724", - "tag": "s0_eternum-TravelFoodCostConfig", - "selector": "0x5effa64ae71be8b1d19c231fefb1056039306d3b1d8885baed5f774d4da2a9a" + "class_hash": "0x421846bd7dfaea423ad0b9d025d960a20172ddcf321d5e16665ed1c667ecd6a", + "tag": "s1_eternum-TravelFoodCostConfig", + "selector": "0x4201d15b950f8e080217e23d7ef911390c3eddb573f7dc857e56c5ddfc606ab" }, { "members": [], - "class_hash": "0x24f902eba1a1f00afbb06c6d6358a5b9d9831e5f01fa19d20d54e4610d266e2", - "tag": "s0_eternum-TravelStaminaCostConfig", - "selector": "0x49e464fb66d305b9b58610bfb89bed1df4e2cde87f523936e71e5fa5562f9cf" + "class_hash": "0x3a3107b2bf45e26c59666750c41655385ce7ffd19d0c8ac59856b0363105d51", + "tag": "s1_eternum-TravelStaminaCostConfig", + "selector": "0x30011c19eca1b0f0f35a4c6bbdac1e437ae7db4670f3ae445d057ee5516ba6e" }, { "members": [], - "class_hash": "0x13787b670988065ecde86c7622e4dfc79e9752b1b093e22e81cb9797af3eaa0", - "tag": "s0_eternum-TroopConfig", - "selector": "0x6ae523bfd49a164bfc5949f568674f7b4e09cca39f55d389d398f159b363178" + "class_hash": "0x2f06311d5311c9345f4675fedd74e2f840ffff25509020fd380426a512d7362", + "tag": "s1_eternum-TroopConfig", + "selector": "0x440013884df718dc78b23b652dc4495f0e74de6e3e26f29993cf97a26e96e37" }, { "members": [], - "class_hash": "0x6effa334a8558bcffbb55620d842fe9fc355a497100768c7ebeb1e5f01c85d2", - "tag": "s0_eternum-VRFConfig", - "selector": "0x325d18df666336f28e2027292fb9164e890d520368b4e150d3fffddb95b2304" + "class_hash": "0x6212d501854ddd5fb4a76f0020b88166a6ace18c51829d9868bf00495c93c79", + "tag": "s1_eternum-VRFConfig", + "selector": "0x40efcfc7e03b7e498a48587f3e7e535a6ed12eff77adeb65553a8e8092786fa" }, { "members": [], - "class_hash": "0x239c7e9007b36b7105d01e2d5fb2cc87a2f0123cf02308d78299fb1b2c0286b", - "tag": "s0_eternum-Weight", - "selector": "0x3af9b99c6bed5e58f52a76ef3616395e8ae96acee151395134ab5199fe5b36a" + "class_hash": "0x2441bc3e5725d8632d181e17e1a5997544523f35945c6e4c80e257fb9e4886a", + "tag": "s1_eternum-Weight", + "selector": "0x6a857f799cd0abc86c75a666d024ee52f6e81e856f74bb2137bf2f1a534e0e1" }, { "members": [], - "class_hash": "0x342088461be2657e2281e9f5a773aa8e7c6584dd62e125edf4ca71e39400e57", - "tag": "s0_eternum-WeightConfig", - "selector": "0x5b42c2cdd790597f7f8125e69d38f2db0469a37ba2a436c5fbc6f54ab16f2a6" + "class_hash": "0x3cf8b4b83c710368da4a168ed462b2049721ba5e20d63197a981321672adbdd", + "tag": "s1_eternum-WeightConfig", + "selector": "0x1198553c941fe946e251e66c8f4f3177f44e59e56ac455dbc269557b7ae4d81" }, { "members": [], - "class_hash": "0x3f493c16b07f9edf224672fd7d0a1766b42863e70e08e4ce21f8b9368a95486", - "tag": "s0_eternum-WorldConfig", - "selector": "0x2640c924e58d9c307bff3a21564eeccf889b9d22e9d1b99eaf3d3ca79ba29e9" + "class_hash": "0x75d683bc6831ab3ed4172aa8e35997c47ee37963062e5fabae8729a2b15b475", + "tag": "s1_eternum-WorldConfig", + "selector": "0x6212a03a10506a6661b44a6685e9d2978709dfdfc8de36fe93d947b939f200a" } ], "events": [ { "members": [], - "class_hash": "0x308165ad0fe528e9f62f91851e42cd02186c284133e0f716bf618e2a89a064", - "tag": "s0_eternum-AcceptOrder", - "selector": "0x34724f2592dc93feb914074bbe4e6abc093e7ca15f6755824c7f694662853fc" + "class_hash": "0x6ce0d1733305e5837a804a2fcaaadc4257b33fbbb9072adfa558552806baba7", + "tag": "s1_eternum-AcceptOrder", + "selector": "0x30b1df6433db61c4a92580a1630c9e5126b5c82be28123a06b62f808ecd522" }, { "members": [], - "class_hash": "0x4fca4dcdf02fdc00635fdbdbfa78b928f907e5a82f58e24f17e95ec9d9e2475", - "tag": "s0_eternum-AcceptPartialOrder", - "selector": "0x34b84575baeaa398556ab0a3889fabb7b08d2520d8838734eaf12282776900b" + "class_hash": "0x559dd281303289b1fcfc9e64083749dc41f21da90857b5d757e1850e936e1a8", + "tag": "s1_eternum-AcceptPartialOrder", + "selector": "0x10466b8a291c68b1392b0c839dff152f5884e63efecc6616ae39eaaa8dddb16" }, { "members": [], - "class_hash": "0x56a5736da894e6774c628874b21f414a2c4f035065b75e36f1c7facd27420ee", - "tag": "s0_eternum-BattleClaimData", - "selector": "0x41d29e106dc5491be952bbe2faaddf7f61d2822a533f17116600e7ef9c76c18" + "class_hash": "0x934049a8b2170110cdd0038113cc44d28a44c9468d386842b6f0f4269930d8", + "tag": "s1_eternum-BattleClaimData", + "selector": "0x41680e7ebc53d924909df6da64cb9bf2f93e4c52c773a46c2d98d26130e4b04" }, { "members": [], - "class_hash": "0x1aab9d5811dd52241b604e734cd3527f3723320d2e8a16d8d2f9ab9657cf07a", - "tag": "s0_eternum-BattleJoinData", - "selector": "0x4410ca9a121bdc7bd8847dc77b08361cc88574ae4ff18bdfb1f56ebd168a377" + "class_hash": "0x21e47bd56785fa3feb60d847cb8dd208c9a54d7485c3a717266a68cb12922b2", + "tag": "s1_eternum-BattleJoinData", + "selector": "0x52d813cd875f5ab136509292d799f8e50454d7a216d4b0f82011537da338e45" }, { "members": [], - "class_hash": "0x483a25c8985f722179db7ab176625c2f0415004e315c89ddd569a546c0ff352", - "tag": "s0_eternum-BattleLeaveData", - "selector": "0x817ae7123b2cf2c241e4a1cee0acb2a6537270d32f68da46c222a19b7a6b7e" + "class_hash": "0x63fcfc6b83c0369df7577ea9ee1be924a91d3f56e751975135352f6d668e48f", + "tag": "s1_eternum-BattleLeaveData", + "selector": "0x2e2634c5a528ebe93bfdd4760906943ab27acda1780d8a0fe6e047daf59e3bb" }, { "members": [], - "class_hash": "0x6bd170bb8c9642bd582be27066fc5baa71ab6a5c989b6147c16b7187ae8b2de", - "tag": "s0_eternum-BattlePillageData", - "selector": "0x1e6374e36d81091d4c72eb16936e2afc86ed695397fb5fc54780a01187bfbe2" + "class_hash": "0x4c4c86484c191574bc777bd9f0a4f0fd42cea3723ebcce1262ae4a6206099a8", + "tag": "s1_eternum-BattlePillageData", + "selector": "0x20e12ccd908df9671ef87e056aeb9225412ed7710b218cf196c2069a36509ca" }, { "members": [], - "class_hash": "0x75e03d907604ffc855f6fa954001870813f8731f049aa1a65b4fc0335b53989", - "tag": "s0_eternum-BattleStartData", - "selector": "0x39cee4993b5b6698ea69be399295a54faabb31613ddc297bd452b7db0c79081" + "class_hash": "0x7148e1c4747938842ac35ad3133ef7b03e2f890c578f7840a42bf7290fec96a", + "tag": "s1_eternum-BattleStartData", + "selector": "0x29d565ff98451bd6ac59f3a8d0b4d2ef14031a4a39ce4b4e8ee5dab0e02e1c9" }, { "members": [], - "class_hash": "0x53ea30ee96d0e5b7eefcd0b3c5ff8ec23062b6a8af282c235dbd06db0c4d77", - "tag": "s0_eternum-BurnDonkey", - "selector": "0x61be67037fa3f9fa7655102f1fe0c3f35d352d5919aba6a204b0af556649e55" + "class_hash": "0x73a2e5508322468a7bcadbbb6d8d4ad14e5b7bc19500df530f904c0c2a0ef52", + "tag": "s1_eternum-BurnDonkey", + "selector": "0x4a1aac57c8cb6ec732bd40283fd1a892987d708a6b8a7d3a4dd65da6f0e7700" }, { "members": [], - "class_hash": "0x3cd551d7e4b53f2b4afcab56040f3dfff20f2dd3e75f346c4f86f15d6f2aab8", - "tag": "s0_eternum-CancelOrder", - "selector": "0x37baed7c5d5da7ddcfe014daac5b3f37b4b959b832e8c4c70df06c8b530478" + "class_hash": "0xb99ae4fd4c6ad7faddd8bc49b59116e8e6ea6900d55571ef6720c6c3e55bc", + "tag": "s1_eternum-CancelOrder", + "selector": "0x1a522313c76bbf3297f8527f95976169c4269831fe8b337f3d19ff0fccb8c87" }, { "members": [], - "class_hash": "0x54ebf96034d04a3febfaaa17372961a8746cdb440f451d4e3acfcedd4992db6", - "tag": "s0_eternum-CreateGuild", - "selector": "0x55a0213c9d81381326def8de071ea32d31f412ae525cb58b8b2a29cdbf3821" + "class_hash": "0x452f2d31f89ac1d6f689859282e4b8848db14035d14c64388240237f9c952af", + "tag": "s1_eternum-CreateGuild", + "selector": "0x45b5322475ee81006e7e7df176c2f31829e57224ae86ca261738a15ef8c88a7" }, { "members": [], - "class_hash": "0x3da4824e6b15595ea7c4906de6ae545f1de3c6997655c55fa040d9bc466fbcb", - "tag": "s0_eternum-CreateOrder", - "selector": "0x6cd5deb58306ff9ed529e7e496193ac3b8dadc4927768951a16afd5cee79291" + "class_hash": "0x7ba3c37bfe133370931d979db6a74d2707a4922d56741b37fed2f3f9ffe2412", + "tag": "s1_eternum-CreateOrder", + "selector": "0x10edec58284a982448a15b0f37a3abc65944a16091efed6a39389b5064a6319" }, { "members": [], - "class_hash": "0x411bb0ec4ce2af05182f278331717c86aab7b154ea844fa05f5dc693b4f5f65", - "tag": "s0_eternum-FragmentMineDiscovered", - "selector": "0x5afb247cb5972fc84d96b10c69f31a96666642065816bfa74f4d0fdd715fac6" + "class_hash": "0x33eed23e37ab8177b103e50d9fe7998079fb54ba97ed6d6174a18c16c3ce25", + "tag": "s1_eternum-FragmentMineDiscovered", + "selector": "0x6dd702d62f987ca281572763a9ebb8ed1937b7016d874f3c979ecb2b698012a" }, { "members": [], - "class_hash": "0xf00b2af42e9108761ad47e50a2605c55203a83b342235def07252a85d6db85", - "tag": "s0_eternum-GameEnded", - "selector": "0x7552b1455aaf939a5cee7dfe7d65ef0341647b2b1dc97bbdac22e38f81b6f75" + "class_hash": "0x788ecb9baee1f026854cfa77c8b6e046731d044ed95aab1ee29d474e2c41385", + "tag": "s1_eternum-GameEnded", + "selector": "0x2146af1d5d48461a767ddc54400c751b49d4fc74619953f68aaf486dd447cfa" }, { "members": [], - "class_hash": "0x5cddcd628958870243552341afbf5859b87d5f623d9ccec87fc217218301da", - "tag": "s0_eternum-HyperstructureCoOwnersChange", - "selector": "0x16aa9c3ff1e2229ec3989607dee034c26f555386c3fda2f57ae23a5da08bcd2" + "class_hash": "0x261625f7f14957f14923385d1293a382a7198e1c2c4342fc274fda159c7bcbf", + "tag": "s1_eternum-HyperstructureCoOwnersChange", + "selector": "0x4dc6d1cc5a4a96d06bc7d47706082b809f07a72a7276f95d8e781cab476f579" }, { "members": [], - "class_hash": "0x5bf722c02c026a13863bc061f7f31d3e9a94a409e60a0b020355c621b3c8848", - "tag": "s0_eternum-HyperstructureContribution", - "selector": "0x11b57482819f44946c794b42bb3d6f9b5111e416abddd5590e48933db4e8c1c" + "class_hash": "0x751a5d1cd2cfc38b069298a54e665c644329906cb72c156a462400e4378007c", + "tag": "s1_eternum-HyperstructureContribution", + "selector": "0x554c3cb394ec5eb94799313ff57c04489f889918b97c883ec80fad3fb69142" }, { "members": [], - "class_hash": "0x3a5f236a8854f32ed034b3f68bda881b3a28be9b2f5563fbd479ee415fa489b", - "tag": "s0_eternum-HyperstructureFinished", - "selector": "0x18188e073773854e47229a73718f205c22955838714d847ff4bab4ed315852c" + "class_hash": "0x1a70f061a8b5ec44881ee4c8c1312704f8a74c852e15e39b0a50ccb6003fdc4", + "tag": "s1_eternum-HyperstructureFinished", + "selector": "0x1e7330fdbaa38d25a4192cae3a2f625a2474d21bea91894b61c78015e4c0a2f" }, { "members": [], - "class_hash": "0x19167b2efb0019a2d2547e6b97653c2e44eaa0648110a8d0492857d48f7628", - "tag": "s0_eternum-HyperstructureStarted", - "selector": "0x524d52c11289b16c879df0675bb7168b4556196e805130884ff7399568955f4" + "class_hash": "0x578690752e499bd366110e7627cacf40b36346187aaa69adef84a61e79950ab", + "tag": "s1_eternum-HyperstructureStarted", + "selector": "0x576568f1e35d7395c3585e049cf835153b9337a7f605f0471ae460e79a801" }, { "members": [], - "class_hash": "0x10489827f673705da04f7c52b54164e01679958dec37bf8c97f45b6229adde", - "tag": "s0_eternum-JoinGuild", - "selector": "0x490fb23242de6839d879e576254121a224786783b288f05e8e57e942f0d0c44" + "class_hash": "0x63695bd49a77821a9d01ea9a5816eef76a851376cc4bc01a68c1a9e15287322", + "tag": "s1_eternum-JoinGuild", + "selector": "0x1341888a2238268a519a7c39af6c03489343fe2288ef7f66bea5c1f479cc1e4" }, { "members": [], - "class_hash": "0x1de238739f2586354bfefc4c7d49a8e392b3c911515c9ad6445e96027a0dcb3", - "tag": "s0_eternum-LiquidityEvent", - "selector": "0x5ca594f7a676a13c4b15d34ffd0e922bf64e127d0fa6b6a9bd29a4bb6dcfd19" + "class_hash": "0x4141ad0fcb145ce54bc2ed7cb12e8f3092b6fe60da8dfcaf036bed082232851", + "tag": "s1_eternum-LiquidityEvent", + "selector": "0x4e19f323259ff883daf1f685cfb94306159cde4c8cb46155a290a9b9c91df8c" }, { "members": [], - "class_hash": "0x6f57b19aaa43496f97785e8d6b18e21dc116bbd690e54a4fd03ccbb98ae760b", - "tag": "s0_eternum-MapExplored", - "selector": "0x5238d4838007cb371e0a62aff2a2d4241868fa579edc867125fa71c493fb2c8" + "class_hash": "0x561ffdd2e934a6c5f65c58120faade578dafb4af7e61d8ea278bed9932efc41", + "tag": "s1_eternum-MapExplored", + "selector": "0x22543e5f3bd15c01417b0fff116311e6e742ce8f43072e1391fc366b3dc05ad" }, { "members": [], - "class_hash": "0x65b91709428bb484001943f1662d614fb4b6318b3fca1c4ed4b2fe53d822f6", - "tag": "s0_eternum-SettleRealmData", - "selector": "0x11b4babbcafbf1834c8e535877d14f1fc5dc0bd0b126a97a98bb1093d30e873" + "class_hash": "0x2bc2301835d38f55c1a061a363e6038ec6c9807443718f620ba7e412a543c53", + "tag": "s1_eternum-SettleRealmData", + "selector": "0x7eff418a618f1ecd46303c1e0560094940d883e7ec2edde98bcb002a6e1ccca" }, { "members": [], - "class_hash": "0x4db6f101a1cff37f8e4709053f1ae4c1d8b8ec3dda5a2284b606439d051fb86", - "tag": "s0_eternum-SwapEvent", - "selector": "0x783a3cc6562fe31ae83bac3e69e636d8b58c357d5d3621c6d2e5d74da51e5db" + "class_hash": "0x37bcec3363a81c4aa899552958b4e9c6fa3a97a4fc8a96c45740abe655ef95d", + "tag": "s1_eternum-SwapEvent", + "selector": "0x1f926fcf957ccc9852cfb520498d1eac5512f8e710ffd77db1b1fcad55bfbee" }, { "members": [], - "class_hash": "0x6059f5ee6fd551e038f65eac650a50c7af4401d3ce90cf257693b3eab27b8a3", - "tag": "s0_eternum-Transfer", - "selector": "0x4ff88ec4fe7fc992e29c980b4c0abfb2c35ecacce7e63248c2731984995fcbd" + "class_hash": "0x6cc999fc86266f1dbc7aa840b708d01884985ad69bdc2b5638cc5911e076fd0", + "tag": "s1_eternum-Transfer", + "selector": "0x51c9cda93a0b9735874f08742333f5d601bee76457f1565f608075666678ee3" }, { "members": [], - "class_hash": "0x40aee82a2213fb870290370044eeafec0c98eb8953299883251f870a9fd1e4c", - "tag": "s0_eternum-Travel", - "selector": "0x4e45f9632599eeb9a25d0977cd5aebf8a4aa209fea4134a862e592d31e387c0" + "class_hash": "0x749a49ac7ff5b1b45c2043b9fb682a7afb16508b1294460876dcdf3cfc5a619", + "tag": "s1_eternum-Travel", + "selector": "0x30e8e79033762c0f9e6738ae07398a015b0ffd2969f6d2c1fb09d5475902ae6" }, { "members": [], "class_hash": "0x6b38999d987627835d4c20e7e571c73d32ddc856786d9790a131bdb3372a246", - "tag": "s0_eternum-TrophyCreation", - "selector": "0x5633ebee65e16c483940f284a816ac8b31e08ddd3932f80db960a40573d4dc2" + "tag": "s1_eternum-TrophyCreation", + "selector": "0x730009ea3268cc71709a37a164c9ce9ca00430d63d571ad16b5b72c3f51bc9a" }, { "members": [], "class_hash": "0xf05f290a704ad2671544b391f0c33d50d6d43d468d52791282852a833a00c7", - "tag": "s0_eternum-TrophyProgression", - "selector": "0x5a8f3fedb72efc9d358b86574cf362f8ed1ec12a02ca9f276e6190f49191217" + "tag": "s1_eternum-TrophyProgression", + "selector": "0x198e5fb446b41882f55a08f8baaba4387f41637ca140b0084459ce5338f617d" } ] } \ No newline at end of file diff --git a/contracts/game/src/constants.cairo b/contracts/game/src/constants.cairo index 65c2040849..a3dac4a2d8 100644 --- a/contracts/game/src/constants.cairo +++ b/contracts/game/src/constants.cairo @@ -1,4 +1,4 @@ -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; // Config ID to fetch global configs @@ -63,17 +63,15 @@ fn all_resource_ids() -> Array { 20, 21, 22, - // + 23, + 24, + 25, + 26, + 27, 28, 29, - // - 249, - 250, - 251, - 252, - 253, - 254, - 255 + 30, + 31, ] } @@ -102,23 +100,28 @@ mod ResourceTypes { const ETHEREAL_SILICA: u8 = 21; const DRAGONHIDE: u8 = 22; - const DEMONHIDE: u8 = 28; - const EARTHEN_SHARD: u8 = 29; + // THE RESOURCE IDS ABOVE MUST MATCH THE + // RESOURCE IDS IN THE SEASON PASS + + const DEMONHIDE: u8 = 23; + const EARTHEN_SHARD: u8 = 24; + const DONKEY: u8 = 25; + const KNIGHT: u8 = 26; + const CROSSBOWMAN: u8 = 27; + const PALADIN: u8 = 28; + const WHEAT: u8 = 29; + const FISH: u8 = 30; + const LORDS: u8 = 31; + // note: resource labor is max u8 - resource_type +// e.g Stone labor = 255 - 1 = 254 +} - // TRANSPORT - const DONKEY: u8 = 249; +const FIRST_REGULAR_RESOURCE_ID: u8 = 1; +const LAST_REGULAR_RESOURCE_ID: u8 = 31; - // TROOPS // @dev: troops are not resources, but they are stored in the same data structure - const KNIGHT: u8 = 250; - const CROSSBOWMAN: u8 = 251; - const PALADIN: u8 = 252; - const LORDS: u8 = 253; - const WHEAT: u8 = 254; - const FISH: u8 = 255; - // note: update _resource_type_to_position -// function is any new resources are added -} +const FIRST_LABOR_RESOURCE_ID: u8 = 255 - LAST_REGULAR_RESOURCE_ID; +const LAST_LABOR_RESOURCE_ID: u8 = 255 - FIRST_REGULAR_RESOURCE_ID; fn resource_type_name(resource_type: u8) -> ByteArray { if resource_type == 1 { @@ -165,24 +168,87 @@ fn resource_type_name(resource_type: u8) -> ByteArray { "ETHEREAL SILICA" } else if resource_type == 22 { "DRAGONHIDE" - } else if resource_type == 28 { + } else if resource_type == 23 { "DEMONHIDE" - } else if resource_type == 29 { + } else if resource_type == 24 { "EARTHEN SHARD" - } else if resource_type == 249 { + } else if resource_type == 25 { "DONKEY" - } else if resource_type == 250 { + } else if resource_type == 26 { "KNIGHT" - } else if resource_type == 251 { + } else if resource_type == 27 { "CROSSBOWMAN" - } else if resource_type == 252 { + } else if resource_type == 28 { "PALADIN" - } else if resource_type == 253 { - "LORDS" - } else if resource_type == 254 { + } else if resource_type == 29 { "WHEAT" - } else if resource_type == 255 { + } else if resource_type == 30 { "FISH" + } else if resource_type == LAST_REGULAR_RESOURCE_ID { + "LORDS" + // LABOR + } else if resource_type == 255 - 1 { + "STONE LABOR" + } else if resource_type == 255 - 2 { + "COAL LABOR" + } else if resource_type == 255 - 3 { + "WOOD LABOR" + } else if resource_type == 255 - 4 { + "COPPER LABOR" + } else if resource_type == 255 - 5 { + "IRONWOOD LABOR" + } else if resource_type == 255 - 6 { + "OBSIDIAN LABOR" + } else if resource_type == 255 - 7 { + "GOLD LABOR" + } else if resource_type == 255 - 8 { + "SILVER LABOR" + } else if resource_type == 255 - 9 { + "MITHRAL LABOR" + } else if resource_type == 255 - 10 { + "ALCHEMICAL SILVER LABOR" + } else if resource_type == 255 - 11 { + "COLD IRON LABOR" + } else if resource_type == 255 - 12 { + "DEEP CRYSTAL LABOR" + } else if resource_type == 255 - 13 { + "RUBY LABOR" + } else if resource_type == 255 - 14 { + "DIAMONDS LABOR" + } else if resource_type == 255 - 15 { + "HARTWOOD LABOR" + } else if resource_type == 255 - 16 { + "IGNIUM LABOR" + } else if resource_type == 255 - 17 { + "TWILIGHT QUARTZ LABOR" + } else if resource_type == 255 - 18 { + "TRUE ICE LABOR" + } else if resource_type == 255 - 19 { + "ADAMANTINE LABOR" + } else if resource_type == 255 - 20 { + "SAPPHIRE LABOR" + } else if resource_type == 255 - 21 { + "ETHEREAL SILICA LABOR" + } else if resource_type == 255 - 22 { + "DRAGONHIDE LABOR" + } else if resource_type == 255 - 23 { + "DEMONHIDE LABOR" + } else if resource_type == 255 - 24 { + "EARTHEN SHARD LABOR" + } else if resource_type == 255 - 25 { + "DONKEY LABOR" + } else if resource_type == 255 - 26 { + "KNIGHT LABOR" + } else if resource_type == 255 - 27 { + "CROSSBOWMAN LABOR" + } else if resource_type == 255 - 28 { + "PALADIN LABOR" + } else if resource_type == 255 - 29 { + "WHEAT LABOR" + } else if resource_type == 255 - 30 { + "FISH LABOR" + } else if resource_type == 255 - 31 { + "LORDS LABOR" } else { format!("{} (unknown resource name)", resource_type) } @@ -427,9 +493,9 @@ mod TravelTypes { fn DEFAULT_NS() -> @ByteArray { - @"s0_eternum" + @"s1_eternum" } fn DEFAULT_NS_STR() -> ByteArray { - "s0_eternum" + "s1_eternum" } diff --git a/contracts/game/src/models.cairo b/contracts/game/src/models.cairo index fcd43181b9..3912e23e0c 100644 --- a/contracts/game/src/models.cairo +++ b/contracts/game/src/models.cairo @@ -1,4 +1,3 @@ -mod buildings; mod capacity; mod combat; mod config; @@ -13,11 +12,9 @@ mod order; mod owner; mod population; mod position; -mod production; mod quantity; mod quest; mod realm; -mod resources; mod season; mod stamina; mod structure; @@ -28,3 +25,12 @@ mod bank { mod liquidity; mod market; } + +mod resource { + mod resource; + mod production { + mod building; + mod labor; + mod production; + } +} diff --git a/contracts/game/src/models/bank/bank.cairo b/contracts/game/src/models/bank/bank.cairo index cb006e855f..4c310af6b4 100644 --- a/contracts/game/src/models/bank/bank.cairo +++ b/contracts/game/src/models/bank/bank.cairo @@ -1,5 +1,5 @@ use cubit::f128::types::fixed::{Fixed, FixedTrait}; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; use starknet::ContractAddress; // Used as helper struct throughout the world diff --git a/contracts/game/src/models/bank/liquidity.cairo b/contracts/game/src/models/bank/liquidity.cairo index a4e3109d60..34cc5d599b 100644 --- a/contracts/game/src/models/bank/liquidity.cairo +++ b/contracts/game/src/models/bank/liquidity.cairo @@ -1,6 +1,6 @@ use cubit::f128::types::fixed::{Fixed, FixedTrait}; use dojo::meta::introspect::{Struct, Ty, Introspect, Member}; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; use starknet::ContractAddress; impl IntrospectFixed of Introspect { diff --git a/contracts/game/src/models/bank/market.cairo b/contracts/game/src/models/bank/market.cairo index 55b8419283..e711c92f38 100644 --- a/contracts/game/src/models/bank/market.cairo +++ b/contracts/game/src/models/bank/market.cairo @@ -4,7 +4,7 @@ use dojo::meta::introspect::{Struct, Member}; // Dojo imports use dojo::meta::{Ty, Introspect}; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; // Starknet imports use starknet::ContractAddress; @@ -263,7 +263,7 @@ fn normalize(quantity: u128, market: @Market) -> (u128, u128, u128) { #[cfg(test)] mod tests { use debug::PrintTrait; - use s0_eternum::alias::ID; + use s1_eternum::alias::ID; use super::{Fixed, FixedTrait}; // Local imports diff --git a/contracts/game/src/models/capacity.cairo b/contracts/game/src/models/capacity.cairo index d5843242bf..25583d7d58 100644 --- a/contracts/game/src/models/capacity.cairo +++ b/contracts/game/src/models/capacity.cairo @@ -1,6 +1,6 @@ use dojo::model::ModelStorage; use dojo::world::WorldStorage; -use s0_eternum::{alias::ID, models::config::{CapacityConfig, CapacityConfigCategory}, constants::RESOURCE_PRECISION}; +use s1_eternum::{alias::ID, models::config::{CapacityConfig, CapacityConfigCategory}, constants::RESOURCE_PRECISION}; #[derive(Copy, Drop, Serde)] #[dojo::model] diff --git a/contracts/game/src/models/combat.cairo b/contracts/game/src/models/combat.cairo index 3b8ab7620b..f031168fc0 100644 --- a/contracts/game/src/models/combat.cairo +++ b/contracts/game/src/models/combat.cairo @@ -5,27 +5,27 @@ use core::poseidon::poseidon_hash_span; use dojo::model::ModelStorage; use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::{all_resource_ids, RESOURCE_PRECISION}; -use s0_eternum::models::config::{ +use s1_eternum::alias::ID; +use s1_eternum::constants::{all_resource_ids, RESOURCE_PRECISION}; +use s1_eternum::models::config::{ BattleConfig, BattleConfigImpl, BattleConfigTrait, CapacityConfig, CapacityConfigCategory, CapacityConfigImpl, CapacityConfigTrait }; -use s0_eternum::models::config::{TroopConfig, TroopConfigImpl, TroopConfigTrait}; -use s0_eternum::models::config::{WeightConfig, WeightConfigImpl}; -use s0_eternum::models::quantity::{Quantity, QuantityTracker, QuantityTrackerType}; -use s0_eternum::models::resources::OwnedResourcesTrackerTrait; -use s0_eternum::models::resources::ResourceTrait; -use s0_eternum::models::resources::ResourceTransferLockTrait; -use s0_eternum::models::resources::{ +use s1_eternum::models::config::{TroopConfig, TroopConfigImpl, TroopConfigTrait}; +use s1_eternum::models::config::{WeightConfig, WeightConfigImpl}; +use s1_eternum::models::quantity::{Quantity, QuantityTracker, QuantityTrackerType}; +use s1_eternum::models::resource::resource::OwnedResourcesTrackerTrait; +use s1_eternum::models::resource::resource::ResourceTrait; +use s1_eternum::models::resource::resource::ResourceTransferLockTrait; +use s1_eternum::models::resource::resource::{ Resource, ResourceImpl, ResourceCost, ResourceTransferLock, OwnedResourcesTracker, OwnedResourcesTrackerImpl }; -use s0_eternum::models::structure::{Structure, StructureImpl, StructureCategory}; -use s0_eternum::models::weight::Weight; -use s0_eternum::models::weight::WeightTrait; -use s0_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; -use s0_eternum::utils::math::{PercentageImpl, PercentageValueImpl, min, max, cap_minus}; -use s0_eternum::utils::number::NumberTrait; +use s1_eternum::models::structure::{Structure, StructureImpl, StructureCategory}; +use s1_eternum::models::weight::Weight; +use s1_eternum::models::weight::WeightTrait; +use s1_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; +use s1_eternum::utils::math::{PercentageImpl, PercentageValueImpl, min, max, cap_minus}; +use s1_eternum::utils::number::NumberTrait; const STRENGTH_PRECISION: u256 = 10_000; @@ -1134,8 +1134,8 @@ impl BattleImpl of BattleTrait { #[cfg(test)] mod health_model_tests { - use s0_eternum::models::combat::{Health, HealthTrait, TroopsImpl}; - use s0_eternum::models::config::{TroopConfig}; + use s1_eternum::models::combat::{Health, HealthTrait, TroopsImpl}; + use s1_eternum::models::config::{TroopConfig}; fn mock_troop_config() -> TroopConfig { TroopConfig { @@ -1220,21 +1220,21 @@ mod tests { use dojo::world::IWorldDispatcherTrait; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; - use s0_eternum::constants::ID; - use s0_eternum::constants::ResourceTypes; - use s0_eternum::models::capacity::{CapacityCategory}; - use s0_eternum::models::combat::BattleEscrowTrait; - use s0_eternum::models::combat::BattleHealthTrait; - use s0_eternum::models::combat::BattleTrait; - use s0_eternum::models::combat::TroopsTrait; - use s0_eternum::models::config::BattleConfig; - use s0_eternum::models::config::BattleConfigTrait; - use s0_eternum::models::config::CapacityConfigCategory; - use s0_eternum::models::quantity::{Quantity}; - use s0_eternum::models::resources::ResourceTrait; - use s0_eternum::models::resources::ResourceTransferLockTrait; - use s0_eternum::models::resources::{Resource, ResourceImpl, ResourceTransferLock}; - use s0_eternum::utils::testing::world::spawn_eternum; + use s1_eternum::constants::ID; + use s1_eternum::constants::ResourceTypes; + use s1_eternum::models::capacity::{CapacityCategory}; + use s1_eternum::models::combat::BattleEscrowTrait; + use s1_eternum::models::combat::BattleHealthTrait; + use s1_eternum::models::combat::BattleTrait; + use s1_eternum::models::combat::TroopsTrait; + use s1_eternum::models::config::BattleConfig; + use s1_eternum::models::config::BattleConfigTrait; + use s1_eternum::models::config::CapacityConfigCategory; + use s1_eternum::models::quantity::{Quantity}; + use s1_eternum::models::resource::resource::ResourceTrait; + use s1_eternum::models::resource::resource::ResourceTransferLockTrait; + use s1_eternum::models::resource::resource::{Resource, ResourceImpl, ResourceTransferLock}; + use s1_eternum::utils::testing::world::spawn_eternum; use super::{Battle, BattleHealth, BattleArmy, BattleSide, Troops, TroopConfig, Army, ArmyImpl, Protectee}; fn mock_troop_config() -> TroopConfig { diff --git a/contracts/game/src/models/config.cairo b/contracts/game/src/models/config.cairo index fd5dd7c06f..a462bfdc18 100644 --- a/contracts/game/src/models/config.cairo +++ b/contracts/game/src/models/config.cairo @@ -4,25 +4,25 @@ use cubit::f128::math::trig::{cos as fixed_cos, sin as fixed_sin}; use cubit::f128::types::fixed::{Fixed, FixedTrait}; use dojo::model::ModelStorage; use dojo::world::WorldStorage; -use s0_eternum::alias::ID; -use s0_eternum::constants::{ +use s1_eternum::alias::ID; +use s1_eternum::constants::{ WORLD_CONFIG_ID, BUILDING_CATEGORY_POPULATION_CONFIG_ID, RESOURCE_PRECISION, HYPERSTRUCTURE_CONFIG_ID, TickIds, split_resources_and_probs, ResourceTypes, ResourceTiers }; -use s0_eternum::models::buildings::BuildingCategory; -use s0_eternum::models::capacity::{CapacityCategory, CapacityCategoryImpl, CapacityCategoryTrait}; -use s0_eternum::models::combat::Troops; -use s0_eternum::models::owner::{EntityOwner, EntityOwnerTrait}; -use s0_eternum::models::position::{Coord}; -use s0_eternum::models::quantity::Quantity; - -use s0_eternum::models::resources::{ResourceFoodImpl}; -use s0_eternum::models::season::{Season, SeasonImpl, SeasonTrait}; -use s0_eternum::models::weight::Weight; -use s0_eternum::utils::map::constants::fixed_constants as fc; -use s0_eternum::utils::math::{max, min}; -use s0_eternum::utils::random::VRFImpl; -use s0_eternum::utils::random; +use s1_eternum::models::capacity::{CapacityCategory, CapacityCategoryImpl, CapacityCategoryTrait}; +use s1_eternum::models::combat::Troops; +use s1_eternum::models::owner::{EntityOwner, EntityOwnerTrait}; +use s1_eternum::models::position::{Coord}; +use s1_eternum::models::quantity::Quantity; +use s1_eternum::models::resource::production::building::BuildingCategory; + +use s1_eternum::models::resource::resource::{ResourceFoodImpl}; +use s1_eternum::models::season::{Season, SeasonImpl, SeasonTrait}; +use s1_eternum::models::weight::Weight; +use s1_eternum::utils::map::constants::fixed_constants as fc; +use s1_eternum::utils::math::{max, min}; +use s1_eternum::utils::random::VRFImpl; +use s1_eternum::utils::random; use starknet::ContractAddress; // @@ -529,11 +529,21 @@ pub struct ProductionConfig { #[key] resource_type: u8, // production amount per tick - amount: u128, - // num materials required to produce this resource - input_count: u128, - // num different resources that this resource can produce - output_count: u128 + produced_amount: u128, + // labor cost amount per tick + labor_cost: u128, +} + +#[derive(IntrospectPacked, Copy, Drop, Serde)] +#[dojo::model] +pub struct LaborConfig { + #[key] + // e.g when configuring stone labor, resource_type = stone + resource_type: u8, + // uuid used to get the ResourceCost + input_id: ID, + // number of resources required to make labor + input_count: u8, } // vrf @@ -717,13 +727,6 @@ impl HyperstructureResourceConfigImpl of HyperstructureResourceConfigTrait { } } -#[derive(IntrospectPacked, Copy, Drop, Serde)] -#[dojo::model] -pub struct QuestConfig { - #[key] - config_id: ID, - production_material_multiplier: u16, -} #[derive(IntrospectPacked, Copy, Drop, Serde)] diff --git a/contracts/game/src/models/event.cairo b/contracts/game/src/models/event.cairo index a8b3e297e3..810b6c9c39 100644 --- a/contracts/game/src/models/event.cairo +++ b/contracts/game/src/models/event.cairo @@ -1,5 +1,5 @@ -use s0_eternum::models::buildings::BuildingCategory; -use s0_eternum::{alias::ID, models::combat::{BattleSide, Troops}, models::structure::StructureCategory}; +use s1_eternum::models::resource::production::building::BuildingCategory; +use s1_eternum::{alias::ID, models::combat::{BattleSide, Troops}, models::structure::StructureCategory}; use starknet::ContractAddress; #[derive(Introspect, Copy, Drop, Serde)] diff --git a/contracts/game/src/models/guild.cairo b/contracts/game/src/models/guild.cairo index 803acef4cc..144bb5a5d0 100644 --- a/contracts/game/src/models/guild.cairo +++ b/contracts/game/src/models/guild.cairo @@ -1,4 +1,4 @@ -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; use starknet::ContractAddress; #[derive(IntrospectPacked, Copy, Drop, Serde)] diff --git a/contracts/game/src/models/hyperstructure.cairo b/contracts/game/src/models/hyperstructure.cairo index eda5d6dc0f..6b069bd682 100644 --- a/contracts/game/src/models/hyperstructure.cairo +++ b/contracts/game/src/models/hyperstructure.cairo @@ -1,18 +1,17 @@ use dojo::model::ModelStorage; use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; -use s0_eternum::{ +use s1_eternum::{ alias::ID, constants::{HYPERSTRUCTURE_CONFIG_ID, ResourceTypes, get_contributable_resources_with_rarity, RESOURCE_PRECISION}, models::{ owner::{Owner}, position::{Coord, Position, PositionIntoCoord}, realm::{Realm}, - resources::{Resource, ResourceImpl, ResourceCost}, + resource::resource::{Resource, ResourceImpl, ResourceCost}, structure::{Structure, StructureCount, StructureCountTrait, StructureCategory}, guild::{GuildMember} }, - systems::{transport::contracts::travel_systems::travel_systems::InternalTravelSystemsImpl}, }; -use s0_eternum::{constants::WORLD_CONFIG_ID}; +use s1_eternum::{constants::WORLD_CONFIG_ID}; use starknet::ContractAddress; #[derive(IntrospectPacked, Copy, Drop, Serde)] diff --git a/contracts/game/src/models/map.cairo b/contracts/game/src/models/map.cairo index 30aad0e4bf..e584040613 100644 --- a/contracts/game/src/models/map.cairo +++ b/contracts/game/src/models/map.cairo @@ -1,6 +1,6 @@ -use s0_eternum::alias::ID; -use s0_eternum::models::position::Coord; -use s0_eternum::utils::map::biomes::Biome; +use s1_eternum::alias::ID; +use s1_eternum::models::position::Coord; +use s1_eternum::utils::map::biomes::Biome; #[derive(Copy, Drop, Serde)] #[dojo::model] diff --git a/contracts/game/src/models/movable.cairo b/contracts/game/src/models/movable.cairo index 90dfe8fdd0..1f0cab81da 100644 --- a/contracts/game/src/models/movable.cairo +++ b/contracts/game/src/models/movable.cairo @@ -1,9 +1,9 @@ use dojo::model::ModelStorage; use dojo::world::WorldStorage; -use s0_eternum::alias::ID; -use s0_eternum::constants::WORLD_CONFIG_ID; -use s0_eternum::models::config::{SpeedConfig}; -use s0_eternum::models::position::Coord; +use s1_eternum::alias::ID; +use s1_eternum::constants::WORLD_CONFIG_ID; +use s1_eternum::models::config::{SpeedConfig}; +use s1_eternum::models::position::Coord; // speed seconds per km #[derive(IntrospectPacked, Copy, Drop, Serde)] #[dojo::model] diff --git a/contracts/game/src/models/name.cairo b/contracts/game/src/models/name.cairo index c198ab0c91..b28862d92a 100644 --- a/contracts/game/src/models/name.cairo +++ b/contracts/game/src/models/name.cairo @@ -1,4 +1,4 @@ -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; #[derive(IntrospectPacked, Copy, Drop, Serde)] #[dojo::model] diff --git a/contracts/game/src/models/order.cairo b/contracts/game/src/models/order.cairo index b1682356d1..d4f91fe754 100644 --- a/contracts/game/src/models/order.cairo +++ b/contracts/game/src/models/order.cairo @@ -1,4 +1,4 @@ -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; #[derive(IntrospectPacked, Copy, Drop, Serde)] #[dojo::model] diff --git a/contracts/game/src/models/owner.cairo b/contracts/game/src/models/owner.cairo index ef8eba9874..8b70167e62 100644 --- a/contracts/game/src/models/owner.cairo +++ b/contracts/game/src/models/owner.cairo @@ -1,8 +1,8 @@ use dojo::model::ModelStorage; use dojo::world::WorldStorage; -use s0_eternum::alias::ID; -use s0_eternum::constants::ErrorMessages; -use s0_eternum::models::realm::Realm; +use s1_eternum::alias::ID; +use s1_eternum::constants::ErrorMessages; +use s1_eternum::models::realm::Realm; use starknet::ContractAddress; // contract address owning an entity @@ -65,10 +65,10 @@ mod tests { use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; - use s0_eternum::alias::ID; - use s0_eternum::models::owner::{EntityOwner, EntityOwnerTrait, Owner, OwnerTrait}; - use s0_eternum::models::realm::Realm; - use s0_eternum::utils::testing::world::spawn_eternum; + use s1_eternum::alias::ID; + use s1_eternum::models::owner::{EntityOwner, EntityOwnerTrait, Owner, OwnerTrait}; + use s1_eternum::models::realm::Realm; + use s1_eternum::utils::testing::world::spawn_eternum; use starknet::contract_address_const; #[test] @@ -77,15 +77,7 @@ mod tests { world .write_model_test( - @Realm { - entity_id: 1, - realm_id: 3, - produced_resources: 0, - order: 0, - level: 0, - has_wonder: false, - settler_address: contract_address_const::<'Settler'>() - } + @Realm { entity_id: 1, realm_id: 3, produced_resources: 0, order: 0, level: 0, has_wonder: false, } ); world.write_model_test(@EntityOwner { entity_id: 2, entity_owner_id: 1 }); diff --git a/contracts/game/src/models/population.cairo b/contracts/game/src/models/population.cairo index fafc9cddaa..c9d839c1e0 100644 --- a/contracts/game/src/models/population.cairo +++ b/contracts/game/src/models/population.cairo @@ -1,5 +1,5 @@ -use s0_eternum::alias::ID; -use s0_eternum::models::buildings::{BuildingCategory}; +use s1_eternum::alias::ID; +use s1_eternum::models::resource::production::building::{BuildingCategory}; #[derive(IntrospectPacked, Copy, Drop, Serde)] diff --git a/contracts/game/src/models/position.cairo b/contracts/game/src/models/position.cairo index 4eb6c64c0d..dfd5f62bc6 100644 --- a/contracts/game/src/models/position.cairo +++ b/contracts/game/src/models/position.cairo @@ -1,9 +1,9 @@ use core::fmt::{Display, Formatter, Error}; use core::zeroable::Zeroable; use option::OptionTrait; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; -use s0_eternum::utils::number::{NumberTrait}; +use s1_eternum::utils::number::{NumberTrait}; use traits::Into; use traits::TryInto; @@ -255,7 +255,7 @@ impl PositionImpl of PositionTrait { #[cfg(test)] mod tests { use debug::PrintTrait; - use s0_eternum::alias::ID; + use s1_eternum::alias::ID; use super::{Position, PositionTrait, Cube, CubeTrait, NumberTrait, TravelTrait}; use traits::Into; use traits::TryInto; diff --git a/contracts/game/src/models/production.cairo b/contracts/game/src/models/production.cairo deleted file mode 100644 index 9cd9c0781a..0000000000 --- a/contracts/game/src/models/production.cairo +++ /dev/null @@ -1,280 +0,0 @@ -use core::Zeroable; -use core::debug::PrintTrait; -use core::num::traits::Bounded; -use core::option::OptionTrait; -use dojo::model::ModelStorage; -use dojo::world::WorldStorage; -use s0_eternum::alias::ID; -use s0_eternum::models::config::{ProductionConfig}; -use s0_eternum::models::config::{TickConfig, TickImpl, TickTrait}; -use s0_eternum::models::resources::{Resource, ResourceImpl}; -use starknet::get_block_timestamp; - -#[derive(IntrospectPacked, Copy, Drop, Serde)] -#[dojo::model] -pub struct Production { - #[key] - entity_id: ID, - #[key] - resource_type: u8, - building_count: u8, - production_rate: u128, - consumption_rate: u128, - last_updated_tick: u64, - input_finish_tick: u64, -} - - -// We could make this a nice JS Class with a constructor and everything -// Then maintaining logic in client will be easy -#[generate_trait] -impl ProductionRateImpl of ProductionRateTrait { - fn is_active(self: @Production) -> bool { - if ((*self).building_count.is_non_zero()) { - return true; - } - if ((*self).consumption_rate.is_non_zero()) { - return true; - } - return false; - } - - fn increase_production_rate(ref self: Production, ref resource: Resource, tick: @TickConfig, amount: u128) { - self.harvest(ref resource, tick); - self.production_rate += amount; - } - - fn decrease_production_rate(ref self: Production, ref resource: Resource, tick: @TickConfig, amount: u128) { - self.harvest(ref resource, tick); - self.production_rate -= amount; - } - - fn increase_building_count(ref self: Production) { - self.building_count += 1; - } - - fn decrease_building_count(ref self: Production) { - self.building_count -= 1; - } - - fn increase_consumption_rate(ref self: Production, ref resource: Resource, tick: @TickConfig, amount: u128) { - self.harvest(ref resource, tick); - self.consumption_rate += amount; - } - - fn decrease_consumption_rate(ref self: Production, ref resource: Resource, tick: @TickConfig, amount: u128) { - self.harvest(ref resource, tick); - self.consumption_rate -= amount; - } - - fn harvest(ref self: Production, ref resource: Resource, tick: @TickConfig) { - let (sign, value) = self.net_rate(); - if sign { - // harvest till you run out of input materials - let total = value * self.production_duration(tick).into(); - resource.balance += total; - } else { - // deplete resource balance until empty - let total = value * self.depletion_duration(tick).into(); - if total >= resource.balance { - resource.balance = 0; - } else { - resource.balance -= total; - } - } - - self.last_updated_tick = (*tick).current(); - } - - fn net_rate(self: @Production) -> (bool, u128) { - if !(*self).is_active() { - return (false, 0); - } - - if *self.production_rate > *self.consumption_rate { - (true, *self.production_rate - *self.consumption_rate) - } else { - (false, *self.consumption_rate - *self.production_rate) - } - } - - - fn set__input_finish_tick(ref self: Production, ref resource: Resource, tick: @TickConfig, value: u64) { - self.harvest(ref resource, tick); - self.input_finish_tick = value; - } - - - fn balance_exhaustion_tick(self: @Production, resource: @Resource, tick: @TickConfig) -> u64 { - let current_tick = (*tick).current(); - - let (production_sign, production_value) = self.net_rate(); - if production_value > 0 { - if production_sign == false { - let loss_per_tick = production_value; - let num_ticks_left = *resource.balance / loss_per_tick; - return current_tick + num_ticks_left.try_into().unwrap(); - } else { - return (*tick).at(Bounded::MAX); - } - } else { - if *resource.balance > 0 { - return (*tick).at(Bounded::MAX); - } else { - return (*tick).current(); - } - } - } - - fn production_duration(self: Production, tick: @TickConfig) -> u64 { - if self.last_updated_tick >= self.input_finish_tick { - return 0; - } - let current_tick = (*tick).current(); - - if self.input_finish_tick > current_tick { - // if stop time is in future - current_tick - self.last_updated_tick - } else { - // if stop time has passed - self.input_finish_tick - self.last_updated_tick - } - } - - fn depletion_duration(self: Production, tick: @TickConfig) -> u64 { - let current_tick = (*tick).current(); - return current_tick - self.last_updated_tick; - } -} - - -#[derive(IntrospectPacked, Copy, Drop, Serde)] -#[dojo::model] -pub struct ProductionDeadline { - #[key] - entity_id: ID, - deadline_tick: u64, -} - - -#[generate_trait] -impl ProductionDeadlineImpl of ProductionDeadlineTrait { - fn deadline(self: @Production, world: WorldStorage, tick: @TickConfig) -> u64 { - let production_deadline: ProductionDeadline = world.read_model(*self.entity_id); - if production_deadline.deadline_tick.is_zero() { - return (*tick).at(Bounded::MAX); - } - return production_deadline.deadline_tick; - } -} - - -#[derive(IntrospectPacked, Copy, Drop, Serde)] -#[dojo::model] -pub struct ProductionInput { - #[key] - output_resource_type: u8, - #[key] - index: u8, - input_resource_type: u8, - input_resource_amount: u128 -} - -#[generate_trait] -impl ProductionInputImpl of ProductionInputTrait { - /// Production ends when any input material runs out of balance so what this - /// function does is that it finds the first input resource to run out of balance that - /// returns the tick it runs out - fn first_input_finish_tick(production: @Production, ref world: WorldStorage) -> u64 { - let production_config: ProductionConfig = world.read_model(*production.resource_type); - let tick_config = TickImpl::get_default_tick_config(ref world); - - let mut least_tick: u64 = tick_config.at(Bounded::MAX); - let mut count = 0; - - loop { - if count == production_config.input_count { - break; - } - let production_input: ProductionInput = world.read_model((*production.resource_type, count)); - let mut input_resource: Resource = ResourceImpl::get( - ref world, (*production.entity_id, production_input.input_resource_type) - ); - - let mut input_production: Production = world - .read_model((*production.entity_id, production_input.input_resource_type)); - let exhaustion_tick = input_production.balance_exhaustion_tick(@input_resource, @tick_config); - if exhaustion_tick < least_tick { - least_tick = exhaustion_tick; - } - - count += 1; - }; - - let deadline = production.deadline(world, @tick_config); - if deadline < least_tick { - return deadline; - } - - return least_tick; - } -} - - -#[derive(IntrospectPacked, Copy, Drop, Serde)] -#[dojo::model] -pub struct ProductionOutput { - #[key] - input_resource_type: u8, - #[key] - index: u8, - output_resource_type: u8 -} - -#[generate_trait] -impl ProductionOutputImpl of ProductionOutputTrait { - /// Updates end ticks for dependent resources based - /// on changes in this resource's balance. - fn sync_all_inputs_exhaustion_ticks_for(resource: @Resource, ref world: WorldStorage) { - let resource = *resource; - // Get the production configuration of the current resource - let resource_production_config: ProductionConfig = world.read_model(resource.resource_type); - - // Get the current tick from the world - let tick = TickImpl::get_default_tick_config(ref world); - - // Iterate through each dependent output resource - let mut count = 0; - loop { - if count == resource_production_config.output_count { - break; - } - - // Get the output resource type from the production output configuration - let output_resource_type: ProductionOutput = world.read_model((resource.resource_type, count)); - let output_resource_type: u8 = output_resource_type.output_resource_type; - - let mut output_resource: Resource = world.read_model((resource.entity_id, output_resource_type)); - // Get the production details of the output resource - let mut output_resource_production: Production = world - .read_model((resource.entity_id, output_resource_type)); - - if output_resource_production.building_count > 0 { - // Update the end tick for the output resource - let output_resource_production_finish_tick = ProductionInputImpl::first_input_finish_tick( - @output_resource_production, ref world - ); - - output_resource_production - .set__input_finish_tick(ref output_resource, @tick, output_resource_production_finish_tick); - - // Save the updated production details of the output resource back to the world - world.write_model(@output_resource); - world.write_model(@output_resource_production); - } - - count += 1; - }; - } -} - diff --git a/contracts/game/src/models/quantity.cairo b/contracts/game/src/models/quantity.cairo index 7ab7748927..7227563690 100644 --- a/contracts/game/src/models/quantity.cairo +++ b/contracts/game/src/models/quantity.cairo @@ -1,4 +1,4 @@ -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; // not all entities are just a single object, some can be multiple. // e.g. a group of free transport units can be a single entity with diff --git a/contracts/game/src/models/quest.cairo b/contracts/game/src/models/quest.cairo index 61437c7a10..bd14b4cbf7 100644 --- a/contracts/game/src/models/quest.cairo +++ b/contracts/game/src/models/quest.cairo @@ -1,4 +1,4 @@ -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; #[derive(IntrospectPacked, Copy, Drop, Serde)] #[dojo::model] @@ -8,14 +8,4 @@ pub struct Quest { #[key] config_id: ID, completed: bool, -} - -#[derive(IntrospectPacked, Copy, Drop, Serde)] -#[dojo::model] -pub struct QuestBonus { - #[key] - entity_id: ID, - #[key] - resource_type: u8, - claimed: bool -} +} \ No newline at end of file diff --git a/contracts/game/src/models/realm.cairo b/contracts/game/src/models/realm.cairo index e1bfcacb16..b8fb2e1b32 100644 --- a/contracts/game/src/models/realm.cairo +++ b/contracts/game/src/models/realm.cairo @@ -2,9 +2,9 @@ use alexandria_math::{BitShift, pow}; use array::SpanTrait; use dojo::model::ModelStorage; use dojo::world::WorldStorage; -use s0_eternum::alias::ID; -use s0_eternum::constants::WORLD_CONFIG_ID; -use s0_eternum::models::config::RealmMaxLevelConfig; +use s1_eternum::alias::ID; +use s1_eternum::constants::WORLD_CONFIG_ID; +use s1_eternum::models::config::RealmMaxLevelConfig; use starknet::ContractAddress; use traits::Into; @@ -19,7 +19,6 @@ pub struct Realm { order: u8, level: u8, has_wonder: bool, - settler_address: ContractAddress, } @@ -333,15 +332,7 @@ mod test_realm_resources_impl { use super::{RealmResourcesImpl, RealmResourcesTrait, Realm}; fn mock_realm() -> Realm { - Realm { - entity_id: 1, - realm_id: 1, - order: 0, - level: 0, - produced_resources: 0, - has_wonder: false, - settler_address: contract_address_const::<'Settler'>(), - } + Realm { entity_id: 1, realm_id: 1, order: 0, level: 0, produced_resources: 0, has_wonder: false, } } diff --git a/contracts/game/src/models/buildings.cairo b/contracts/game/src/models/resource/production/building.cairo similarity index 60% rename from contracts/game/src/models/buildings.cairo rename to contracts/game/src/models/resource/production/building.cairo index 28e837a7c0..27e55b6e4f 100644 --- a/contracts/game/src/models/buildings.cairo +++ b/contracts/game/src/models/resource/production/building.cairo @@ -3,22 +3,20 @@ use core::zeroable::Zeroable; use dojo::model::ModelStorage; use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::{ResourceTypes, POPULATION_CONFIG_ID, WORLD_CONFIG_ID}; -use s0_eternum::models::config::{ +use s1_eternum::alias::ID; +use s1_eternum::constants::{ResourceTypes, POPULATION_CONFIG_ID, WORLD_CONFIG_ID}; +use s1_eternum::models::config::{ TickConfig, TickImpl, TickTrait, ProductionConfig, BuildingConfig, BuildingConfigImpl, BuildingCategoryPopConfigTrait, PopulationConfig, BuildingGeneralConfig }; -use s0_eternum::models::owner::{EntityOwner, EntityOwnerTrait}; -use s0_eternum::models::population::{Population, PopulationTrait}; -use s0_eternum::models::position::{Coord, Position, Direction, PositionTrait, CoordTrait}; -use s0_eternum::models::production::{ - Production, ProductionInput, ProductionRateTrait, ProductionInputImpl, ProductionInputTrait -}; -use s0_eternum::models::realm::Realm; -use s0_eternum::models::resources::ResourceTrait; -use s0_eternum::models::resources::{Resource, ResourceImpl, ResourceCost}; -use s0_eternum::utils::math::{PercentageImpl, PercentageValueImpl}; +use s1_eternum::models::owner::{EntityOwner, EntityOwnerTrait}; +use s1_eternum::models::population::{Population, PopulationTrait}; +use s1_eternum::models::position::{Coord, Position, Direction, PositionTrait, CoordTrait}; +use s1_eternum::models::realm::Realm; +use s1_eternum::models::resource::production::production::{Production, ProductionTrait}; +use s1_eternum::models::resource::resource::ResourceTrait; +use s1_eternum::models::resource::resource::{Resource, ResourceImpl, ResourceCost}; +use s1_eternum::utils::math::{PercentageImpl, PercentageValueImpl}; //todo we need to define border of innner hexes @@ -139,156 +137,78 @@ impl BuildingProductionImpl of BuildingProductionTrait { BuildingCategory::Storehouse => 0, } } + fn update_production(ref self: Building, ref world: WorldStorage, stop: bool) { + // update produced resource balance before updating production + let produced_resource_type = self.produced_resource(); + let mut produced_resource: Resource = ResourceImpl::get( + ref world, (self.outer_entity_id, produced_resource_type) + ); + produced_resource.save(ref world); + + let mut production: Production = produced_resource.production; + + match stop { + true => { + // ensure production amount is gotten BEFORE updating + // bonus received percent so production rate is decreased correctly + let production_amount = self.production_amount(ref world); + + // update bonus received percent + self.update_bonus_received_percent(ref world, delete: true); + + // decrease building count + production.decrease_building_count(); + + // decrease production rate + production.decrease_production_rate(production_amount); + }, + false => { + // update bonus received percent + self.update_bonus_received_percent(ref world, delete: false); + + // ensure production amount is gotten AFTER updating + // bonus received percent so production rate is increased correctly + let production_amount = self.production_amount(ref world); + assert!(production_amount.is_non_zero(), "resource cannot be produced"); + + // increase building count + production.increase_building_count(); + + // increase production rate + production.increase_production_rate(production_amount); + } + } + // save production + produced_resource.production = production; + world.write_model(@produced_resource); + + // todo add event here + } fn start_production(ref self: Building, ref world: WorldStorage) { if self.is_resource_producer() { - let tick = TickImpl::get_default_tick_config(ref world); - let produced_resource_type = self.produced_resource(); - let mut produced_resource: Resource = ResourceImpl::get( - ref world, (self.outer_entity_id, produced_resource_type) - ); - - let mut resource_production: Production = world.read_model((self.outer_entity_id, produced_resource_type)); - // increase production building count by 1 - resource_production.increase_building_count(); - - // receive bonuses from surrounding buildings that give bonuses - self.update_bonuses_received(ref resource_production, ref produced_resource, ref world, delete: false); - - // add this building's contribution to global production rate - resource_production - .increase_production_rate(ref produced_resource, @tick, self.production_amount(ref world)); - - // make payment for production by increasing input resources consumption rates - let production_config: ProductionConfig = world.read_model(produced_resource_type); - let mut count = 0; - loop { - if count == production_config.input_count { - break; - } - - let production_input: ProductionInput = world.read_model((produced_resource_type, count)); - let (input_resource_type, mut input_resource_amount) = ( - production_input.input_resource_type, production_input.input_resource_amount - ); - - /// only 10% of lords cost will be consumed during production of donkey - /// if the realm has a wonder - if input_resource_type == ResourceTypes::LORDS { - if resource_production.resource_type == ResourceTypes::DONKEY { - let realm: Realm = world.read_model(self.outer_entity_id); - if realm.has_wonder { - input_resource_amount = - ((input_resource_amount * PercentageValueImpl::_10().into()) - / PercentageValueImpl::_100().into()) - .try_into() - .unwrap(); - } - } - } - - let mut input_resource: Resource = ResourceImpl::get( - ref world, (self.outer_entity_id, input_resource_type) - ); - let mut input_production: Production = world.read_model((self.outer_entity_id, input_resource_type)); - - input_production.increase_consumption_rate(ref input_resource, @tick, input_resource_amount); - - input_resource.save(ref world); - world.write_model(@input_production); - - count += 1; - }; - - // reset the time that materials used for production will finish - let first_input_finish_tick = ProductionInputImpl::first_input_finish_tick(@resource_production, ref world); - resource_production.set__input_finish_tick(ref produced_resource, @tick, first_input_finish_tick); - produced_resource.save(ref world); - - world.write_model(@resource_production); + self.update_production(ref world, stop: false); } if self.is_adjacent_building_booster() { - // give out bonuses to surrounding buildings if this building is a bonus supplier + // give out bonuses to surrounding buildings self.update_bonuses_supplied(ref world, delete: false); } - world.write_model(@self); } fn stop_production(ref self: Building, ref world: WorldStorage) { if self.is_resource_producer() { - let tick = TickImpl::get_default_tick_config(ref world); - let produced_resource_type = self.produced_resource(); - let mut produced_resource: Resource = ResourceImpl::get( - ref world, (self.outer_entity_id, produced_resource_type) - ); - - let mut resource_production: Production = world.read_model((self.outer_entity_id, produced_resource_type)); - - // remove this building's contribution from global production rate - resource_production - .decrease_production_rate(ref produced_resource, @tick, self.production_amount(ref world)); - - // decrease production building count by 1 - resource_production.decrease_building_count(); - - // stop receiving bonuses from surrounding buildings that give bonuses - self.update_bonuses_received(ref resource_production, ref produced_resource, ref world, delete: true); - - // stop payment for production by decreasing input resources consumption rates - let production_config: ProductionConfig = world.read_model(produced_resource_type); - let mut count = 0; - loop { - if count == production_config.input_count { - break; - } - - let production_input: ProductionInput = world.read_model((produced_resource_type, count)); - let (input_resource_type, mut input_resource_amount) = ( - production_input.input_resource_type, production_input.input_resource_amount - ); - - /// only 10% of lords cost will be consumed during production of donkey - /// if the realm has a wonder - if input_resource_type == ResourceTypes::LORDS { - if resource_production.resource_type == ResourceTypes::DONKEY { - let realm: Realm = world.read_model(self.outer_entity_id); - if realm.has_wonder { - input_resource_amount = - ((input_resource_amount * PercentageValueImpl::_10().into()) - / PercentageValueImpl::_100().into()) - .try_into() - .unwrap(); - } - } - } - - let mut input_resource: Resource = ResourceImpl::get( - ref world, (self.outer_entity_id, input_resource_type) - ); - let mut input_production: Production = world.read_model((self.outer_entity_id, input_resource_type)); - - input_production.decrease_consumption_rate(ref input_resource, @tick, input_resource_amount); - - count += 1; - input_resource.save(ref world); - world.write_model(@input_production); - }; - - // reset the time that materials used for production will finish - let first_input_finish_tick = ProductionInputImpl::first_input_finish_tick(@resource_production, ref world); - resource_production.set__input_finish_tick(ref produced_resource, @tick, first_input_finish_tick); - produced_resource.save(ref world); - world.write_model(@resource_production); + self.update_production(ref world, stop: true); } if self.is_adjacent_building_booster() { - // take back bonuses given to surrounding buildings if this building is a bonus supplier + // remove bonuses it gave to surrounding buildings self.update_bonuses_supplied(ref world, delete: true); } + world.write_model(@self); } fn production_amount(self: @Building, ref world: WorldStorage) -> u128 { @@ -298,38 +218,20 @@ impl BuildingProductionImpl of BuildingProductionTrait { let produced_resource_type = (*self).produced_resource(); let production_config: ProductionConfig = world.read_model(produced_resource_type); - - let bonus_amount: u128 = (production_config.amount * (*self.bonus_percent).into()) + let bonus_amount: u128 = (production_config.produced_amount * (*self.bonus_percent).into()) / PercentageValueImpl::_100().into(); - production_config.amount + bonus_amount + production_config.produced_amount + bonus_amount } - fn update_bonuses_received( - ref self: Building, - ref resource_production: Production, - ref produced_resource: Resource, - ref world: WorldStorage, - delete: bool - ) { - // get bonuses from all buildings surronding this building if the offer boosts - let building_coord: Coord = Coord { x: self.inner_col, y: self.inner_row }; - - let produced_resource_type = self.produced_resource(); - let mut produced_resource: Resource = world.read_model((self.outer_entity_id, produced_resource_type)); - let mut resource_production: Production = world.read_model((self.outer_entity_id, produced_resource_type)); - let tick_config: TickConfig = TickImpl::get_default_tick_config(ref world); - + fn update_bonus_received_percent(ref self: Building, ref world: WorldStorage, delete: bool) { if delete { - // remove this building's contribution from global resource production - let building_production_amount: u128 = self.production_amount(ref world); - resource_production - .decrease_production_rate(ref produced_resource, @tick_config, building_production_amount); - // clear building bonus self.bonus_percent = 0; } else { + // get bonuses from all buildings surronding this building if the offer boosts + let building_coord: Coord = Coord { x: self.inner_col, y: self.inner_row }; let mut bonus_percent = self.get_bonus_from(building_coord.neighbor(Direction::East), ref world); bonus_percent += self.get_bonus_from(building_coord.neighbor(Direction::NorthEast), ref world); bonus_percent += self.get_bonus_from(building_coord.neighbor(Direction::NorthWest), ref world); @@ -339,11 +241,17 @@ impl BuildingProductionImpl of BuildingProductionTrait { // set new bonus percent self.bonus_percent = bonus_percent; + } + } - // add this building's contribution to global resource production - let building_production_amount: u128 = self.production_amount(ref world); - resource_production - .increase_production_rate(ref produced_resource, @tick_config, building_production_amount); + fn get_bonus_from(ref self: Building, giver_inner_coord: Coord, ref world: WorldStorage) -> u32 { + // only get bonuses from buildings that are active (not paused) + let bonus_giver_building: Building = world + .read_model((self.outer_col, self.outer_row, giver_inner_coord.x, giver_inner_coord.y)); + if bonus_giver_building.paused { + return 0; + } else { + return bonus_giver_building.boost_adjacent_building_production_by(); } } @@ -364,53 +272,40 @@ impl BuildingProductionImpl of BuildingProductionTrait { } - fn get_bonus_from(ref self: Building, giver_inner_coord: Coord, ref world: WorldStorage) -> u32 { - // only get bonuses from buildings that are active (not paused) - let bonus_giver_building: Building = world - .read_model((self.outer_col, self.outer_row, giver_inner_coord.x, giver_inner_coord.y)); - if bonus_giver_building.paused { - return 0; - } else { - return bonus_giver_building.boost_adjacent_building_production_by(); - } - } - - fn update_bonus_supplied_to(self: Building, receiver_inner_coord: Coord, ref world: WorldStorage, delete: bool) { - let mut bonus_receiver_building: Building = world + let mut recipient_building: Building = world .read_model((self.outer_col, self.outer_row, receiver_inner_coord.x, receiver_inner_coord.y)); - if bonus_receiver_building.exists() - && !bonus_receiver_building.paused // only give bonus to active buildings - && bonus_receiver_building.is_resource_producer() { - let bonus_receiver_produced_resource_type = bonus_receiver_building.produced_resource(); - let mut bonus_receiver_produced_resource: Resource = world - .read_model((self.outer_entity_id, bonus_receiver_produced_resource_type)); - let mut bonus_receiver_resource_production: Production = world - .read_model((self.outer_entity_id, bonus_receiver_produced_resource_type)); - let tick_config: TickConfig = TickImpl::get_default_tick_config(ref world); - - // remove old building's contribution to global resource production - let bonus_receiver_old_production_amount: u128 = bonus_receiver_building.production_amount(ref world); - bonus_receiver_resource_production - .decrease_production_rate( - ref bonus_receiver_produced_resource, @tick_config, bonus_receiver_old_production_amount - ); + if recipient_building.exists() // only when building exists at the location + && !recipient_building.paused // only give bonus to active buildings + && recipient_building.is_resource_producer() { // only give bonus to resource producers + // get the resource that the building produces + let recipient_produced_resource_type = recipient_building.produced_resource(); + let mut recipient_building_resource: Resource = ResourceImpl::get( + ref world, (self.outer_entity_id, recipient_produced_resource_type) + ); + + // remove the recipient building's contribution from global resource production + // first so that we can recalculate and add the new production rate + let recipient_building_resource_production_amount: u128 = recipient_building.production_amount(ref world); + let mut recipient_building_resource_production: Production = recipient_building_resource.production; + recipient_building_resource_production.decrease_production_rate( + recipient_building_resource_production_amount + ); + // update the recipient building's bonus percent if delete { - bonus_receiver_building.bonus_percent -= self.boost_adjacent_building_production_by(); + recipient_building.bonus_percent -= self.boost_adjacent_building_production_by(); } else { - bonus_receiver_building.bonus_percent += self.boost_adjacent_building_production_by(); + recipient_building.bonus_percent += self.boost_adjacent_building_production_by(); } - world.write_model(@bonus_receiver_building); - - // update building's contribution to global resource production - let bonus_receiver_new_production_amount: u128 = bonus_receiver_building.production_amount(ref world); - bonus_receiver_resource_production - .increase_production_rate( - ref bonus_receiver_produced_resource, @tick_config, bonus_receiver_new_production_amount - ); - bonus_receiver_produced_resource.save(ref world); - world.write_model(@bonus_receiver_resource_production); + world.write_model(@recipient_building); + + // update the global resource production to reflect the new production rate + recipient_building_resource_production.increase_production_rate( + recipient_building.production_amount(ref world) + ); + recipient_building_resource.production = recipient_building_resource_production; + world.write_model(@recipient_building_resource); } } } diff --git a/contracts/game/src/models/resource/production/labor.cairo b/contracts/game/src/models/resource/production/labor.cairo new file mode 100644 index 0000000000..b3855bb85a --- /dev/null +++ b/contracts/game/src/models/resource/production/labor.cairo @@ -0,0 +1,80 @@ +use dojo::model::ModelStorage; +use dojo::world::WorldStorage; +use s1_eternum::alias::ID; +use s1_eternum::constants::{FIRST_LABOR_RESOURCE_ID, LAST_LABOR_RESOURCE_ID}; +use s1_eternum::models::config::{LaborConfig, ProductionConfig}; +use s1_eternum::models::resource::production::production::{Production, ProductionImpl}; +use s1_eternum::models::resource::resource::{Resource, ResourceImpl, ResourceCost}; +use s1_eternum::models::structure::{Structure, StructureImpl}; + + +#[generate_trait] +impl LaborImpl of LaborTrait { + fn labor_resource_from_regular(resource_type: u8) -> u8 { + return 255 - resource_type; + } + + fn resource_from_labor(labor_type: u8) -> u8 { + return 255 - labor_type; + } + + fn is_labor(resource_type: u8) -> bool { + return (resource_type >= FIRST_LABOR_RESOURCE_ID && resource_type <= LAST_LABOR_RESOURCE_ID); + } + + fn mould_labor(ref world: WorldStorage, entity_id: ID, resource_type: u8, labor_amount: u128) { + assert!(resource_type.is_non_zero(), "wrong labor resource type"); + assert!(labor_amount.is_non_zero(), "zero labor amount"); + assert!(entity_id.is_non_zero(), "zero entity id"); + + // ensure there is a config for this labor resource + let labor_config: LaborConfig = world.read_model(resource_type); + let input_count = labor_config.input_count; + assert!(input_count.is_non_zero(), "can't make labor for specified resource"); + + for i in 0 + ..input_count { + let resource_cost: ResourceCost = world.read_model((labor_config.input_id, i)); + let input_resource_type = resource_cost.resource_type; + let input_resource_amount = resource_cost.amount; + assert!(input_resource_amount.is_non_zero(), "labor resource cost is 0"); + + // make payment for labor + let mut input_resource = ResourceImpl::get(ref world, (entity_id, input_resource_type)); + input_resource.burn(input_resource_amount * labor_amount); + input_resource.save(ref world); + }; + + // make labor resource + let labor_resource_type = Self::labor_resource_from_regular(resource_type); + let mut labor_resource = ResourceImpl::get(ref world, (entity_id, labor_resource_type)); + labor_resource.add(labor_amount); + labor_resource.save(ref world); + // todo add event here + } + + // burn labor for resource production + fn burn_labor(ref world: WorldStorage, entity_id: ID, resource_type: u8, labor_amount: u128) { + assert!(resource_type.is_non_zero(), "wrong labor resource type"); + assert!(labor_amount.is_non_zero(), "zero labor amount"); + assert!(entity_id.is_non_zero(), "zero entity id"); + + // ensure entity is a structure + let entity_structure: Structure = world.read_model(entity_id); + assert!(entity_structure.is_structure(), "entity is not a structure"); + + // ** ADD LABOR AMOUNT TO PRODUCTION ** // + + let mut resource = ResourceImpl::get(ref world, (entity_id, resource_type)); + let resource_production_config: ProductionConfig = world.read_model(resource_type); + resource.production.use_labor(@resource_production_config, labor_amount); + world.write_model(@resource); + + // ** BURN LABOR AMOUNT FROM LABOR RESOURCE ** // + let labor_resource_type = Self::labor_resource_from_regular(resource_type); + let mut labor_resource = ResourceImpl::get(ref world, (entity_id, labor_resource_type)); + labor_resource.burn(labor_amount); + labor_resource.save(ref world); + // todo add event here + } +} diff --git a/contracts/game/src/models/resource/production/production.cairo b/contracts/game/src/models/resource/production/production.cairo new file mode 100644 index 0000000000..de67481d11 --- /dev/null +++ b/contracts/game/src/models/resource/production/production.cairo @@ -0,0 +1,106 @@ +use core::Zeroable; +use core::debug::PrintTrait; +use core::num::traits::Bounded; +use core::option::OptionTrait; +use dojo::model::ModelStorage; +use dojo::world::WorldStorage; +use s1_eternum::alias::ID; +use s1_eternum::models::config::{ProductionConfig}; +use s1_eternum::models::config::{TickConfig, TickImpl, TickTrait}; +use s1_eternum::models::resource::resource::{Resource, ResourceImpl, ResourceTypes}; +use starknet::get_block_timestamp; + +#[derive(IntrospectPacked, Copy, Drop, Serde)] +pub struct Production { + // active building count + building_count: u8, + // production rate per tick + production_rate: u128, + // labor units left for production + labor_units_left: u64, + // last tick updated + last_updated_tick: u32, +} + +// We could make this a nice JS Class with a constructor and everything +// Then maintaining logic in client will be easy +#[generate_trait] +impl ProductionImpl of ProductionTrait { + fn has_building(self: @Production) -> bool { + if ((*self).building_count.is_non_zero()) { + return true; + } + return false; + } + + fn increase_building_count(ref self: Production) { + self.building_count += 1; + } + + fn decrease_building_count(ref self: Production) { + self.building_count -= 1; + } + + fn increase_production_rate(ref self: Production, production_rate: u128) { + self.production_rate += production_rate; + } + + fn decrease_production_rate(ref self: Production, production_rate: u128) { + self.production_rate -= production_rate; + } + + fn use_labor(ref self: Production, production_config: @ProductionConfig, labor_amount: u128) { + // assert!(self.resource_type == *production_config.resource_type, "mismatched resource type when using labor"); + assert!(labor_amount.is_non_zero(), "zero labor amount"); + assert!( + labor_amount % (*production_config).labor_cost == 0, "labor amount not exactly divisible by labor cost" + ); + + let additional_labor_units: u64 = (labor_amount / (*production_config).labor_cost).try_into().unwrap(); + self.labor_units_left += additional_labor_units; + } + + // function must be called on every resource before querying their balance + // to ensure that the balance is accurate + fn harvest( + ref self: Production, ref resource: Resource, tick: @TickConfig, production_config: @ProductionConfig + ) -> bool { + // return false if production is not active + if !self.has_building() { + return false; + } + + // check production duration + let current_tick = (*tick).current(); + if self.labor_units_left.is_non_zero() { + // total units produced by all buildings + let mut labor_units_burned: u128 = (current_tick.into() - self.last_updated_tick.into()) + * self.building_count.into(); + + // limit units produced to labor units left + if labor_units_burned > self.labor_units_left.into() { + labor_units_burned = self.labor_units_left.into(); + } + + // get total produced amount + let total_produced_amount: u128 = labor_units_burned * self.production_rate; + + // ensure lords can not be produced by any means + assert!(resource.resource_type != ResourceTypes::LORDS, "lords can not be produced"); + + // update resource balance + resource.balance += total_produced_amount; + + // update labor cycles left + self.labor_units_left -= labor_units_burned.try_into().unwrap(); + + // update last updated tick + self.last_updated_tick = current_tick.try_into().unwrap(); + + // todo add event here + return true; + } + + return false; + } +} diff --git a/contracts/game/src/models/resources.cairo b/contracts/game/src/models/resource/resource.cairo similarity index 83% rename from contracts/game/src/models/resources.cairo rename to contracts/game/src/models/resource/resource.cairo index 314164cd6a..11dcbc48fa 100644 --- a/contracts/game/src/models/resources.cairo +++ b/contracts/game/src/models/resource/resource.cairo @@ -3,21 +3,23 @@ use core::num::traits::Bounded; use dojo::model::ModelStorage; use dojo::world::WorldStorage; -use s0_eternum::alias::ID; -use s0_eternum::constants::{ - get_resource_probabilities, RESOURCE_PRECISION, GRAMS_PER_KG, ResourceTypes, resource_type_name, WORLD_CONFIG_ID +use s1_eternum::alias::ID; +use s1_eternum::constants::{ + LAST_REGULAR_RESOURCE_ID, FIRST_LABOR_RESOURCE_ID, get_resource_probabilities, RESOURCE_PRECISION, GRAMS_PER_KG, + ResourceTypes, resource_type_name, WORLD_CONFIG_ID }; -use s0_eternum::models::buildings::{Building, BuildingTrait, BuildingCategory, BuildingQuantityv2}; -use s0_eternum::models::config::{ +use s1_eternum::models::config::{ ProductionConfig, TickConfig, TickImpl, TickTrait, CapacityConfig, CapacityConfigCategory, CapacityConfigTrait }; -use s0_eternum::models::config::{WeightConfigImpl, WeightConfig}; +use s1_eternum::models::config::{WeightConfigImpl, WeightConfig}; +use s1_eternum::models::realm::Realm; +use s1_eternum::models::resource::production::building::{Building, BuildingTrait, BuildingCategory, BuildingQuantityv2}; +use s1_eternum::models::resource::production::labor::{LaborImpl, LaborTrait}; -use s0_eternum::models::production::{Production, ProductionOutputImpl, ProductionRateTrait}; -use s0_eternum::models::realm::Realm; -use s0_eternum::models::structure::StructureTrait; -use s0_eternum::models::structure::{Structure, StructureCategory}; -use s0_eternum::utils::math::{is_u256_bit_set, set_u256_bit, min}; +use s1_eternum::models::resource::production::production::{Production, ProductionTrait}; +use s1_eternum::models::structure::StructureTrait; +use s1_eternum::models::structure::{Structure, StructureCategory}; +use s1_eternum::utils::math::{is_u256_bit_set, set_u256_bit, min}; #[derive(IntrospectPacked, Copy, Drop, Serde)] #[dojo::model] @@ -27,6 +29,7 @@ pub struct Resource { #[key] resource_type: u8, balance: u128, + production: Production, } impl ResourceDisplay of Display { @@ -84,6 +87,7 @@ pub struct DetachedResource { pub struct OwnedResourcesTracker { #[key] entity_id: ID, + // todo: use felt252 instead resource_types: u256 } @@ -171,10 +175,22 @@ impl ResourceFoodImpl of ResourceFoodTrait { impl ResourceImpl of ResourceTrait { fn get(ref world: WorldStorage, key: (ID, u8)) -> Resource { let mut resource: Resource = world.read_model(key); - assert!(resource.resource_type.is_non_zero(), "resource type not found"); assert!(resource.entity_id.is_non_zero(), "entity id not found"); + assert!( + resource.resource_type != 0 && resource.resource_type != Bounded::MAX, "invalid resource specified (1)" + ); + assert!( + resource.resource_type <= LAST_REGULAR_RESOURCE_ID // regular resources + || resource.resource_type >= FIRST_LABOR_RESOURCE_ID, // labor resources + "invalid resource specified (2)" + ); + + let entity_structure: Structure = world.read_model(resource.entity_id); + let entity_is_structure = entity_structure.is_structure(); + if entity_is_structure { + resource.update_balance(ref world); + } - resource.harvest(ref world); return resource; } @@ -204,27 +220,17 @@ impl ResourceImpl of ResourceTrait { return; }; - // ensure realm has enough store houses to keep resource balance let entity_structure: Structure = world.read_model(self.entity_id); - let entity_is_structure = entity_structure.is_structure(); - if entity_is_structure { + if entity_structure.is_structure() { + // limit balance by storehouse capacity self.limit_balance_by_storehouse_capacity(ref world); } // save the updated resource world.write_model(@self); - if entity_is_structure { - // sync end ticks of resources that use this resource in their production - // e.g `self` may be wheat resource and is stone, coal and gold are used - // in production of wheat, we update their exhaustion ticks - ProductionOutputImpl::sync_all_inputs_exhaustion_ticks_for(@self, ref world); - } - - // Update the entity's owned resources tracker - + // update the entity's resource tracker let mut entity_owned_resources: OwnedResourcesTracker = world.read_model(self.entity_id); - if self.balance == 0 { if entity_owned_resources.owns_resource_type(self.resource_type) { entity_owned_resources.set_resource_ownership(self.resource_type, false); @@ -245,6 +251,9 @@ impl ResourceImpl of ResourceTrait { } let resource_weight_config: WeightConfig = world.read_model((WORLD_CONFIG_ID, self.resource_type)); + if resource_weight_config.weight_gram == 0 { + return; + } let storehouse_building_quantity: BuildingQuantityv2 = world .read_model((self.entity_id, BuildingCategory::Storehouse)); @@ -253,11 +262,6 @@ impl ResourceImpl of ResourceTrait { let storehouse_capacity_grams = storehouse_capacity_grams + (storehouse_building_quantity.value.into() * storehouse_capacity_grams); - if (resource_weight_config.weight_gram == 0) { - self.balance = min(self.balance, storehouse_capacity_grams); - return; - } - let resource_weight_grams_with_precision = WeightConfigImpl::get_weight_grams_with_precision( ref world, self.resource_type, self.balance ); @@ -265,20 +269,30 @@ impl ResourceImpl of ResourceTrait { let storehouse_capacity_grams_with_precision = storehouse_capacity_grams * RESOURCE_PRECISION; let max_weight_grams = min(resource_weight_grams_with_precision, storehouse_capacity_grams_with_precision); - let max_balance = max_weight_grams / resource_weight_config.weight_gram; self.balance = max_balance } - fn harvest(ref self: Resource, ref world: WorldStorage) { - let mut production: Production = world.read_model((self.entity_id, self.resource_type)); + fn update_balance(ref self: Resource, ref world: WorldStorage) { let tick = TickImpl::get_default_tick_config(ref world); - if production.is_active() && production.last_updated_tick != tick.current() { - production.harvest(ref self, @tick); + let current_tick = tick.current().try_into().unwrap(); + let mut production: Production = self.production; + if production.has_building() && production.last_updated_tick != current_tick { + // harvest the production + let production_config: ProductionConfig = world.read_model(self.resource_type); + production.harvest(ref self, @tick, @production_config); + + // update the resource production + self.production = production; + + // limit balance by storehouse capacity self.limit_balance_by_storehouse_capacity(ref world); + + // save the updated resource model world.write_model(@self); - world.write_model(@production); + + // todo add event here to show amount burnt } } } @@ -325,15 +339,15 @@ mod tests_resource_traits { use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::{ResourceTypes, WORLD_CONFIG_ID, TickIds}; - use s0_eternum::models::config::{TickConfig, TickImpl, TickTrait}; - use s0_eternum::models::production::ProductionRateTrait; - use s0_eternum::models::resources::ResourceTrait; - use s0_eternum::models::structure::{Structure, StructureCategory}; - use s0_eternum::systems::config::contracts::config_systems; - use s0_eternum::systems::config::contracts::{IProductionConfigDispatcher, IProductionConfigDispatcherTrait}; - use s0_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system, config::set_capacity_config}; + use s1_eternum::alias::ID; + use s1_eternum::constants::{ResourceTypes, WORLD_CONFIG_ID, TickIds}; + use s1_eternum::models::config::{TickConfig, TickImpl, TickTrait}; + use s1_eternum::models::resource::production::production::ProductionRateTrait; + use s1_eternum::models::resource::resource::ResourceTrait; + use s1_eternum::models::structure::{Structure, StructureCategory}; + use s1_eternum::systems::config::contracts::config_systems; + use s1_eternum::systems::config::contracts::{IProductionConfigDispatcher, IProductionConfigDispatcherTrait}; + use s1_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system, config::set_capacity_config}; use super::{Production, ProductionOutputImpl, Resource, ResourceImpl}; use traits::Into; use traits::TryInto; @@ -384,7 +398,7 @@ mod tests_resource_traits { production_rate: wood_production_rate, consumption_rate: wood_consumption_rate, last_updated_tick: 0, - input_finish_tick: 0 + labor_finish_tick: 0 }; world.write_model_test(@wood_production); @@ -396,7 +410,7 @@ mod tests_resource_traits { production_rate: 0, consumption_rate: wood_cost_gold_rate, last_updated_tick: 0, - input_finish_tick: 0 + labor_finish_tick: 0 }; // set gold resource balance @@ -440,7 +454,7 @@ mod tests_resource_traits { let gold_resource: Resource = world.read_model((entity_id, ResourceTypes::GOLD)); let gold_production_end = gold_resource.balance / 3; // wood_cost_gold_rate let wood_production: Production = world.read_model((entity_id, ResourceTypes::WOOD)); - assert_eq!(gold_production_end, wood_production.input_finish_tick.into()); + assert_eq!(gold_production_end, wood_production.labor_finish_tick.into()); } @@ -478,7 +492,7 @@ mod tests_resource_traits { // now we have 104 gold, so wood production should end at tick 34 // the calculation being, 104 / 3 = 34.66 // 34 let wood_production: Production = world.read_model((entity_id, ResourceTypes::WOOD)); - assert_eq!(wood_production.input_finish_tick, 34); + assert_eq!(wood_production.labor_finish_tick, 34); } } @@ -489,11 +503,11 @@ mod owned_resources_tracker_tests { use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; - use s0_eternum::constants::ResourceTypes; - use s0_eternum::models::resources::{Resource, ResourceImpl}; - use s0_eternum::models::structure::{Structure, StructureCategory}; - use s0_eternum::systems::config::contracts::config_systems; - use s0_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system, config::set_capacity_config}; + use s1_eternum::constants::ResourceTypes; + use s1_eternum::models::resource::resource::{Resource, ResourceImpl}; + use s1_eternum::models::structure::{Structure, StructureCategory}; + use s1_eternum::systems::config::contracts::config_systems; + use s1_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system, config::set_capacity_config}; use super::{OwnedResourcesTracker, OwnedResourcesTrackerTrait}; diff --git a/contracts/game/src/models/season.cairo b/contracts/game/src/models/season.cairo index bbabc49fca..62ff485e03 100644 --- a/contracts/game/src/models/season.cairo +++ b/contracts/game/src/models/season.cairo @@ -1,6 +1,6 @@ use dojo::model::ModelStorage; use dojo::world::WorldStorage; -use s0_eternum::{alias::ID, constants::WORLD_CONFIG_ID}; +use s1_eternum::{alias::ID, constants::WORLD_CONFIG_ID}; #[derive(IntrospectPacked, Copy, Drop, Serde)] #[dojo::model] diff --git a/contracts/game/src/models/stamina.cairo b/contracts/game/src/models/stamina.cairo index ad5e6f0601..cd4a6057c0 100644 --- a/contracts/game/src/models/stamina.cairo +++ b/contracts/game/src/models/stamina.cairo @@ -1,8 +1,8 @@ use alexandria_data_structures::array_ext::ArrayTraitExt; use dojo::model::ModelStorage; use dojo::world::WorldStorage; -use s0_eternum::alias::ID; -use s0_eternum::{ +use s1_eternum::alias::ID; +use s1_eternum::{ models::{combat::Army, config::{StaminaConfig, StaminaRefillConfig, TickConfig, TickImpl}}, constants::{ResourceTypes, TravelTypes, WORLD_CONFIG_ID} }; diff --git a/contracts/game/src/models/structure.cairo b/contracts/game/src/models/structure.cairo index f7342ab1a8..c318721cba 100644 --- a/contracts/game/src/models/structure.cairo +++ b/contracts/game/src/models/structure.cairo @@ -1,7 +1,7 @@ use array::SpanTrait; -use s0_eternum::alias::ID; -use s0_eternum::models::config::{BattleConfig, TickConfig, TickTrait}; -use s0_eternum::models::position::Coord; +use s1_eternum::alias::ID; +use s1_eternum::models::config::{BattleConfig, TickConfig, TickTrait}; +use s1_eternum::models::position::Coord; use starknet::ContractAddress; use traits::Into; diff --git a/contracts/game/src/models/trade.cairo b/contracts/game/src/models/trade.cairo index 6675adea1d..16b87b1583 100644 --- a/contracts/game/src/models/trade.cairo +++ b/contracts/game/src/models/trade.cairo @@ -1,4 +1,4 @@ -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; #[derive(IntrospectPacked, Copy, Drop, Serde)] #[dojo::model] diff --git a/contracts/game/src/models/weight.cairo b/contracts/game/src/models/weight.cairo index 09d9e15f80..458a12014f 100644 --- a/contracts/game/src/models/weight.cairo +++ b/contracts/game/src/models/weight.cairo @@ -1,6 +1,6 @@ -use s0_eternum::alias::ID; -use s0_eternum::models::config::{CapacityConfig, CapacityConfigTrait}; -use s0_eternum::models::quantity::{Quantity}; +use s1_eternum::alias::ID; +use s1_eternum::models::config::{CapacityConfig, CapacityConfigTrait}; +use s1_eternum::models::quantity::{Quantity}; #[derive(IntrospectPacked, Copy, Drop, Serde)] #[dojo::model] diff --git a/contracts/game/src/systems.cairo b/contracts/game/src/systems.cairo index 2a81f45465..5cc6897947 100644 --- a/contracts/game/src/systems.cairo +++ b/contracts/game/src/systems.cairo @@ -31,7 +31,7 @@ pub mod hyperstructure { #[cfg(test)] mod tests; } -pub mod buildings { +pub mod production { pub mod contracts; #[cfg(test)] mod tests; diff --git a/contracts/game/src/systems/bank/contracts/bank.cairo b/contracts/game/src/systems/bank/contracts/bank.cairo index 4498e6849a..c01797445e 100644 --- a/contracts/game/src/systems/bank/contracts/bank.cairo +++ b/contracts/game/src/systems/bank/contracts/bank.cairo @@ -1,6 +1,6 @@ use dojo::world::IWorldDispatcher; -use s0_eternum::alias::ID; -use s0_eternum::models::position::{Coord}; +use s1_eternum::alias::ID; +use s1_eternum::models::position::{Coord}; #[starknet::interface] trait IBankSystems { @@ -17,18 +17,18 @@ mod bank_systems { use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::DEFAULT_NS; - use s0_eternum::constants::{WORLD_CONFIG_ID, ResourceTypes}; - use s0_eternum::models::bank::bank::{Bank}; - use s0_eternum::models::capacity::{CapacityCategory}; - use s0_eternum::models::config::{BankConfig, CapacityConfigCategory}; - use s0_eternum::models::owner::{Owner, EntityOwner}; - use s0_eternum::models::position::{Position, Coord}; - use s0_eternum::models::resources::{Resource, ResourceImpl}; - use s0_eternum::models::season::SeasonImpl; - use s0_eternum::models::structure::{Structure, StructureCategory, StructureCount, StructureCountTrait}; - use s0_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; + use s1_eternum::alias::ID; + use s1_eternum::constants::DEFAULT_NS; + use s1_eternum::constants::{WORLD_CONFIG_ID, ResourceTypes}; + use s1_eternum::models::bank::bank::{Bank}; + use s1_eternum::models::capacity::{CapacityCategory}; + use s1_eternum::models::config::{BankConfig, CapacityConfigCategory}; + use s1_eternum::models::owner::{Owner, EntityOwner}; + use s1_eternum::models::position::{Position, Coord}; + use s1_eternum::models::resource::resource::{Resource, ResourceImpl}; + use s1_eternum::models::season::SeasonImpl; + use s1_eternum::models::structure::{Structure, StructureCategory, StructureCount, StructureCountTrait}; + use s1_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; use traits::Into; diff --git a/contracts/game/src/systems/bank/contracts/liquidity.cairo b/contracts/game/src/systems/bank/contracts/liquidity.cairo index 81b7aab897..2fab072c8b 100644 --- a/contracts/game/src/systems/bank/contracts/liquidity.cairo +++ b/contracts/game/src/systems/bank/contracts/liquidity.cairo @@ -1,6 +1,6 @@ use cubit::f128::types::fixed::{Fixed, FixedTrait}; use dojo::world::IWorldDispatcher; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; #[starknet::interface] trait ILiquiditySystems { @@ -20,15 +20,15 @@ mod liquidity_systems { use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; // Eternum imports - use s0_eternum::alias::ID; - use s0_eternum::constants::{RESOURCE_PRECISION,DEFAULT_NS}; - use s0_eternum::constants::ResourceTypes; - use s0_eternum::models::bank::liquidity::{Liquidity}; - use s0_eternum::models::bank::market::{Market, MarketTrait}; - use s0_eternum::models::owner::{Owner, OwnerTrait}; - use s0_eternum::models::resources::{Resource, ResourceImpl, ResourceTrait}; - use s0_eternum::models::season::SeasonImpl; - use s0_eternum::systems::bank::contracts::bank::bank_systems::{InternalBankSystemsImpl}; + use s1_eternum::alias::ID; + use s1_eternum::constants::ResourceTypes; + use s1_eternum::constants::{RESOURCE_PRECISION, DEFAULT_NS}; + use s1_eternum::models::bank::liquidity::{Liquidity}; + use s1_eternum::models::bank::market::{Market, MarketTrait}; + use s1_eternum::models::owner::{Owner, OwnerTrait}; + use s1_eternum::models::resource::resource::{Resource, ResourceImpl, ResourceTrait}; + use s1_eternum::models::season::SeasonImpl; + use s1_eternum::systems::bank::contracts::bank::bank_systems::{InternalBankSystemsImpl}; #[derive(Copy, Drop, Serde)] #[dojo::event(historical: false)] @@ -59,6 +59,8 @@ mod liquidity_systems { let mut world: WorldStorage = self.world(DEFAULT_NS()); SeasonImpl::assert_season_is_not_over(world); + assert!(resource_type != ResourceTypes::LORDS, "resource type cannot be lords"); + let owner: Owner = world.read_model(entity_id); owner.assert_caller_owner(); let mut resource = ResourceImpl::get(ref world, (entity_id, resource_type)); @@ -102,6 +104,8 @@ mod liquidity_systems { let mut world: WorldStorage = self.world(DEFAULT_NS()); // SeasonImpl::assert_season_is_not_over(world); + assert!(resource_type != ResourceTypes::LORDS, "resource type cannot be lords"); + let player = starknet::get_caller_address(); let owner: Owner = world.read_model(entity_id); owner.assert_caller_owner(); diff --git a/contracts/game/src/systems/bank/contracts/swap.cairo b/contracts/game/src/systems/bank/contracts/swap.cairo index eece078ae1..da571a85d2 100644 --- a/contracts/game/src/systems/bank/contracts/swap.cairo +++ b/contracts/game/src/systems/bank/contracts/swap.cairo @@ -1,5 +1,5 @@ use dojo::world::IWorldDispatcher; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; #[starknet::interface] trait ISwapSystems { @@ -19,16 +19,16 @@ mod swap_systems { use option::OptionTrait; - use s0_eternum::alias::ID; - use s0_eternum::constants::{RESOURCE_PRECISION, DEFAULT_NS}; - use s0_eternum::constants::{ResourceTypes, WORLD_CONFIG_ID}; - use s0_eternum::models::bank::bank::{Bank}; - use s0_eternum::models::bank::market::{Market, MarketTrait}; - use s0_eternum::models::config::{BankConfig}; - use s0_eternum::models::config::{TickImpl, TickTrait}; - use s0_eternum::models::resources::{Resource, ResourceImpl, ResourceTrait}; - use s0_eternum::models::season::SeasonImpl; - use s0_eternum::systems::bank::contracts::bank::bank_systems::{InternalBankSystemsImpl}; + use s1_eternum::alias::ID; + use s1_eternum::constants::{RESOURCE_PRECISION, DEFAULT_NS}; + use s1_eternum::constants::{ResourceTypes, WORLD_CONFIG_ID}; + use s1_eternum::models::bank::bank::{Bank}; + use s1_eternum::models::bank::market::{Market, MarketTrait}; + use s1_eternum::models::config::{BankConfig}; + use s1_eternum::models::config::{TickImpl, TickTrait}; + use s1_eternum::models::resource::resource::{Resource, ResourceImpl, ResourceTrait}; + use s1_eternum::models::season::SeasonImpl; + use s1_eternum::systems::bank::contracts::bank::bank_systems::{InternalBankSystemsImpl}; use traits::{Into, TryInto}; diff --git a/contracts/game/src/systems/bank/tests/bank.cairo b/contracts/game/src/systems/bank/tests/bank.cairo index e4ded07f8f..69d5181bcb 100644 --- a/contracts/game/src/systems/bank/tests/bank.cairo +++ b/contracts/game/src/systems/bank/tests/bank.cairo @@ -3,16 +3,16 @@ // use dojo::world::{WorldStorage, WorldStorageTrait}; // use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -// use s0_eternum::alias::ID; +// use s1_eternum::alias::ID; -// use s0_eternum::models::position::{Coord}; +// use s1_eternum::models::position::{Coord}; -// use s0_eternum::systems::bank::contracts::bank::bank_systems; -// use s0_eternum::systems::bank::contracts::bank::{IBankSystemsDispatcher, IBankSystemsDispatcherTrait,}; +// use s1_eternum::systems::bank::contracts::bank::bank_systems; +// use s1_eternum::systems::bank::contracts::bank::{IBankSystemsDispatcher, IBankSystemsDispatcherTrait,}; -// use s0_eternum::systems::config::contracts::config_systems; -// use s0_eternum::systems::config::contracts::{IBankConfigDispatcher, IBankConfigDispatcherTrait,}; -// use s0_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system}; +// use s1_eternum::systems::config::contracts::config_systems; +// use s1_eternum::systems::config::contracts::{IBankConfigDispatcher, IBankConfigDispatcherTrait,}; +// use s1_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system}; // use starknet::contract_address_const; diff --git a/contracts/game/src/systems/bank/tests/liquidity.cairo b/contracts/game/src/systems/bank/tests/liquidity.cairo index d6a9af760d..1c3d14f16d 100644 --- a/contracts/game/src/systems/bank/tests/liquidity.cairo +++ b/contracts/game/src/systems/bank/tests/liquidity.cairo @@ -6,27 +6,27 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::{ResourceTypes, WORLD_CONFIG_ID, DONKEY_ENTITY_TYPE}; -use s0_eternum::models::bank::liquidity::{Liquidity}; -use s0_eternum::models::bank::market::{Market, MarketImpl}; - -use s0_eternum::models::config::{CapacityConfig, CapacityConfigCategory}; - - -use s0_eternum::models::owner::{Owner}; -use s0_eternum::models::position::{Coord}; -use s0_eternum::models::resources::{ResourceImpl, Resource}; -use s0_eternum::systems::bank::contracts::bank::{IBankSystemsDispatcher, IBankSystemsDispatcherTrait}; -use s0_eternum::systems::bank::contracts::bank::{bank_systems::InternalBankSystemsImpl, bank_systems}; - -use s0_eternum::systems::bank::contracts::liquidity::liquidity_systems; -use s0_eternum::systems::bank::contracts::liquidity::{ILiquiditySystemsDispatcher, ILiquiditySystemsDispatcherTrait,}; -use s0_eternum::systems::bank::contracts::swap::swap_systems; -use s0_eternum::systems::bank::contracts::swap::{ISwapSystemsDispatcher, ISwapSystemsDispatcherTrait}; -use s0_eternum::systems::config::contracts::config_systems; -use s0_eternum::systems::config::contracts::{IBankConfigDispatcher, IBankConfigDispatcherTrait,}; -use s0_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system, config::set_capacity_config}; +use s1_eternum::alias::ID; +use s1_eternum::constants::{ResourceTypes, WORLD_CONFIG_ID, DONKEY_ENTITY_TYPE}; +use s1_eternum::models::bank::liquidity::{Liquidity}; +use s1_eternum::models::bank::market::{Market, MarketImpl}; + +use s1_eternum::models::config::{CapacityConfig, CapacityConfigCategory}; + + +use s1_eternum::models::owner::{Owner}; +use s1_eternum::models::position::{Coord}; +use s1_eternum::models::resource::resource::{ResourceImpl, Resource}; +use s1_eternum::systems::bank::contracts::bank::{IBankSystemsDispatcher, IBankSystemsDispatcherTrait}; +use s1_eternum::systems::bank::contracts::bank::{bank_systems::InternalBankSystemsImpl, bank_systems}; + +use s1_eternum::systems::bank::contracts::liquidity::liquidity_systems; +use s1_eternum::systems::bank::contracts::liquidity::{ILiquiditySystemsDispatcher, ILiquiditySystemsDispatcherTrait,}; +use s1_eternum::systems::bank::contracts::swap::swap_systems; +use s1_eternum::systems::bank::contracts::swap::{ISwapSystemsDispatcher, ISwapSystemsDispatcherTrait}; +use s1_eternum::systems::config::contracts::config_systems; +use s1_eternum::systems::config::contracts::{IBankConfigDispatcher, IBankConfigDispatcherTrait,}; +use s1_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system, config::set_capacity_config}; use starknet::contract_address_const; diff --git a/contracts/game/src/systems/bank/tests/swap.cairo b/contracts/game/src/systems/bank/tests/swap.cairo index 522925376f..57e0d1e2d2 100644 --- a/contracts/game/src/systems/bank/tests/swap.cairo +++ b/contracts/game/src/systems/bank/tests/swap.cairo @@ -5,25 +5,25 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::{ResourceTypes, WORLD_CONFIG_ID, DONKEY_ENTITY_TYPE}; - -use s0_eternum::models::bank::liquidity::{Liquidity}; -use s0_eternum::models::bank::market::{Market}; - -use s0_eternum::models::config::{CapacityConfig, CapacityConfigCategory}; -use s0_eternum::models::position::{Coord}; -use s0_eternum::models::resources::{Resource, ResourceImpl}; -use s0_eternum::systems::bank::contracts::bank::{IBankSystemsDispatcher, IBankSystemsDispatcherTrait}; -use s0_eternum::systems::bank::contracts::bank::{bank_systems::InternalBankSystemsImpl, bank_systems}; - -use s0_eternum::systems::bank::contracts::liquidity::liquidity_systems; -use s0_eternum::systems::bank::contracts::liquidity::{ILiquiditySystemsDispatcher, ILiquiditySystemsDispatcherTrait,}; -use s0_eternum::systems::bank::contracts::swap::swap_systems; -use s0_eternum::systems::bank::contracts::swap::{ISwapSystemsDispatcher, ISwapSystemsDispatcherTrait,}; -use s0_eternum::systems::config::contracts::config_systems; -use s0_eternum::systems::config::contracts::{IBankConfigDispatcher, IBankConfigDispatcherTrait,}; -use s0_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system, config::set_capacity_config}; +use s1_eternum::alias::ID; +use s1_eternum::constants::{ResourceTypes, WORLD_CONFIG_ID, DONKEY_ENTITY_TYPE}; + +use s1_eternum::models::bank::liquidity::{Liquidity}; +use s1_eternum::models::bank::market::{Market}; + +use s1_eternum::models::config::{CapacityConfig, CapacityConfigCategory}; +use s1_eternum::models::position::{Coord}; +use s1_eternum::models::resource::resource::{Resource, ResourceImpl}; +use s1_eternum::systems::bank::contracts::bank::{IBankSystemsDispatcher, IBankSystemsDispatcherTrait}; +use s1_eternum::systems::bank::contracts::bank::{bank_systems::InternalBankSystemsImpl, bank_systems}; + +use s1_eternum::systems::bank::contracts::liquidity::liquidity_systems; +use s1_eternum::systems::bank::contracts::liquidity::{ILiquiditySystemsDispatcher, ILiquiditySystemsDispatcherTrait,}; +use s1_eternum::systems::bank::contracts::swap::swap_systems; +use s1_eternum::systems::bank::contracts::swap::{ISwapSystemsDispatcher, ISwapSystemsDispatcherTrait,}; +use s1_eternum::systems::config::contracts::config_systems; +use s1_eternum::systems::config::contracts::{IBankConfigDispatcher, IBankConfigDispatcherTrait,}; +use s1_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system, config::set_capacity_config}; use starknet::contract_address_const; diff --git a/contracts/game/src/systems/combat/contracts/battle_systems.cairo b/contracts/game/src/systems/combat/contracts/battle_systems.cairo index 581bb65d7b..639aeaa994 100644 --- a/contracts/game/src/systems/combat/contracts/battle_systems.cairo +++ b/contracts/game/src/systems/combat/contracts/battle_systems.cairo @@ -3,20 +3,20 @@ use dojo::event::EventStorage; use dojo::model::ModelStorage; use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; -use s0_eternum::alias::ID; -use s0_eternum::models::config::{TroopConfig, TroopConfigImpl, TroopConfigTrait}; +use s1_eternum::alias::ID; +use s1_eternum::models::config::{TroopConfig, TroopConfigImpl, TroopConfigTrait}; -use s0_eternum::models::movable::{Movable, MovableTrait}; -use s0_eternum::models::quantity::{Quantity}; -use s0_eternum::models::{ +use s1_eternum::models::movable::{Movable, MovableTrait}; +use s1_eternum::models::quantity::{Quantity}; +use s1_eternum::models::{ combat::{ Army, ArmyTrait, TroopsImpl, TroopsTrait, Health, HealthImpl, HealthTrait, BattleImpl, BattleTrait, Protector, Protectee, ProtecteeTrait, BattleHealthTrait, BattleEscrowImpl, }, }; -use s0_eternum::models::{combat::{Troops, Battle, BattleSide}}; -use s0_eternum::utils::tasks::index::{Task, TaskTrait}; +use s1_eternum::models::{combat::{Troops, Battle, BattleSide}}; +use s1_eternum::utils::tasks::index::{Task, TaskTrait}; #[starknet::interface] trait IBattleContract { @@ -308,50 +308,52 @@ mod battle_systems { use dojo::model::ModelStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait, WorldStorage, WorldStorageTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::{ + use s1_eternum::alias::ID; + use s1_eternum::constants::{ ResourceTypes, ErrorMessages, get_resources_without_earthenshards, get_resources_without_earthenshards_probs }; - use s0_eternum::constants::{MAX_PILLAGE_TRIAL_COUNT, RESOURCE_PRECISION, DEFAULT_NS}; - use s0_eternum::models::buildings::{Building, BuildingImpl, BuildingCategory, BuildingQuantityv2,}; - use s0_eternum::models::combat::{BattleEscrowTrait, ProtectorTrait}; - use s0_eternum::models::config::{ + use s1_eternum::constants::{MAX_PILLAGE_TRIAL_COUNT, RESOURCE_PRECISION, DEFAULT_NS}; + use s1_eternum::models::combat::{BattleEscrowTrait, ProtectorTrait}; + use s1_eternum::models::config::{ TickConfig, TickImpl, TickTrait, SpeedConfig, TroopConfig, TroopConfigImpl, TroopConfigTrait, BattleConfig, BattleConfigImpl, BattleConfigTrait, CapacityConfig, CapacityConfigImpl, CapacityConfigCategory, VRFConfigImpl }; - use s0_eternum::models::config::{WeightConfig, WeightConfigImpl}; - use s0_eternum::models::event::{ + use s1_eternum::models::config::{WeightConfig, WeightConfigImpl}; + use s1_eternum::models::event::{ EventType, EventData, BattleStartData, BattleJoinData, BattleLeaveData, BattleClaimData, BattlePillageData }; - use s0_eternum::models::movable::{Movable, MovableTrait}; - use s0_eternum::models::name::{AddressName}; - use s0_eternum::models::owner::{EntityOwner, EntityOwnerImpl, EntityOwnerTrait, Owner, OwnerTrait}; - use s0_eternum::models::position::CoordTrait; - use s0_eternum::models::position::{Position, Coord, PositionTrait, Direction}; - use s0_eternum::models::quantity::{Quantity, QuantityTracker}; - use s0_eternum::models::realm::Realm; - use s0_eternum::models::resources::{Resource, ResourceImpl, ResourceCost}; - use s0_eternum::models::resources::{ResourceTransferLock, ResourceTransferLockTrait}; - - use s0_eternum::models::season::SeasonImpl; - use s0_eternum::models::stamina::{Stamina, StaminaTrait}; - use s0_eternum::models::structure::{Structure, StructureTrait, StructureCategory}; - use s0_eternum::models::weight::Weight; - - use s0_eternum::models::{ + use s1_eternum::models::movable::{Movable, MovableTrait}; + use s1_eternum::models::name::{AddressName}; + use s1_eternum::models::owner::{EntityOwner, EntityOwnerImpl, EntityOwnerTrait, Owner, OwnerTrait}; + use s1_eternum::models::position::CoordTrait; + use s1_eternum::models::position::{Position, Coord, PositionTrait, Direction}; + use s1_eternum::models::quantity::{Quantity, QuantityTracker}; + use s1_eternum::models::realm::Realm; + use s1_eternum::models::resource::production::building::{ + Building, BuildingImpl, BuildingCategory, BuildingQuantityv2, + }; + use s1_eternum::models::resource::resource::{Resource, ResourceImpl, ResourceCost}; + use s1_eternum::models::resource::resource::{ResourceTransferLock, ResourceTransferLockTrait}; + + use s1_eternum::models::season::SeasonImpl; + use s1_eternum::models::stamina::{Stamina, StaminaTrait}; + use s1_eternum::models::structure::{Structure, StructureTrait, StructureCategory}; + use s1_eternum::models::weight::Weight; + + use s1_eternum::models::{ combat::{ Army, ArmyTrait, Troops, TroopsImpl, TroopsTrait, Health, HealthImpl, HealthTrait, Battle, BattleImpl, BattleTrait, BattleSide, Protector, Protectee, ProtecteeTrait, BattleHealthTrait, BattleEscrowImpl, AttackingArmyQuantityTrackerTrait, AttackingArmyQuantityTrackerImpl, BattleStructureImpl }, }; - use s0_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; + use s1_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; - use s0_eternum::utils::math::{PercentageValueImpl, PercentageImpl}; - use s0_eternum::utils::math::{min, max}; - use s0_eternum::utils::random; - use s0_eternum::utils::tasks::index::{Task, TaskTrait}; + use s1_eternum::utils::math::{PercentageValueImpl, PercentageImpl}; + use s1_eternum::utils::math::{min, max}; + use s1_eternum::utils::random; + use s1_eternum::utils::tasks::index::{Task, TaskTrait}; use super::{IBattleContract, IBattleUtilsContractDispatcher, IBattleUtilsContractDispatcherTrait}; @@ -809,50 +811,52 @@ mod battle_pillage_systems { use dojo::event::EventStorage; use dojo::model::ModelStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait, WorldStorage, WorldStorageTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::{ + use s1_eternum::alias::ID; + use s1_eternum::constants::{ ResourceTypes, ErrorMessages, get_resources_without_earthenshards, get_resources_without_earthenshards_probs }; - use s0_eternum::constants::{MAX_PILLAGE_TRIAL_COUNT, RESOURCE_PRECISION, DEFAULT_NS}; - use s0_eternum::models::buildings::{Building, BuildingImpl, BuildingCategory, BuildingQuantityv2,}; - use s0_eternum::models::combat::{BattleEscrowTrait, ProtectorTrait}; - use s0_eternum::models::config::{ + use s1_eternum::constants::{MAX_PILLAGE_TRIAL_COUNT, RESOURCE_PRECISION, DEFAULT_NS}; + use s1_eternum::models::combat::{BattleEscrowTrait, ProtectorTrait}; + use s1_eternum::models::config::{ TickConfig, TickImpl, TickTrait, SpeedConfig, TroopConfig, TroopConfigImpl, TroopConfigTrait, BattleConfig, BattleConfigImpl, BattleConfigTrait, CapacityConfig, CapacityConfigImpl, CapacityConfigCategory, VRFConfigImpl }; - use s0_eternum::models::config::{WeightConfig, WeightConfigImpl}; - use s0_eternum::models::event::{ + use s1_eternum::models::config::{WeightConfig, WeightConfigImpl}; + use s1_eternum::models::event::{ EventType, EventData, BattleStartData, BattleJoinData, BattleLeaveData, BattleClaimData, BattlePillageData }; - use s0_eternum::models::movable::{Movable, MovableTrait}; - use s0_eternum::models::name::{AddressName}; - use s0_eternum::models::owner::{EntityOwner, EntityOwnerImpl, EntityOwnerTrait, Owner, OwnerTrait}; - use s0_eternum::models::position::CoordTrait; - use s0_eternum::models::position::{Position, Coord, PositionTrait, Direction}; - use s0_eternum::models::quantity::{Quantity, QuantityTracker}; - use s0_eternum::models::realm::Realm; - use s0_eternum::models::resources::{Resource, ResourceImpl, ResourceCost}; - use s0_eternum::models::resources::{ResourceTransferLock, ResourceTransferLockTrait}; - - use s0_eternum::models::season::SeasonImpl; - use s0_eternum::models::stamina::{Stamina, StaminaTrait}; - use s0_eternum::models::structure::{Structure, StructureTrait, StructureCategory}; - use s0_eternum::models::weight::Weight; - - use s0_eternum::models::{ + use s1_eternum::models::movable::{Movable, MovableTrait}; + use s1_eternum::models::name::{AddressName}; + use s1_eternum::models::owner::{EntityOwner, EntityOwnerImpl, EntityOwnerTrait, Owner, OwnerTrait}; + use s1_eternum::models::position::CoordTrait; + use s1_eternum::models::position::{Position, Coord, PositionTrait, Direction}; + use s1_eternum::models::quantity::{Quantity, QuantityTracker}; + use s1_eternum::models::realm::Realm; + use s1_eternum::models::resource::production::building::{ + Building, BuildingImpl, BuildingCategory, BuildingQuantityv2, + }; + use s1_eternum::models::resource::resource::{Resource, ResourceImpl, ResourceCost}; + use s1_eternum::models::resource::resource::{ResourceTransferLock, ResourceTransferLockTrait}; + + use s1_eternum::models::season::SeasonImpl; + use s1_eternum::models::stamina::{Stamina, StaminaTrait}; + use s1_eternum::models::structure::{Structure, StructureTrait, StructureCategory}; + use s1_eternum::models::weight::Weight; + + use s1_eternum::models::{ combat::{ Army, ArmyTrait, Troops, TroopsImpl, TroopsTrait, Health, HealthImpl, HealthTrait, Battle, BattleImpl, BattleTrait, BattleSide, Protector, Protectee, ProtecteeTrait, BattleHealthTrait, BattleEscrowImpl, AttackingArmyQuantityTrackerTrait, AttackingArmyQuantityTrackerImpl, }, }; - use s0_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; + use s1_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; - use s0_eternum::utils::math::{PercentageValueImpl, PercentageImpl}; - use s0_eternum::utils::math::{min, max}; - use s0_eternum::utils::random::{VRFImpl}; - use s0_eternum::utils::random; + use s1_eternum::utils::math::{PercentageValueImpl, PercentageImpl}; + use s1_eternum::utils::math::{min, max}; + use s1_eternum::utils::random::{VRFImpl}; + use s1_eternum::utils::random; use starknet::ContractAddress; use super::{IBattlePillageContract, IBattleUtilsContractDispatcher, IBattleUtilsContractDispatcherTrait}; @@ -1229,50 +1233,52 @@ mod battle_utils_systems { use dojo::event::EventStorage; use dojo::model::ModelStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait, WorldStorage, WorldStorageTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::{ + use s1_eternum::alias::ID; + use s1_eternum::constants::{ ResourceTypes, ErrorMessages, get_resources_without_earthenshards, get_resources_without_earthenshards_probs }; - use s0_eternum::constants::{MAX_PILLAGE_TRIAL_COUNT, RESOURCE_PRECISION, DEFAULT_NS}; - use s0_eternum::models::buildings::{Building, BuildingImpl, BuildingCategory, BuildingQuantityv2,}; - use s0_eternum::models::combat::{BattleEscrowTrait, ProtectorTrait}; - use s0_eternum::models::config::{ + use s1_eternum::constants::{MAX_PILLAGE_TRIAL_COUNT, RESOURCE_PRECISION, DEFAULT_NS}; + use s1_eternum::models::combat::{BattleEscrowTrait, ProtectorTrait}; + use s1_eternum::models::config::{ TickConfig, TickImpl, TickTrait, SpeedConfig, TroopConfig, TroopConfigImpl, TroopConfigTrait, BattleConfig, BattleConfigImpl, BattleConfigTrait, CapacityConfig, CapacityConfigImpl, CapacityConfigCategory }; - use s0_eternum::models::config::{WeightConfig, WeightConfigImpl}; - use s0_eternum::models::event::{ + use s1_eternum::models::config::{WeightConfig, WeightConfigImpl}; + use s1_eternum::models::event::{ EventType, EventData, BattleStartData, BattleJoinData, BattleLeaveData, BattleClaimData, BattlePillageData }; - use s0_eternum::models::movable::{Movable, MovableTrait}; - use s0_eternum::models::name::{AddressName}; - use s0_eternum::models::owner::{EntityOwner, EntityOwnerImpl, EntityOwnerTrait, Owner, OwnerTrait}; - use s0_eternum::models::position::CoordTrait; - use s0_eternum::models::position::{Position, Coord, PositionTrait, Direction}; - use s0_eternum::models::quantity::{Quantity, QuantityTracker}; - use s0_eternum::models::realm::Realm; - use s0_eternum::models::resources::{Resource, ResourceImpl, ResourceCost}; - use s0_eternum::models::resources::{ResourceTransferLock, ResourceTransferLockTrait}; - - use s0_eternum::models::season::SeasonImpl; - use s0_eternum::models::stamina::{Stamina, StaminaTrait}; - use s0_eternum::models::structure::{Structure, StructureTrait, StructureCategory}; - use s0_eternum::models::weight::Weight; - - use s0_eternum::models::{ + use s1_eternum::models::movable::{Movable, MovableTrait}; + use s1_eternum::models::name::{AddressName}; + use s1_eternum::models::owner::{EntityOwner, EntityOwnerImpl, EntityOwnerTrait, Owner, OwnerTrait}; + use s1_eternum::models::position::CoordTrait; + use s1_eternum::models::position::{Position, Coord, PositionTrait, Direction}; + use s1_eternum::models::quantity::{Quantity, QuantityTracker}; + use s1_eternum::models::realm::Realm; + use s1_eternum::models::resource::production::building::{ + Building, BuildingImpl, BuildingCategory, BuildingQuantityv2, + }; + use s1_eternum::models::resource::resource::{Resource, ResourceImpl, ResourceCost}; + use s1_eternum::models::resource::resource::{ResourceTransferLock, ResourceTransferLockTrait}; + + use s1_eternum::models::season::SeasonImpl; + use s1_eternum::models::stamina::{Stamina, StaminaTrait}; + use s1_eternum::models::structure::{Structure, StructureTrait, StructureCategory}; + use s1_eternum::models::weight::Weight; + + use s1_eternum::models::{ combat::{ Army, ArmyTrait, Troops, TroopsImpl, TroopsTrait, Health, HealthImpl, HealthTrait, Battle, BattleImpl, BattleTrait, BattleSide, Protector, Protectee, ProtecteeTrait, BattleHealthTrait, BattleEscrowImpl, AttackingArmyQuantityTrackerTrait, AttackingArmyQuantityTrackerImpl, }, }; - use s0_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; + use s1_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; - use s0_eternum::utils::math::{PercentageValueImpl, PercentageImpl}; - use s0_eternum::utils::math::{min, max}; - use s0_eternum::utils::random; - use s0_eternum::utils::tasks::index::{Task, TaskTrait}; + use s1_eternum::utils::math::{PercentageValueImpl, PercentageImpl}; + use s1_eternum::utils::math::{min, max}; + use s1_eternum::utils::random; + use s1_eternum::utils::tasks::index::{Task, TaskTrait}; use super::{IBattlePillageContract}; diff --git a/contracts/game/src/systems/combat/contracts/troop_systems.cairo b/contracts/game/src/systems/combat/contracts/troop_systems.cairo index e6f599dd76..778076632b 100644 --- a/contracts/game/src/systems/combat/contracts/troop_systems.cairo +++ b/contracts/game/src/systems/combat/contracts/troop_systems.cairo @@ -1,5 +1,5 @@ -use s0_eternum::alias::ID; -use s0_eternum::models::{combat::{Troops, Battle, BattleSide}}; +use s1_eternum::alias::ID; +use s1_eternum::models::{combat::{Troops, Battle, BattleSide}}; #[starknet::interface] trait ITroopContract { @@ -121,39 +121,39 @@ mod troop_systems { use dojo::event::EventStorage; use dojo::model::ModelStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait, WorldStorage, WorldStorageTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::{ResourceTypes}; - use s0_eternum::constants::{WORLD_CONFIG_ID, ARMY_ENTITY_TYPE, DEFAULT_NS}; - use s0_eternum::models::buildings::{BuildingCategory, BuildingQuantityv2,}; - use s0_eternum::models::capacity::{CapacityCategory}; - use s0_eternum::models::combat::{ProtectorTrait}; - use s0_eternum::models::config::{ + use s1_eternum::alias::ID; + use s1_eternum::constants::{ResourceTypes}; + use s1_eternum::constants::{WORLD_CONFIG_ID, ARMY_ENTITY_TYPE, DEFAULT_NS}; + use s1_eternum::models::capacity::{CapacityCategory}; + use s1_eternum::models::combat::{ProtectorTrait}; + use s1_eternum::models::config::{ TickConfig, TickImpl, TickTrait, SpeedConfig, TroopConfig, TroopConfigImpl, TroopConfigTrait, BattleConfigTrait, CapacityConfig, CapacityConfigImpl, CapacityConfigCategory, StaminaRefillConfig }; - use s0_eternum::models::movable::{Movable, MovableTrait}; - - use s0_eternum::models::owner::{EntityOwner, EntityOwnerImpl, EntityOwnerTrait, Owner, OwnerTrait}; - use s0_eternum::models::position::CoordTrait; - use s0_eternum::models::position::{Position, Coord, PositionTrait, Direction}; - use s0_eternum::models::quantity::{Quantity, QuantityTracker}; - use s0_eternum::models::realm::Realm; - use s0_eternum::models::resources::{ResourceImpl, ResourceCost}; - use s0_eternum::models::resources::{ResourceTransferLock, ResourceTransferLockTrait}; - - use s0_eternum::models::season::SeasonImpl; - use s0_eternum::models::stamina::{Stamina, StaminaTrait}; - use s0_eternum::models::structure::{Structure, StructureTrait, StructureCategory}; - use s0_eternum::models::weight::Weight; - - use s0_eternum::models::{ + use s1_eternum::models::movable::{Movable, MovableTrait}; + + use s1_eternum::models::owner::{EntityOwner, EntityOwnerImpl, EntityOwnerTrait, Owner, OwnerTrait}; + use s1_eternum::models::position::CoordTrait; + use s1_eternum::models::position::{Position, Coord, PositionTrait, Direction}; + use s1_eternum::models::quantity::{Quantity, QuantityTracker}; + use s1_eternum::models::realm::Realm; + use s1_eternum::models::resource::production::building::{BuildingCategory, BuildingQuantityv2,}; + use s1_eternum::models::resource::resource::{ResourceImpl, ResourceCost}; + use s1_eternum::models::resource::resource::{ResourceTransferLock, ResourceTransferLockTrait}; + + use s1_eternum::models::season::SeasonImpl; + use s1_eternum::models::stamina::{Stamina, StaminaTrait}; + use s1_eternum::models::structure::{Structure, StructureTrait, StructureCategory}; + use s1_eternum::models::weight::Weight; + + use s1_eternum::models::{ combat::{ Army, ArmyTrait, Troops, TroopsImpl, TroopsTrait, Health, HealthImpl, HealthTrait, Battle, BattleImpl, BattleTrait, Protector, Protectee, ProtecteeTrait, BattleHealthTrait, AttackingArmyQuantityTrackerTrait, AttackingArmyQuantityTrackerImpl, }, }; - use s0_eternum::systems::combat::contracts::battle_systems::{ + use s1_eternum::systems::combat::contracts::battle_systems::{ IBattleUtilsContract, IBattleUtilsContractDispatcher, IBattleUtilsContractDispatcherTrait }; diff --git a/contracts/game/src/systems/combat/tests/army_buy_test.cairo b/contracts/game/src/systems/combat/tests/army_buy_test.cairo index 9ef128b2f3..b126e647fe 100644 --- a/contracts/game/src/systems/combat/tests/army_buy_test.cairo +++ b/contracts/game/src/systems/combat/tests/army_buy_test.cairo @@ -4,22 +4,22 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::{WORLD_CONFIG_ID, ARMY_ENTITY_TYPE, TickIds}; -use s0_eternum::models::combat::{Army, Troops, BattleSide, Protectee, Protector}; -use s0_eternum::models::config::{TroopConfig, TickConfig, CapacityConfig, CapacityConfigCategory, SettlementConfig}; -use s0_eternum::models::movable::{Movable}; -use s0_eternum::models::owner::{Owner, EntityOwner}; -use s0_eternum::models::position::{Coord, Position}; - -use s0_eternum::models::resources::{Resource, ResourceImpl, ResourceTrait, ResourceTypes, RESOURCE_PRECISION}; -use s0_eternum::models::stamina::Stamina; -use s0_eternum::systems::config::contracts::config_systems; -use s0_eternum::systems::{ +use s1_eternum::alias::ID; +use s1_eternum::constants::{WORLD_CONFIG_ID, ARMY_ENTITY_TYPE, TickIds}; +use s1_eternum::models::combat::{Army, Troops, BattleSide, Protectee, Protector}; +use s1_eternum::models::config::{TroopConfig, TickConfig, CapacityConfig, CapacityConfigCategory, SettlementConfig}; +use s1_eternum::models::movable::{Movable}; +use s1_eternum::models::owner::{Owner, EntityOwner}; +use s1_eternum::models::position::{Coord, Position}; + +use s1_eternum::models::resource::resource::{Resource, ResourceImpl, ResourceTrait, ResourceTypes, RESOURCE_PRECISION}; +use s1_eternum::models::stamina::Stamina; +use s1_eternum::systems::config::contracts::config_systems; +use s1_eternum::systems::{ realm::contracts::{realm_systems, IRealmSystemsDispatcher, IRealmSystemsDispatcherTrait}, combat::contracts::troop_systems::{troop_systems, ITroopContractDispatcher, ITroopContractDispatcherTrait}, }; -use s0_eternum::utils::testing::{ +use s1_eternum::utils::testing::{ config::{get_combat_config, set_capacity_config, set_settlement_config}, world::spawn_eternum, systems::{deploy_realm_systems, deploy_troop_systems, deploy_system}, general::{mint, get_default_realm_pos, spawn_realm} diff --git a/contracts/game/src/systems/combat/tests/army_create_test.cairo b/contracts/game/src/systems/combat/tests/army_create_test.cairo index a344e5807d..235084a3c5 100644 --- a/contracts/game/src/systems/combat/tests/army_create_test.cairo +++ b/contracts/game/src/systems/combat/tests/army_create_test.cairo @@ -5,22 +5,22 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::{WORLD_CONFIG_ID, ARMY_ENTITY_TYPE, TickIds}; -use s0_eternum::models::combat::{Army, Troops, BattleSide, Protectee, Protector}; -use s0_eternum::models::config::{TroopConfig, TickConfig, CapacityConfig, CapacityConfigCategory, SettlementConfig}; -use s0_eternum::models::movable::{Movable}; -use s0_eternum::models::owner::{Owner, EntityOwner}; -use s0_eternum::models::position::{Coord, Position}; - -use s0_eternum::models::resources::{Resource, ResourceImpl, ResourceTrait, ResourceTypes, RESOURCE_PRECISION}; -use s0_eternum::models::stamina::Stamina; -use s0_eternum::systems::config::contracts::config_systems; -use s0_eternum::systems::{ +use s1_eternum::alias::ID; +use s1_eternum::constants::{WORLD_CONFIG_ID, ARMY_ENTITY_TYPE, TickIds}; +use s1_eternum::models::combat::{Army, Troops, BattleSide, Protectee, Protector}; +use s1_eternum::models::config::{TroopConfig, TickConfig, CapacityConfig, CapacityConfigCategory, SettlementConfig}; +use s1_eternum::models::movable::{Movable}; +use s1_eternum::models::owner::{Owner, EntityOwner}; +use s1_eternum::models::position::{Coord, Position}; + +use s1_eternum::models::resource::resource::{Resource, ResourceImpl, ResourceTrait, ResourceTypes, RESOURCE_PRECISION}; +use s1_eternum::models::stamina::Stamina; +use s1_eternum::systems::config::contracts::config_systems; +use s1_eternum::systems::{ realm::contracts::{realm_systems, IRealmSystemsDispatcher, IRealmSystemsDispatcherTrait}, combat::contracts::troop_systems::{troop_systems, ITroopContractDispatcher, ITroopContractDispatcherTrait}, }; -use s0_eternum::utils::testing::{ +use s1_eternum::utils::testing::{ config::{get_combat_config, set_settlement_config}, world::spawn_eternum, systems::deploy_realm_systems, systems::{deploy_troop_systems, deploy_system}, general::{mint, get_default_realm_pos, spawn_realm} }; diff --git a/contracts/game/src/systems/combat/tests/battle_leave_test.cairo b/contracts/game/src/systems/combat/tests/battle_leave_test.cairo index 24ba1515bb..b8fe03455b 100644 --- a/contracts/game/src/systems/combat/tests/battle_leave_test.cairo +++ b/contracts/game/src/systems/combat/tests/battle_leave_test.cairo @@ -4,25 +4,25 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::{WORLD_CONFIG_ID, ARMY_ENTITY_TYPE, TickIds}; -use s0_eternum::models::combat::{Army, Troops, TroopsTrait, BattleSide, Protectee, Protector, Battle}; -use s0_eternum::models::config::{ +use s1_eternum::alias::ID; +use s1_eternum::constants::{WORLD_CONFIG_ID, ARMY_ENTITY_TYPE, TickIds}; +use s1_eternum::models::combat::{Army, Troops, TroopsTrait, BattleSide, Protectee, Protector, Battle}; +use s1_eternum::models::config::{ TroopConfig, TickConfig, CapacityConfig, CapacityConfigCategory, SpeedConfig, SettlementConfig }; -use s0_eternum::models::movable::{Movable}; -use s0_eternum::models::owner::{Owner, EntityOwner}; -use s0_eternum::models::position::{Coord, Position}; - -use s0_eternum::models::resources::{Resource, ResourceImpl, ResourceTrait, ResourceTypes, RESOURCE_PRECISION}; -use s0_eternum::models::stamina::Stamina; -use s0_eternum::systems::config::contracts::config_systems; -use s0_eternum::systems::{ +use s1_eternum::models::movable::{Movable}; +use s1_eternum::models::owner::{Owner, EntityOwner}; +use s1_eternum::models::position::{Coord, Position}; + +use s1_eternum::models::resource::resource::{Resource, ResourceImpl, ResourceTrait, ResourceTypes, RESOURCE_PRECISION}; +use s1_eternum::models::stamina::Stamina; +use s1_eternum::systems::config::contracts::config_systems; +use s1_eternum::systems::{ realm::contracts::{realm_systems, IRealmSystemsDispatcher, IRealmSystemsDispatcherTrait}, combat::contracts::battle_systems::{battle_systems, IBattleContractDispatcher, IBattleContractDispatcherTrait}, combat::contracts::troop_systems::{troop_systems, ITroopContractDispatcher, ITroopContractDispatcherTrait}, }; -use s0_eternum::utils::testing::{ +use s1_eternum::utils::testing::{ config::{get_combat_config, set_capacity_config, set_settlement_config}, world::spawn_eternum, systems::{deploy_realm_systems, deploy_system, deploy_battle_systems, deploy_troop_systems}, general::{mint, spawn_realm} diff --git a/contracts/game/src/systems/combat/tests/battle_pillage_test.cairo b/contracts/game/src/systems/combat/tests/battle_pillage_test.cairo index f5f602eaeb..35a1194174 100644 --- a/contracts/game/src/systems/combat/tests/battle_pillage_test.cairo +++ b/contracts/game/src/systems/combat/tests/battle_pillage_test.cairo @@ -5,11 +5,11 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::{ +use s1_eternum::{ alias::ID, models::{ - position::{Coord, Position}, weight::Weight, resources::{ResourceTypes, RESOURCE_PRECISION}, combat::{Troops}, - quantity::Quantity, config::CapacityConfig + position::{Coord, Position}, weight::Weight, resource::resource::{ResourceTypes, RESOURCE_PRECISION}, + combat::{Troops}, quantity::Quantity, config::CapacityConfig }, systems::{ config::contracts::config_systems, diff --git a/contracts/game/src/systems/combat/tests/battle_start_test.cairo b/contracts/game/src/systems/combat/tests/battle_start_test.cairo index 7c162fa262..a13a775292 100644 --- a/contracts/game/src/systems/combat/tests/battle_start_test.cairo +++ b/contracts/game/src/systems/combat/tests/battle_start_test.cairo @@ -4,30 +4,30 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::{WORLD_CONFIG_ID, ARMY_ENTITY_TYPE, TickIds}; -use s0_eternum::models::combat::{ +use s1_eternum::alias::ID; +use s1_eternum::constants::{WORLD_CONFIG_ID, ARMY_ENTITY_TYPE, TickIds}; +use s1_eternum::models::combat::{ Army, Health, HealthTrait, Troops, TroopsTrait, BattleSide, Protectee, Protector, Battle }; -use s0_eternum::models::config::{ +use s1_eternum::models::config::{ TroopConfig, TickConfig, CapacityConfig, CapacityConfigCategory, SpeedConfig, SettlementConfig }; -use s0_eternum::models::movable::{Movable}; -use s0_eternum::models::owner::{Owner, EntityOwner}; -use s0_eternum::models::position::{Coord, Position}; +use s1_eternum::models::movable::{Movable}; +use s1_eternum::models::owner::{Owner, EntityOwner}; +use s1_eternum::models::position::{Coord, Position}; -use s0_eternum::models::resources::{ +use s1_eternum::models::resource::resource::{ Resource, ResourceImpl, ResourceTrait, ResourceTypes, ResourceTransferLock, ResourceTransferLockTrait, RESOURCE_PRECISION }; -use s0_eternum::models::stamina::Stamina; -use s0_eternum::systems::config::contracts::config_systems; -use s0_eternum::systems::{ +use s1_eternum::models::stamina::Stamina; +use s1_eternum::systems::config::contracts::config_systems; +use s1_eternum::systems::{ realm::contracts::{realm_systems, IRealmSystemsDispatcher, IRealmSystemsDispatcherTrait}, combat::contracts::battle_systems::{battle_systems, IBattleContractDispatcher, IBattleContractDispatcherTrait}, combat::contracts::troop_systems::{troop_systems, ITroopContractDispatcher, ITroopContractDispatcherTrait}, }; -use s0_eternum::utils::testing::{ +use s1_eternum::utils::testing::{ config::{get_combat_config, set_capacity_config, set_settlement_config}, world::spawn_eternum, systems::{deploy_realm_systems, deploy_system, deploy_battle_systems, deploy_troop_systems}, general::{mint, teleport, spawn_realm} diff --git a/contracts/game/src/systems/config/contracts.cairo b/contracts/game/src/systems/config/contracts.cairo index 9d41b3237b..8835478922 100644 --- a/contracts/game/src/systems/config/contracts.cairo +++ b/contracts/game/src/systems/config/contracts.cairo @@ -1,12 +1,12 @@ use dojo::world::IWorldDispatcher; -use s0_eternum::alias::ID; -use s0_eternum::models::buildings::BuildingCategory; -use s0_eternum::models::combat::{Troops}; -use s0_eternum::models::config::{ +use s1_eternum::alias::ID; +use s1_eternum::models::combat::{Troops}; +use s1_eternum::models::config::{ TroopConfig, MapConfig, BattleConfig, MercenariesConfig, CapacityConfig, ResourceBridgeConfig, ResourceBridgeFeeSplitConfig, ResourceBridgeWhitelistConfig, TravelFoodCostConfig, SeasonAddressesConfig }; -use s0_eternum::models::position::Coord; +use s1_eternum::models::position::Coord; +use s1_eternum::models::resource::production::building::BuildingCategory; #[starknet::interface] trait IWorldConfig { @@ -38,7 +38,6 @@ trait IVRFConfig { #[starknet::interface] trait IQuestConfig { - fn set_quest_config(ref self: T, production_material_multiplier: u16); fn set_quest_reward_config(ref self: T, quest_id: ID, resources: Span<(u8, u128)>); } @@ -132,7 +131,12 @@ trait IMapConfig { #[starknet::interface] trait IProductionConfig { - fn set_production_config(ref self: T, resource_type: u8, amount: u128, cost: Span<(u8, u128)>); + fn set_production_config(ref self: T, resource_type: u8, produced_amount: u128, labor_amount: u128); +} + +#[starknet::interface] +trait ILaborConfig { + fn set_labor_config(ref self: T, resource_type: u8, cost: Span<(u8, u128)>); } #[starknet::interface] @@ -213,31 +217,30 @@ mod config_systems { use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::alias::ID; + use s1_eternum::alias::ID; - use s0_eternum::constants::{ + use s1_eternum::constants::{ ResourceTypes, WORLD_CONFIG_ID, TRANSPORT_CONFIG_ID, COMBAT_CONFIG_ID, REALM_LEVELING_CONFIG_ID, HYPERSTRUCTURE_CONFIG_ID, REALM_FREE_MINT_CONFIG_ID, BUILDING_CONFIG_ID, BUILDING_CATEGORY_POPULATION_CONFIG_ID, POPULATION_CONFIG_ID, DEFAULT_NS }; - use s0_eternum::models::bank::bank::{Bank}; - use s0_eternum::models::buildings::{BuildingCategory}; - use s0_eternum::models::combat::{Troops}; + use s1_eternum::models::bank::bank::{Bank}; + use s1_eternum::models::combat::{Troops}; - use s0_eternum::models::config::{ - CapacityConfig, SpeedConfig, WeightConfig, WorldConfig, LevelingConfig, QuestConfig, QuestRewardConfig, + use s1_eternum::models::config::{ + CapacityConfig, SpeedConfig, WeightConfig, WorldConfig, LevelingConfig, QuestRewardConfig, MapConfig, TickConfig, ProductionConfig, BankConfig, TroopConfig, BuildingConfig, BuildingCategoryPopConfig, PopulationConfig, HyperstructureResourceConfig, HyperstructureConfig, StaminaConfig, StaminaRefillConfig, ResourceBridgeConfig, ResourceBridgeFeeSplitConfig, ResourceBridgeWhitelistConfig, BuildingGeneralConfig, MercenariesConfig, BattleConfig, TravelStaminaCostConfig, SettlementConfig, RealmLevelConfig, - RealmMaxLevelConfig, TravelFoodCostConfig, SeasonAddressesConfig, VRFConfig, SeasonBridgeConfig + RealmMaxLevelConfig, TravelFoodCostConfig, SeasonAddressesConfig, VRFConfig, SeasonBridgeConfig, LaborConfig }; - use s0_eternum::models::position::{Position, PositionTrait, Coord}; - use s0_eternum::models::production::{ProductionInput, ProductionOutput}; - use s0_eternum::models::resources::{ResourceCost, DetachedResource}; - use s0_eternum::models::season::{Season}; - use s0_eternum::utils::trophies::index::{Trophy, TrophyTrait, TROPHY_COUNT}; + use s1_eternum::models::position::{Position, PositionTrait, Coord}; + use s1_eternum::models::resource::production::building::{BuildingCategory}; + use s1_eternum::models::resource::resource::{ResourceCost, DetachedResource}; + use s1_eternum::models::season::{Season}; + use s1_eternum::utils::trophies::index::{Trophy, TrophyTrait, TROPHY_COUNT}; // Components @@ -361,12 +364,6 @@ mod config_systems { #[abi(embed_v0)] impl QuestConfigImpl of super::IQuestConfig { - fn set_quest_config(ref self: ContractState, production_material_multiplier: u16) { - let mut world: WorldStorage = self.world(DEFAULT_NS()); - assert_caller_is_admin(world); - - world.write_model(@QuestConfig { config_id: WORLD_CONFIG_ID, production_material_multiplier }); - } fn set_quest_reward_config(ref self: ContractState, quest_id: ID, resources: Span<(u8, u128)>) { let mut world: WorldStorage = self.world(DEFAULT_NS()); @@ -603,17 +600,60 @@ mod config_systems { #[abi(embed_v0)] impl ProductionConfigImpl of super::IProductionConfig { - fn set_production_config(ref self: ContractState, resource_type: u8, amount: u128, mut cost: Span<(u8, u128)>) { + fn set_production_config( + ref self: ContractState, resource_type: u8, produced_amount: u128, labor_amount: u128 + ) { let mut world: WorldStorage = self.world(DEFAULT_NS()); assert_caller_is_admin(world); let mut resource_production_config: ProductionConfig = world.read_model(resource_type); - resource_production_config.amount = amount; + resource_production_config.produced_amount = produced_amount; + resource_production_config.labor_cost = labor_amount; world.write_model(@resource_production_config); } } + #[abi(embed_v0)] + impl LaborConfigImpl of super::ILaborConfig { + fn set_labor_config(ref self: ContractState, resource_type: u8, cost: Span<(u8, u128)>) { + let mut world: WorldStorage = self.world(DEFAULT_NS()); + assert_caller_is_admin(world); + + let resource_cost_id = world.dispatcher.uuid(); + for i in 0 + ..cost + .len() { + let (resource_type, resource_amount) = *cost.at(i); + world + .write_model( + @ResourceCost { + entity_id: resource_cost_id, index: i, resource_type, amount: resource_amount + } + ); + }; + + world + .write_model( + @LaborConfig { + resource_type, input_id: resource_cost_id, input_count: cost.len().try_into().unwrap() + } + ); + } + } + + // #[derive(IntrospectPacked, Copy, Drop, Serde)] + // #[dojo::model] + // pub struct LaborConfig { + // #[key] + // // e.g when configuring stone labor, resource_type = stone + // resource_type: u8, + // // uuid used to get the ResourceCost + // input_id: ID, + // // number of resources required to make labor + // input_count: u8, + // } + #[abi(embed_v0)] impl TransportConfigImpl of super::ITransportConfig { fn set_speed_config(ref self: ContractState, entity_type: ID, sec_per_km: u16) { @@ -830,7 +870,7 @@ mod config_systems { assert_caller_is_admin(world); // note: if we are whitelisting a NEW resource type, we WILL need to - // update several functions related to resources in `s0_eternum::constants` + // update several functions related to resources in `s1_eternum::constants` // so the new resource type is recognized throughout the contract. assert!(resource_bridge_whitelist_config.resource_type > 0, "resource type should be non zero"); diff --git a/contracts/game/src/systems/config/tests/hyperstructure_config_tests.cairo b/contracts/game/src/systems/config/tests/hyperstructure_config_tests.cairo index 6daec295f4..36770feabe 100644 --- a/contracts/game/src/systems/config/tests/hyperstructure_config_tests.cairo +++ b/contracts/game/src/systems/config/tests/hyperstructure_config_tests.cairo @@ -5,18 +5,18 @@ use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::constants::ResourceTypes; -use s0_eternum::models::config::LevelingConfig; -use s0_eternum::models::position::{Position, Coord}; -use s0_eternum::models::resources::ResourceCost; -use s0_eternum::systems::config::contracts::config_systems; +use s1_eternum::constants::ResourceTypes; +use s1_eternum::models::config::LevelingConfig; +use s1_eternum::models::position::{Position, Coord}; +use s1_eternum::models::resource::resource::ResourceCost; +use s1_eternum::systems::config::contracts::config_systems; -use s0_eternum::systems::config::contracts::{ +use s1_eternum::systems::config::contracts::{ IHyperstructureConfigDispatcher, IHyperstructureConfigDispatcherTrait, ILevelingConfigDispatcher, ILevelingConfigDispatcherTrait, }; -use s0_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system}; +use s1_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system}; use starknet::contract_address::contract_address_const; diff --git a/contracts/game/src/systems/config/tests/settlement_config_tests.cairo b/contracts/game/src/systems/config/tests/settlement_config_tests.cairo index b4541c22fd..72cf15dccc 100644 --- a/contracts/game/src/systems/config/tests/settlement_config_tests.cairo +++ b/contracts/game/src/systems/config/tests/settlement_config_tests.cairo @@ -4,12 +4,12 @@ mod tests { use dojo::model::ModelStorage; use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::models::config::{SettlementConfig, SettlementConfigImpl}; - use s0_eternum::models::position::{Coord}; - use s0_eternum::models::structure::{StructureCount}; - use s0_eternum::systems::realm::contracts::realm_systems::InternalRealmLogicImpl; + use s1_eternum::models::config::{SettlementConfig, SettlementConfigImpl}; + use s1_eternum::models::position::{Coord}; + use s1_eternum::models::structure::{StructureCount}; + use s1_eternum::systems::realm::contracts::realm_systems::InternalRealmLogicImpl; - use s0_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system, config::set_settlement_config}; + use s1_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system, config::set_settlement_config}; #[test] fn config_test_get_next_settlement_coord() { diff --git a/contracts/game/src/systems/dev/contracts/bank.cairo b/contracts/game/src/systems/dev/contracts/bank.cairo index 07e5e2fc5b..c2998942ff 100644 --- a/contracts/game/src/systems/dev/contracts/bank.cairo +++ b/contracts/game/src/systems/dev/contracts/bank.cairo @@ -1,6 +1,6 @@ use dojo::world::IWorldDispatcher; -use s0_eternum::alias::ID; -use s0_eternum::models::position::{Coord}; +use s1_eternum::alias::ID; +use s1_eternum::models::position::{Coord}; #[starknet::interface] trait IBankSystems { @@ -21,20 +21,20 @@ mod dev_bank_systems { use dojo::model::ModelStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait, WorldStorage, WorldStorageTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::DEFAULT_NS; - use s0_eternum::constants::{WORLD_CONFIG_ID, ResourceTypes}; - use s0_eternum::models::bank::bank::{Bank}; - use s0_eternum::models::capacity::{CapacityCategory}; - use s0_eternum::models::config::{BankConfig, CapacityConfigCategory, MercenariesConfig}; - use s0_eternum::models::name::{EntityName}; - use s0_eternum::models::owner::{Owner, EntityOwner}; - use s0_eternum::models::position::{Position, Coord}; - use s0_eternum::models::resources::{Resource, ResourceImpl}; - use s0_eternum::models::structure::{Structure, StructureCategory, StructureCount, StructureCountTrait}; - use s0_eternum::systems::config::contracts::config_systems::{assert_caller_is_admin}; - use s0_eternum::systems::map::contracts::map_systems::InternalMapSystemsImpl; - use s0_eternum::systems::map::map_generation::{ + use s1_eternum::alias::ID; + use s1_eternum::constants::DEFAULT_NS; + use s1_eternum::constants::{WORLD_CONFIG_ID, ResourceTypes}; + use s1_eternum::models::bank::bank::{Bank}; + use s1_eternum::models::capacity::{CapacityCategory}; + use s1_eternum::models::config::{BankConfig, CapacityConfigCategory, MercenariesConfig}; + use s1_eternum::models::name::{EntityName}; + use s1_eternum::models::owner::{Owner, EntityOwner}; + use s1_eternum::models::position::{Position, Coord}; + use s1_eternum::models::resource::resource::{Resource, ResourceImpl}; + use s1_eternum::models::structure::{Structure, StructureCategory, StructureCount, StructureCountTrait}; + use s1_eternum::systems::config::contracts::config_systems::{assert_caller_is_admin}; + use s1_eternum::systems::map::contracts::map_systems::InternalMapSystemsImpl; + use s1_eternum::systems::map::map_generation::{ IMapGenerationSystemsDispatcher, IMapGenerationSystemsDispatcherTrait }; use traits::Into; diff --git a/contracts/game/src/systems/dev/contracts/realm.cairo b/contracts/game/src/systems/dev/contracts/realm.cairo index e4507052ab..3c19216cf5 100644 --- a/contracts/game/src/systems/dev/contracts/realm.cairo +++ b/contracts/game/src/systems/dev/contracts/realm.cairo @@ -1,5 +1,5 @@ use dojo::world::IWorldDispatcher; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; use starknet::ContractAddress; #[starknet::interface] @@ -35,11 +35,11 @@ mod dev_realm_systems { use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::DEFAULT_NS; - use s0_eternum::constants::WORLD_CONFIG_ID; - use s0_eternum::models::config::SeasonAddressesConfig; - use s0_eternum::systems::realm::contracts::{IRealmSystemsDispatcher, IRealmSystemsDispatcherTrait}; + use s1_eternum::alias::ID; + use s1_eternum::constants::DEFAULT_NS; + use s1_eternum::constants::WORLD_CONFIG_ID; + use s1_eternum::models::config::SeasonAddressesConfig; + use s1_eternum::systems::realm::contracts::{IRealmSystemsDispatcher, IRealmSystemsDispatcherTrait}; use starknet::ContractAddress; use super::{ ILordsMintDispatcher, ILordsMintDispatcherTrait, ISeasonPassMintDispatcher, ISeasonPassMintDispatcherTrait, @@ -67,7 +67,7 @@ mod dev_realm_systems { // approve realms systems contract to spend season passs let (realm_systems_address, _namespace_hash) = - match world.dispatcher.resource(selector_from_tag!("s0_eternum-realm_systems")) { + match world.dispatcher.resource(selector_from_tag!("s1_eternum-realm_systems")) { dojo::world::Resource::Contract(( contract_address, namespace_hash )) => (contract_address, namespace_hash), diff --git a/contracts/game/src/systems/dev/contracts/resource.cairo b/contracts/game/src/systems/dev/contracts/resource.cairo index 6945c19ead..b19a11cf71 100644 --- a/contracts/game/src/systems/dev/contracts/resource.cairo +++ b/contracts/game/src/systems/dev/contracts/resource.cairo @@ -1,5 +1,5 @@ use dojo::world::IWorldDispatcher; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; #[starknet::interface] trait IResourceSystems { @@ -13,13 +13,13 @@ mod dev_resource_systems { use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::DEFAULT_NS; - use s0_eternum::constants::ResourceTypes; - use s0_eternum::constants::{WORLD_CONFIG_ID}; - use s0_eternum::models::config::{WorldConfig}; - use s0_eternum::models::resources::{Resource, ResourceTrait, ResourceImpl}; - use s0_eternum::systems::config::contracts::config_systems::{assert_caller_is_admin}; + use s1_eternum::alias::ID; + use s1_eternum::constants::DEFAULT_NS; + use s1_eternum::constants::ResourceTypes; + use s1_eternum::constants::{WORLD_CONFIG_ID}; + use s1_eternum::models::config::{WorldConfig}; + use s1_eternum::models::resource::resource::{Resource, ResourceTrait, ResourceImpl}; + use s1_eternum::systems::config::contracts::config_systems::{assert_caller_is_admin}; #[abi(embed_v0)] diff --git a/contracts/game/src/systems/guild/contracts.cairo b/contracts/game/src/systems/guild/contracts.cairo index 6997a430af..533c4466e4 100644 --- a/contracts/game/src/systems/guild/contracts.cairo +++ b/contracts/game/src/systems/guild/contracts.cairo @@ -1,4 +1,4 @@ -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; use starknet::ContractAddress; #[starknet::interface] @@ -18,14 +18,14 @@ mod guild_systems { use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::DEFAULT_NS; - use s0_eternum::models::event::{CreateGuild, JoinGuild}; - use s0_eternum::models::guild::{Guild, GuildMember, GuildMemberTrait, GuildWhitelist, GuildWhitelistTrait}; - use s0_eternum::models::name::AddressName; - use s0_eternum::models::name::EntityName; - use s0_eternum::models::owner::{Owner, OwnerTrait, EntityOwner, EntityOwnerTrait}; - use s0_eternum::models::season::SeasonImpl; + use s1_eternum::alias::ID; + use s1_eternum::constants::DEFAULT_NS; + use s1_eternum::models::event::{CreateGuild, JoinGuild}; + use s1_eternum::models::guild::{Guild, GuildMember, GuildMemberTrait, GuildWhitelist, GuildWhitelistTrait}; + use s1_eternum::models::name::AddressName; + use s1_eternum::models::name::EntityName; + use s1_eternum::models::owner::{Owner, OwnerTrait, EntityOwner, EntityOwnerTrait}; + use s1_eternum::models::season::SeasonImpl; use starknet::ContractAddress; use starknet::contract_address::contract_address_const; diff --git a/contracts/game/src/systems/guild/tests.cairo b/contracts/game/src/systems/guild/tests.cairo index 92a25e22f1..dff933bbce 100644 --- a/contracts/game/src/systems/guild/tests.cairo +++ b/contracts/game/src/systems/guild/tests.cairo @@ -3,19 +3,19 @@ use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::models::guild::{Guild, GuildMember, GuildMemberTrait, GuildWhitelist, GuildWhitelistTrait}; -use s0_eternum::models::name::EntityName; -use s0_eternum::models::owner::Owner; -use s0_eternum::models::position::Position; +use s1_eternum::models::guild::{Guild, GuildMember, GuildMemberTrait, GuildWhitelist, GuildWhitelistTrait}; +use s1_eternum::models::name::EntityName; +use s1_eternum::models::owner::Owner; +use s1_eternum::models::position::Position; -use s0_eternum::systems::guild::contracts::{ +use s1_eternum::systems::guild::contracts::{ guild_systems, IGuildSystems, IGuildSystemsDispatcher, IGuildSystemsDispatcherTrait }; -use s0_eternum::systems::name::contracts::{ +use s1_eternum::systems::name::contracts::{ name_systems, INameSystems, INameSystemsDispatcher, INameSystemsDispatcherTrait }; -use s0_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system}; +use s1_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system}; use starknet::contract_address_const; diff --git a/contracts/game/src/systems/hyperstructure/contracts.cairo b/contracts/game/src/systems/hyperstructure/contracts.cairo index da3c357257..7c926a67cb 100644 --- a/contracts/game/src/systems/hyperstructure/contracts.cairo +++ b/contracts/game/src/systems/hyperstructure/contracts.cairo @@ -1,9 +1,9 @@ use dojo::model::ModelStorage; use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::get_resource_tier; -use s0_eternum::{ +use s1_eternum::alias::ID; +use s1_eternum::constants::get_resource_tier; +use s1_eternum::{ models::{ position::Coord, config::HyperstructureResourceConfigTrait, config::HyperstructureResourceConfig, hyperstructure::Access @@ -45,11 +45,11 @@ mod hyperstructure_systems { use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::constants::DEFAULT_NS; - use s0_eternum::models::season::{Season, SeasonImpl}; - use s0_eternum::utils::random::VRFImpl; - use s0_eternum::utils::tasks::index::{Task, TaskTrait}; - use s0_eternum::{ + use s1_eternum::constants::DEFAULT_NS; + use s1_eternum::models::season::{Season, SeasonImpl}; + use s1_eternum::utils::random::VRFImpl; + use s1_eternum::utils::tasks::index::{Task, TaskTrait}; + use s1_eternum::{ alias::ID, constants::{ WORLD_CONFIG_ID, HYPERSTRUCTURE_CONFIG_ID, ResourceTypes, get_hyperstructure_construction_resources, @@ -64,7 +64,7 @@ mod hyperstructure_systems { hyperstructure::{Progress, Contribution, Hyperstructure, HyperstructureImpl, Epoch, Access}, owner::{Owner, OwnerTrait, EntityOwner, EntityOwnerTrait}, season::{Leaderboard}, position::{Coord, Position, PositionIntoCoord}, realm::{Realm}, - resources::{Resource, ResourceImpl, ResourceCost}, + resource::resource::{Resource, ResourceImpl, ResourceCost}, structure::{Structure, StructureCount, StructureCountTrait, StructureCategory}, guild::{GuildMember}, name::{AddressName} }, diff --git a/contracts/game/src/systems/hyperstructure/tests.cairo b/contracts/game/src/systems/hyperstructure/tests.cairo index 63c5e6052d..b361f83a3f 100644 --- a/contracts/game/src/systems/hyperstructure/tests.cairo +++ b/contracts/game/src/systems/hyperstructure/tests.cairo @@ -2,25 +2,25 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::{ResourceTypes, get_hyperstructure_construction_resources}; -use s0_eternum::models::hyperstructure::{Progress, Contribution, Hyperstructure}; -use s0_eternum::models::owner::Owner; -use s0_eternum::models::position::{Position, Coord}; -use s0_eternum::models::resources::Resource; -use s0_eternum::models::structure::{Structure, StructureCount, StructureCountTrait, StructureCategory}; - -use s0_eternum::systems::config::contracts::{ +use s1_eternum::alias::ID; +use s1_eternum::constants::{ResourceTypes, get_hyperstructure_construction_resources}; +use s1_eternum::models::hyperstructure::{Progress, Contribution, Hyperstructure}; +use s1_eternum::models::owner::Owner; +use s1_eternum::models::position::{Position, Coord}; +use s1_eternum::models::resource::resource::Resource; +use s1_eternum::models::structure::{Structure, StructureCount, StructureCountTrait, StructureCategory}; + +use s1_eternum::systems::config::contracts::{ config_systems, config_systems::HyperstructureConfigImpl, IHyperstructureConfigDispatcher, IHyperstructureConfig, IHyperstructureConfigDispatcherTrait }; -use s0_eternum::systems::hyperstructure::contracts::{ +use s1_eternum::systems::hyperstructure::contracts::{ hyperstructure_systems, IHyperstructureSystems, IHyperstructureSystemsDispatcher, IHyperstructureSystemsDispatcherTrait }; -use s0_eternum::utils::testing::{ +use s1_eternum::utils::testing::{ world::spawn_eternum, systems::{deploy_system, deploy_realm_systems, deploy_hyperstructure_systems}, general::{spawn_realm, get_default_realm_pos, spawn_hyperstructure, get_default_hyperstructure_coord}, config::{set_capacity_config, set_settlement_config} diff --git a/contracts/game/src/systems/map/contracts.cairo b/contracts/game/src/systems/map/contracts.cairo index ac01fb5735..68cb02f8c4 100644 --- a/contracts/game/src/systems/map/contracts.cairo +++ b/contracts/game/src/systems/map/contracts.cairo @@ -1,8 +1,8 @@ -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; #[starknet::interface] trait IMapSystems { - fn explore(ref self: T, unit_id: ID, direction: s0_eternum::models::position::Direction); + fn explore(ref self: T, unit_id: ID, direction: s1_eternum::models::position::Direction); } #[dojo::contract] @@ -16,40 +16,39 @@ mod map_systems { use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait, WorldStorage, WorldStorageTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::{WORLD_CONFIG_ID, DEFAULT_NS, TravelTypes, ResourceTypes, ARMY_ENTITY_TYPE}; - use s0_eternum::models::buildings::{BuildingCategory, Building, BuildingImpl}; - use s0_eternum::models::capacity::{CapacityCategory}; - use s0_eternum::models::combat::{ + use s1_eternum::alias::ID; + use s1_eternum::constants::{WORLD_CONFIG_ID, DEFAULT_NS, TravelTypes, ResourceTypes, ARMY_ENTITY_TYPE}; + use s1_eternum::models::capacity::{CapacityCategory}; + use s1_eternum::models::combat::{ Health, HealthTrait, Army, ArmyTrait, Troops, TroopsImpl, TroopsTrait, Protector, Protectee }; - use s0_eternum::models::config::{ + use s1_eternum::models::config::{ ProductionConfig, CapacityConfigCategory, MapConfig, MapConfigImpl, MercenariesConfig, TroopConfigImpl, TickImpl, TickTrait, TravelStaminaCostConfig, TravelFoodCostConfig, TravelFoodCostConfigImpl }; - use s0_eternum::models::map::Tile; - use s0_eternum::models::movable::{Movable, ArrivalTime, MovableTrait, ArrivalTimeTrait}; - use s0_eternum::models::owner::{Owner, EntityOwner, OwnerTrait, EntityOwnerTrait}; - use s0_eternum::models::position::{Coord, CoordTrait, Direction, Position}; - use s0_eternum::models::production::ProductionDeadline; - use s0_eternum::models::quantity::Quantity; - use s0_eternum::models::realm::{Realm}; - use s0_eternum::models::resources::{ + use s1_eternum::models::map::Tile; + use s1_eternum::models::movable::{Movable, ArrivalTime, MovableTrait, ArrivalTimeTrait}; + use s1_eternum::models::owner::{Owner, EntityOwner, OwnerTrait, EntityOwnerTrait}; + use s1_eternum::models::position::{Coord, CoordTrait, Direction, Position}; + use s1_eternum::models::quantity::Quantity; + use s1_eternum::models::realm::{Realm}; + use s1_eternum::models::resource::production::building::{BuildingCategory, Building, BuildingImpl}; + use s1_eternum::models::resource::resource::{ Resource, ResourceCost, ResourceTrait, ResourceFoodImpl, ResourceTransferLock, RESOURCE_PRECISION }; - use s0_eternum::models::season::SeasonImpl; - use s0_eternum::models::stamina::StaminaImpl; - use s0_eternum::models::structure::{Structure, StructureCategory, StructureCount, StructureCountTrait}; - use s0_eternum::systems::combat::contracts::troop_systems::troop_systems::{InternalTroopImpl}; - use s0_eternum::systems::map::map_generation::{ + use s1_eternum::models::season::SeasonImpl; + use s1_eternum::models::stamina::StaminaImpl; + use s1_eternum::models::structure::{Structure, StructureCategory, StructureCount, StructureCountTrait}; + use s1_eternum::systems::combat::contracts::troop_systems::troop_systems::{InternalTroopImpl}; + use s1_eternum::systems::map::map_generation::{ IMapGenerationSystemsDispatcher, IMapGenerationSystemsDispatcherTrait }; - use s0_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; - use s0_eternum::systems::transport::contracts::travel_systems::travel_systems::{InternalTravelSystemsImpl}; - use s0_eternum::utils::map::biomes::{Biome, get_biome}; - use s0_eternum::utils::random; - use s0_eternum::utils::tasks::index::{Task, TaskTrait}; + use s1_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; + use s1_eternum::systems::transport::contracts::travel_systems::travel_systems::{InternalTravelSystemsImpl}; + use s1_eternum::utils::map::biomes::{Biome, get_biome}; + use s1_eternum::utils::random; + use s1_eternum::utils::tasks::index::{Task, TaskTrait}; use starknet::ContractAddress; @@ -77,8 +76,6 @@ mod map_systems { entity_owner_id: ID, #[key] mine_entity_id: ID, - #[key] - production_deadline_tick: u64, discovered_at: u64 } diff --git a/contracts/game/src/systems/map/map_generation.cairo b/contracts/game/src/systems/map/map_generation.cairo index 17d1206f1e..53e7c7c50c 100644 --- a/contracts/game/src/systems/map/map_generation.cairo +++ b/contracts/game/src/systems/map/map_generation.cairo @@ -1,6 +1,6 @@ -use s0_eternum::alias::ID; -use s0_eternum::models::owner::{Owner, EntityOwner, OwnerTrait, EntityOwnerTrait}; -use s0_eternum::models::position::{Coord, CoordTrait, Direction, Position}; +use s1_eternum::alias::ID; +use s1_eternum::models::owner::{Owner, EntityOwner, OwnerTrait, EntityOwnerTrait}; +use s1_eternum::models::position::{Coord, CoordTrait, Direction, Position}; #[starknet::interface] trait IMapGenerationSystems { @@ -20,38 +20,38 @@ mod map_generation_systems { use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::{WORLD_CONFIG_ID, DEFAULT_NS, TravelTypes, ResourceTypes, ARMY_ENTITY_TYPE}; - use s0_eternum::models::buildings::{BuildingCategory, Building, BuildingImpl}; - use s0_eternum::models::capacity::{CapacityCategory}; - use s0_eternum::models::combat::{ + use s1_eternum::alias::ID; + use s1_eternum::constants::{WORLD_CONFIG_ID, DEFAULT_NS, TravelTypes, ResourceTypes, ARMY_ENTITY_TYPE}; + use s1_eternum::models::capacity::{CapacityCategory}; + use s1_eternum::models::combat::{ Health, HealthTrait, Army, ArmyTrait, Troops, TroopsImpl, TroopsTrait, Protector, Protectee }; - use s0_eternum::models::config::{ + use s1_eternum::models::config::{ ProductionConfig, CapacityConfigCategory, MapConfig, MapConfigImpl, MercenariesConfig, TroopConfigImpl, TickImpl, TickTrait, TravelStaminaCostConfig, TravelFoodCostConfig, TravelFoodCostConfigImpl, VRFConfigImpl }; - use s0_eternum::models::map::Tile; - use s0_eternum::models::movable::{Movable, ArrivalTime, MovableTrait, ArrivalTimeTrait}; - use s0_eternum::models::owner::{Owner, EntityOwner, OwnerTrait, EntityOwnerTrait}; - use s0_eternum::models::position::{Coord, CoordTrait, Direction, Position}; - use s0_eternum::models::production::ProductionDeadline; - use s0_eternum::models::quantity::Quantity; - use s0_eternum::models::realm::{Realm}; - use s0_eternum::models::resources::{ - Resource, ResourceCost, ResourceTrait, ResourceFoodImpl, ResourceTransferLock, RESOURCE_PRECISION + use s1_eternum::models::map::Tile; + use s1_eternum::models::movable::{Movable, ArrivalTime, MovableTrait, ArrivalTimeTrait}; + use s1_eternum::models::owner::{Owner, EntityOwner, OwnerTrait, EntityOwnerTrait}; + use s1_eternum::models::position::{Coord, CoordTrait, Direction, Position}; + use s1_eternum::models::quantity::Quantity; + use s1_eternum::models::realm::{Realm}; + use s1_eternum::models::resource::production::building::{BuildingCategory, Building, BuildingImpl}; + use s1_eternum::models::resource::production::labor::{LaborImpl}; + use s1_eternum::models::resource::resource::{ + Resource, ResourceImpl, ResourceCost, ResourceTrait, ResourceFoodImpl, ResourceTransferLock, RESOURCE_PRECISION }; - use s0_eternum::models::season::SeasonImpl; - use s0_eternum::models::stamina::StaminaImpl; - use s0_eternum::models::structure::{Structure, StructureCategory, StructureCount, StructureCountTrait}; - use s0_eternum::systems::combat::contracts::troop_systems::troop_systems::{InternalTroopImpl}; - use s0_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; - use s0_eternum::systems::transport::contracts::travel_systems::travel_systems::{InternalTravelSystemsImpl}; - use s0_eternum::utils::map::biomes::{Biome, get_biome}; - use s0_eternum::utils::random::{VRFImpl}; - use s0_eternum::utils::random; - use s0_eternum::utils::tasks::index::{Task, TaskTrait}; + use s1_eternum::models::season::SeasonImpl; + use s1_eternum::models::stamina::StaminaImpl; + use s1_eternum::models::structure::{Structure, StructureCategory, StructureCount, StructureCountTrait}; + use s1_eternum::systems::combat::contracts::troop_systems::troop_systems::{InternalTroopImpl}; + use s1_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; + use s1_eternum::systems::transport::contracts::travel_systems::travel_systems::{InternalTravelSystemsImpl}; + use s1_eternum::utils::map::biomes::{Biome, get_biome}; + use s1_eternum::utils::random::{VRFImpl}; + use s1_eternum::utils::random; + use s1_eternum::utils::tasks::index::{Task, TaskTrait}; use starknet::ContractAddress; @@ -79,8 +79,6 @@ mod map_generation_systems { entity_owner_id: ID, #[key] mine_entity_id: ID, - #[key] - production_deadline_tick: u64, discovered_at: u64 } @@ -154,10 +152,8 @@ mod map_generation_systems { army_entity_id } - fn add_production_deadline(ref world: WorldStorage, randomness: u256, mine_entity_id: ID) -> u64 { - let earthen_shard_production_config: ProductionConfig = world.read_model(ResourceTypes::EARTHEN_SHARD); - - let earthen_shard_production_amount_per_tick: u128 = earthen_shard_production_config.amount; + fn get_shards_reward(ref world: WorldStorage, randomness: u256, mine_entity_id: ID) -> u128 { + let shards_production_config: ProductionConfig = world.read_model(ResourceTypes::EARTHEN_SHARD); let random_multiplier: u128 = *random::choices( array![1, 2, 3, 4, 5, 6, 7, 8, 9, 10].span(), array![1, 1, 1, 1, 1, 1, 1, 1, 1, 1].span(), @@ -168,15 +164,12 @@ mod map_generation_systems { )[0]; let min_production_amount: u128 = 100_000 * RESOURCE_PRECISION; let actual_production_amount: u128 = min_production_amount * random_multiplier; - let num_ticks_to_full_production: u64 = (actual_production_amount - / earthen_shard_production_amount_per_tick) - .try_into() - .unwrap(); - let tick = TickImpl::get_default_tick_config(ref world); - let deadline_tick = tick.current() + num_ticks_to_full_production; + let mut labor_amount_required: u128 = actual_production_amount / shards_production_config.labor_cost; + if actual_production_amount % shards_production_config.labor_cost != 0 { + labor_amount_required += 1; + } - world.write_model(@ProductionDeadline { entity_id: mine_entity_id, deadline_tick }); - deadline_tick + labor_amount_required } @@ -205,7 +198,20 @@ mod map_generation_systems { ref world, 0, mine_structure_entity_id, mercenaries_config.rewards, 0, false, false ); - let deadline = Self::add_production_deadline(ref world, vrf_seed, mine_structure_entity_id); + let labor_amount_required = Self::get_shards_reward(ref world, vrf_seed, mine_structure_entity_id); + + // add earthenshard labor to mine balance + let shards_labor_resource_type = LaborImpl::labor_resource_from_regular(ResourceTypes::EARTHEN_SHARD); + let mut shards_labor_resource = ResourceImpl::get( + ref world, (mine_structure_entity_id, shards_labor_resource_type) + ); + shards_labor_resource.add(labor_amount_required); + shards_labor_resource.save(ref world); + + // add labor to production machine + LaborImpl::burn_labor( + ref world, mine_structure_entity_id, ResourceTypes::EARTHEN_SHARD, labor_amount_required + ); // create shards production building BuildingImpl::create( @@ -221,7 +227,6 @@ mod map_generation_systems { @FragmentMineDiscovered { entity_owner_id: unit_entity_owner.entity_owner_id, mine_entity_id: mine_structure_entity_id, - production_deadline_tick: deadline, discovered_at: starknet::get_block_timestamp(), } ); diff --git a/contracts/game/src/systems/map/tests.cairo b/contracts/game/src/systems/map/tests.cairo index b140b08214..5f40222b3c 100644 --- a/contracts/game/src/systems/map/tests.cairo +++ b/contracts/game/src/systems/map/tests.cairo @@ -4,54 +4,54 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; -use s0_eternum::constants::{ResourceTypes, WORLD_CONFIG_ID, TickIds}; +use s1_eternum::constants::{ResourceTypes, WORLD_CONFIG_ID, TickIds}; -use s0_eternum::models::combat::{Battle}; -use s0_eternum::models::combat::{Health, Troops}; -use s0_eternum::models::config::{ +use s1_eternum::models::combat::{Battle}; +use s1_eternum::models::combat::{Health, Troops}; +use s1_eternum::models::config::{ TickConfig, TickImpl, StaminaConfig, TravelStaminaCostConfig, CapacityConfig, CapacityConfigCategory }; -use s0_eternum::models::map::Tile; -use s0_eternum::models::movable::{Movable}; -use s0_eternum::models::owner::{EntityOwner, Owner}; -use s0_eternum::models::position::{Position, Coord, CoordTrait, Direction}; -use s0_eternum::models::production::{Production, ProductionDeadline}; -use s0_eternum::models::quantity::Quantity; - -use s0_eternum::models::realm::Realm; -use s0_eternum::models::resources::{Resource, RESOURCE_PRECISION, ResourceFoodImpl}; -use s0_eternum::models::stamina::Stamina; -use s0_eternum::models::structure::{Structure, StructureCategory, StructureCount,}; -use s0_eternum::models::weight::Weight; - -use s0_eternum::systems::combat::contracts::battle_systems::{ +use s1_eternum::models::map::Tile; +use s1_eternum::models::movable::{Movable}; +use s1_eternum::models::owner::{EntityOwner, Owner}; +use s1_eternum::models::position::{Position, Coord, CoordTrait, Direction}; +use s1_eternum::models::quantity::Quantity; + +use s1_eternum::models::realm::Realm; +use s1_eternum::models::resource::production::production::{Production, ProductionDeadline}; +use s1_eternum::models::resource::resource::{Resource, RESOURCE_PRECISION, ResourceFoodImpl}; +use s1_eternum::models::stamina::Stamina; +use s1_eternum::models::structure::{Structure, StructureCategory, StructureCount,}; +use s1_eternum::models::weight::Weight; + +use s1_eternum::systems::combat::contracts::battle_systems::{ battle_systems, IBattleContractDispatcher, IBattleContractDispatcherTrait, IBattlePillageContractDispatcher, IBattlePillageContractDispatcherTrait }; -use s0_eternum::systems::combat::contracts::troop_systems::{ +use s1_eternum::systems::combat::contracts::troop_systems::{ troop_systems, ITroopContractDispatcher, ITroopContractDispatcherTrait }; -use s0_eternum::systems::config::contracts::{ +use s1_eternum::systems::config::contracts::{ config_systems, IMapConfigDispatcher, IMapConfigDispatcherTrait, IWeightConfigDispatcher, IWeightConfigDispatcherTrait, IStaminaConfigDispatcher, IStaminaConfigDispatcherTrait, IMercenariesConfigDispatcher, IMercenariesConfigDispatcherTrait, }; -use s0_eternum::systems::dev::contracts::resource::IResourceSystemsDispatcherTrait; +use s1_eternum::systems::dev::contracts::resource::IResourceSystemsDispatcherTrait; -use s0_eternum::systems::map::contracts::map_systems::InternalMapSystemsImpl; +use s1_eternum::systems::map::contracts::map_systems::InternalMapSystemsImpl; -use s0_eternum::systems::map::contracts::{map_systems, IMapSystemsDispatcher, IMapSystemsDispatcherTrait}; -use s0_eternum::systems::map::map_generation::map_generation_systems::{InternalMapGenerationSystemsImpl}; +use s1_eternum::systems::map::contracts::{map_systems, IMapSystemsDispatcher, IMapSystemsDispatcherTrait}; +use s1_eternum::systems::map::map_generation::map_generation_systems::{InternalMapGenerationSystemsImpl}; -use s0_eternum::systems::transport::contracts::travel_systems::{ +use s1_eternum::systems::transport::contracts::travel_systems::{ travel_systems, ITravelSystemsDispatcher, ITravelSystemsDispatcherTrait }; -use s0_eternum::utils::testing::{ +use s1_eternum::utils::testing::{ world::{spawn_eternum}, systems::{ deploy_realm_systems, deploy_battle_systems, deploy_system, deploy_map_systems, deploy_dev_resource_systems, diff --git a/contracts/game/src/systems/name/contracts.cairo b/contracts/game/src/systems/name/contracts.cairo index 434bb87ef6..35092f488b 100644 --- a/contracts/game/src/systems/name/contracts.cairo +++ b/contracts/game/src/systems/name/contracts.cairo @@ -1,4 +1,4 @@ -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; #[starknet::interface] trait INameSystems { @@ -13,11 +13,11 @@ mod name_systems { use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::DEFAULT_NS; - use s0_eternum::models::name::{AddressName, EntityName}; - use s0_eternum::models::owner::{Owner, OwnerTrait, EntityOwner, EntityOwnerTrait}; - use s0_eternum::models::season::SeasonImpl; + use s1_eternum::alias::ID; + use s1_eternum::constants::DEFAULT_NS; + use s1_eternum::models::name::{AddressName, EntityName}; + use s1_eternum::models::owner::{Owner, OwnerTrait, EntityOwner, EntityOwnerTrait}; + use s1_eternum::models::season::SeasonImpl; #[abi(embed_v0)] impl NameSystemsImpl of super::INameSystems { diff --git a/contracts/game/src/systems/ownership/contracts.cairo b/contracts/game/src/systems/ownership/contracts.cairo index fa6495df81..4bb74b4f17 100644 --- a/contracts/game/src/systems/ownership/contracts.cairo +++ b/contracts/game/src/systems/ownership/contracts.cairo @@ -1,5 +1,5 @@ use dojo::world::IWorldDispatcher; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; use starknet::ContractAddress; #[starknet::interface] @@ -14,10 +14,10 @@ mod ownership_systems { use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::DEFAULT_NS; - use s0_eternum::models::owner::{Owner, OwnerImpl, OwnerTrait}; - use s0_eternum::models::season::SeasonImpl; + use s1_eternum::alias::ID; + use s1_eternum::constants::DEFAULT_NS; + use s1_eternum::models::owner::{Owner, OwnerImpl, OwnerTrait}; + use s1_eternum::models::season::SeasonImpl; use starknet::ContractAddress; #[abi(embed_v0)] diff --git a/contracts/game/src/systems/ownership/tests.cairo b/contracts/game/src/systems/ownership/tests.cairo index 8be59348cb..e368076fe4 100644 --- a/contracts/game/src/systems/ownership/tests.cairo +++ b/contracts/game/src/systems/ownership/tests.cairo @@ -2,15 +2,15 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{spawn_test_world, NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::{WORLD_CONFIG_ID}; -use s0_eternum::models::owner::Owner; -use s0_eternum::models::position::{Coord}; -use s0_eternum::models::season::Season; -use s0_eternum::systems::ownership::contracts::ownership_systems; -use s0_eternum::systems::ownership::contracts::{IOwnershipSystemsDispatcher, IOwnershipSystemsDispatcherTrait}; - -use s0_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system}; +use s1_eternum::alias::ID; +use s1_eternum::constants::{WORLD_CONFIG_ID}; +use s1_eternum::models::owner::Owner; +use s1_eternum::models::position::{Coord}; +use s1_eternum::models::season::Season; +use s1_eternum::systems::ownership::contracts::ownership_systems; +use s1_eternum::systems::ownership::contracts::{IOwnershipSystemsDispatcher, IOwnershipSystemsDispatcherTrait}; + +use s1_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system}; use starknet::ContractAddress; use starknet::contract_address_const; diff --git a/contracts/game/src/systems/buildings/contracts.cairo b/contracts/game/src/systems/production/contracts.cairo similarity index 52% rename from contracts/game/src/systems/buildings/contracts.cairo rename to contracts/game/src/systems/production/contracts.cairo index c56c3a91c1..f6e018bf52 100644 --- a/contracts/game/src/systems/buildings/contracts.cairo +++ b/contracts/game/src/systems/production/contracts.cairo @@ -1,41 +1,53 @@ -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; +use s1_eternum::models::position::{Coord, Direction}; +use s1_eternum::models::resource::production::building::BuildingCategory; #[starknet::interface] -trait IBuildingContract { - fn create( +trait IProductionContract { + /// Create and Destroy Buildings + fn create_building( ref self: TContractState, entity_id: ID, - directions: Span, - building_category: s0_eternum::models::buildings::BuildingCategory, + directions: Span, + building_category: BuildingCategory, produce_resource_type: Option ); - fn pause_production(ref self: TContractState, entity_id: ID, building_coord: s0_eternum::models::position::Coord); - fn resume_production(ref self: TContractState, entity_id: ID, building_coord: s0_eternum::models::position::Coord); - fn destroy(ref self: TContractState, entity_id: ID, building_coord: s0_eternum::models::position::Coord); + fn destroy_building(ref self: TContractState, entity_id: ID, building_coord: Coord); + + /// Pause and Resume Building Production + fn pause_building_production(ref self: TContractState, entity_id: ID, building_coord: Coord); + fn resume_building_production(ref self: TContractState, entity_id: ID, building_coord: Coord); + + /// Make Production Labor from Input Resources + fn make_production_labor(ref self: TContractState, entity_id: ID, resource_type: u8, labor_amount: u128); + + /// Burn Labor from balance and add to production + fn burn_production_labor(ref self: TContractState, entity_id: ID, resource_type: u8, labor_amount: u128); } #[dojo::contract] -mod building_systems { +mod production_systems { use dojo::event::EventStorage; use dojo::model::ModelStorage; use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::DEFAULT_NS; - use s0_eternum::models::season::SeasonImpl; - use s0_eternum::models::{ - resources::{Resource, ResourceCost}, owner::{EntityOwner, EntityOwnerTrait}, order::Orders, + use s1_eternum::alias::ID; + use s1_eternum::constants::DEFAULT_NS; + use s1_eternum::models::season::SeasonImpl; + use s1_eternum::models::{ + resource::resource::{Resource, ResourceCost}, owner::{EntityOwner, EntityOwnerTrait}, order::Orders, position::{Coord, CoordTrait, Position, PositionTrait, Direction}, - buildings::{BuildingCategory, Building, BuildingImpl}, production::{Production, ProductionRateTrait}, + resource::production::building::{BuildingCategory, Building, BuildingImpl}, + resource::production::production::{Production, ProductionTrait}, resource::production::labor::{LaborImpl}, realm::{Realm, RealmImpl, RealmResourcesTrait} }; #[abi(embed_v0)] - impl BuildingContractImpl of super::IBuildingContract { - fn create( + impl ProductionContractImpl of super::IProductionContract { + fn create_building( ref self: ContractState, entity_id: ID, - mut directions: Span, + mut directions: Span, building_category: BuildingCategory, produce_resource_type: Option, ) { @@ -81,25 +93,48 @@ mod building_systems { building.make_payment(building_quantity, ref world); } - fn pause_production(ref self: ContractState, entity_id: ID, building_coord: Coord) { + + fn destroy_building(ref self: ContractState, entity_id: ID, building_coord: Coord) { + let mut world: WorldStorage = self.world(DEFAULT_NS()); + SeasonImpl::assert_season_is_not_over(world); + + BuildingImpl::destroy(ref world, entity_id, building_coord); + } + + fn pause_building_production(ref self: ContractState, entity_id: ID, building_coord: Coord) { let mut world: WorldStorage = self.world(DEFAULT_NS()); // SeasonImpl::assert_season_is_not_over(world); BuildingImpl::pause_production(ref world, entity_id, building_coord); } - fn resume_production(ref self: ContractState, entity_id: ID, building_coord: Coord) { + fn resume_building_production(ref self: ContractState, entity_id: ID, building_coord: Coord) { let mut world: WorldStorage = self.world(DEFAULT_NS()); SeasonImpl::assert_season_is_not_over(world); BuildingImpl::resume_production(ref world, entity_id, building_coord); } - fn destroy(ref self: ContractState, entity_id: ID, building_coord: Coord) { + /// Make production labor resource from input resources + fn make_production_labor(ref self: ContractState, entity_id: ID, resource_type: u8, labor_amount: u128) { let mut world: WorldStorage = self.world(DEFAULT_NS()); - // SeasonImpl::assert_season_is_not_over(world); + SeasonImpl::assert_season_is_not_over(world); - BuildingImpl::destroy(ref world, entity_id, building_coord); + let entity_owner: EntityOwner = world.read_model(entity_id); + entity_owner.assert_caller_owner(world); + + LaborImpl::mould_labor(ref world, entity_id, resource_type, labor_amount); + } + + // Burn production labor resource and add to production + fn burn_production_labor(ref self: ContractState, entity_id: ID, resource_type: u8, labor_amount: u128) { + let mut world: WorldStorage = self.world(DEFAULT_NS()); + SeasonImpl::assert_season_is_not_over(world); + + let entity_owner: EntityOwner = world.read_model(entity_id); + entity_owner.assert_caller_owner(world); + + LaborImpl::burn_labor(ref world, entity_id, resource_type, labor_amount); } } } diff --git a/contracts/game/src/systems/buildings/tests.cairo b/contracts/game/src/systems/production/tests.cairo similarity index 100% rename from contracts/game/src/systems/buildings/tests.cairo rename to contracts/game/src/systems/production/tests.cairo diff --git a/contracts/game/src/systems/realm/contracts.cairo b/contracts/game/src/systems/realm/contracts.cairo index 76a6c91a4d..e3d1ab6620 100644 --- a/contracts/game/src/systems/realm/contracts.cairo +++ b/contracts/game/src/systems/realm/contracts.cairo @@ -1,4 +1,4 @@ -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; use starknet::ContractAddress; #[starknet::interface] @@ -30,36 +30,36 @@ mod realm_systems { use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::REALM_ENTITY_TYPE; - use s0_eternum::constants::{WORLD_CONFIG_ID, REALM_FREE_MINT_CONFIG_ID, DEFAULT_NS, WONDER_QUEST_REWARD_BOOST}; - use s0_eternum::models::capacity::{CapacityCategory}; - use s0_eternum::models::config::{CapacityConfigCategory, RealmLevelConfig, SettlementConfig, SettlementConfigImpl}; - use s0_eternum::models::config::{QuestRewardConfig, QuestConfig, SeasonAddressesConfig, ProductionConfig}; - use s0_eternum::models::event::{SettleRealmData, EventType}; - use s0_eternum::models::map::Tile; - use s0_eternum::models::movable::Movable; - use s0_eternum::models::name::{AddressName}; - use s0_eternum::models::owner::{Owner, EntityOwner, EntityOwnerTrait}; - use s0_eternum::models::position::{Position, Coord}; - use s0_eternum::models::production::{ProductionOutput}; - use s0_eternum::models::quantity::QuantityTracker; - use s0_eternum::models::quest::{Quest, QuestBonus}; - use s0_eternum::models::realm::{ + use s1_eternum::alias::ID; + use s1_eternum::constants::REALM_ENTITY_TYPE; + use s1_eternum::constants::{WORLD_CONFIG_ID, REALM_FREE_MINT_CONFIG_ID, DEFAULT_NS, WONDER_QUEST_REWARD_BOOST}; + use s1_eternum::models::capacity::{CapacityCategory}; + use s1_eternum::models::config::{CapacityConfigCategory, RealmLevelConfig, SettlementConfig, SettlementConfigImpl}; + use s1_eternum::models::config::{QuestRewardConfig, SeasonAddressesConfig, ProductionConfig}; + use s1_eternum::models::event::{SettleRealmData, EventType}; + use s1_eternum::models::map::Tile; + use s1_eternum::models::movable::Movable; + use s1_eternum::models::name::{AddressName}; + use s1_eternum::models::owner::{Owner, EntityOwner, EntityOwnerTrait}; + use s1_eternum::models::position::{Position, Coord}; + use s1_eternum::models::quantity::QuantityTracker; + use s1_eternum::models::quest::{Quest}; + use s1_eternum::models::realm::{ Realm, RealmTrait, RealmImpl, RealmResourcesTrait, RealmResourcesImpl, RealmNameAndAttrsDecodingTrait, RealmNameAndAttrsDecodingImpl, RealmReferenceImpl }; - use s0_eternum::models::resources::{ + use s1_eternum::models::resource::production::labor::{LaborImpl}; + use s1_eternum::models::resource::resource::{ DetachedResource, Resource, ResourceImpl, ResourceTrait, ResourceFoodImpl, ResourceFoodTrait }; - use s0_eternum::models::season::SeasonImpl; - use s0_eternum::models::structure::{Structure, StructureCategory, StructureCount, StructureCountTrait}; - use s0_eternum::systems::map::contracts::map_systems::InternalMapSystemsImpl; - use s0_eternum::systems::resources::contracts::resource_bridge_systems::{ + use s1_eternum::models::season::SeasonImpl; + use s1_eternum::models::structure::{Structure, StructureCategory, StructureCount, StructureCountTrait}; + use s1_eternum::systems::map::contracts::map_systems::InternalMapSystemsImpl; + use s1_eternum::systems::resources::contracts::resource_bridge_systems::{ IResourceBridgeSystemsDispatcher, IResourceBridgeSystemsDispatcherTrait }; - use s0_eternum::utils::tasks::index::{Task, TaskTrait}; + use s1_eternum::utils::tasks::index::{Task, TaskTrait}; use starknet::ContractAddress; use super::{ISeasonPassDispatcher, ISeasonPassDispatcherTrait, IERC20Dispatcher, IERC20DispatcherTrait}; @@ -194,14 +194,14 @@ mod realm_systems { let realm: Realm = world.read_model(entity_id); realm.assert_is_set(); + let entity_owner: EntityOwner = world.read_model(entity_id); + entity_owner.assert_caller_owner(world); + // ensure quest is not already completed let mut quest: Quest = world.read_model((entity_id, quest_id)); assert(!quest.completed, 'quest already completed'); - assert(realm.settler_address == starknet::get_caller_address(), 'Caller not settler'); - // ensure quest has rewards - let quest_config: QuestConfig = world.read_model(WORLD_CONFIG_ID); let quest_reward_config: QuestRewardConfig = world.read_model(quest_id); assert(quest_reward_config.detached_resource_count > 0, 'quest has no rewards'); @@ -217,35 +217,6 @@ mod realm_systems { let reward_resource_type = detached_resource.resource_type; let mut reward_resource_amount = detached_resource.resource_amount; - let mut quest_bonus: QuestBonus = world.read_model((entity_id, reward_resource_type)); - - // scale reward resource amount by quest production multiplier - // if the reward resource is used to produce another resource in the realm. - // it will only be scaled if the quest bonus has not been claimed yet and - // the reward resource is not food. - if !quest_bonus.claimed && !ResourceFoodImpl::is_food(reward_resource_type) { - let reward_resource_production_config: ProductionConfig = world.read_model(reward_resource_type); - let mut jndex = 0; - loop { - if jndex == reward_resource_production_config.output_count { - break; - } - - let output_resource_type: ProductionOutput = world.read_model((reward_resource_type, jndex)); - if realm.produces_resource(output_resource_type.output_resource_type) { - // scale reward resource amount by quest production multiplier - reward_resource_amount *= quest_config.production_material_multiplier.into(); - // set quest bonus as claimed - quest_bonus.claimed = true; - world.write_model(@quest_bonus); - - break; - } - - jndex += 1; - } - } - if realm.has_wonder { reward_resource_amount *= WONDER_QUEST_REWARD_BOOST.into(); } @@ -312,7 +283,6 @@ mod realm_systems { order, level, has_wonder, - settler_address: owner, } ); world.write_model(@Position { entity_id: entity_id.into(), x: coord.x, y: coord.y, }); @@ -357,7 +327,7 @@ mod realm_systems { ) { // get bridge systems address let (bridge_systems_address, _namespace_hash) = - match world.dispatcher.resource(selector_from_tag!("s0_eternum-resource_bridge_systems")) { + match world.dispatcher.resource(selector_from_tag!("s1_eternum-resource_bridge_systems")) { dojo::world::Resource::Contract(( contract_address, namespace_hash )) => (contract_address, namespace_hash), diff --git a/contracts/game/src/systems/realm/tests.cairo b/contracts/game/src/systems/realm/tests.cairo index 6a1f737899..5d9ed391dc 100644 --- a/contracts/game/src/systems/realm/tests.cairo +++ b/contracts/game/src/systems/realm/tests.cairo @@ -2,24 +2,24 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::MAX_REALMS_PER_ADDRESS; +use s1_eternum::alias::ID; +use s1_eternum::constants::MAX_REALMS_PER_ADDRESS; -use s0_eternum::constants::ResourceTypes; -use s0_eternum::models::map::Tile; -use s0_eternum::models::owner::Owner; +use s1_eternum::constants::ResourceTypes; +use s1_eternum::models::map::Tile; +use s1_eternum::models::owner::Owner; -use s0_eternum::models::position::{Position, Coord}; -use s0_eternum::models::realm::{Realm, RealmTrait}; -use s0_eternum::models::resources::DetachedResource; -use s0_eternum::models::resources::Resource; +use s1_eternum::models::position::{Position, Coord}; +use s1_eternum::models::realm::{Realm, RealmTrait}; +use s1_eternum::models::resource::resource::DetachedResource; +use s1_eternum::models::resource::resource::Resource; -use s0_eternum::systems::config::contracts::{config_systems, IQuestConfigDispatcher, IQuestConfigDispatcherTrait}; -use s0_eternum::systems::realm::contracts::{realm_systems, IRealmSystemsDispatcher, IRealmSystemsDispatcherTrait}; +use s1_eternum::systems::config::contracts::{config_systems, IQuestConfigDispatcher, IQuestConfigDispatcherTrait}; +use s1_eternum::systems::realm::contracts::{realm_systems, IRealmSystemsDispatcher, IRealmSystemsDispatcherTrait}; -use s0_eternum::utils::map::biomes::Biome; +use s1_eternum::utils::map::biomes::Biome; -use s0_eternum::utils::testing::{ +use s1_eternum::utils::testing::{ world::spawn_eternum, systems::{deploy_system, deploy_realm_systems, deploy_hyperstructure_systems}, general::{ spawn_realm, get_default_realm_pos, generate_realm_positions, spawn_hyperstructure, diff --git a/contracts/game/src/systems/resources/contracts/resource_bridge_systems.cairo b/contracts/game/src/systems/resources/contracts/resource_bridge_systems.cairo index c671c4dc31..2eb802a36d 100644 --- a/contracts/game/src/systems/resources/contracts/resource_bridge_systems.cairo +++ b/contracts/game/src/systems/resources/contracts/resource_bridge_systems.cairo @@ -1,4 +1,4 @@ -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; use starknet::ContractAddress; #[starknet::interface] @@ -190,18 +190,18 @@ mod resource_bridge_systems { use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::{WORLD_CONFIG_ID, DEFAULT_NS}; - use s0_eternum::models::bank::bank::Bank; - use s0_eternum::models::config::{ResourceBridgeWhitelistConfig, ResourceBridgeConfig, ResourceBridgeFeeSplitConfig}; - use s0_eternum::models::config::{SeasonBridgeConfig, SeasonBridgeConfigImpl}; - use s0_eternum::models::movable::{ArrivalTime, ArrivalTimeImpl}; - use s0_eternum::models::owner::{EntityOwner, Owner, EntityOwnerTrait}; - use s0_eternum::models::position::{Position, Coord}; - use s0_eternum::models::resources::{Resource, ResourceImpl, RESOURCE_PRECISION}; - use s0_eternum::models::structure::{Structure, StructureTrait, StructureCategory}; - use s0_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; - use s0_eternum::utils::math::{pow, PercentageImpl, PercentageValueImpl, min}; + use s1_eternum::alias::ID; + use s1_eternum::constants::{WORLD_CONFIG_ID, DEFAULT_NS}; + use s1_eternum::models::bank::bank::Bank; + use s1_eternum::models::config::{ResourceBridgeWhitelistConfig, ResourceBridgeConfig, ResourceBridgeFeeSplitConfig}; + use s1_eternum::models::config::{SeasonBridgeConfig, SeasonBridgeConfigImpl}; + use s1_eternum::models::movable::{ArrivalTime, ArrivalTimeImpl}; + use s1_eternum::models::owner::{EntityOwner, Owner, EntityOwnerTrait}; + use s1_eternum::models::position::{Position, Coord}; + use s1_eternum::models::resource::resource::{Resource, ResourceImpl, RESOURCE_PRECISION}; + use s1_eternum::models::structure::{Structure, StructureTrait, StructureCategory}; + use s1_eternum::systems::resources::contracts::resource_systems::resource_systems::{InternalResourceSystemsImpl}; + use s1_eternum::utils::math::{pow, PercentageImpl, PercentageValueImpl, min}; use starknet::ContractAddress; use starknet::{get_caller_address, get_contract_address}; use super::{ @@ -229,7 +229,7 @@ mod resource_bridge_systems { // ensure this system can only be called by realms systems contract let caller = get_caller_address(); let (realm_systems_address, _namespace_hash) = - match world.dispatcher.resource(selector_from_tag!("s0_eternum-realm_systems")) { + match world.dispatcher.resource(selector_from_tag!("s1_eternum-realm_systems")) { dojo::world::Resource::Contract(( contract_address, namespace_hash )) => (contract_address, namespace_hash), diff --git a/contracts/game/src/systems/resources/contracts/resource_systems.cairo b/contracts/game/src/systems/resources/contracts/resource_systems.cairo index c98d3e1d63..6d02b55151 100644 --- a/contracts/game/src/systems/resources/contracts/resource_systems.cairo +++ b/contracts/game/src/systems/resources/contracts/resource_systems.cairo @@ -1,5 +1,5 @@ use dojo::world::IWorldDispatcher; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; #[starknet::interface] trait IResourceSystems { @@ -21,29 +21,29 @@ mod resource_systems { use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::alias::ID; + use s1_eternum::alias::ID; - use s0_eternum::constants::{WORLD_CONFIG_ID, DEFAULT_NS}; - use s0_eternum::models::config::{ + use s1_eternum::constants::{WORLD_CONFIG_ID, DEFAULT_NS}; + use s1_eternum::models::config::{ WeightConfig, WeightConfigImpl, CapacityConfig, CapacityConfigImpl, CapacityConfigCategory }; - use s0_eternum::models::movable::{ArrivalTime, ArrivalTimeTrait}; - use s0_eternum::models::owner::{Owner, OwnerTrait, EntityOwner, EntityOwnerTrait}; - use s0_eternum::models::position::{Position, Coord}; - use s0_eternum::models::quantity::{Quantity,}; - use s0_eternum::models::realm::Realm; - use s0_eternum::models::resources::{ + use s1_eternum::models::movable::{ArrivalTime, ArrivalTimeTrait}; + use s1_eternum::models::owner::{Owner, OwnerTrait, EntityOwner, EntityOwnerTrait}; + use s1_eternum::models::position::{Position, Coord}; + use s1_eternum::models::quantity::{Quantity,}; + use s1_eternum::models::realm::Realm; + use s1_eternum::models::resource::resource::{ Resource, ResourceImpl, ResourceTrait, ResourceAllowance, ResourceTransferLock, ResourceTransferLockTrait }; - use s0_eternum::models::resources::{DetachedResource}; - use s0_eternum::models::season::SeasonImpl; - use s0_eternum::models::structure::{Structure, StructureTrait, StructureCategory}; - use s0_eternum::models::weight::Weight; - use s0_eternum::models::weight::WeightTrait; - use s0_eternum::systems::transport::contracts::donkey_systems::donkey_systems::{ + use s1_eternum::models::resource::resource::{DetachedResource}; + use s1_eternum::models::season::SeasonImpl; + use s1_eternum::models::structure::{Structure, StructureTrait, StructureCategory}; + use s1_eternum::models::weight::Weight; + use s1_eternum::models::weight::WeightTrait; + use s1_eternum::systems::transport::contracts::donkey_systems::donkey_systems::{ InternalDonkeySystemsImpl as donkey }; - use s0_eternum::systems::transport::contracts::travel_systems::travel_systems::{ + use s1_eternum::systems::transport::contracts::travel_systems::travel_systems::{ InternalTravelSystemsImpl as travel }; diff --git a/contracts/game/src/systems/resources/tests/resource_approval_system_tests.cairo b/contracts/game/src/systems/resources/tests/resource_approval_system_tests.cairo index 4c69abdbcd..5faf311fe0 100644 --- a/contracts/game/src/systems/resources/tests/resource_approval_system_tests.cairo +++ b/contracts/game/src/systems/resources/tests/resource_approval_system_tests.cairo @@ -6,21 +6,21 @@ mod resource_approval_system_tests { use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; - use s0_eternum::alias::ID; + use s1_eternum::alias::ID; - use s0_eternum::constants::ResourceTypes; - use s0_eternum::constants::WORLD_CONFIG_ID; - use s0_eternum::models::config::WeightConfig; - use s0_eternum::models::owner::{Owner, EntityOwner}; - use s0_eternum::models::position::Position; - use s0_eternum::models::quantity::Quantity; - use s0_eternum::models::resources::{Resource, ResourceAllowance}; + use s1_eternum::constants::ResourceTypes; + use s1_eternum::constants::WORLD_CONFIG_ID; + use s1_eternum::models::config::WeightConfig; + use s1_eternum::models::owner::{Owner, EntityOwner}; + use s1_eternum::models::position::Position; + use s1_eternum::models::quantity::Quantity; + use s1_eternum::models::resource::resource::{Resource, ResourceAllowance}; - use s0_eternum::systems::resources::contracts::resource_systems::{ + use s1_eternum::systems::resources::contracts::resource_systems::{ resource_systems, IResourceSystemsDispatcher, IResourceSystemsDispatcherTrait }; - use s0_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system}; + use s1_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system}; use starknet::contract_address_const; diff --git a/contracts/game/src/systems/resources/tests/resource_bridge_system_tests.cairo b/contracts/game/src/systems/resources/tests/resource_bridge_system_tests.cairo index 918b1ce847..d3b14ba6bc 100644 --- a/contracts/game/src/systems/resources/tests/resource_bridge_system_tests.cairo +++ b/contracts/game/src/systems/resources/tests/resource_bridge_system_tests.cairo @@ -6,24 +6,24 @@ mod resource_bridge_system_tests { use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::{ResourceTypes, WORLD_CONFIG_ID}; - use s0_eternum::models::bank::{bank::Bank}; - use s0_eternum::models::capacity::{CapacityCategory}; - use s0_eternum::models::config::{CapacityConfigCategory, WeightConfig}; - use s0_eternum::models::config::{ResourceBridgeWhitelistConfig, ResourceBridgeConfig, ResourceBridgeFeeSplitConfig}; - use s0_eternum::models::movable::{ArrivalTime}; - use s0_eternum::models::owner::{Owner, EntityOwner}; - use s0_eternum::models::position::{Position, Coord}; - use s0_eternum::models::resources::{Resource, RESOURCE_PRECISION}; - use s0_eternum::models::structure::{Structure, StructureCategory}; - use s0_eternum::systems::config::contracts::config_systems; - use s0_eternum::systems::resources::contracts::resource_bridge_systems::{ + use s1_eternum::alias::ID; + use s1_eternum::constants::{ResourceTypes, WORLD_CONFIG_ID}; + use s1_eternum::models::bank::{bank::Bank}; + use s1_eternum::models::capacity::{CapacityCategory}; + use s1_eternum::models::config::{CapacityConfigCategory, WeightConfig}; + use s1_eternum::models::config::{ResourceBridgeWhitelistConfig, ResourceBridgeConfig, ResourceBridgeFeeSplitConfig}; + use s1_eternum::models::movable::{ArrivalTime}; + use s1_eternum::models::owner::{Owner, EntityOwner}; + use s1_eternum::models::position::{Position, Coord}; + use s1_eternum::models::resource::resource::{Resource, RESOURCE_PRECISION}; + use s1_eternum::models::structure::{Structure, StructureCategory}; + use s1_eternum::systems::config::contracts::config_systems; + use s1_eternum::systems::resources::contracts::resource_bridge_systems::{ resource_bridge_systems, resource_bridge_systems::InternalBridgeImpl, IResourceBridgeSystemsDispatcher, IResourceBridgeSystemsDispatcherTrait, ERC20ABIDispatcher, ERC20ABIDispatcherTrait }; - use s0_eternum::utils::testing::mock::erc20mock::MockERC20; - use s0_eternum::utils::testing::{ + use s1_eternum::utils::testing::mock::erc20mock::MockERC20; + use s1_eternum::utils::testing::{ world::spawn_eternum, systems::{deploy_system, deploy_contract}, config::set_capacity_config }; use starknet::testing::set_contract_address; diff --git a/contracts/game/src/systems/resources/tests/resource_transfer_system_tests.cairo b/contracts/game/src/systems/resources/tests/resource_transfer_system_tests.cairo index b98486ee20..70814ed14a 100644 --- a/contracts/game/src/systems/resources/tests/resource_transfer_system_tests.cairo +++ b/contracts/game/src/systems/resources/tests/resource_transfer_system_tests.cairo @@ -6,26 +6,26 @@ mod resource_transfer_system_tests { use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; - use s0_eternum::alias::ID; - use s0_eternum::constants::DONKEY_ENTITY_TYPE; - - use s0_eternum::constants::ResourceTypes; - use s0_eternum::constants::WORLD_CONFIG_ID; - use s0_eternum::models::capacity::CapacityCategory; - use s0_eternum::models::config::WeightConfig; - use s0_eternum::models::config::{CapacityConfig, CapacityConfigCategory}; - use s0_eternum::models::owner::{Owner, EntityOwner}; - use s0_eternum::models::position::Position; - use s0_eternum::models::quantity::Quantity; - use s0_eternum::models::resources::{Resource, ResourceAllowance}; - - use s0_eternum::systems::config::contracts::{config_systems, IWeightConfigDispatcher, IWeightConfigDispatcherTrait}; - - use s0_eternum::systems::resources::contracts::resource_systems::{ + use s1_eternum::alias::ID; + use s1_eternum::constants::DONKEY_ENTITY_TYPE; + + use s1_eternum::constants::ResourceTypes; + use s1_eternum::constants::WORLD_CONFIG_ID; + use s1_eternum::models::capacity::CapacityCategory; + use s1_eternum::models::config::WeightConfig; + use s1_eternum::models::config::{CapacityConfig, CapacityConfigCategory}; + use s1_eternum::models::owner::{Owner, EntityOwner}; + use s1_eternum::models::position::Position; + use s1_eternum::models::quantity::Quantity; + use s1_eternum::models::resource::resource::{Resource, ResourceAllowance}; + + use s1_eternum::systems::config::contracts::{config_systems, IWeightConfigDispatcher, IWeightConfigDispatcherTrait}; + + use s1_eternum::systems::resources::contracts::resource_systems::{ resource_systems, IResourceSystemsDispatcher, IResourceSystemsDispatcherTrait }; - use s0_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system, config::set_capacity_config}; + use s1_eternum::utils::testing::{world::spawn_eternum, systems::deploy_system, config::set_capacity_config}; use starknet::contract_address_const; diff --git a/contracts/game/src/systems/season/contracts.cairo b/contracts/game/src/systems/season/contracts.cairo index 609556d483..0800d8d77a 100644 --- a/contracts/game/src/systems/season/contracts.cairo +++ b/contracts/game/src/systems/season/contracts.cairo @@ -1,7 +1,7 @@ use dojo::model::ModelStorage; use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; #[starknet::interface] trait ISeasonSystems { @@ -19,7 +19,7 @@ mod season_systems { use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::{ + use s1_eternum::{ constants::{HYPERSTRUCTURE_CONFIG_ID, WORLD_CONFIG_ID, DEFAULT_NS, ResourceTypes}, alias::ID, models::{ config::{ diff --git a/contracts/game/src/systems/season/tests.cairo b/contracts/game/src/systems/season/tests.cairo index a18e5821da..5e2edeed73 100644 --- a/contracts/game/src/systems/season/tests.cairo +++ b/contracts/game/src/systems/season/tests.cairo @@ -2,36 +2,36 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::{ResourceTypes, get_hyperstructure_construction_resources, WORLD_CONFIG_ID}; -use s0_eternum::models::hyperstructure::{Progress, Contribution, Hyperstructure}; -use s0_eternum::models::owner::Owner; -use s0_eternum::models::position::{Position, Coord}; -use s0_eternum::models::resources::Resource; -use s0_eternum::models::season::{Leaderboard, LeaderboardEntry, LeaderboardEntryImpl}; -use s0_eternum::models::structure::{Structure, StructureCount, StructureCountTrait, StructureCategory}; -use s0_eternum::systems::config::contracts::{ +use s1_eternum::alias::ID; +use s1_eternum::constants::{ResourceTypes, get_hyperstructure_construction_resources, WORLD_CONFIG_ID}; +use s1_eternum::models::hyperstructure::{Progress, Contribution, Hyperstructure}; +use s1_eternum::models::owner::Owner; +use s1_eternum::models::position::{Position, Coord}; +use s1_eternum::models::resource::resource::Resource; +use s1_eternum::models::season::{Leaderboard, LeaderboardEntry, LeaderboardEntryImpl}; +use s1_eternum::models::structure::{Structure, StructureCount, StructureCountTrait, StructureCategory}; +use s1_eternum::systems::config::contracts::{ config_systems, config_systems::HyperstructureConfigImpl, IHyperstructureConfigDispatcher, IHyperstructureConfig, IHyperstructureConfigDispatcherTrait }; -use s0_eternum::systems::hyperstructure::contracts::{ +use s1_eternum::systems::hyperstructure::contracts::{ hyperstructure_systems, IHyperstructureSystems, IHyperstructureSystemsDispatcher, IHyperstructureSystemsDispatcherTrait }; -use s0_eternum::systems::resources::contracts::resource_bridge_systems::{ +use s1_eternum::systems::resources::contracts::resource_bridge_systems::{ IResourceBridgeSystemsDispatcherTrait, ERC20ABIDispatcher, ERC20ABIDispatcherTrait }; -use s0_eternum::systems::resources::tests::resource_bridge_system_tests::resource_bridge_system_tests::{ +use s1_eternum::systems::resources::tests::resource_bridge_system_tests::resource_bridge_system_tests::{ SetupImpl, SEASON_POOL_ADDRESS, REALM_OWNER_ADDRESS }; -use s0_eternum::systems::season::contracts::{ +use s1_eternum::systems::season::contracts::{ season_systems, ISeasonSystemsDispatcher, ISeasonSystemsDispatcherTrait, season_systems::SCALING_FACTOR }; -use s0_eternum::utils::testing::{ +use s1_eternum::utils::testing::{ world::spawn_eternum, systems::{deploy_system, deploy_realm_systems, deploy_hyperstructure_systems, deploy_season_systems}, general::{spawn_realm, get_default_realm_pos, spawn_hyperstructure, get_default_hyperstructure_coord}, diff --git a/contracts/game/src/systems/trade/contracts/trade_systems.cairo b/contracts/game/src/systems/trade/contracts/trade_systems.cairo index f35c8ba4dc..b235317a9f 100644 --- a/contracts/game/src/systems/trade/contracts/trade_systems.cairo +++ b/contracts/game/src/systems/trade/contracts/trade_systems.cairo @@ -1,5 +1,5 @@ use dojo::world::IWorldDispatcher; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; #[starknet::interface] trait ITradeSystems { @@ -37,28 +37,28 @@ mod trade_systems { use dojo::world::WorldStorage; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; - use s0_eternum::alias::ID; - - use s0_eternum::constants::{DEFAULT_NS, REALM_ENTITY_TYPE, WORLD_CONFIG_ID, DONKEY_ENTITY_TYPE, ResourceTypes}; - use s0_eternum::models::config::{WeightConfig, WeightConfigImpl}; - use s0_eternum::models::config::{WorldConfig, SpeedConfig, CapacityConfig, CapacityConfigImpl}; - use s0_eternum::models::movable::{Movable, ArrivalTime}; - use s0_eternum::models::owner::Owner; - use s0_eternum::models::position::{Position, PositionTrait, Coord, TravelTrait}; - use s0_eternum::models::quantity::{Quantity, QuantityTracker}; - use s0_eternum::models::realm::Realm; - use s0_eternum::models::resources::{DetachedResource}; - - use s0_eternum::models::resources::{Resource, ResourceImpl}; - - use s0_eternum::models::season::SeasonImpl; - use s0_eternum::models::trade::{Trade, Status, TradeStatus}; - use s0_eternum::models::weight::{Weight, WeightTrait}; - use s0_eternum::systems::resources::contracts::resource_systems::resource_systems::{ + use s1_eternum::alias::ID; + + use s1_eternum::constants::{DEFAULT_NS, REALM_ENTITY_TYPE, WORLD_CONFIG_ID, DONKEY_ENTITY_TYPE, ResourceTypes}; + use s1_eternum::models::config::{WeightConfig, WeightConfigImpl}; + use s1_eternum::models::config::{WorldConfig, SpeedConfig, CapacityConfig, CapacityConfigImpl}; + use s1_eternum::models::movable::{Movable, ArrivalTime}; + use s1_eternum::models::owner::Owner; + use s1_eternum::models::position::{Position, PositionTrait, Coord, TravelTrait}; + use s1_eternum::models::quantity::{Quantity, QuantityTracker}; + use s1_eternum::models::realm::Realm; + use s1_eternum::models::resource::resource::{DetachedResource}; + + use s1_eternum::models::resource::resource::{Resource, ResourceImpl}; + + use s1_eternum::models::season::SeasonImpl; + use s1_eternum::models::trade::{Trade, Status, TradeStatus}; + use s1_eternum::models::weight::{Weight, WeightTrait}; + use s1_eternum::systems::resources::contracts::resource_systems::resource_systems::{ InternalResourceSystemsImpl as internal_resources, }; - use s0_eternum::systems::transport::contracts::donkey_systems::donkey_systems::{ + use s1_eternum::systems::transport::contracts::donkey_systems::donkey_systems::{ InternalDonkeySystemsImpl as donkey }; diff --git a/contracts/game/src/systems/trade/tests/trade_systems_tests/accept_order.cairo b/contracts/game/src/systems/trade/tests/trade_systems_tests/accept_order.cairo index 71674bdfd1..2b2b29e578 100644 --- a/contracts/game/src/systems/trade/tests/trade_systems_tests/accept_order.cairo +++ b/contracts/game/src/systems/trade/tests/trade_systems_tests/accept_order.cairo @@ -4,33 +4,33 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; - -use s0_eternum::constants::ResourceTypes; -use s0_eternum::constants::{DONKEY_ENTITY_TYPE, REALM_LEVELING_CONFIG_ID}; -use s0_eternum::models::config::{CapacityConfig, CapacityConfigCategory}; -use s0_eternum::models::movable::{Movable, ArrivalTime}; -use s0_eternum::models::order::{Orders, OrdersTrait}; -use s0_eternum::models::owner::Owner; -use s0_eternum::models::position::{Position, Coord}; -use s0_eternum::models::realm::Realm; -use s0_eternum::models::resources::Resource; - -use s0_eternum::models::trade::{Trade, Status, TradeStatus}; -use s0_eternum::models::weight::Weight; - -use s0_eternum::systems::config::contracts::config_systems; -use s0_eternum::systems::config::contracts::{ +use s1_eternum::alias::ID; + +use s1_eternum::constants::ResourceTypes; +use s1_eternum::constants::{DONKEY_ENTITY_TYPE, REALM_LEVELING_CONFIG_ID}; +use s1_eternum::models::config::{CapacityConfig, CapacityConfigCategory}; +use s1_eternum::models::movable::{Movable, ArrivalTime}; +use s1_eternum::models::order::{Orders, OrdersTrait}; +use s1_eternum::models::owner::Owner; +use s1_eternum::models::position::{Position, Coord}; +use s1_eternum::models::realm::Realm; +use s1_eternum::models::resource::resource::Resource; + +use s1_eternum::models::trade::{Trade, Status, TradeStatus}; +use s1_eternum::models::weight::Weight; + +use s1_eternum::systems::config::contracts::config_systems; +use s1_eternum::systems::config::contracts::{ ITransportConfigDispatcher, ITransportConfigDispatcherTrait, IWeightConfigDispatcher, IWeightConfigDispatcherTrait, ICapacityConfigDispatcher, ICapacityConfigDispatcherTrait, }; -use s0_eternum::systems::dev::contracts::resource::IResourceSystemsDispatcherTrait; +use s1_eternum::systems::dev::contracts::resource::IResourceSystemsDispatcherTrait; -use s0_eternum::systems::trade::contracts::trade_systems::{ +use s1_eternum::systems::trade::contracts::trade_systems::{ trade_systems, ITradeSystemsDispatcher, ITradeSystemsDispatcherTrait }; -use s0_eternum::utils::testing::{ +use s1_eternum::utils::testing::{ world::spawn_eternum, systems::{deploy_system, deploy_realm_systems, deploy_dev_resource_systems}, general::{spawn_realm}, config::{set_capacity_config, set_settlement_config} }; diff --git a/contracts/game/src/systems/trade/tests/trade_systems_tests/cancel_order.cairo b/contracts/game/src/systems/trade/tests/trade_systems_tests/cancel_order.cairo index 55d41c783f..4b022fdd5a 100644 --- a/contracts/game/src/systems/trade/tests/trade_systems_tests/cancel_order.cairo +++ b/contracts/game/src/systems/trade/tests/trade_systems_tests/cancel_order.cairo @@ -4,29 +4,29 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::DONKEY_ENTITY_TYPE; - -use s0_eternum::constants::ResourceTypes; -use s0_eternum::models::config::CapacityConfig; -use s0_eternum::models::config::CapacityConfigCategory; -use s0_eternum::models::movable::{Movable, ArrivalTime}; -use s0_eternum::models::owner::Owner; -use s0_eternum::models::position::{Position}; -use s0_eternum::models::resources::Resource; -use s0_eternum::models::trade::{Trade, Status, TradeStatus}; -use s0_eternum::models::weight::Weight; - -use s0_eternum::systems::config::contracts::{ +use s1_eternum::alias::ID; +use s1_eternum::constants::DONKEY_ENTITY_TYPE; + +use s1_eternum::constants::ResourceTypes; +use s1_eternum::models::config::CapacityConfig; +use s1_eternum::models::config::CapacityConfigCategory; +use s1_eternum::models::movable::{Movable, ArrivalTime}; +use s1_eternum::models::owner::Owner; +use s1_eternum::models::position::{Position}; +use s1_eternum::models::resource::resource::Resource; +use s1_eternum::models::trade::{Trade, Status, TradeStatus}; +use s1_eternum::models::weight::Weight; + +use s1_eternum::systems::config::contracts::{ config_systems, ITransportConfigDispatcher, ITransportConfigDispatcherTrait, IWeightConfigDispatcher, IWeightConfigDispatcherTrait, ICapacityConfigDispatcher, ICapacityConfigDispatcherTrait }; -use s0_eternum::systems::trade::contracts::trade_systems::{ +use s1_eternum::systems::trade::contracts::trade_systems::{ trade_systems, ITradeSystemsDispatcher, ITradeSystemsDispatcherTrait }; -use s0_eternum::utils::testing::{ +use s1_eternum::utils::testing::{ world::spawn_eternum, systems::{deploy_system, deploy_realm_systems}, general::{spawn_realm}, config::{set_capacity_config, set_settlement_config} }; diff --git a/contracts/game/src/systems/trade/tests/trade_systems_tests/create_order.cairo b/contracts/game/src/systems/trade/tests/trade_systems_tests/create_order.cairo index 61eced1ef2..dffa69323a 100644 --- a/contracts/game/src/systems/trade/tests/trade_systems_tests/create_order.cairo +++ b/contracts/game/src/systems/trade/tests/trade_systems_tests/create_order.cairo @@ -3,28 +3,28 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; -use s0_eternum::constants::{ResourceTypes, DONKEY_ENTITY_TYPE}; +use s1_eternum::constants::{ResourceTypes, DONKEY_ENTITY_TYPE}; -use s0_eternum::models::{ - movable::{Movable, ArrivalTime}, owner::Owner, position::Position, resources::{Resource, ResourceImpl}, +use s1_eternum::models::{ + movable::{Movable, ArrivalTime}, owner::Owner, position::Position, resource::resource::{Resource, ResourceImpl}, trade::{Trade, Status, TradeStatus}, weight::Weight, config::CapacityConfig, config::CapacityConfigCategory }; -use s0_eternum::systems::config::contracts::{ +use s1_eternum::systems::config::contracts::{ config_systems, ITransportConfigDispatcher, ITransportConfigDispatcherTrait, IWeightConfigDispatcher, IWeightConfigDispatcherTrait, ICapacityConfigDispatcher, ICapacityConfigDispatcherTrait }; -use s0_eternum::systems::dev::contracts::resource::IResourceSystemsDispatcherTrait; +use s1_eternum::systems::dev::contracts::resource::IResourceSystemsDispatcherTrait; -use s0_eternum::systems::trade::contracts::trade_systems::{ +use s1_eternum::systems::trade::contracts::trade_systems::{ trade_systems, ITradeSystemsDispatcher, ITradeSystemsDispatcherTrait }; -use s0_eternum::utils::testing::{ +use s1_eternum::utils::testing::{ world::spawn_eternum, systems::{deploy_system, deploy_realm_systems, deploy_dev_resource_systems}, general::{spawn_realm, get_default_realm_pos}, config::{set_capacity_config, set_settlement_config, set_weight_config} diff --git a/contracts/game/src/systems/transport/contracts/donkey_systems.cairo b/contracts/game/src/systems/transport/contracts/donkey_systems.cairo index 958f2becd4..d2254511b9 100644 --- a/contracts/game/src/systems/transport/contracts/donkey_systems.cairo +++ b/contracts/game/src/systems/transport/contracts/donkey_systems.cairo @@ -5,23 +5,23 @@ mod donkey_systems { use dojo::model::ModelStorage; use dojo::world::WorldStorage; - use s0_eternum::alias::ID; - - use s0_eternum::constants::{WORLD_CONFIG_ID, DONKEY_ENTITY_TYPE, ResourceTypes, RESOURCE_PRECISION}; - use s0_eternum::models::capacity::{CapacityCategory}; - use s0_eternum::models::config::{SpeedConfig, CapacityConfig, CapacityConfigCategory, CapacityConfigImpl}; - use s0_eternum::models::movable::{Movable, MovableImpl, ArrivalTime}; - use s0_eternum::models::order::{Orders, OrdersTrait}; - use s0_eternum::models::owner::{Owner, EntityOwner, OwnerTrait}; - use s0_eternum::models::position::{Coord, Position, TravelTrait, CoordTrait, Direction, PositionTrait}; - use s0_eternum::models::realm::Realm; - use s0_eternum::models::resources::{Resource, ResourceImpl}; - use s0_eternum::models::weight::Weight; - - use s0_eternum::systems::resources::contracts::resource_systems::resource_systems::{ + use s1_eternum::alias::ID; + + use s1_eternum::constants::{WORLD_CONFIG_ID, DONKEY_ENTITY_TYPE, ResourceTypes, RESOURCE_PRECISION}; + use s1_eternum::models::capacity::{CapacityCategory}; + use s1_eternum::models::config::{SpeedConfig, CapacityConfig, CapacityConfigCategory, CapacityConfigImpl}; + use s1_eternum::models::movable::{Movable, MovableImpl, ArrivalTime}; + use s1_eternum::models::order::{Orders, OrdersTrait}; + use s1_eternum::models::owner::{Owner, EntityOwner, OwnerTrait}; + use s1_eternum::models::position::{Coord, Position, TravelTrait, CoordTrait, Direction, PositionTrait}; + use s1_eternum::models::realm::Realm; + use s1_eternum::models::resource::resource::{Resource, ResourceImpl}; + use s1_eternum::models::weight::Weight; + + use s1_eternum::systems::resources::contracts::resource_systems::resource_systems::{ ResourceSystemsImpl, InternalResourceSystemsImpl }; - use s0_eternum::utils::tasks::index::{Task, TaskTrait}; + use s1_eternum::utils::tasks::index::{Task, TaskTrait}; use starknet::ContractAddress; diff --git a/contracts/game/src/systems/transport/contracts/travel_systems.cairo b/contracts/game/src/systems/transport/contracts/travel_systems.cairo index 188367e4a4..f38c255ae5 100644 --- a/contracts/game/src/systems/transport/contracts/travel_systems.cairo +++ b/contracts/game/src/systems/transport/contracts/travel_systems.cairo @@ -1,13 +1,13 @@ #[starknet::interface] trait ITravelSystems { // fn travel( - // ref self: T, travelling_entity_id: s0_eternum::alias::ID, destination_coord: - // s0_eternum::models::position::Coord + // ref self: T, travelling_entity_id: s1_eternum::alias::ID, destination_coord: + // s1_eternum::models::position::Coord // ); fn travel_hex( ref self: T, - travelling_entity_id: s0_eternum::alias::ID, - directions: Span + travelling_entity_id: s1_eternum::alias::ID, + directions: Span ); } @@ -16,22 +16,22 @@ mod travel_systems { use dojo::event::EventStorage; use dojo::model::ModelStorage; use dojo::world::WorldStorage; - use s0_eternum::alias::ID; - - use s0_eternum::constants::{WORLD_CONFIG_ID, TravelTypes, DEFAULT_NS}; - use s0_eternum::models::combat::Army; - use s0_eternum::models::config::{MapConfigImpl, TravelStaminaCostConfig, TravelFoodCostConfigImpl}; - use s0_eternum::models::map::Tile; - use s0_eternum::models::movable::{Movable, ArrivalTime}; - use s0_eternum::models::order::{Orders, OrdersTrait}; - use s0_eternum::models::owner::{Owner, EntityOwner, EntityOwnerTrait}; - use s0_eternum::models::position::{Coord, Position, TravelTrait, CoordTrait, Direction}; - use s0_eternum::models::quantity::{Quantity,}; - use s0_eternum::models::realm::Realm; - - use s0_eternum::models::season::SeasonImpl; - use s0_eternum::models::stamina::StaminaImpl; - use s0_eternum::models::weight::Weight; + use s1_eternum::alias::ID; + + use s1_eternum::constants::{WORLD_CONFIG_ID, TravelTypes, DEFAULT_NS}; + use s1_eternum::models::combat::Army; + use s1_eternum::models::config::{MapConfigImpl, TravelStaminaCostConfig, TravelFoodCostConfigImpl}; + use s1_eternum::models::map::Tile; + use s1_eternum::models::movable::{Movable, ArrivalTime}; + use s1_eternum::models::order::{Orders, OrdersTrait}; + use s1_eternum::models::owner::{Owner, EntityOwner, EntityOwnerTrait}; + use s1_eternum::models::position::{Coord, Position, TravelTrait, CoordTrait, Direction}; + use s1_eternum::models::quantity::{Quantity,}; + use s1_eternum::models::realm::Realm; + + use s1_eternum::models::season::SeasonImpl; + use s1_eternum::models::stamina::StaminaImpl; + use s1_eternum::models::weight::Weight; use starknet::ContractAddress; diff --git a/contracts/game/src/systems/transport/tests/travel_systems_tests.cairo b/contracts/game/src/systems/transport/tests/travel_systems_tests.cairo index 9867b78ff4..a9edd663b8 100644 --- a/contracts/game/src/systems/transport/tests/travel_systems_tests.cairo +++ b/contracts/game/src/systems/transport/tests/travel_systems_tests.cairo @@ -5,29 +5,29 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; -use s0_eternum::constants::LevelIndex; -use s0_eternum::constants::{REALM_LEVELING_CONFIG_ID, WORLD_CONFIG_ID}; - -use s0_eternum::constants::{ResourceTypes, TickIds, RESOURCE_PRECISION}; -use s0_eternum::models::combat::{Army, BattleSide, Troops}; -use s0_eternum::models::config::{TickConfig, MapConfig, StaminaConfig, StaminaRefillConfig, LevelingConfig, TickImpl}; -use s0_eternum::models::map::Tile; -use s0_eternum::models::movable::{Movable, ArrivalTime}; -use s0_eternum::models::order::{Orders, OrdersTrait}; -use s0_eternum::models::owner::{Owner, EntityOwner}; -use s0_eternum::models::position::CoordTrait; -use s0_eternum::models::position::{Coord, Position, Direction}; -use s0_eternum::models::realm::Realm; -use s0_eternum::models::resources::{Resource, ResourceCost}; - -use s0_eternum::systems::config::contracts::{config_systems, ILevelingConfigDispatcher, ILevelingConfigDispatcherTrait}; - -use s0_eternum::systems::transport::contracts::travel_systems::{ +use s1_eternum::alias::ID; +use s1_eternum::constants::LevelIndex; +use s1_eternum::constants::{REALM_LEVELING_CONFIG_ID, WORLD_CONFIG_ID}; + +use s1_eternum::constants::{ResourceTypes, TickIds, RESOURCE_PRECISION}; +use s1_eternum::models::combat::{Army, BattleSide, Troops}; +use s1_eternum::models::config::{TickConfig, MapConfig, StaminaConfig, StaminaRefillConfig, LevelingConfig, TickImpl}; +use s1_eternum::models::map::Tile; +use s1_eternum::models::movable::{Movable, ArrivalTime}; +use s1_eternum::models::order::{Orders, OrdersTrait}; +use s1_eternum::models::owner::{Owner, EntityOwner}; +use s1_eternum::models::position::CoordTrait; +use s1_eternum::models::position::{Coord, Position, Direction}; +use s1_eternum::models::realm::Realm; +use s1_eternum::models::resource::resource::{Resource, ResourceCost}; + +use s1_eternum::systems::config::contracts::{config_systems, ILevelingConfigDispatcher, ILevelingConfigDispatcherTrait}; + +use s1_eternum::systems::transport::contracts::travel_systems::{ travel_systems, ITravelSystemsDispatcher, ITravelSystemsDispatcherTrait }; -use s0_eternum::utils::testing::{ +use s1_eternum::utils::testing::{ world::spawn_eternum, systems::deploy_system, constants::{MAP_EXPLORE_TRAVEL_FISH_BURN_AMOUNT, MAP_EXPLORE_TRAVEL_WHEAT_BURN_AMOUNT}, config::{set_travel_and_explore_stamina_cost_config, set_travel_food_cost_config} diff --git a/contracts/game/src/utils/map/.prettierignore b/contracts/game/src/utils/map/.prettierignore new file mode 100644 index 0000000000..1ef0e16657 --- /dev/null +++ b/contracts/game/src/utils/map/.prettierignore @@ -0,0 +1,15 @@ +**/target +**/dist + +# ignore lock files +**/*-lock.yaml + +# ignore node_modules +**/node_modules + +# ignore manifests +**/manifests +**/manifest*.json + +# ignore eliza folder +**/eliza \ No newline at end of file diff --git a/contracts/game/src/utils/map/biomes.cairo b/contracts/game/src/utils/map/biomes.cairo index 7830bab83d..b4d629a2d3 100644 --- a/contracts/game/src/utils/map/biomes.cairo +++ b/contracts/game/src/utils/map/biomes.cairo @@ -2,7 +2,7 @@ use cubit::f128::procgen::simplex3; use cubit::f128::types::fixed::{FixedTrait, Fixed}; use cubit::f128::types::vec3::{Vec3, Vec3Trait}; -use s0_eternum::utils::map::constants::fixed_constants as fc; +use s1_eternum::utils::map::constants::fixed_constants as fc; #[derive(Copy, Drop, Serde, Introspect)] pub enum Biome { DeepOcean, @@ -68,7 +68,7 @@ fn bdepth(biome: Biome) -> Fixed { mod LEVEL { use cubit::f128::types::fixed::{FixedTrait, Fixed, ONE_u128}; - use s0_eternum::utils::map::constants::fixed_constants as fc; + use s1_eternum::utils::map::constants::fixed_constants as fc; fn DEEP_OCEAN() -> Fixed { fc::_0_25() diff --git a/contracts/game/src/utils/tasks/battlelord.cairo b/contracts/game/src/utils/tasks/battlelord.cairo index 3ffe8c47be..4b1a99aa81 100644 --- a/contracts/game/src/utils/tasks/battlelord.cairo +++ b/contracts/game/src/utils/tasks/battlelord.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::tasks::interface::TaskTrait; +use s1_eternum::utils::tasks::interface::TaskTrait; impl Battlelord of TaskTrait { #[inline] diff --git a/contracts/game/src/utils/tasks/breeder.cairo b/contracts/game/src/utils/tasks/breeder.cairo index 24fd500043..bec9887483 100644 --- a/contracts/game/src/utils/tasks/breeder.cairo +++ b/contracts/game/src/utils/tasks/breeder.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::tasks::interface::TaskTrait; +use s1_eternum::utils::tasks::interface::TaskTrait; impl Breeder of TaskTrait { #[inline] diff --git a/contracts/game/src/utils/tasks/builder.cairo b/contracts/game/src/utils/tasks/builder.cairo index 5b7947028c..26244bfcbf 100644 --- a/contracts/game/src/utils/tasks/builder.cairo +++ b/contracts/game/src/utils/tasks/builder.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::tasks::interface::TaskTrait; +use s1_eternum::utils::tasks::interface::TaskTrait; impl Builder of TaskTrait { #[inline] diff --git a/contracts/game/src/utils/tasks/claimer.cairo b/contracts/game/src/utils/tasks/claimer.cairo index 7357d69fbe..6434ca6630 100644 --- a/contracts/game/src/utils/tasks/claimer.cairo +++ b/contracts/game/src/utils/tasks/claimer.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::tasks::interface::TaskTrait; +use s1_eternum::utils::tasks::interface::TaskTrait; impl Claimer of TaskTrait { #[inline] diff --git a/contracts/game/src/utils/tasks/conqueror.cairo b/contracts/game/src/utils/tasks/conqueror.cairo index ac3dfa6b25..735dfb6d30 100644 --- a/contracts/game/src/utils/tasks/conqueror.cairo +++ b/contracts/game/src/utils/tasks/conqueror.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::tasks::interface::TaskTrait; +use s1_eternum::utils::tasks::interface::TaskTrait; impl Conqueror of TaskTrait { #[inline] diff --git a/contracts/game/src/utils/tasks/discoverer.cairo b/contracts/game/src/utils/tasks/discoverer.cairo index 34a004c0ee..426a2533a4 100644 --- a/contracts/game/src/utils/tasks/discoverer.cairo +++ b/contracts/game/src/utils/tasks/discoverer.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::tasks::interface::TaskTrait; +use s1_eternum::utils::tasks::interface::TaskTrait; impl Discoverer of TaskTrait { #[inline] diff --git a/contracts/game/src/utils/tasks/explorer.cairo b/contracts/game/src/utils/tasks/explorer.cairo index 3cabfbeb9c..beb954ada2 100644 --- a/contracts/game/src/utils/tasks/explorer.cairo +++ b/contracts/game/src/utils/tasks/explorer.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::tasks::interface::TaskTrait; +use s1_eternum::utils::tasks::interface::TaskTrait; impl Explorer of TaskTrait { #[inline] diff --git a/contracts/game/src/utils/tasks/index.cairo b/contracts/game/src/utils/tasks/index.cairo index 9915225703..27e3915e8e 100644 --- a/contracts/game/src/utils/tasks/index.cairo +++ b/contracts/game/src/utils/tasks/index.cairo @@ -4,7 +4,7 @@ use achievement::types::task::{Task as BushidoTask, TaskTrait as BushidoTaskTrai // Internal imports -use s0_eternum::utils::tasks; +use s1_eternum::utils::tasks; // Types diff --git a/contracts/game/src/utils/tasks/maximalist.cairo b/contracts/game/src/utils/tasks/maximalist.cairo index 3444d33452..b8437b15bd 100644 --- a/contracts/game/src/utils/tasks/maximalist.cairo +++ b/contracts/game/src/utils/tasks/maximalist.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::tasks::interface::TaskTrait; +use s1_eternum::utils::tasks::interface::TaskTrait; impl Maximalist of TaskTrait { #[inline] diff --git a/contracts/game/src/utils/tasks/opportunist.cairo b/contracts/game/src/utils/tasks/opportunist.cairo index 8e9e0d3a7a..9e2bb851fb 100644 --- a/contracts/game/src/utils/tasks/opportunist.cairo +++ b/contracts/game/src/utils/tasks/opportunist.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::tasks::interface::TaskTrait; +use s1_eternum::utils::tasks::interface::TaskTrait; impl Opportunist of TaskTrait { #[inline] diff --git a/contracts/game/src/utils/tasks/ruler.cairo b/contracts/game/src/utils/tasks/ruler.cairo index c564bc6fe3..ed1194b3f8 100644 --- a/contracts/game/src/utils/tasks/ruler.cairo +++ b/contracts/game/src/utils/tasks/ruler.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::tasks::interface::TaskTrait; +use s1_eternum::utils::tasks::interface::TaskTrait; impl Ruler of TaskTrait { #[inline] diff --git a/contracts/game/src/utils/tasks/squire.cairo b/contracts/game/src/utils/tasks/squire.cairo index 78b84da9c2..b8358c017a 100644 --- a/contracts/game/src/utils/tasks/squire.cairo +++ b/contracts/game/src/utils/tasks/squire.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::tasks::interface::TaskTrait; +use s1_eternum::utils::tasks::interface::TaskTrait; impl Squire of TaskTrait { #[inline] diff --git a/contracts/game/src/utils/tasks/warlord.cairo b/contracts/game/src/utils/tasks/warlord.cairo index 1f969e4345..a79f8f78a2 100644 --- a/contracts/game/src/utils/tasks/warlord.cairo +++ b/contracts/game/src/utils/tasks/warlord.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::tasks::interface::TaskTrait; +use s1_eternum::utils::tasks::interface::TaskTrait; impl Warlord of TaskTrait { #[inline] diff --git a/contracts/game/src/utils/testing/config.cairo b/contracts/game/src/utils/testing/config.cairo index 88edf09d70..4246d77a13 100644 --- a/contracts/game/src/utils/testing/config.cairo +++ b/contracts/game/src/utils/testing/config.cairo @@ -1,16 +1,16 @@ use core::array::{SpanTrait, ArrayTrait, SpanIndex}; use core::integer::BoundedU128; use core::ops::index::IndexView; -use s0_eternum::constants::{ +use s1_eternum::constants::{ ResourceTypes, RESOURCE_PRECISION, WORLD_CONFIG_ID, ARMY_ENTITY_TYPE, DONKEY_ENTITY_TYPE, TickIds, TravelTypes }; -use s0_eternum::models::{ +use s1_eternum::models::{ config::{TroopConfig, BattleConfig, CapacityConfig, CapacityConfigCategory, MapConfig, TravelFoodCostConfig}, combat::Troops, }; -use s0_eternum::systems::config::contracts::{ +use s1_eternum::systems::config::contracts::{ ITroopConfigDispatcher, ITroopConfigDispatcherTrait, IStaminaConfigDispatcher, IStaminaConfigDispatcherTrait, IStaminaRefillConfigDispatcher, IStaminaRefillConfigDispatcherTrait, ICapacityConfigDispatcher, ICapacityConfigDispatcherTrait, ITransportConfigDispatcher, ITransportConfigDispatcherTrait, @@ -23,7 +23,7 @@ use s0_eternum::systems::config::contracts::{ IRealmLevelConfigDispatcher, IRealmLevelConfigDispatcherTrait }; -use s0_eternum::utils::testing::constants::{ +use s1_eternum::utils::testing::constants::{ get_resource_weights, MAP_EXPLORE_EXPLORATION_WHEAT_BURN_AMOUNT, MAP_EXPLORE_EXPLORATION_FISH_BURN_AMOUNT, MAP_EXPLORE_TRAVEL_WHEAT_BURN_AMOUNT, MAP_EXPLORE_TRAVEL_FISH_BURN_AMOUNT, MAP_EXPLORE_RANDOM_MINT_AMOUNT, SHARDS_MINE_FAIL_PROBABILITY_WEIGHT, LORDS_COST, LP_FEES_NUM, LP_FEE_DENOM, STOREHOUSE_CAPACITY_GRAMS, diff --git a/contracts/game/src/utils/testing/constants.cairo b/contracts/game/src/utils/testing/constants.cairo index 4e43403f36..2079dba2be 100644 --- a/contracts/game/src/utils/testing/constants.cairo +++ b/contracts/game/src/utils/testing/constants.cairo @@ -1,7 +1,7 @@ -use s0_eternum::constants::{ResourceTypes, RESOURCE_PRECISION}; +use s1_eternum::constants::{ResourceTypes, RESOURCE_PRECISION}; -use s0_eternum::models::owner::{Owner, OwnerImpl, OwnerTrait}; +use s1_eternum::models::owner::{Owner, OwnerImpl, OwnerTrait}; const MAP_EXPLORE_EXPLORATION_WHEAT_BURN_AMOUNT: u128 = 1; const MAP_EXPLORE_EXPLORATION_FISH_BURN_AMOUNT: u128 = 1; diff --git a/contracts/game/src/utils/testing/general.cairo b/contracts/game/src/utils/testing/general.cairo index cbd3102471..8001b05ff5 100644 --- a/contracts/game/src/utils/testing/general.cairo +++ b/contracts/game/src/utils/testing/general.cairo @@ -5,18 +5,18 @@ use dojo::model::{ModelStorage, ModelValueStorage, ModelStorageTest}; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo::world::{WorldStorage, WorldStorageTrait}; use dojo_cairo_test::{NamespaceDef, TestResource, ContractDefTrait}; -use s0_eternum::alias::ID; +use s1_eternum::alias::ID; -use s0_eternum::constants::{MAX_REALMS_PER_ADDRESS}; -use s0_eternum::models::resources::{Resource, ResourceImpl, ResourceTrait}; -use s0_eternum::models::{map::Tile, position::{Position, Coord, CoordTrait}, combat::Troops}; -use s0_eternum::systems::{ +use s1_eternum::constants::{MAX_REALMS_PER_ADDRESS}; +use s1_eternum::models::resource::resource::{Resource, ResourceImpl, ResourceTrait}; +use s1_eternum::models::{map::Tile, position::{Position, Coord, CoordTrait}, combat::Troops}; +use s1_eternum::systems::{ hyperstructure::contracts::{IHyperstructureSystemsDispatcher, IHyperstructureSystemsDispatcherTrait}, realm::contracts::realm_systems::InternalRealmLogicImpl, combat::contracts::battle_systems::{battle_systems, IBattleContractDispatcher, IBattleContractDispatcherTrait}, combat::contracts::troop_systems::{troop_systems, ITroopContractDispatcher, ITroopContractDispatcherTrait}, }; -use s0_eternum::utils::map::biomes::Biome; +use s1_eternum::utils::map::biomes::Biome; fn spawn_realm(ref world: WorldStorage, realm_id: ID, coord: Coord) -> ID { diff --git a/contracts/game/src/utils/testing/systems.cairo b/contracts/game/src/utils/testing/systems.cairo index f2cfb86701..1a0d5bbb5e 100644 --- a/contracts/game/src/utils/testing/systems.cairo +++ b/contracts/game/src/utils/testing/systems.cairo @@ -4,9 +4,9 @@ use dojo::world::WorldStorage; use dojo::world::WorldStorageTrait; use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo_cairo_test::deploy_contract; -use s0_eternum::systems::config::contracts::config_systems; +use s1_eternum::systems::config::contracts::config_systems; -use s0_eternum::systems::{ +use s1_eternum::systems::{ realm::contracts::{realm_systems, IRealmSystemsDispatcher, IRealmSystemsDispatcherTrait}, combat::contracts::battle_systems::{ battle_systems, IBattleContractDispatcher, IBattleContractDispatcherTrait, battle_pillage_systems, diff --git a/contracts/game/src/utils/testing/world.cairo b/contracts/game/src/utils/testing/world.cairo index 04ea30efad..0df6fdfa71 100644 --- a/contracts/game/src/utils/testing/world.cairo +++ b/contracts/game/src/utils/testing/world.cairo @@ -3,19 +3,17 @@ use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; use dojo_cairo_test::{ spawn_test_world, NamespaceDef, TestResource, ContractDefTrait, ContractDef, WorldStorageTestTrait }; -use s0_eternum::constants::{DEFAULT_NS, DEFAULT_NS_STR}; -use s0_eternum::models::bank::bank::{m_Bank}; -use s0_eternum::models::bank::liquidity::m_Liquidity; -use s0_eternum::models::bank::market::m_Market; -use s0_eternum::models::buildings::m_BuildingQuantityv2; -use s0_eternum::models::buildings::{m_Building}; -use s0_eternum::models::capacity::{m_CapacityCategory}; -use s0_eternum::models::combat::m_Army; -use s0_eternum::models::combat::m_Battle; -use s0_eternum::models::combat::m_Health; -use s0_eternum::models::combat::m_Protectee; -use s0_eternum::models::combat::m_Protector; -use s0_eternum::models::config::{ +use s1_eternum::constants::{DEFAULT_NS, DEFAULT_NS_STR}; +use s1_eternum::models::bank::bank::{m_Bank}; +use s1_eternum::models::bank::liquidity::m_Liquidity; +use s1_eternum::models::bank::market::m_Market; +use s1_eternum::models::capacity::{m_CapacityCategory}; +use s1_eternum::models::combat::m_Army; +use s1_eternum::models::combat::m_Battle; +use s1_eternum::models::combat::m_Health; +use s1_eternum::models::combat::m_Protectee; +use s1_eternum::models::combat::m_Protector; +use s1_eternum::models::config::{ m_WorldConfig, m_SpeedConfig, m_CapacityConfig, m_WeightConfig, m_HyperstructureResourceConfig, m_StaminaConfig, m_StaminaRefillConfig, m_TickConfig, m_MapConfig, m_MercenariesConfig, m_LevelingConfig, m_ProductionConfig, m_BankConfig, m_BuildingConfig, m_TroopConfig, m_BattleConfig, m_BuildingCategoryPopConfig, m_PopulationConfig, @@ -23,70 +21,74 @@ use s0_eternum::models::config::{ m_ResourceBridgeWhitelistConfig, m_SettlementConfig, m_RealmLevelConfig, m_RealmMaxLevelConfig, m_TravelFoodCostConfig, m_QuestRewardConfig, m_QuestConfig }; -use s0_eternum::models::guild::{m_Guild, m_GuildMember, m_GuildWhitelist}; -use s0_eternum::models::hyperstructure::{m_Progress, m_Contribution, m_Hyperstructure, m_Epoch}; -use s0_eternum::models::map::m_Tile; -use s0_eternum::models::movable::{m_Movable, m_ArrivalTime}; -use s0_eternum::models::name::{m_AddressName}; -use s0_eternum::models::name::{m_EntityName}; -use s0_eternum::models::order::m_Orders; -use s0_eternum::models::owner::m_EntityOwner; -use s0_eternum::models::owner::{m_Owner}; -use s0_eternum::models::population::m_Population; -use s0_eternum::models::position::{m_Position}; -use s0_eternum::models::production::{m_Production, m_ProductionInput, m_ProductionOutput, m_ProductionDeadline}; -use s0_eternum::models::quantity::{m_Quantity, m_QuantityTracker}; -use s0_eternum::models::quest::{m_Quest, m_QuestBonus}; -use s0_eternum::models::realm::{m_Realm}; -use s0_eternum::models::resources::m_DetachedResource; -use s0_eternum::models::resources::m_OwnedResourcesTracker; -use s0_eternum::models::resources::m_ResourceAllowance; -use s0_eternum::models::resources::m_ResourceTransferLock; -use s0_eternum::models::resources::{m_ResourceCost}; -use s0_eternum::models::resources::{m_Resource}; -use s0_eternum::models::season::m_Leaderboard; -use s0_eternum::models::season::m_LeaderboardEntry; -use s0_eternum::models::season::m_LeaderboardRegisterContribution; -use s0_eternum::models::season::m_LeaderboardRegisterShare; -use s0_eternum::models::season::m_LeaderboardRegistered; -use s0_eternum::models::season::m_LeaderboardRewardClaimed; -use s0_eternum::models::season::m_Season; -use s0_eternum::models::stamina::m_Stamina; -use s0_eternum::models::structure::m_Structure; -use s0_eternum::models::structure::m_StructureCount; -use s0_eternum::models::trade::{m_Status, m_Trade}; -use s0_eternum::models::weight::m_Weight; +use s1_eternum::models::guild::{m_Guild, m_GuildMember, m_GuildWhitelist}; +use s1_eternum::models::hyperstructure::{m_Progress, m_Contribution, m_Hyperstructure, m_Epoch}; +use s1_eternum::models::map::m_Tile; +use s1_eternum::models::movable::{m_Movable, m_ArrivalTime}; +use s1_eternum::models::name::{m_AddressName}; +use s1_eternum::models::name::{m_EntityName}; +use s1_eternum::models::order::m_Orders; +use s1_eternum::models::owner::m_EntityOwner; +use s1_eternum::models::owner::{m_Owner}; +use s1_eternum::models::population::m_Population; +use s1_eternum::models::position::{m_Position}; +use s1_eternum::models::quantity::{m_Quantity, m_QuantityTracker}; +use s1_eternum::models::quest::{m_Quest}; +use s1_eternum::models::realm::{m_Realm}; +use s1_eternum::models::resource::production::building::m_BuildingQuantityv2; +use s1_eternum::models::resource::production::building::{m_Building}; +use s1_eternum::models::resource::production::production::{ + m_Production, m_ProductionInput, m_ProductionOutput, m_ProductionDeadline +}; +use s1_eternum::models::resource::resource::m_DetachedResource; +use s1_eternum::models::resource::resource::m_OwnedResourcesTracker; +use s1_eternum::models::resource::resource::m_ResourceAllowance; +use s1_eternum::models::resource::resource::m_ResourceTransferLock; +use s1_eternum::models::resource::resource::{m_ResourceCost}; +use s1_eternum::models::resource::resource::{m_Resource}; +use s1_eternum::models::season::m_Leaderboard; +use s1_eternum::models::season::m_LeaderboardEntry; +use s1_eternum::models::season::m_LeaderboardRegisterContribution; +use s1_eternum::models::season::m_LeaderboardRegisterShare; +use s1_eternum::models::season::m_LeaderboardRegistered; +use s1_eternum::models::season::m_LeaderboardRewardClaimed; +use s1_eternum::models::season::m_Season; +use s1_eternum::models::stamina::m_Stamina; +use s1_eternum::models::structure::m_Structure; +use s1_eternum::models::structure::m_StructureCount; +use s1_eternum::models::trade::{m_Status, m_Trade}; +use s1_eternum::models::weight::m_Weight; -use s0_eternum::systems::bank::contracts::bank::bank_systems; -use s0_eternum::systems::bank::contracts::liquidity::liquidity_systems; -use s0_eternum::systems::bank::contracts::swap::swap_systems; +use s1_eternum::systems::bank::contracts::bank::bank_systems; +use s1_eternum::systems::bank::contracts::liquidity::liquidity_systems; +use s1_eternum::systems::bank::contracts::swap::swap_systems; -use s0_eternum::systems::buildings::contracts::building_systems; -use s0_eternum::systems::combat::contracts::battle_systems::{ +use s1_eternum::systems::buildings::contracts::production_systems; +use s1_eternum::systems::combat::contracts::battle_systems::{ battle_systems, battle_pillage_systems, battle_utils_systems }; -use s0_eternum::systems::combat::contracts::troop_systems::troop_systems; +use s1_eternum::systems::combat::contracts::troop_systems::troop_systems; -use s0_eternum::systems::config::contracts::config_systems; -use s0_eternum::systems::dev::contracts::bank::dev_bank_systems; -use s0_eternum::systems::dev::contracts::realm::dev_realm_systems; -use s0_eternum::systems::dev::contracts::resource::dev_resource_systems; +use s1_eternum::systems::config::contracts::config_systems; +use s1_eternum::systems::dev::contracts::bank::dev_bank_systems; +use s1_eternum::systems::dev::contracts::realm::dev_realm_systems; +use s1_eternum::systems::dev::contracts::resource::dev_resource_systems; -use s0_eternum::systems::guild::contracts::guild_systems; -use s0_eternum::systems::hyperstructure::contracts::hyperstructure_systems; -use s0_eternum::systems::map::contracts::{map_systems}; -use s0_eternum::systems::map::map_generation::map_generation_systems; -use s0_eternum::systems::name::contracts::name_systems; -use s0_eternum::systems::ownership::contracts::ownership_systems; -use s0_eternum::systems::realm::contracts::realm_systems; -use s0_eternum::systems::resources::contracts::{ +use s1_eternum::systems::guild::contracts::guild_systems; +use s1_eternum::systems::hyperstructure::contracts::hyperstructure_systems; +use s1_eternum::systems::map::contracts::{map_systems}; +use s1_eternum::systems::map::map_generation::map_generation_systems; +use s1_eternum::systems::name::contracts::name_systems; +use s1_eternum::systems::ownership::contracts::ownership_systems; +use s1_eternum::systems::realm::contracts::realm_systems; +use s1_eternum::systems::resources::contracts::{ resource_bridge_systems::resource_bridge_systems, resource_systems::resource_systems }; -use s0_eternum::systems::season::contracts::season_systems; -use s0_eternum::systems::trade::contracts::trade_systems::trade_systems; -use s0_eternum::systems::transport::contracts::donkey_systems::donkey_systems; -use s0_eternum::systems::transport::contracts::travel_systems::travel_systems; +use s1_eternum::systems::season::contracts::season_systems; +use s1_eternum::systems::trade::contracts::trade_systems::trade_systems; +use s1_eternum::systems::transport::contracts::donkey_systems::donkey_systems; +use s1_eternum::systems::transport::contracts::travel_systems::travel_systems; use starknet::ContractAddress; use starknet::contract_address_const; @@ -158,7 +160,6 @@ fn namespace_def() -> NamespaceDef { TestResource::Model(m_Quantity::TEST_CLASS_HASH.try_into().unwrap()), TestResource::Model(m_QuantityTracker::TEST_CLASS_HASH.try_into().unwrap()), TestResource::Model(m_Quest::TEST_CLASS_HASH.try_into().unwrap()), - TestResource::Model(m_QuestBonus::TEST_CLASS_HASH.try_into().unwrap()), TestResource::Model(m_Realm::TEST_CLASS_HASH.try_into().unwrap()), TestResource::Model(m_DetachedResource::TEST_CLASS_HASH.try_into().unwrap()), TestResource::Model(m_OwnedResourcesTracker::TEST_CLASS_HASH.try_into().unwrap()), @@ -198,20 +199,20 @@ fn namespace_def() -> NamespaceDef { TestResource::Event(trade_systems::e_CancelOrder::TEST_CLASS_HASH.try_into().unwrap()), TestResource::Event(donkey_systems::e_BurnDonkey::TEST_CLASS_HASH.try_into().unwrap()), TestResource::Event(travel_systems::e_Travel::TEST_CLASS_HASH.try_into().unwrap()), - TestResource::Event(s0_eternum::models::event::e_BattleStartData::TEST_CLASS_HASH.try_into().unwrap()), - TestResource::Event(s0_eternum::models::event::e_BattleJoinData::TEST_CLASS_HASH.try_into().unwrap()), - TestResource::Event(s0_eternum::models::event::e_BattleLeaveData::TEST_CLASS_HASH.try_into().unwrap()), - TestResource::Event(s0_eternum::models::event::e_BattleClaimData::TEST_CLASS_HASH.try_into().unwrap()), - TestResource::Event(s0_eternum::models::event::e_BattlePillageData::TEST_CLASS_HASH.try_into().unwrap()), - TestResource::Event(s0_eternum::models::event::e_SettleRealmData::TEST_CLASS_HASH.try_into().unwrap()), - TestResource::Event(s0_eternum::models::event::e_CreateGuild::TEST_CLASS_HASH.try_into().unwrap()), - TestResource::Event(s0_eternum::models::event::e_JoinGuild::TEST_CLASS_HASH.try_into().unwrap()), + TestResource::Event(s1_eternum::models::event::e_BattleStartData::TEST_CLASS_HASH.try_into().unwrap()), + TestResource::Event(s1_eternum::models::event::e_BattleJoinData::TEST_CLASS_HASH.try_into().unwrap()), + TestResource::Event(s1_eternum::models::event::e_BattleLeaveData::TEST_CLASS_HASH.try_into().unwrap()), + TestResource::Event(s1_eternum::models::event::e_BattleClaimData::TEST_CLASS_HASH.try_into().unwrap()), + TestResource::Event(s1_eternum::models::event::e_BattlePillageData::TEST_CLASS_HASH.try_into().unwrap()), + TestResource::Event(s1_eternum::models::event::e_SettleRealmData::TEST_CLASS_HASH.try_into().unwrap()), + TestResource::Event(s1_eternum::models::event::e_CreateGuild::TEST_CLASS_HASH.try_into().unwrap()), + TestResource::Event(s1_eternum::models::event::e_JoinGuild::TEST_CLASS_HASH.try_into().unwrap()), TestResource::Event(achievement::events::index::e_TrophyCreation::TEST_CLASS_HASH.try_into().unwrap()), TestResource::Event(achievement::events::index::e_TrophyProgression::TEST_CLASS_HASH.try_into().unwrap()), TestResource::Contract(bank_systems::TEST_CLASS_HASH), TestResource::Contract(liquidity_systems::TEST_CLASS_HASH), TestResource::Contract(swap_systems::TEST_CLASS_HASH), - TestResource::Contract(building_systems::TEST_CLASS_HASH), + TestResource::Contract(production_systems::TEST_CLASS_HASH), TestResource::Contract(battle_systems::TEST_CLASS_HASH), TestResource::Contract(battle_utils_systems::TEST_CLASS_HASH), TestResource::Contract(battle_pillage_systems::TEST_CLASS_HASH), @@ -247,7 +248,7 @@ fn contract_defs() -> Span { .with_writer_of([dojo::utils::bytearray_hash(DEFAULT_NS())].span()), ContractDefTrait::new(DEFAULT_NS(), @"swap_systems") .with_writer_of([dojo::utils::bytearray_hash(DEFAULT_NS())].span()), - ContractDefTrait::new(DEFAULT_NS(), @"building_systems") + ContractDefTrait::new(DEFAULT_NS(), @"production_systems") .with_writer_of([dojo::utils::bytearray_hash(DEFAULT_NS())].span()), ContractDefTrait::new(DEFAULT_NS(), @"battle_systems") .with_writer_of([dojo::utils::bytearray_hash(DEFAULT_NS())].span()), diff --git a/contracts/game/src/utils/trophies/battlelord.cairo b/contracts/game/src/utils/trophies/battlelord.cairo index 20d318c3c9..50dff910dc 100644 --- a/contracts/game/src/utils/trophies/battlelord.cairo +++ b/contracts/game/src/utils/trophies/battlelord.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; +use s1_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; impl Battlelord of TrophyTrait { #[inline] diff --git a/contracts/game/src/utils/trophies/breeder.cairo b/contracts/game/src/utils/trophies/breeder.cairo index e0e3e4958a..29ee987909 100644 --- a/contracts/game/src/utils/trophies/breeder.cairo +++ b/contracts/game/src/utils/trophies/breeder.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; +use s1_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; impl Breeder of TrophyTrait { #[inline] diff --git a/contracts/game/src/utils/trophies/conqueror.cairo b/contracts/game/src/utils/trophies/conqueror.cairo index f2f0e93de8..a9542edcc5 100644 --- a/contracts/game/src/utils/trophies/conqueror.cairo +++ b/contracts/game/src/utils/trophies/conqueror.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; +use s1_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; impl Conqueror of TrophyTrait { #[inline] diff --git a/contracts/game/src/utils/trophies/explorer.cairo b/contracts/game/src/utils/trophies/explorer.cairo index 63ab785aaa..d21c0079a1 100644 --- a/contracts/game/src/utils/trophies/explorer.cairo +++ b/contracts/game/src/utils/trophies/explorer.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; +use s1_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; impl Explorer of TrophyTrait { #[inline] diff --git a/contracts/game/src/utils/trophies/index.cairo b/contracts/game/src/utils/trophies/index.cairo index 201ab28ce1..1e015d1ef3 100644 --- a/contracts/game/src/utils/trophies/index.cairo +++ b/contracts/game/src/utils/trophies/index.cairo @@ -1,5 +1,5 @@ use achievement::types::task::{Task as BushidoTask}; -use s0_eternum::utils::trophies; +use s1_eternum::utils::trophies; // Constants diff --git a/contracts/game/src/utils/trophies/interface.cairo b/contracts/game/src/utils/trophies/interface.cairo index ef538435fa..4b1499fa26 100644 --- a/contracts/game/src/utils/trophies/interface.cairo +++ b/contracts/game/src/utils/trophies/interface.cairo @@ -1,5 +1,5 @@ use achievement::types::task::{Task as BushidoTask}; -use s0_eternum::utils::tasks::index::{Task, TaskTrait}; +use s1_eternum::utils::tasks::index::{Task, TaskTrait}; trait TrophyTrait { fn identifier(level: u8) -> felt252; diff --git a/contracts/game/src/utils/trophies/maximalist.cairo b/contracts/game/src/utils/trophies/maximalist.cairo index 90e4c9988f..22db541541 100644 --- a/contracts/game/src/utils/trophies/maximalist.cairo +++ b/contracts/game/src/utils/trophies/maximalist.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; +use s1_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; impl Maximalist of TrophyTrait { #[inline] diff --git a/contracts/game/src/utils/trophies/opportunist.cairo b/contracts/game/src/utils/trophies/opportunist.cairo index 25aa715e4c..f93773bc46 100644 --- a/contracts/game/src/utils/trophies/opportunist.cairo +++ b/contracts/game/src/utils/trophies/opportunist.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; +use s1_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; impl Opportunist of TrophyTrait { #[inline] diff --git a/contracts/game/src/utils/trophies/ruler.cairo b/contracts/game/src/utils/trophies/ruler.cairo index a3700afbf7..0c7bc8c89b 100644 --- a/contracts/game/src/utils/trophies/ruler.cairo +++ b/contracts/game/src/utils/trophies/ruler.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; +use s1_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; impl Ruler of TrophyTrait { #[inline] diff --git a/contracts/game/src/utils/trophies/squire.cairo b/contracts/game/src/utils/trophies/squire.cairo index 617b5b1946..8ce1885e1e 100644 --- a/contracts/game/src/utils/trophies/squire.cairo +++ b/contracts/game/src/utils/trophies/squire.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; +use s1_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; impl Squire of TrophyTrait { #[inline] diff --git a/contracts/game/src/utils/trophies/strategist.cairo b/contracts/game/src/utils/trophies/strategist.cairo index 9a3a638c5b..ce132a38ff 100644 --- a/contracts/game/src/utils/trophies/strategist.cairo +++ b/contracts/game/src/utils/trophies/strategist.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; +use s1_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; impl Strategist of TrophyTrait { #[inline] diff --git a/contracts/game/src/utils/trophies/warlord.cairo b/contracts/game/src/utils/trophies/warlord.cairo index be437e8c47..40da7add1d 100644 --- a/contracts/game/src/utils/trophies/warlord.cairo +++ b/contracts/game/src/utils/trophies/warlord.cairo @@ -1,4 +1,4 @@ -use s0_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; +use s1_eternum::utils::trophies::interface::{TrophyTrait, BushidoTask, Task, TaskTrait}; impl Warlord of TrophyTrait { #[inline] diff --git a/contracts/game/torii-local.toml b/contracts/game/torii-local.toml new file mode 100644 index 0000000000..84c2674a99 --- /dev/null +++ b/contracts/game/torii-local.toml @@ -0,0 +1,19 @@ +# db_dir = "./torii-db" + +[indexing] + +events_chunk_size = 1024 # Size of events page to fetch +blocks_chunk_size = 10240 # Blocks to process before DB commit +pending = true # Enable indexing pending blocks +polling_interval = 500 # Polling interval in milliseconds +max_concurrent_tasks = 100 # Maximum concurrent indexing tasks +world_block = 0 +contracts = [ + "erc721:0x057675b9c0bd62b096a2e15502a37b290fa766ead21c33eda42993e48a714b80", + "erc721:0x07ae27a31bb6526e3de9cf02f081f6ce0615ac12a6d7b85ee58b8ad7947a2809", + "erc20:0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49", +] + +[events] +raw = true +historical = ["s1_eternum-TrophyCreation", "s1_eternum-TrophyProgression"] diff --git a/contracts/game/torii.toml b/contracts/game/torii-mainnet.toml similarity index 90% rename from contracts/game/torii.toml rename to contracts/game/torii-mainnet.toml index 7345efce55..be4f29246b 100644 --- a/contracts/game/torii.toml +++ b/contracts/game/torii-mainnet.toml @@ -16,4 +16,4 @@ contracts = [ [events] raw = true -historical = ["s0_eternum-TrophyCreation", "s0_eternum-TrophyProgression"] +historical = ["s1_eternum-TrophyCreation", "s1_eternum-TrophyProgression"] diff --git a/contracts/game/torii-sepolia.toml b/contracts/game/torii-sepolia.toml index e84d76f298..72c2188eae 100644 --- a/contracts/game/torii-sepolia.toml +++ b/contracts/game/torii-sepolia.toml @@ -15,4 +15,4 @@ contracts = [ [events] raw = true -historical = ["s0_eternum-TrophyCreation", "s0_eternum-TrophyProgression"] +historical = ["s1_eternum-TrophyCreation", "s1_eternum-TrophyProgression"] diff --git a/contracts/game/torii-slot.toml b/contracts/game/torii-slot.toml new file mode 100644 index 0000000000..84c2674a99 --- /dev/null +++ b/contracts/game/torii-slot.toml @@ -0,0 +1,19 @@ +# db_dir = "./torii-db" + +[indexing] + +events_chunk_size = 1024 # Size of events page to fetch +blocks_chunk_size = 10240 # Blocks to process before DB commit +pending = true # Enable indexing pending blocks +polling_interval = 500 # Polling interval in milliseconds +max_concurrent_tasks = 100 # Maximum concurrent indexing tasks +world_block = 0 +contracts = [ + "erc721:0x057675b9c0bd62b096a2e15502a37b290fa766ead21c33eda42993e48a714b80", + "erc721:0x07ae27a31bb6526e3de9cf02f081f6ce0615ac12a6d7b85ee58b8ad7947a2809", + "erc20:0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49", +] + +[events] +raw = true +historical = ["s1_eternum-TrophyCreation", "s1_eternum-TrophyProgression"] diff --git a/contracts/season_pass/ext/scripts/deploy.sh b/contracts/season_pass/ext/scripts/deploy.sh new file mode 100755 index 0000000000..6e830ceb03 --- /dev/null +++ b/contracts/season_pass/ext/scripts/deploy.sh @@ -0,0 +1,92 @@ +#!/bin/bash + +# ============================================================================= +# Season Pass Deployment Script +# ============================================================================= +# +# DESCRIPTION: +# This script handles the deployment process for the Season Pass smart +# contracts. It manages the build process using Scarb and executes the +# deployment using Bun. +# +# USAGE: +# ./deploy.sh [network] - Builds and deploys the Season Pass contracts +# where [network] is optional and defaults to 'local' +# Examples: +# ./deploy.sh - Deploys to local +# ./deploy.sh local - Deploys to local +# ./deploy.sh slot - Deploys to slot +# ./deploy.sh sepolia - Deploys to sepolia +# ./deploy.sh mainnet - Deploys to mainnet +# +# PROCESS: +# 1. Builds the contracts using Scarb in release mode +# 2. Changes to deployment directory +# 3. Installs dependencies using Bun +# 4. Executes the deployment script for specified network +# +# REQUIREMENTS: +# - Scarb (Starknet contract compiler) +# - Bun (JavaScript runtime) +# - Node.js dependencies in deployment directory +# +# ============================================================================= + + +# Fallback colors +GREEN='\033[0;32m' +BLUE='\033[0;34m' +RED='\033[0;31m' +NC='\033[0m' + + +#============================================================================== +# ERROR HANDLING +#============================================================================== + +set -e # Exit on error +set -o pipefail # Exit if any command in a pipe fails + +error_handler() { + echo -e "\n${RED}► Error: Command failed at line $1${NC}" + exit 1 +} + +trap 'error_handler ${LINENO}' ERR + +#============================================================================== +# MAIN EXECUTION +#============================================================================== + +echo -e "\n" +echo -e "${BLUE}╔══════════════════════════════════════════════════════════╗${NC}" +echo -e "${BLUE}║ Building Season Pass Contracts ║${NC}" +echo -e "${BLUE}╚══════════════════════════════════════════════════════════╝${NC}" +echo -e "\n" + +# Navigate to root contract directory +echo -e "${GREEN}► Navigating to season pass contract root directory...${NC}" +cd ../../ + +# Build contracts +echo -e "${GREEN}► Building season pass contracts with Scarb...${NC}" +scarb --release build + +# Return to script directory +cd - > /dev/null + +# Navigate to deployment directory +echo -e "${GREEN}► Installing season pass deployment dependencies...${NC}" +cd deployment +bun install + +# Get network parameter, default to 'local' if not provided +NETWORK=${1:-local} + +echo -e "${BLUE}► Deploying to ${NETWORK}${NC}" + +# Execute deployment +echo -e "${GREEN}► Executing season pass deployment script...${NC}" +bun run deploy:${NETWORK} + +echo -e "\n${GREEN}✔ Season Pass deployment process completed on ${NETWORK}${NC}\n" \ No newline at end of file diff --git a/contracts/season_pass/ext/scripts/deployment/.env.example b/contracts/season_pass/ext/scripts/deployment/.env.example deleted file mode 100644 index 907afdbbdd..0000000000 --- a/contracts/season_pass/ext/scripts/deployment/.env.example +++ /dev/null @@ -1,8 +0,0 @@ - -export RPC_API_KEY=http://127.0.0.1:5050 -export STARKNET_NETWORK=local -export STARKNET_ACCOUNT_ADDRESS=0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec -export STARKNET_ACCOUNT_PRIVATE_KEY=0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912 - -export DEPLOYMENT_ADDRESSES_FOLDER=addresses/dev # change to addresses/prod for prod -export SEASON_PASS_ADMIN=0x1a3e37c77be7de91a9177c6b57956faa6da25607e567b10a25cf64fea5e533b # change to prod admin address \ No newline at end of file diff --git a/contracts/season_pass/ext/scripts/deployment/.env.production b/contracts/season_pass/ext/scripts/deployment/.env.production deleted file mode 100644 index ee494d4a16..0000000000 --- a/contracts/season_pass/ext/scripts/deployment/.env.production +++ /dev/null @@ -1,7 +0,0 @@ - -export RPC_API_KEY=https://api.cartridge.gg/x/starknet/mainnet -export STARKNET_NETWORK=mainnet -export STARKNET_ACCOUNT_ADDRESS=0x0 -export STARKNET_ACCOUNT_PRIVATE_KEY=0x0 -export DEPLOYMENT_ADDRESSES_FOLDER=addresses/prod -export SEASON_PASS_ADMIN=0x0 \ No newline at end of file diff --git a/contracts/season_pass/ext/scripts/deployment/.env.sepolia b/contracts/season_pass/ext/scripts/deployment/.env.sepolia deleted file mode 100644 index 06cc02ccbc..0000000000 --- a/contracts/season_pass/ext/scripts/deployment/.env.sepolia +++ /dev/null @@ -1,6 +0,0 @@ -RPC_API_KEY=https://api.cartridge.gg/x/starknet/sepolia -STARKNET_NETWORK=sepolia -STARKNET_ACCOUNT_ADDRESS=0x01BFC84464f990C09Cc0e5D64D18F54c3469fD5c467398BF31293051bAde1C39 -STARKNET_ACCOUNT_PRIVATE_KEY=0x075362a844768f31c8058ce31aec3dd7751686440b4f220f410ae0c9bf042e60 -DEPLOYMENT_ADDRESSES_FOLDER=addresses/dev # change to addresses/prod for prod -SEASON_PASS_ADMIN=0x01BFC84464f990C09Cc0e5D64D18F54c3469fD5c467398BF31293051bAde1C39 diff --git a/contracts/season_pass/ext/scripts/deployment/deploy.js b/contracts/season_pass/ext/scripts/deployment/deploy.js new file mode 100644 index 0000000000..c38c9b9f75 --- /dev/null +++ b/contracts/season_pass/ext/scripts/deployment/deploy.js @@ -0,0 +1,75 @@ +import { + deploySeasonPassContract, + deployTestLordsContract, + deployTestRealmsContract, + saveRelevantAddressesToCommonFolder, + setSeasonPassAddressTestLordsContract, +} from "./libs/commands.js"; + +// Pretty console header +console.log("\n\n"); +console.log(`╔══════════════════════════════════════════════════════════╗`.green); +console.log(`║ Deploying Season Pass ║`.green); +console.log(`╚══════════════════════════════════════════════════════════╝`.green); +console.log("\n"); + +const toHex = (address) => { + return "0x" + address.toString(16); +} + +// Contract address initialization +const presetRealmsAddress = BigInt(process.env.SEASON_PASS_PRESET_REALMS_ADDRESS); +const presetLordsAddress = BigInt(process.env.SEASON_PASS_PRESET_LORDS_ADDRESS); + +let lordsContractAddress; +let realmsContractAddress; + +// Realms contract deployment/setup +if (!presetRealmsAddress || BigInt(presetRealmsAddress) === BigInt(0)) { + realmsContractAddress = await deployTestRealmsContract(); + console.log(`📦 Deployed new test Realms contract: ${toHex(realmsContractAddress)}`); +} else { + realmsContractAddress = presetRealmsAddress; + console.log(`🔗 Using preset Realms contract: ${toHex(realmsContractAddress)}`); +} + +// Lords contract deployment/setup +if (!presetLordsAddress || BigInt(presetLordsAddress) === BigInt(0)) { + lordsContractAddress = await deployTestLordsContract(); + console.log(`\n\n 📦 Deployed new test Lords contract: ${toHex(lordsContractAddress)}`); +} else { + lordsContractAddress = presetLordsAddress; + console.log(`\n\n 🔗 Using preset Lords contract: ${toHex(lordsContractAddress)}`); +} + +// Deploy Season Pass contract +const seasonPassAddress = await deploySeasonPassContract( + BigInt(realmsContractAddress), + BigInt(lordsContractAddress) +); +console.log(`\n\n 🎫 Deployed Season Pass contract: ${toHex(seasonPassAddress)}`); + +// Set Season Pass address in Lords contract if using test contract +if (!presetLordsAddress || BigInt(presetLordsAddress) === BigInt(0)) { + await setSeasonPassAddressTestLordsContract( + BigInt(lordsContractAddress), + BigInt(seasonPassAddress) + ); + console.log(`\n\n ✔ Set Season Pass address in Lords contract \n\n`); +} + +// Save addresses +await saveRelevantAddressesToCommonFolder( + seasonPassAddress, + realmsContractAddress, + lordsContractAddress +); + +console.log("\n\n"); +console.log(`╔════════════════════════════════════════════════════════════════════════════════════════════╗`.yellow); +console.log(" Season Pass Contract: ".yellow + toHex(seasonPassAddress).magenta); +console.log(" Lords Contract: ".yellow + toHex(lordsContractAddress).magenta); +console.log(" Realms Contract: ".yellow + toHex(realmsContractAddress).magenta); +console.log(`╚════════════════════════════════════════════════════════════════════════════════════════════╝`.yellow); +console.log(`\n\n 💾 Saved contract addresses to common folder (contracts/common/addresses/${process.env.STARKNET_NETWORK}.json)`); +console.log("\n\n\n"); diff --git a/contracts/season_pass/ext/scripts/deployment/deploy_dev.js b/contracts/season_pass/ext/scripts/deployment/deploy_dev.js deleted file mode 100644 index b2ca23b0a7..0000000000 --- a/contracts/season_pass/ext/scripts/deployment/deploy_dev.js +++ /dev/null @@ -1,20 +0,0 @@ -import { - deploySeasonPassContract, - deployTestLordsContract, - deployTestRealmsContract, - setSeasonPassAddressTestLordsContract, -} from "./libs/commands.js"; - -console.log(` ____ _ `.red); -console.log(` | \\ ___ ___| |___ _ _ `.red); -console.log(` | | | -_| . | | . | | |`.red); -console.log(` |____/|___| _|_|___|_ |`.red); -console.log(` |_| |___|`.red); - -const testRealmsContractAddress = await deployTestRealmsContract(); -let testLordsContractAddress = await deployTestLordsContract(); -let seasonPassAddress = await deploySeasonPassContract( - BigInt(testRealmsContractAddress), - BigInt(testLordsContractAddress), -); -await setSeasonPassAddressTestLordsContract(BigInt(testLordsContractAddress), BigInt(seasonPassAddress)); diff --git a/contracts/season_pass/ext/scripts/deployment/deploy_prod.js b/contracts/season_pass/ext/scripts/deployment/deploy_prod.js deleted file mode 100644 index 960367af29..0000000000 --- a/contracts/season_pass/ext/scripts/deployment/deploy_prod.js +++ /dev/null @@ -1,21 +0,0 @@ -import { deploySeasonPassContract } from "./libs/commands.js"; - -console.log(` ____ _ `.red); -console.log(` | \\ ___ ___| |___ _ _ `.red); -console.log(` | | | -_| . | | . | | |`.red); -console.log(` |____/|___| _|_|___|_ |`.red); -console.log(` |_| |___|`.red); - -const realmsContractAddress = "0x07ae27a31bb6526e3de9cf02f081f6ce0615ac12a6d7b85ee58b8ad7947a2809"; -const lordsContractAddress = "0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49"; -const seasonPassContractAddress = await deploySeasonPassContract( - BigInt(realmsContractAddress), - BigInt(lordsContractAddress), -); - -console.log(`\n\n********** IMPORTANT **********`.bold.red); -console.log(`** MAKE SURE TO UPDATE THE .ENV.PRODUCTION FILE WITH THESE ADDRESSES **`.bold.red); -console.log(`*******************************\n\n`.bold.red); -console.log(`Realms Contract Address: ${realmsContractAddress}`); -console.log(`Lords Contract Address: ${lordsContractAddress}`); -console.log(`Season Pass Contract Address: ${seasonPassContractAddress}`); diff --git a/contracts/season_pass/ext/scripts/deployment/libs/commands.js b/contracts/season_pass/ext/scripts/deployment/libs/commands.js index 25eff38705..cca9f042f6 100644 --- a/contracts/season_pass/ext/scripts/deployment/libs/commands.js +++ b/contracts/season_pass/ext/scripts/deployment/libs/commands.js @@ -1,12 +1,14 @@ import "dotenv/config"; +import * as fs from "fs"; import * as path from "path"; import { fileURLToPath } from "url"; +import { promisify } from "util"; import { declare, deploy, getContractPath } from "./common.js"; import { getAccount, getNetwork } from "./network.js"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const TARGET_PATH = path.join(__dirname, "..", "..", "..", "contracts", "target", "release"); +const TARGET_PATH = path.join(__dirname, "..", "..", "..","..", "target", "release"); export const deploySeasonPassContract = async (realmsContractAddress, lordsContractAddress) => { /////////////////////////////////////////// @@ -91,3 +93,50 @@ export const setSeasonPassAddressTestLordsContract = async (lordsContractAddress "\n\n", ); }; + + + +const mkdirAsync = promisify(fs.mkdir); +const writeFileAsync = promisify(fs.writeFile); +export const saveRelevantAddressesToCommonFolder = async (seasonPassAddress, realmsAddress, lordsAddress) => { + try { + const folderPath = path.join("..", "..", "..", "..", "common", "addresses"); + await mkdirAsync(folderPath, { recursive: true }); + const network = process.env.STARKNET_NETWORK; + const fileName = path.join(folderPath, `${network}.json`); + + // Try to read existing data + let existingData = {}; + try { + const fileContent = await fs.promises.readFile(fileName, 'utf8'); + existingData = JSON.parse(fileContent); + } catch (error) { + // File doesn't exist or is invalid JSON, start with empty object + } + + // Merge new addresses with existing data + const updatedData = { + ...existingData, + seasonPass: seasonPassAddress, + realms: realmsAddress, + lords: lordsAddress, + }; + + const jsonString = JSON.stringify( + updatedData, + (key, value) => { + if (typeof value === "bigint") { + return "0x" + value.toString(16); + } + return value; + }, + 2 + ); + + await writeFileAsync(fileName, jsonString); + console.log(`"${fileName}" has been saved or overwritten`); + } catch (err) { + console.error("Error writing file", err); + throw err; + } +}; \ No newline at end of file diff --git a/contracts/season_pass/ext/scripts/deployment/libs/common.js b/contracts/season_pass/ext/scripts/deployment/libs/common.js index 2c6f6058ab..5bfd434c99 100644 --- a/contracts/season_pass/ext/scripts/deployment/libs/common.js +++ b/contracts/season_pass/ext/scripts/deployment/libs/common.js @@ -9,6 +9,7 @@ import { getAccount, getNetwork } from "./network.js"; colors.america; export const getContracts = (TARGET_PATH) => { if (!fs.existsSync(TARGET_PATH)) { + console.error(TARGET_PATH); throw new Error(`Target directory not found at path: ${TARGET_PATH}`); } const contracts = fs.readdirSync(TARGET_PATH).filter((contract) => contract.includes(".contract_class.json")); @@ -129,24 +130,4 @@ export const getDeployedAddress = async (contractName) => { } throw err; // Re-throw the error so the caller knows something went wrong } -}; - -export const getProxyAddress = async (contractName) => { - const folderPath = process.env.DEPLOYMENT_ADDRESSES_FOLDER; - const fileName = path.join(folderPath, `${contractName}.json`); - - try { - const data = await readFileAsync(fileName, "utf8"); - const jsonData = JSON.parse(data); - return jsonData.data.proxy_address; - } catch (err) { - if (err.code === "ENOENT") { - console.error(`File not found: ${fileName}`); - } else if (err instanceof SyntaxError) { - console.error("Error parsing JSON:", err); - } else { - console.error("Error reading file:", err); - } - throw err; // Re-throw the error so the caller knows something went wrong - } -}; +}; \ No newline at end of file diff --git a/contracts/season_pass/ext/scripts/deployment/libs/network.js b/contracts/season_pass/ext/scripts/deployment/libs/network.js index 13c0de47df..1d20db93d9 100644 --- a/contracts/season_pass/ext/scripts/deployment/libs/network.js +++ b/contracts/season_pass/ext/scripts/deployment/libs/network.js @@ -5,7 +5,7 @@ const NETWORKS = { mainnet: { name: "mainnet", explorer_url: "https://voyager.online", - rpc_url: `${process.env.RPC_API_KEY}`, + rpc_url: `${process.env.STARKNET_RPC}`, feeder_gateway_url: "https://alpha-mainnet.starknet.io/feeder_gateway", gateway_url: "https://alpha-mainnet.starknet.io/gateway", }, @@ -23,12 +23,12 @@ const NETWORKS = { feeder_gateway_url: "http://127.0.0.1:5050/feeder_gateway", gateway_url: "http://127.0.0.1:5050/gateway", }, - katana: { - name: "katana", - explorer_url: "https://katana.voyager.online", - rpc_url: process.env.RPC_API_KEY, - feeder_gateway_url: process.env.RPC_API_KEY + "/feeder_gateway", - gateway_url: process.env.RPC_API_KEY + "/gateway", + slot: { + name: "slot", + explorer_url: "https://slot.voyager.online", + rpc_url: process.env.STARKNET_RPC, + feeder_gateway_url: process.env.STARKNET_RPC + "/feeder_gateway", + gateway_url: process.env.STARKNET_RPC + "/gateway", }, }; diff --git a/contracts/season_pass/ext/scripts/deployment/package.json b/contracts/season_pass/ext/scripts/deployment/package.json index 268e0b469f..13aaf98c5a 100644 --- a/contracts/season_pass/ext/scripts/deployment/package.json +++ b/contracts/season_pass/ext/scripts/deployment/package.json @@ -7,8 +7,9 @@ "type": "module", "main": "index.js", "scripts": { - "deploy": "source .env && bun --env-file=.env ./deploy_dev", - "deploy::prod": "bun --env-file=.env.production ./deploy_prod", - "deploy::sepolia": "bun --env-file=.env.sepolia ./deploy_dev" + "deploy:local": "source ../../../../common/.env.local && bun --env-file=../../../../common/.env.local ./deploy", + "deploy:slot": "source ../../../../common/.env.slot && bun --env-file=../../../../common/.env.slot ./deploy", + "deploy:sepolia": "source ../../../../common/.env.sepolia && bun --env-file=../../../../common/.env.sepolia ./deploy", + "deploy:mainnet": "source ../../../../common/.env.mainnet && bun --env-file=../../../../common/.env.mainnet ./deploy" } } diff --git a/contracts/season_resources/ext/scripts/deploy.sh b/contracts/season_resources/ext/scripts/deploy.sh new file mode 100755 index 0000000000..dfc099e53a --- /dev/null +++ b/contracts/season_resources/ext/scripts/deploy.sh @@ -0,0 +1,91 @@ +#!/bin/bash + +# ============================================================================= +# Season Resources Deployment Script +# ============================================================================= +# +# DESCRIPTION: +# This script handles the deployment process for the Season Resources ERC20 smart +# contracts. It manages the build process using Scarb and executes the +# deployment using Bun. +# +# USAGE: +# ./deploy.sh [network] - Builds and deploys the Season Resources ERC20 contracts +# where [network] is optional and defaults to 'local' +# Examples: +# ./deploy.sh local - Deploys to local +# ./deploy.sh slot - Deploys to slot +# ./deploy.sh sepolia - Deploys to sepolia +# ./deploy.sh mainnet - Deploys to mainnet +# +# PROCESS: +# 1. Builds the contracts using Scarb in release mode +# 2. Changes to deployment directory +# 3. Installs dependencies using Bun +# 4. Executes the deployment script for specified network +# +# REQUIREMENTS: +# - Scarb (Starknet contract compiler) +# - Bun (JavaScript runtime) +# - Node.js dependencies in deployment directory +# +# ============================================================================= + + +# Fallback colors +GREEN='\033[0;32m' +BLUE='\033[0;34m' +RED='\033[0;31m' +NC='\033[0m' + + +#============================================================================== +# ERROR HANDLING +#============================================================================== + +set -e # Exit on error +set -o pipefail # Exit if any command in a pipe fails + +error_handler() { + echo -e "\n${RED}► Error: Command failed at line $1${NC}" + exit 1 +} + +trap 'error_handler ${LINENO}' ERR + +#============================================================================== +# MAIN EXECUTION +#============================================================================== + +echo -e "\n" +echo -e "${BLUE}╔══════════════════════════════════════════════════════════╗${NC}" +echo -e "${BLUE}║ Building Season Resources ERC20 Contracts ║${NC}" +echo -e "${BLUE}╚══════════════════════════════════════════════════════════╝${NC}" +echo -e "\n" + +# Navigate to root contract directory +echo -e "${GREEN}► Navigating to season resources contract root directory...${NC}" +cd ../../ + +# Build contracts +echo -e "${GREEN}► Building season resources contracts with Scarb...${NC}" +scarb --release build + +# Return to script directory +cd - > /dev/null + +# Navigate to deployment directory +echo -e "${GREEN}► Installing season resources deployment dependencies...${NC}" +cd deployment +bun install + +# Get network parameter, default to 'local' if not provided +NETWORK=${1:-local} + +echo -e "${BLUE}► Deploying to ${NETWORK}${NC}" + +# Execute deployment +echo -e "${GREEN}► Executing season resources deployment script...${NC}" +bun run deploy:${NETWORK} + +echo -e "\n${GREEN}✔ Season Resources deployment process completed on ${NETWORK}${NC}\n" diff --git a/contracts/season_resources/ext/scripts/deployment/.env.example b/contracts/season_resources/ext/scripts/deployment/.env.example deleted file mode 100644 index b282a8b911..0000000000 --- a/contracts/season_resources/ext/scripts/deployment/.env.example +++ /dev/null @@ -1,12 +0,0 @@ -export RPC_API_KEY=http://127.0.0.1:5050 -export STARKNET_NETWORK=local -export STARKNET_ACCOUNT_ADDRESS=0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec -export STARKNET_ACCOUNT_PRIVATE_KEY=0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912 -export DEPLOYMENT_ADDRESSES_FOLDER=addresses/local -export SEASON_RESOURCE_ADMIN=0x1a3e37c77be7de91a9177c6b57956faa6da25607e567b10a25cf64fea5e533b # change to prod admin address - - -export VITE_PUBLIC_MASTER_ADDRESS="0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec" -export VITE_PUBLIC_MASTER_PRIVATE_KEY="0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912" -export VITE_PUBLIC_NODE_URL="http://localhost:5050/" -export VITE_PUBLIC_DEV="true" diff --git a/contracts/season_resources/ext/scripts/deployment/.env.production b/contracts/season_resources/ext/scripts/deployment/.env.production deleted file mode 100644 index 3734561ed1..0000000000 --- a/contracts/season_resources/ext/scripts/deployment/.env.production +++ /dev/null @@ -1,11 +0,0 @@ -export RPC_API_KEY=https://api.cartridge.gg/x/starknet/mainnet -export STARKNET_NETWORK=mainnet -export STARKNET_ACCOUNT_ADDRESS=0x0 -export STARKNET_ACCOUNT_PRIVATE_KEY=0x0 -export DEPLOYMENT_ADDRESSES_FOLDER=addresses/mainnet - -export SEASON_RESOURCE_ADMIN=0x0 # -export VITE_PUBLIC_MASTER_ADDRESS="0x0" -export VITE_PUBLIC_MASTER_PRIVATE_KEY="0x0" -export VITE_PUBLIC_NODE_URL="https://api.cartridge.gg/x/starknet/mainnet" -export VITE_PUBLIC_DEV="false" diff --git a/contracts/season_resources/ext/scripts/deployment/.env.sample b/contracts/season_resources/ext/scripts/deployment/.env.sample deleted file mode 100644 index 3b13516373..0000000000 --- a/contracts/season_resources/ext/scripts/deployment/.env.sample +++ /dev/null @@ -1,11 +0,0 @@ - -export RPC_API_KEY=http://127.0.0.1:5050 -export STARKNET_NETWORK=local -export STARKNET_ACCOUNT_ADDRESS=0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec -export STARKNET_ACCOUNT_PRIVATE_KEY=0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912 -export DEPLOYMENT_ADDRESSES_FOLDER=addresses/local # change to addresses/prod for prod -export SEASON_RESOURCE_ADMIN=0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec -export VITE_PUBLIC_MASTER_ADDRESS="0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec" -export VITE_PUBLIC_MASTER_PRIVATE_KEY="0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912" -export VITE_PUBLIC_NODE_URL="http://localhost:5050/" -export VITE_PUBLIC_DEV="true" \ No newline at end of file diff --git a/contracts/season_resources/ext/scripts/deployment/config/index.ts b/contracts/season_resources/ext/scripts/deployment/config/index.ts deleted file mode 100644 index 01a8aad26e..0000000000 --- a/contracts/season_resources/ext/scripts/deployment/config/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { readFileSync } from "fs"; -import { join } from "path"; -import { Account } from "starknet"; -import devManifest from "../../../../contracts/manifest_dev.json"; -import productionManifest from "../../../../contracts/manifest_prod.json"; -import { EternumProvider, ResourceWhitelistConfig } from "./provider"; - -const getResourceAddresses = () => { - const network = process.env.STARKNET_NETWORK; - const filePath = join(__dirname, `../addresses/${network}/resource_addresses.json`); - return JSON.parse(readFileSync(filePath, "utf-8")); -}; - -const resourceAddresses = getResourceAddresses(); - -interface Config { - account: Account; - provider: EternumProvider; -} - -export class EternumConfig { - async setup(account: Account, provider: EternumProvider) { - const config = { account, provider }; - await setResourceBridgeWhitlelistConfig(config); - } -} - -export const setResourceBridgeWhitlelistConfig = async (config: Config) => { - let resourceWhitelistConfigs: ResourceWhitelistConfig[] = []; - for (const [resourceName, [resourceId, tokenAddress]] of Object.entries(resourceAddresses)) { - resourceWhitelistConfigs.push({ - token: tokenAddress, - resource_type: resourceId, - }); - console.log(`Configuring whitelist for ${resourceName} (${resourceId}) (${tokenAddress}) for in-game asset bridge`); - } - const tx = await config.provider.set_resource_bridge_whitlelist_config({ - signer: config.account, - resource_whitelist_configs: resourceWhitelistConfigs, - }); - - console.log(`Finished configuring whitelist for in-game asset bridge ${tx.statusReceipt}`); - - // wait for 3 seconds - await new Promise((resolve) => setTimeout(resolve, 3000)); -}; - -////////////////////////////////////////////////////////////// - -const { VITE_PUBLIC_MASTER_ADDRESS, VITE_PUBLIC_MASTER_PRIVATE_KEY, VITE_PUBLIC_DEV, VITE_PUBLIC_NODE_URL } = - process.env; -if (!VITE_PUBLIC_MASTER_ADDRESS || !VITE_PUBLIC_MASTER_PRIVATE_KEY || !VITE_PUBLIC_NODE_URL) { - throw new Error("VITE_PUBLIC_MASTER_ADDRESS is required"); -} -const manifest = VITE_PUBLIC_DEV === "true" ? devManifest : productionManifest; -// Bug in bun we have to use http://127.0.0.1:5050/ -const nodeUrl = VITE_PUBLIC_DEV === "true" ? "http://127.0.0.1:5050/" : VITE_PUBLIC_NODE_URL; - -if (!VITE_PUBLIC_DEV) { - const userConfirmation = prompt( - "You are about to set the configuration for a non-development environment. Are you sure you want to proceed? (yes/no)", - ); - if (userConfirmation?.toLowerCase() !== "yes") { - console.log("Configuration setup cancelled."); - process.exit(0); - } -} - -console.log("Provider set up"); -const provider = new EternumProvider(manifest, nodeUrl); - -console.log("Account set up"); -const account = new Account(provider.provider, VITE_PUBLIC_MASTER_ADDRESS, VITE_PUBLIC_MASTER_PRIVATE_KEY); - -console.log("Setting up config..."); -export const config = new EternumConfig(); -await config.setup(account, provider); diff --git a/contracts/season_resources/ext/scripts/deployment/config/provider/index.ts b/contracts/season_resources/ext/scripts/deployment/config/provider/index.ts deleted file mode 100644 index b39424fd0f..0000000000 --- a/contracts/season_resources/ext/scripts/deployment/config/provider/index.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { DojoProvider } from "@dojoengine/core"; -import EventEmitter from "eventemitter3"; -import { Account, AccountInterface, AllowArray, Call, num } from "starknet"; - -interface SystemSigner { - signer: AccountInterface | Account; -} - -interface SetResourceBridgeWhitelistConfigProps extends SystemSigner { - resource_whitelist_configs: ResourceWhitelistConfig[]; -} - -export interface ResourceWhitelistConfig { - token: num.BigNumberish; - resource_type: num.BigNumberish; -} - -const NAMESPACE = "s0_eternum"; - -const getContractByName = (manifest: any, name: string) => { - const contract = manifest.contracts.find((contract: any) => contract.tag === name); - if (!contract) { - throw new Error(`Contract ${name} not found in manifest`); - } - return contract.address; -}; - -function ApplyEventEmitter {}>(Base: T) { - return class extends Base { - eventEmitter = new EventEmitter(); - - emit(event: string, ...args: any[]) { - this.eventEmitter.emit(event, ...args); - } - - on(event: string, listener: (...args: any[]) => void) { - this.eventEmitter.on(event, listener); - } - - off(event: string, listener: (...args: any[]) => void) { - this.eventEmitter.off(event, listener); - } - }; -} -const EnhancedDojoProvider = ApplyEventEmitter(DojoProvider); - -export class EternumProvider extends EnhancedDojoProvider { - constructor(katana: any, url?: string) { - super(katana, url); - this.manifest = katana; - - this.getWorldAddress = function () { - const worldAddress = this.manifest.world.address; - return worldAddress; - }; - } - - private async executeAndCheckTransaction(signer: Account | AccountInterface, transactionDetails: AllowArray) { - if (typeof window !== "undefined") { - console.log({ signer, transactionDetails }); - } - const tx = await this.execute(signer, transactionDetails, NAMESPACE); - const transactionResult = await this.waitForTransactionWithCheck(tx.transaction_hash); - - this.emit("transactionComplete", transactionResult); - - return transactionResult; - } - - // Wrapper function to check for transaction errors - async waitForTransactionWithCheck(transactionHash: string) { - let receipt; - try { - receipt = await this.provider.waitForTransaction(transactionHash, { - retryInterval: 500, - }); - } catch (error) { - console.error(`Error waiting for transaction ${transactionHash}`); - throw error; - } - - // Check if the transaction was reverted and throw an error if it was - if (receipt.isReverted()) { - this.emit("transactionFailed", `Transaction failed with reason: ${receipt.revert_reason}`); - throw new Error(`Transaction failed with reason: ${receipt.revert_reason}`); - } - - return receipt; - } - - public async set_resource_bridge_whitlelist_config(props: SetResourceBridgeWhitelistConfigProps) { - const { resource_whitelist_configs, signer } = props; - - const calldata = resource_whitelist_configs.map(({ token, resource_type }) => ({ - contractAddress: getContractByName(this.manifest, `${NAMESPACE}-config_systems`), - entrypoint: "set_resource_bridge_whitelist_config", - calldata: [token, resource_type], - })); - - return await this.executeAndCheckTransaction(signer, calldata); - } -} diff --git a/contracts/season_resources/ext/scripts/deployment/deploy.js b/contracts/season_resources/ext/scripts/deployment/deploy.js index 4f62486b65..01d4c9e829 100644 --- a/contracts/season_resources/ext/scripts/deployment/deploy.js +++ b/contracts/season_resources/ext/scripts/deployment/deploy.js @@ -1,10 +1,28 @@ -import { grantMinterRoleToAllSeasonResourceContracts } from "./libs/commands.js"; +import { deployAllSeasonResourceContract, grantMinterRoleToInGameBridge } from "./libs/commands.js"; -console.log(` ____ _ `.red); -console.log(` | \\ ___ ___| |___ _ _ `.red); -console.log(` | | | -_| . | | . | | |`.red); -console.log(` |____/|___| _|_|___|_ |`.red); -console.log(` |_| |___|`.red); +// Pretty console header +console.log("\n\n"); +console.log(`╔══════════════════════════════════════════════════════════╗`.green); +console.log(`║ Deploying Season Resource ERC20s ║`.green); +console.log(`╚══════════════════════════════════════════════════════════╝`.green); +console.log("\n"); + +// const toHex = (address) => { +// return "0x" + address.toString(16); +// } -// await deployAllSeasonResourceContract(); -await grantMinterRoleToAllSeasonResourceContracts(); +await deployAllSeasonResourceContract(); +console.log(`📦 Deployed new Season Resource ERC20 contracts`.green); + +// Pretty console header +console.log("\n\n"); +console.log(`╔══════════════════════════════════════════════════════════╗`.green); +console.log(`║ Granting Minter Role to In-Game Bridge ║`.green); +console.log(`╚══════════════════════════════════════════════════════════╝`.green); +console.log("\n"); +await grantMinterRoleToInGameBridge(); +console.log(`✔ Granted minter role to the in-game bridge system for all Season Resource ERC20 contracts`.green); +console.log("\n"); +console.log(`📦 Saved erc20 addresses to common folder (contracts/common/addresses/${process.env.STARKNET_NETWORK}.json)`); +console.log("\n"); + \ No newline at end of file diff --git a/contracts/season_resources/ext/scripts/deployment/libs/commands.js b/contracts/season_resources/ext/scripts/deployment/libs/commands.js index f12b7732a6..f6261f4e01 100644 --- a/contracts/season_resources/ext/scripts/deployment/libs/commands.js +++ b/contracts/season_resources/ext/scripts/deployment/libs/commands.js @@ -3,61 +3,109 @@ import * as fs from "fs"; import * as path from "path"; import { shortString } from "starknet"; import { fileURLToPath } from "url"; -import devManifest from "../../../../contracts/manifest_dev.json"; -import productionManifest from "../../../../contracts/manifest_prod.json"; import { - declare, - getContractPath, - getResourceAddressesFromFile, - saveResourceAddressesToFile, - saveResourceAddressesToLanding, + declare, + getContractPath, + getResourceAddressesFromFile, + saveResourceAddressesToFile } from "./common.js"; import { getAccount, getNetwork } from "./network.js"; import resourceNames from "./resources.json"; +const gameManifest = await import(`../../../../../game/manifest_${process.env.STARKNET_NETWORK}.json`, { + assert: { type: "json" } +}).then(module => module.default); -const VITE_PUBLIC_DEV = process.env.VITE_PUBLIC_DEV; -if (VITE_PUBLIC_DEV === undefined) { - throw new Error("VITE_PUBLIC_DEV environment variable is not defined"); -} -const manifest = VITE_PUBLIC_DEV === "true" ? devManifest : productionManifest; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const TARGET_PATH = path.join(__dirname, "..", "..", "..", "contracts", "target", "release"); +const TARGET_PATH = path.join(__dirname, "..", "..", "..", "..", "target", "release"); + +const colors = { + title: '\x1b[1m\x1b[38;5;105m', // Bold Purple + success: '\x1b[38;5;83m', // Bright Green + info: '\x1b[38;5;39m', // Bright Blue + hash: '\x1b[38;5;214m', // Orange + address: '\x1b[38;5;147m', // Light Purple + reset: '\x1b[0m' // Reset +}; export const getJSONFile = (filePath) => { - return JSON.parse(fs.readFileSync(filePath, "utf8")); + try { + return JSON.parse(fs.readFileSync(filePath, "utf8")); + } catch (error) { + if (error.code === 'ENOENT') { + // If file doesn't exist, create it with empty object + fs.writeFileSync(filePath, JSON.stringify({}, null, 2)); + return {}; + } + throw error; + } }; export const getSeasonAddressesPath = () => { - return path.join( + const addressPath = path.join( __dirname, "..", "..", "..", "..", + "..", "common", "addresses", - `addresses.${process.env.STARKNET_NETWORK}.json`, ); + return path.join(addressPath, `${process.env.STARKNET_NETWORK}.json`); }; export const getSeasonAddresses = () => { + console.log(getSeasonAddressesPath()); return getJSONFile(getSeasonAddressesPath()); }; export const getContractByName = (name) => { - const contract = manifest.contracts.find((contract) => contract.tag === name); + const contract = gameManifest.contracts.find((contract) => contract.tag === name); if (!contract) { throw new Error(`Contract ${name} not found in manifest`); } return contract.address; }; -const NAMESPACE = "s0_eternum"; +const NAMESPACE = "s1_eternum"; const RESOURCE_BRIDGE_SYSTEMS_CONTRACT = getContractByName(`${NAMESPACE}-resource_bridge_systems`); const RESOURCE_NAMES = resourceNames; -const LORDS_RESOURCE_ID = 253; - +const LORDS_RESOURCE_ID = 31; + +const displayResourceTable = (addresses) => { + const TABLE_WIDTH = { + name: 15, + id: 7, // Increased to allow for padding + address: 42 + }; + + // Top border with title + console.log(`${colors.title}📍 Deployed Resource Addresses${colors.reset}`); + + // Header row with proper spacing + console.log(`${colors.title}╔══════════════════╤════════╤════════════════════════════════════════════════════════════════════╗${colors.reset}`); + console.log(`${colors.title}║ Resource Name │ ID │ Address ║${colors.reset}`); + console.log(`${colors.title}╠══════════════════╪════════╪════════════════════════════════════════════════════════════════════╣${colors.reset}`); + + // Content rows with proper alignment + Object.entries(addresses).forEach(([name, [id, address]], index, array) => { + // Center-align the ID column + const paddedId = String(id).padStart(Math.floor((TABLE_WIDTH.id + String(id).length) / 2)).padEnd(TABLE_WIDTH.id); + + console.log( + `${colors.title}║${colors.reset}${colors.info}${name.padEnd(TABLE_WIDTH.name + 2)}${colors.reset}${colors.title} │${colors.reset} ${colors.address}${paddedId}${colors.reset}${colors.title}│${colors.reset} ${colors.address}${address.padEnd(TABLE_WIDTH.address)}${colors.reset}${colors.title} ║${colors.reset}` + ); + + // Separator between rows (except last) + if (index !== array.length - 1) { + console.log(`${colors.title}╟────────────────────────────────────────────────────────────────────────────────────────────────╢${colors.reset}`); + } + }); + + // Bottom border + console.log(`${colors.title}╚════════════════════════════════════════════════════════════════════════════════════════════════╝${colors.reset}`); +}; export const deployAllSeasonResourceContract = async () => { /////////////////////////////////////////// //////// Season Pass Contract ////////// @@ -72,7 +120,14 @@ export const deployAllSeasonResourceContract = async () => { // deploy contract let SEASON_RESOURCE_DEFAULT_ADMIN = BigInt(process.env.SEASON_RESOURCE_ADMIN); - let SEASON_RESOURCE_UPGRADER_CONTRACT = BigInt(process.env.SEASON_RESOURCE_ADMIN); + let SEASON_RESOURCE_UPGRADER = BigInt(process.env.SEASON_RESOURCE_ADMIN); + + console.log(`\n`); + console.log(`${colors.info}╔════════════════════════════════════════════════════════════════════════════════════════${colors.reset}`); + console.log(`${colors.info} Default Admin${colors.reset} : ${colors.address}0x${SEASON_RESOURCE_DEFAULT_ADMIN.toString(16)}${colors.reset}`); + console.log(`${colors.info} Upgrader Admin${colors.reset} : ${colors.address}0x${SEASON_RESOURCE_UPGRADER.toString(16)}${colors.reset}`); + console.log(`${colors.info}═════════════════════════════════════════════════════════════════════════════════════════╝${colors.reset}`); + console.log(`\n`); const ADDRESSES = {}; const payload = []; @@ -86,11 +141,10 @@ export const deployAllSeasonResourceContract = async () => { if (resourceSymbol.length > 31) { throw new Error("Resource symbol must be less than or equal to 32 characters"); } - console.log({ resourceName, resourceSymbol }); let constructorCalldata = [ SEASON_RESOURCE_DEFAULT_ADMIN, - SEASON_RESOURCE_UPGRADER_CONTRACT, + SEASON_RESOURCE_UPGRADER, 0, resourceName, resourceName.length, @@ -107,12 +161,12 @@ export const deployAllSeasonResourceContract = async () => { } const account = getAccount(); - console.log(`\n Deploying ${casualName} ... \n\n`.green); + console.log(`\n${colors.title}📦 Deploying ${casualName}...${colors.reset}\n`); const contract = await account.execute(account.buildUDCContractPayload(payload)); // Wait for transaction let network = getNetwork(process.env.STARKNET_NETWORK); - console.log("Tx hash: ".green, `${network.explorer_url}/tx/${contract.transaction_hash})`); + console.log(`${colors.info}Transaction Hash${colors.reset} : ${colors.hash}${network.explorer_url}/tx/${contract.transaction_hash}${colors.reset}\n`); let tx = await account.waitForTransaction(contract.transaction_hash); for (const event of tx.value.events) { @@ -127,24 +181,22 @@ export const deployAllSeasonResourceContract = async () => { ADDRESSES["LORDS"] = [LORDS_RESOURCE_ID, getSeasonAddresses().lords]; - console.log(ADDRESSES); - + displayResourceTable(ADDRESSES); + console.log(`\n${colors.success}✨ Deployment Complete!${colors.reset}\n`); + await saveResourceAddressesToFile(ADDRESSES); - await saveResourceAddressesToLanding(ADDRESSES, process.env.STARKNET_NETWORK.toLowerCase()); return ADDRESSES; }; -export const grantMinterRoleToAllSeasonResourceContracts = async () => { +export const grantMinterRoleToInGameBridge = async () => { ////// GRANT MINTER ROLE TO ALL SEASON RESOURCE CONTRACTS ////// - console.log(`\n Granting minter role to all season resource contracts ... \n\n`.green); + console.log(`\n Granting minter role to the in-game bridge system for all season resource contracts... \n\n`.green); let resourceAddresses = await getResourceAddressesFromFile(); let resourceAddressesArray = Object.values(resourceAddresses) .filter(([resourceId, resourceAddress]) => resourceId !== LORDS_RESOURCE_ID) .map(([resourceId, resourceAddress]) => resourceAddress); - console.log(resourceAddressesArray); - if (!Array.isArray(resourceAddressesArray)) { throw new Error("resourceAddressesArray must be an array"); } @@ -174,16 +226,18 @@ export const grantMinterRoleToAllSeasonResourceContracts = async () => { }; export const revokeMinterRoleFromAllSeasonResourceContracts = async () => { - ////// Revoke MINTER ROLE TO ALL SEASON RESOURCE CONTRACTS ////// - console.log(`\n Revoking minter role from all season resource contracts ... \n\n`.green); + console.log(`\n${colors.title}🔒 Revoking Minter Role from Season Resource Contracts${colors.reset}\n`); + + console.log(`${colors.info}╔════════════════════════════════════════════════════════════════════════════════════════${colors.reset}`); + console.log(`${colors.info} In-Game Bridge System${colors.reset} : ${colors.address}${RESOURCE_BRIDGE_SYSTEMS_CONTRACT}${colors.reset}`); + console.log(`${colors.info}═════════════════════════════════════════════════════════════════════════════════════════╝${colors.reset}`); + console.log(`\n`); let resourceAddresses = await getResourceAddressesFromFile(); let resourceAddressesArray = Object.values(resourceAddresses) .filter(([resourceId, resourceAddress]) => resourceId !== LORDS_RESOURCE_ID) .map(([resourceId, resourceAddress]) => resourceAddress); - console.log(resourceAddressesArray); - if (!Array.isArray(resourceAddressesArray)) { throw new Error("resourceAddressesArray must be an array"); } @@ -206,8 +260,8 @@ export const revokeMinterRoleFromAllSeasonResourceContracts = async () => { // Wait for transaction let network = getNetwork(process.env.STARKNET_NETWORK); - console.log("Tx hash: ".green, `${network.explorer_url}/tx/${contract.transaction_hash})`); + console.log(`${colors.info}Transaction Hash${colors.reset} : ${colors.hash}${network.explorer_url}/tx/${contract.transaction_hash}${colors.reset}\n`); await account.waitForTransaction(contract.transaction_hash); - console.log(`Successfully revoked minter role from all season resource contracts`.green, "\n\n"); + console.log(`${colors.success}✨ Successfully revoked minter role from all season resource contracts!${colors.reset}\n`); }; diff --git a/contracts/season_resources/ext/scripts/deployment/libs/common.js b/contracts/season_resources/ext/scripts/deployment/libs/common.js index 0ff034252a..c4f10af48e 100644 --- a/contracts/season_resources/ext/scripts/deployment/libs/common.js +++ b/contracts/season_resources/ext/scripts/deployment/libs/common.js @@ -131,36 +131,40 @@ export const getDeployedAddress = async (contractName) => { } }; -export const getProxyAddress = async (contractName) => { - const folderPath = process.env.DEPLOYMENT_ADDRESSES_FOLDER; - const fileName = path.join(folderPath, `${contractName}.json`); - - try { - const data = await readFileAsync(fileName, "utf8"); - const jsonData = JSON.parse(data); - return jsonData.data.proxy_address; - } catch (err) { - if (err.code === "ENOENT") { - console.error(`File not found: ${fileName}`); - } else if (err instanceof SyntaxError) { - console.error("Error parsing JSON:", err); - } else { - console.error("Error reading file:", err); - } - throw err; // Re-throw the error so the caller knows something went wrong - } -}; export const saveResourceAddressesToFile = async (resourceAddresses) => { try { - const folderPath = process.env.DEPLOYMENT_ADDRESSES_FOLDER; + const folderPath = path.join( + __dirname, + "..", + "..", + "..", + "..", + "..", + "common", + "addresses", + ); await mkdirAsync(folderPath, { recursive: true }); - const fileName = path.join(folderPath, `resource_addresses.json`); + const fileName = path.join(folderPath, `${process.env.STARKNET_NETWORK}.json`); + + // Try to read existing data + let existingData = {}; + try { + const fileContent = await readFileAsync(fileName, 'utf8'); + existingData = JSON.parse(fileContent); + } catch (error) { + // File doesn't exist or is invalid JSON, start with empty object + } - const data = resourceAddresses; + // Merge new resources with existing data + const updatedData = { + ...existingData, + resources: resourceAddresses + }; + - const jsonString = JSON.stringify(data); + const jsonString = customStringify(updatedData); await writeFileAsync(fileName, jsonString); console.log(`"${fileName}" has been saved or overwritten`); @@ -171,29 +175,34 @@ export const saveResourceAddressesToFile = async (resourceAddresses) => { }; export const getResourceAddressesFromFile = async () => { - const folderPath = process.env.DEPLOYMENT_ADDRESSES_FOLDER; - const fileName = path.join(folderPath, `resource_addresses.json`); + const folderPath = path.join( + __dirname, + "..", + "..", + "..", + "..", + "..", + "common", + "addresses", + ); + const fileName = path.join(folderPath, `${process.env.STARKNET_NETWORK}.json`); const data = await readFileAsync(fileName, "utf8"); - return JSON.parse(data); + return JSON.parse(data).resources; }; -export const saveResourceAddressesToLanding = async (resourceAddresses, environment) => { - try { - const folderPath = process.env.DEPLOYMENT_ADDRESSES_FOLDER; - await mkdirAsync(folderPath, { recursive: true }); - const fileName = path.join( - folderPath, - `../../../../../landing/public/resource_addresses/${environment}/resource_addresses.json`, + // Custom replacer function to keep arrays on one line + const customStringify = (obj) => { + // First convert to JSON string with standard formatting + const initialString = JSON.stringify(obj, null, 2); + + // Replace arrays with single-line version, handling multiple lines and whitespace + return initialString.replace( + /\[\n\s+(.+?)\n\s+\]/gs, + (match, content) => { + // Remove newlines and extra spaces between array elements + const singleLine = content.replace(/\n\s+/g, ''); + return `[${singleLine}]`; + } ); - - const data = resourceAddresses; - const jsonString = JSON.stringify(data); - await writeFileAsync(fileName, jsonString); - - console.log(`"${fileName}" has been saved or overwritten`); - } catch (err) { - console.error("Error writing file", err); - throw err; // Re-throw the error so the caller knows something went wrong - } -}; + }; \ No newline at end of file diff --git a/contracts/season_resources/ext/scripts/deployment/libs/network.js b/contracts/season_resources/ext/scripts/deployment/libs/network.js index 13c0de47df..1d20db93d9 100644 --- a/contracts/season_resources/ext/scripts/deployment/libs/network.js +++ b/contracts/season_resources/ext/scripts/deployment/libs/network.js @@ -5,7 +5,7 @@ const NETWORKS = { mainnet: { name: "mainnet", explorer_url: "https://voyager.online", - rpc_url: `${process.env.RPC_API_KEY}`, + rpc_url: `${process.env.STARKNET_RPC}`, feeder_gateway_url: "https://alpha-mainnet.starknet.io/feeder_gateway", gateway_url: "https://alpha-mainnet.starknet.io/gateway", }, @@ -23,12 +23,12 @@ const NETWORKS = { feeder_gateway_url: "http://127.0.0.1:5050/feeder_gateway", gateway_url: "http://127.0.0.1:5050/gateway", }, - katana: { - name: "katana", - explorer_url: "https://katana.voyager.online", - rpc_url: process.env.RPC_API_KEY, - feeder_gateway_url: process.env.RPC_API_KEY + "/feeder_gateway", - gateway_url: process.env.RPC_API_KEY + "/gateway", + slot: { + name: "slot", + explorer_url: "https://slot.voyager.online", + rpc_url: process.env.STARKNET_RPC, + feeder_gateway_url: process.env.STARKNET_RPC + "/feeder_gateway", + gateway_url: process.env.STARKNET_RPC + "/gateway", }, }; diff --git a/contracts/season_resources/ext/scripts/deployment/libs/resources.json b/contracts/season_resources/ext/scripts/deployment/libs/resources.json index 6cf80b55ad..d10070a4c7 100644 --- a/contracts/season_resources/ext/scripts/deployment/libs/resources.json +++ b/contracts/season_resources/ext/scripts/deployment/libs/resources.json @@ -109,43 +109,38 @@ "name": "Dragonhide", "symbol": "DRAGONHIDE" }, - "DEMONHIDE": { - "id": 28, - "name": "Demonhide", - "symbol": "DEMONHIDE" - }, "ANCIENT_FRAGMENT": { - "id": 29, - "name": "Earthen Shard", + "id": 24, + "name": "Ancient Fragment", "symbol": "ANCIENT_FRAGMENT" }, "DONKEY": { - "id": 249, + "id": 25, "name": "Donkey", "symbol": "DONKEY" }, "KNIGHT": { - "id": 250, + "id": 26, "name": "Knight", "symbol": "KNIGHT" }, "CROSSBOWMAN": { - "id": 251, + "id": 27, "name": "Crossbowman", "symbol": "CROSSBOWMAN" }, "PALADIN": { - "id": 252, + "id": 28, "name": "Paladin", "symbol": "PALADIN" }, "WHEAT": { - "id": 254, + "id": 29, "name": "Wheat", "symbol": "WHEAT" }, "FISH": { - "id": 255, + "id": 30, "name": "Fish", "symbol": "FISH" } diff --git a/contracts/season_resources/ext/scripts/deployment/package.json b/contracts/season_resources/ext/scripts/deployment/package.json index c949d79503..ef322791ee 100644 --- a/contracts/season_resources/ext/scripts/deployment/package.json +++ b/contracts/season_resources/ext/scripts/deployment/package.json @@ -7,8 +7,14 @@ "type": "module", "main": "index.js", "scripts": { - "deploy": "source .env && bun --env-file=.env ./deploy && bun --env-file=.env ./config/index.ts", - "deploy::mainnet": "source .env.mainnet && bun --env-file=.env.mainnet ./deploy && bun --env-file=.env.mainnet ./config/index.ts", - "deploy::sepolia": "source .env.sepolia && bun --env-file=.env.sepolia ./deploy && bun --env-file=.env.sepolia ./config/index.ts" + "deploy:local": "source ../../../../common/.env.local && bun --env-file=../../../../common/.env.local ./deploy", + "deploy:slot": "source ../../../../common/.env.slot && bun --env-file=../../../../common/.env.slot ./deploy", + "deploy:sepolia": "source ../../../../common/.env.sepolia && bun --env-file=../../../../common/.env.sepolia ./deploy", + "deploy:mainnet": "source ../../../../common/.env.mainnet && bun --env-file=../../../../common/.env.mainnet ./deploy", + + "revoke:local": "source ../../../../common/.env.local && bun --env-file=../../../../common/.env.local ./revoke", + "revoke:slot": "source ../../../../common/.env.slot && bun --env-file=../../../../common/.env.slot ./revoke", + "revoke:sepolia": "source ../../../../common/.env.sepolia && bun --env-file=../../../../common/.env.sepolia ./revoke", + "revoke:mainnet": "source ../../../../common/.env.mainnet && bun --env-file=../../../../common/.env.mainnet ./revoke" } } diff --git a/contracts/season_resources/ext/scripts/deployment/revoke.js b/contracts/season_resources/ext/scripts/deployment/revoke.js new file mode 100644 index 0000000000..88b2017bc4 --- /dev/null +++ b/contracts/season_resources/ext/scripts/deployment/revoke.js @@ -0,0 +1,10 @@ +import { revokeMinterRoleFromAllSeasonResourceContracts } from "./libs/commands"; + +// Pretty console header +console.log("\n\n"); +console.log(`╔══════════════════════════════════════════════════════════╗`.green); +console.log(`║ Revoking Minter Role from In-Game Bridge ║`.green); +console.log(`╚══════════════════════════════════════════════════════════╝`.green); +console.log("\n"); +await revokeMinterRoleFromAllSeasonResourceContracts(); +console.log("\n"); \ No newline at end of file diff --git a/contracts/season_resources/src/lib.cairo b/contracts/season_resources/src/lib.cairo index b5eb8421bc..2943dbb509 100644 --- a/contracts/season_resources/src/lib.cairo +++ b/contracts/season_resources/src/lib.cairo @@ -1 +1 @@ -pub mod contract; \ No newline at end of file +pub mod contract; diff --git a/contracts/world/Scarb.lock b/contracts/world/Scarb.lock index c2e384d58c..4bb40bb61b 100644 --- a/contracts/world/Scarb.lock +++ b/contracts/world/Scarb.lock @@ -23,7 +23,7 @@ version = "2.8.4" source = "git+https://github.com/dojoengine/dojo?tag=v1.0.3#c65c25788d900325fa5e6e9d464da633cfabc468" [[package]] -name = "s0_eternum" +name = "s1_eternum" version = "1.0.0" dependencies = [ "dojo", diff --git a/contracts/world/Scarb.toml b/contracts/world/Scarb.toml index 2740902b6a..ac3a04be70 100755 --- a/contracts/world/Scarb.toml +++ b/contracts/world/Scarb.toml @@ -1,6 +1,6 @@ [package] cairo-version = "=2.8.4" -name = "s0_eternum" +name = "s1_eternum" version = "1.0.0" [cairo] @@ -17,7 +17,11 @@ dojo_cairo_test = { git = "https://github.com/dojoengine/dojo.git", tag = "v1.0. sort-module-level-items = true max-line-length = 120 -[profile.prod] +[profile.local] + +[profile.sepolia] + +[profile.mainnet] [[target.starknet-contract]] sierra = true diff --git a/contracts/world/dojo_dev.toml b/contracts/world/dojo_local.toml similarity index 92% rename from contracts/world/dojo_dev.toml rename to contracts/world/dojo_local.toml index 267f15d658..9dd02a3ed2 100644 --- a/contracts/world/dojo_dev.toml +++ b/contracts/world/dojo_local.toml @@ -2,12 +2,12 @@ default = "world_0" [env] -## dev +## local account_address = "0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec" private_key = "0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912" [world] -seed = "s0_eternum" +seed = "s1_eternum" name = "Realms World" description = "The world of Realms" cover_uri = "file://assets/bg.webp" diff --git a/contracts/world/dojo_prod.toml b/contracts/world/dojo_sepolia.toml similarity index 72% rename from contracts/world/dojo_prod.toml rename to contracts/world/dojo_sepolia.toml index 9cd04f9664..656c860384 100644 --- a/contracts/world/dojo_prod.toml +++ b/contracts/world/dojo_sepolia.toml @@ -5,10 +5,10 @@ default = "world_0" account_address = "" private_key = "" rpc_url = "https://api.cartridge.gg/x/starknet/mainnet" -world_address = "0x06a9e4c6f0799160ea8ddc43ff982a5f83d7f633e9732ce42701de1288ff705f" +world_address = "0x0009dd5e66cfa83f893c2a70b9ea5221e2df18aaf52a111fe9003264f948c7aa" [world] -seed = "s0_eternum" +seed = "s1_eternum" name = "Realms World" description = "The world of Realms" cover_uri = "file://assets/bg.webp" diff --git a/contracts/world/manifest_prod.json b/contracts/world/manifest_sepolia.json similarity index 99% rename from contracts/world/manifest_prod.json rename to contracts/world/manifest_sepolia.json index 5ddcdfd780..06c298612d 100644 --- a/contracts/world/manifest_prod.json +++ b/contracts/world/manifest_sepolia.json @@ -1,8 +1,8 @@ { "world": { "class_hash": "0x45575a88cc5cef1e444c77ce60b7b4c9e73a01cbbe20926d5a4c72a94011410", - "address": "0x6a9e4c6f0799160ea8ddc43ff982a5f83d7f633e9732ce42701de1288ff705f", - "seed": "s0_eternum", + "address": "0x0009dd5e66cfa83f893c2a70b9ea5221e2df18aaf52a111fe9003264f948c7aa", + "seed": "s1_eternum", "name": "Realms World", "entrypoints": [ "uuid", @@ -1308,11 +1308,11 @@ { "type": "impl", "name": "RealmsWorldImpl", - "interface_name": "s0_eternum::IRealmsWorld" + "interface_name": "s1_eternum::IRealmsWorld" }, { "type": "interface", - "name": "s0_eternum::IRealmsWorld", + "name": "s1_eternum::IRealmsWorld", "items": [ { "type": "function", @@ -1426,7 +1426,7 @@ }, { "type": "event", - "name": "s0_eternum::world::Event", + "name": "s1_eternum::world::Event", "kind": "enum", "variants": [ { @@ -1445,12 +1445,9 @@ "init_calldata": [], "tag": "world_0-world", "selector": "0x53c554ac832aace5a7c71baf9977fb56ab535ad1e87955a5929f78e45a07ebd", - "systems": [ - "world", - "upgrade" - ] + "systems": ["world", "upgrade"] } ], "models": [], "events": [] -} \ No newline at end of file +} diff --git a/contracts/world/src/lib.cairo b/contracts/world/src/lib.cairo index d49bd9f832..8d7aa40329 100644 --- a/contracts/world/src/lib.cairo +++ b/contracts/world/src/lib.cairo @@ -5,13 +5,12 @@ pub trait IRealmsWorld { #[dojo::contract] pub mod world { - use starknet::{ContractAddress, get_caller_address}; - use dojo::model::{ModelStorage, ModelValueStorage}; use dojo::event::EventStorage; + use dojo::model::{ModelStorage, ModelValueStorage}; + use starknet::{ContractAddress, get_caller_address}; #[abi(embed_v0)] impl RealmsWorldImpl of super::IRealmsWorld { - fn world(ref self: ContractState) -> ByteArray { "eternal glory awaits for those who seek it" } diff --git a/notes b/notes new file mode 100644 index 0000000000..0ff201f493 --- /dev/null +++ b/notes @@ -0,0 +1 @@ + check that realms can hold resources needed to level up at all times \ No newline at end of file diff --git a/package.json b/package.json index b637fbdcce..b7d1243108 100644 --- a/package.json +++ b/package.json @@ -11,12 +11,85 @@ "dev": "pnpm --dir ./client/apps/game dev", "dev:docs": "cd ./client/apps/game-docs && vocs dev", "dev:landing": "pnpm --dir ./client/apps/landing dev", + + "_comment_local_network_": "_______________________________________________", + "_comment_local_network1": "These are all you commands you need to run (in this order)", + "_comment_local_network2": "to start the game contracts on the your network. This has been simplified to:", + "_comment_local_network3": "`pnpm run contract:start:local` so you do not have to run all the commands manually", + "_comment_local_network4": " ", + "_comment_local_network5": "Commands will be executed using `.env.local` in contracts/common/", + "_comment_local_network6": "and will also use `.env.local` in client/apps/game for setting game config", + "_comment_local_network__": "_______________________________________________", + + "katana:start:local": "cd ./contracts/game && ./ext/scripts/katana.sh", + "game:migrate:local": "cd ./contracts/game && ./ext/scripts/migrate.sh", + "indexer:start:local": "cd ./contracts/game && ./ext/scripts/indexer.sh --network local --rpc http://127.0.0.1:8080", + "seasonpass:deploy:local": "cd ./contracts/season_pass/ext/scripts && ./deploy.sh", + "seasonresources:deploy:local": "cd ./contracts/season_resources/ext/scripts && ./deploy.sh", + "config:deploy:local": "pnpm run build:packages && pnpm --dir ./client/config run local", + "indexer:stop:local": "cd ./contracts/game && ./ext/scripts/indexer.sh --kill --network local", + "katana:stop:local": "cd ./contracts/game && ./ext/scripts/katana.sh --kill", + + "contract:start:local": "pnpm run katana:start:local && pnpm run game:migrate:local && pnpm run indexer:start:local && pnpm run seasonpass:deploy:local && pnpm run seasonresources:deploy:local && pnpm run config:deploy:local", + "contract:stop:local": "pnpm run katana:stop:local && pnpm run indexer:stop:local", + + "_comment_slot_network_": "_______________________________________________", + "_comment_slot_network1": "These are all you commands you need to run (in this order)", + "_comment_slot_network2": "Commands will be executed using `.env.slot` in contracts/common/", + "_comment_slot_network3": "and will also use `.env.slot` in client/apps/game for setting game config", + "_comment_slot_network__": "_______________________________________________", + + "katana:start:slot": "bash contracts/game/ext/scripts/slot.sh katana", + "game:migrate:slot": "cd ./contracts/game && ./ext/scripts/migrate.sh --profile slot", + "indexer:start:slot": "bash contracts/game/ext/scripts/slot.sh torii --network slot --world 0x0009dd5e66cfa83f893c2a70b9ea5221e2df18aaf52a111fe9003264f948c7aa --toml ./contracts/game", + "seasonpass:deploy:slot": "cd ./contracts/season_pass/ext/scripts && ./deploy.sh slot", + "seasonresources:deploy:slot": "cd ./contracts/season_resources/ext/scripts && ./deploy.sh slot", + "config:deploy:slot": "pnpm run build:packages && pnpm --dir ./client/config run slot", + + + "_comment_sepolia_network_": "_______________________________________________", + "_comment_sepolia_network1": "These are all you commands you need to run (in this order)", + "_comment_sepolia_network2": "Commands will be executed using `.env.sepolia` in contracts/common/", + "_comment_sepolia_network3": "and will also use `.env.sepolia` in client/apps/game for setting game config", + "_comment_sepolia_network__": "_______________________________________________", + + "game:migrate:sepolia": "cd ./contracts/game && ./ext/scripts/migrate.sh --profile sepolia", + "indexer:start:sepolia": "bash contracts/game/ext/scripts/slot.sh torii --network sepolia --world 0x0009dd5e66cfa83f893c2a70b9ea5221e2df18aaf52a111fe9003264f948c7aa --toml ./contracts/game", + "seasonpass:deploy:sepolia": "cd ./contracts/season_pass/ext/scripts && ./deploy.sh sepolia", + "seasonresources:deploy:sepolia": "cd ./contracts/season_resources/ext/scripts && ./deploy.sh sepolia", + "config:deploy:sepolia": "pnpm run build:packages && pnpm --dir ./client/config run sepolia", + + + "_comment_mainnet_network_": "_______________________________________________", + "_comment_mainnet_network1": "These are all you commands you need to run (in this order)", + "_comment_mainnet_network2": "Commands will be executed using `.env.mainnet` in contracts/common/", + "_comment_mainnet_network3": "and will also use `.env.mainnet` in client/apps/game for setting game config", + "_comment_mainnet_network__": "_______________________________________________", + + "game:migrate:mainnet": "cd ./contracts/game && ./ext/scripts/migrate.sh --profile mainnet", + "indexer:start:mainnet": "bash contracts/game/ext/scripts/slot.sh torii --network mainnet --world 0x0009dd5e66cfa83f893c2a70b9ea5221e2df18aaf52a111fe9003264f948c7aa --toml ./contracts/game", + "seasonpass:deploy:mainnet": "cd ./contracts/season_pass/ext/scripts && ./deploy.sh mainnet", + "seasonresources:deploy:mainnet": "cd ./contracts/season_resources/ext/scripts && ./deploy.sh mainnet", + "config:deploy:mainnet": "pnpm run build:packages && pnpm --dir ./client/config run mainnet", + + + "_comment_seasonresources_revoke_": "_______________________________________________", + "_comment_seasonresources_revoke1": "Revoke the minter role of the in-game bridge system from all season resource contracts", + "_comment_seasonresources_revoke2": "Commands will be executed using `.env.{network}` in contracts/common/", + "_comment_seasonresources_revoke__": "_______________________________________________", + + "seasonresources:revoke:local": "cd ./contracts/season_resources/ext/scripts/deployment && bun run revoke:local", + "seasonresources:revoke:slot": "cd ./contracts/season_resources/ext/scripts/deployment && bun run revoke:slot", + "seasonresources:revoke:sepolia": "cd ./contracts/season_resources/ext/scripts/deployment && bun run revoke:sepolia", + "seasonresources:revoke:mainnet": "cd ./contracts/season_resources/ext/scripts/deployment && bun run revoke:mainnet", + "format": "pnpm prettier --write .", "format:check": "pnpm prettier --check .", "knip": "npx knip --exclude binaries,dependencies", "lint": "pnpm --recursive run lint", "lint:fix": "pnpm --recursive run lint:fix", "test": "pnpm --recursive run test" + }, "dependencies": { "colors": "^1.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 17e5e225f1..6c818ba351 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,17 +22,17 @@ importers: version: 6.11.0(encoding@0.1.13) viem: specifier: ^2.21.45 - version: 2.22.3(typescript@5.7.2)(zod@3.24.1) + version: 2.22.8(typescript@5.7.3)(zod@3.24.1) vocs: specifier: latest - version: 1.0.0-alpha.62(@types/node@20.17.12)(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.2) + version: 1.0.0-alpha.62(@types/node@20.17.12)(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.3) devDependencies: '@bibliothecadao/eternum': specifier: workspace:^ version: link:client/sdk/packages/eternum '@dojoengine/core': specifier: 1.0.4-alpha.3.1.0 - version: 1.0.4-alpha.3.1.0(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.2) + version: 1.0.4-alpha.3.1.0(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.3) '@types/react': specifier: ^18.3.12 version: 18.3.18 @@ -44,7 +44,7 @@ importers: version: 10.4.20(postcss@8.4.49) eslint: specifier: ^9.9.0 - version: 9.17.0(jiti@2.4.2) + version: 9.18.0(jiti@2.4.2) postcss: specifier: ^8.4.35 version: 8.4.49 @@ -53,7 +53,7 @@ importers: version: 3.4.2 typescript: specifier: ^5.x.x - version: 5.7.2 + version: 5.7.3 vite: specifier: ^5.x.x version: 5.4.11(@types/node@20.17.12)(terser@5.37.0) @@ -65,22 +65,22 @@ importers: dependencies: '@cartridge/connector': specifier: ^0.5.7 - version: 0.5.7(encoding@0.1.13)(get-starknet-core@3.3.4(starknet@6.11.0(encoding@0.1.13)))(react@18.3.1)(typescript@5.7.2) + version: 0.5.8(encoding@0.1.13)(get-starknet-core@3.3.4(starknet@6.11.0(encoding@0.1.13)))(react@18.3.1)(typescript@5.7.3) '@cartridge/controller': specifier: ^0.5.7 - version: 0.5.7(encoding@0.1.13) + version: 0.5.8(encoding@0.1.13) '@dojoengine/create-burner': specifier: 1.0.4-alpha.3.1.0 - version: 1.0.4-alpha.3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.2) + version: 1.0.4-alpha.3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.3) '@dojoengine/react': specifier: 1.0.4-alpha.3.1.0 - version: 1.0.4-alpha.3.1.0(@types/node@20.17.12)(@types/react@18.3.18)(@vitest/ui@2.1.8(vitest@2.1.8))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))(terser@5.37.0)(type-fest@2.19.0)(typescript@5.7.2)(zod@3.24.1) + version: 1.0.4-alpha.3.1.0(@types/node@20.17.12)(@types/react@18.3.18)(@vitest/ui@2.1.8(vitest@2.1.8))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))(terser@5.37.0)(type-fest@2.19.0)(typescript@5.7.3)(zod@3.24.1) '@dojoengine/recs': specifier: ^2.0.13 - version: 2.0.13(typescript@5.7.2)(zod@3.24.1) + version: 2.0.13(typescript@5.7.3)(zod@3.24.1) '@dojoengine/state': specifier: 1.0.4-alpha.3.1.0 - version: 1.0.4-alpha.3.1.0(@types/node@20.17.12)(@vitest/ui@2.1.8(vitest@2.1.8))(starknet@6.11.0(encoding@0.1.13))(terser@5.37.0)(typescript@5.7.2)(zod@3.24.1) + version: 1.0.4-alpha.3.1.0(@types/node@20.17.12)(@vitest/ui@2.1.8(vitest@2.1.8))(starknet@6.11.0(encoding@0.1.13))(terser@5.37.0)(typescript@5.7.3)(zod@3.24.1) '@dojoengine/torii-client': specifier: 1.0.4-alpha.3.1.0 version: 1.0.4-alpha.3.1.0 @@ -89,7 +89,7 @@ importers: version: 1.0.4-alpha.3.1.0 '@dojoengine/utils': specifier: 1.0.4-alpha.3.1.0 - version: 1.0.4-alpha.3.1.0(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.2)(zod@3.24.1) + version: 1.0.4-alpha.3.1.0(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.3)(zod@3.24.1) '@headlessui/react': specifier: ^2.2.0 version: 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -107,10 +107,10 @@ importers: version: 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@starknet-react/chains': specifier: ^3.1.0 - version: 3.1.1 + version: 3.1.2 '@starknet-react/core': specifier: ^3.5.0 - version: 3.6.3(get-starknet-core@3.3.4(starknet@6.11.0(encoding@0.1.13)))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.2) + version: 3.7.0(get-starknet-core@3.3.4(starknet@6.11.0(encoding@0.1.13)))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.3) '@tailwindcss/typography': specifier: ^0.5.13 version: 0.5.16(tailwindcss@3.4.17) @@ -122,7 +122,7 @@ importers: version: 1.2.1 framer-motion: specifier: ^11.0.24 - version: 11.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 11.17.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) lucide-react: specifier: ^0.365.0 version: 0.365.0(react@18.3.1) @@ -149,14 +149,14 @@ importers: version: 1.0.7(tailwindcss@3.4.17) viem: specifier: ^2.21.45 - version: 2.22.3(typescript@5.7.2)(zod@3.24.1) + version: 2.22.8(typescript@5.7.3)(zod@3.24.1) zod: specifier: ^3.23.8 version: 3.24.1 devDependencies: '@svgr/rollup': specifier: ^8.1.0 - version: 8.1.0(rollup@4.30.1)(typescript@5.7.2) + version: 8.1.0(rollup@4.30.1)(typescript@5.7.3) '@types/node': specifier: ^20.11.10 version: 20.17.12 @@ -180,7 +180,7 @@ importers: version: 1.17.6(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)) vite-plugin-svgr: specifier: ^4.2.0 - version: 4.3.0(rollup@4.30.1)(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)) + version: 4.3.0(rollup@4.30.1)(typescript@5.7.3)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)) vite-plugin-top-level-await: specifier: ^1.4.1 version: 1.4.4(@swc/helpers@0.5.15)(rollup@4.30.1)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)) @@ -196,18 +196,16 @@ importers: devDependencies: '@eslint/js': specifier: ^9.9.0 - version: 9.17.0 + version: 9.18.0 eslint-plugin-react-hooks: specifier: ^5.1.0-rc.0 - version: 5.1.0(eslint@9.17.0(jiti@2.4.2)) + version: 5.1.0(eslint@9.18.0(jiti@2.4.2)) eslint-plugin-react-refresh: specifier: ^0.4.9 - version: 0.4.16(eslint@9.17.0(jiti@2.4.2)) + version: 0.4.18(eslint@9.18.0(jiti@2.4.2)) typescript-eslint: specifier: ^8.0.1 - version: 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - - client/apps/docs: {} + version: 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) client/apps/game: dependencies: @@ -240,7 +238,7 @@ importers: version: 4.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-shepherd: specifier: ^6.1.6 - version: 6.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 6.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) shepherd.js: specifier: ^14.3.0 version: 14.3.0 @@ -252,7 +250,7 @@ importers: version: 0.166.1 three-stdlib: specifier: ^2.29.5 - version: 2.35.2(three@0.166.1) + version: 2.35.7(three@0.166.1) use-sound: specifier: ^4.0.1 version: 4.0.3(react@18.3.1) @@ -274,7 +272,7 @@ importers: version: 0.163.0 '@typescript-eslint/eslint-plugin': specifier: ^7.5.0 - version: 7.18.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) + version: 7.18.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) '@vitest/coverage-v8': specifier: ^2.0.5 version: 2.1.8(vitest@2.1.8(@types/node@20.17.12)(@vitest/ui@2.1.8)(terser@5.37.0)) @@ -283,19 +281,21 @@ importers: version: 2.1.8(vitest@2.1.8) eslint-config-love: specifier: ^114.0.0 - version: 114.0.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) + version: 114.0.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) workbox-window: specifier: ^7.3.0 version: 7.3.0 + client/apps/game-docs: {} + client/apps/landing: dependencies: '@ark-project/core': specifier: 3.0.0-beta.1 - version: 3.0.0-beta.1(encoding@0.1.13)(typescript@5.7.2)(viem@2.22.3(typescript@5.7.2)(zod@3.24.1)) + version: 3.0.0-beta.1(encoding@0.1.13)(typescript@5.7.3)(viem@2.22.8(typescript@5.7.3)(zod@3.24.1)) '@ark-project/react': specifier: 2.0.0-beta.2 - version: 2.0.0-beta.2(encoding@0.1.13)(typescript@5.7.2)(viem@2.22.3(typescript@5.7.2)(zod@3.24.1)) + version: 2.0.0-beta.2(encoding@0.1.13)(typescript@5.7.3)(viem@2.22.8(typescript@5.7.3)(zod@3.24.1)) '@graphql-codegen/schema-ast': specifier: ^4.1.0 version: 4.1.0(graphql@16.10.0) @@ -334,10 +334,10 @@ importers: version: 1.1.6(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-query': specifier: ^5.59.15 - version: 5.62.16(react@18.3.1) + version: 5.64.0(react@18.3.1) '@tanstack/react-router': specifier: ^1.74.0 - version: 1.95.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.95.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) cmdk: specifier: 1.0.0 version: 1.0.0(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -362,13 +362,13 @@ importers: devDependencies: '@0no-co/graphqlsp': specifier: ^1.12.16 - version: 1.12.16(graphql@16.10.0)(typescript@5.7.2) + version: 1.12.16(graphql@16.10.0)(typescript@5.7.3) '@chromatic-com/storybook': specifier: ^1.6.1 version: 1.9.0(react@18.3.1) '@graphql-codegen/cli': specifier: 5.0.3 - version: 5.0.3(@parcel/watcher@2.5.0)(@types/node@20.17.12)(encoding@0.1.13)(graphql@16.10.0)(typescript@5.7.2) + version: 5.0.3(@parcel/watcher@2.5.0)(@types/node@20.17.12)(encoding@0.1.13)(graphql@16.10.0)(typescript@5.7.3) '@graphql-codegen/client-preset': specifier: 4.4.0 version: 4.4.0(encoding@0.1.13)(graphql@16.10.0) @@ -398,44 +398,50 @@ importers: version: 8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)) '@storybook/react': specifier: ^8.3.2 - version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.3) '@storybook/react-vite': specifier: ^8.3.2 - version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.30.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)) + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.30.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.3)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)) '@storybook/test': specifier: ^8.3.2 version: 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@tanstack/router-devtools': specifier: ^1.74.0 - version: 1.95.1(@tanstack/react-router@1.95.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.95.5(@tanstack/react-router@1.95.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/router-plugin': specifier: ^1.73.1 - version: 1.95.1(@tanstack/react-router@1.95.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)) + version: 1.95.5(@tanstack/react-router@1.95.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)) client/config: dependencies: + chalk: + specifier: ^5.4.1 + version: 5.4.1 starknet: specifier: 6.11.0 version: 6.11.0(encoding@0.1.13) typescript: specifier: ^5.0.0 - version: 5.7.2 + version: 5.7.3 devDependencies: '@types/bun': specifier: latest - version: 1.1.15 + version: 1.1.16 client/sdk/packages/eternum: dependencies: '@dojoengine/core': specifier: 1.0.0-alpha.24 - version: 1.0.0-alpha.24(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.2) + version: 1.0.0-alpha.24(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.3) '@latticexyz/utils': specifier: ^2.0.0-next.12 version: 2.2.14 '@scure/starknet': specifier: ^1.1.0 version: 1.1.0 + chalk: + specifier: ^5.4.1 + version: 5.4.1 eventemitter3: specifier: ^5.0.1 version: 5.0.1 @@ -448,24 +454,20 @@ importers: version: 20.17.12 tsup: specifier: ^8.0.2 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) typedoc: specifier: ^0.26.11 - version: 0.26.11(typescript@5.7.2) + version: 0.26.11(typescript@5.7.3) typedoc-plugin-markdown: specifier: ^4.2.10 - version: 4.4.1(typedoc@0.26.11(typescript@5.7.2)) + version: 4.4.1(typedoc@0.26.11(typescript@5.7.3)) typescript: specifier: ^5.4.4 - version: 5.7.2 + version: 5.7.3 vitest: specifier: ^2.0.5 version: 2.1.8(@types/node@20.17.12)(@vitest/ui@2.1.8)(terser@5.37.0) - contracts/season_pass/scripts/deployment: {} - - contracts/season_resources/scripts/deployment: {} - packages: '@0no-co/graphql.web@1.0.13': @@ -511,10 +513,6 @@ packages: peerDependencies: graphql: '*' - '@ardatan/sync-fetch@0.0.1': - resolution: {integrity: sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==} - engines: {node: '>=14'} - '@ark-project/core@3.0.0-beta.1': resolution: {integrity: sha512-KqisqFQxYHFq5cdnRy8dz/RjHiqFXUTuOx/gkn1iRBKP1gcrUvBQYJZaZIXl8xSIhI2lhI+/6Boa+JFv50MHIw==} peerDependencies: @@ -531,24 +529,24 @@ packages: resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.3': - resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} + '@babel/compat-data@7.26.5': + resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} engines: {node: '>=6.9.0'} '@babel/core@7.26.0': resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.3': - resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} + '@babel/generator@7.26.5': + resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.25.9': resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.9': - resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + '@babel/helper-compilation-targets@7.26.5': + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} engines: {node: '>=6.9.0'} '@babel/helper-create-class-features-plugin@7.25.9': @@ -586,8 +584,8 @@ packages: resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.25.9': - resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} engines: {node: '>=6.9.0'} '@babel/helper-remap-async-to-generator@7.25.9': @@ -596,8 +594,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.25.9': - resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} + '@babel/helper-replace-supers@7.26.5': + resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -626,8 +624,8 @@ packages: resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.3': - resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} + '@babel/parser@7.26.5': + resolution: {integrity: sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==} engines: {node: '>=6.0.0'} hasBin: true @@ -745,8 +743,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.25.9': - resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} + '@babel/plugin-transform-block-scoped-functions@7.26.5': + resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -823,8 +821,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-flow-strip-types@7.25.9': - resolution: {integrity: sha512-/VVukELzPDdci7UUsWQaSkhgnjIWXnIyRpM02ldxaVoFK96c41So8JcKT3m0gYjyv7j5FNPGS5vfELrWalkbDA==} + '@babel/plugin-transform-flow-strip-types@7.26.5': + resolution: {integrity: sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -901,8 +899,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.25.9': - resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} + '@babel/plugin-transform-nullish-coalescing-operator@7.26.5': + resolution: {integrity: sha512-OHqczNm4NTQlW1ghrVY43FPoiRzbmzNVbcgVnMKZN/RQYezHUSdjACjaX50CD3B7UIAjv39+MlsrVDb3v741FA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1051,8 +1049,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.26.3': - resolution: {integrity: sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==} + '@babel/plugin-transform-typescript@7.26.5': + resolution: {integrity: sha512-GJhPO0y8SD5EYVCy2Zr+9dSZcEgaSmq5BLR0Oc25TOEhC+ba49vUAGZFjy8v79z9E1mdldq4x9d1xgh4L1d5dQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1112,12 +1110,12 @@ packages: resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.26.4': - resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} + '@babel/traverse@7.26.5': + resolution: {integrity: sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.3': - resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + '@babel/types@7.26.5': + resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -1126,14 +1124,14 @@ packages: '@brillout/libassert@0.5.8': resolution: {integrity: sha512-u/fu+jTRUdNdbLONGq1plCfh+k2/XjSbGVTfnF3rHnSPZd+ABWp0XinR5ifrFkyGOzMbzv8IiQ44lZ4U6ZGrGA==} - '@cartridge/account-wasm@0.5.7': - resolution: {integrity: sha512-tUz3fUOAI9RkZPBQ3+ylm4CcVISB0oWTWHeKvm4hmWk2nX7ROxgvLrhxnTH87mRKijma6QRZUhDzEKYsxZTCjQ==} + '@cartridge/account-wasm@0.5.8': + resolution: {integrity: sha512-DuD/18rdywTpMlDMSILSvyMAYE2Tk2qUxTVru8io+fSzzba5xvyBxngpIjGpossu+H0lvsph1Q/ZZS7Xpnq0Uw==} - '@cartridge/connector@0.5.7': - resolution: {integrity: sha512-fW0hCOVkEopOtExceXSi/lssA7ox7rjdnsAzQVVRRuuSnWbyJ8973+mGHSqKzGFsvaVXzSaowpN4FUbizzIE5g==} + '@cartridge/connector@0.5.8': + resolution: {integrity: sha512-fv7bZOjSnJHPOKy6D8Ua+BISoD1oUUQQYweI4WskQvDCAovdy12iZ3f4bbbZUu5TXYlH7+/JDRoRudaDcz34og==} - '@cartridge/controller@0.5.7': - resolution: {integrity: sha512-54+PmRA8nVGCzzAKqHt6NEELa5t/b7ZCE/+nKjEAiO5Pe8qZC9844/RpZY170lerOJYdLouGwB4afgfxpJLs3Q==} + '@cartridge/controller@0.5.8': + resolution: {integrity: sha512-TananeGPCNcS6NMC9Ik2OnT2av7n1cfCs5c97ugOh6Xu1Ocgo9zw380ca7XAhHSnH6iZ1nrKNqAMVRFhE8bffA==} '@cartridge/penpal@6.2.3': resolution: {integrity: sha512-K8h9VqBfFPXcAFQNnvgBnejF/dp7249pS4jXu3NhNYR6JqMQxtcrDqfnPmJvbF4ECEBs+8Z2UiwlRQiKt5nNsg==} @@ -1820,24 +1818,24 @@ packages: resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.9.1': - resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} + '@eslint/core@0.10.0': + resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.2.0': resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.17.0': - resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} + '@eslint/js@9.18.0': + resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.5': resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.4': - resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} + '@eslint/plugin-kit@0.2.5': + resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@floating-ui/core@1.6.9': @@ -1973,8 +1971,8 @@ packages: peerDependencies: graphql: ^15.0.0 || ^16.9.0 || ^17.0.0 - '@graphql-tools/apollo-engine-loader@8.0.12': - resolution: {integrity: sha512-oPGdfixQ1/AryEywVFqVcuTheRVUjClyS04r2UUszbgF3+BlUIleGYG6LhGhMwwb1P9E8csAiFwzzFQWPzJCSQ==} + '@graphql-tools/apollo-engine-loader@8.0.13': + resolution: {integrity: sha512-0FH5Yh/4wO2yBO6nZZUwfOu2Wr7fF/twJ3YjuvURH6QS1jqRBGDdZ25xbQ2/yJ4jG+7Lo3vSdJNArc2dk2Pe3A==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -2039,8 +2037,8 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/github-loader@8.0.12': - resolution: {integrity: sha512-KKcDqqNBdNoGf4KL7q+20dbFxBkTl63uYxI9vlaKVHvnLd/JmuopQ4lkHCBj9UWP/AVyT6mlPlWwXSBg0lci0A==} + '@graphql-tools/github-loader@8.0.13': + resolution: {integrity: sha512-1eaRdfLFniIhs+MAHGDwy5Q6KraPRd48XHUV+HDuD63LHi10JtxVBPTWSUgNUkPkW0XoReyISjx9NFgTPK423A==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -2115,8 +2113,8 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/url-loader@8.0.23': - resolution: {integrity: sha512-WSrsUkuXXInET7i+da/qEOYfEGVtsG58Kgl/1XpEatFSL5qL5NWbuS0Xadi+p1gF6sy+VhPfvncLqhRjGWyvyQ==} + '@graphql-tools/url-loader@8.0.24': + resolution: {integrity: sha512-f+Yt6sswiEPrcWsInMbmf+3HNENV2IZK1z3IiGMHuyqb+QsMbJLxzDPHnxMtF2QGJOiRjBQy2sF2en7DPG+jSw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -2347,8 +2345,8 @@ packages: resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==} engines: {node: '>= 18'} - '@octokit/openapi-types@22.2.0': - resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} + '@octokit/openapi-types@23.0.1': + resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} '@octokit/plugin-paginate-rest@11.3.1': resolution: {integrity: sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==} @@ -2380,8 +2378,8 @@ packages: resolution: {integrity: sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==} engines: {node: '>= 18'} - '@octokit/types@13.6.2': - resolution: {integrity: sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==} + '@octokit/types@13.7.0': + resolution: {integrity: sha512-BXfRP+3P3IN6fd4uF3SniaHKOO4UXWBfkdR3vA8mIvaoO/wLjGN5qivUtW0QRitBHHMcfC41SLhNVYIZZE+wkA==} '@parcel/watcher-android-arm64@2.5.0': resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==} @@ -3346,8 +3344,8 @@ packages: '@starknet-react/chains@0.1.7': resolution: {integrity: sha512-UNh97I1SvuJKaAhKOmpEk8JcWuZWMlPG/ba2HcvFYL9x/47BKndJ+Da9V+iJFtkHUjreVnajT1snsaz1XMG+UQ==} - '@starknet-react/chains@3.1.1': - resolution: {integrity: sha512-1EboxfkZlmLNE3qegyq+/rJrj+FswQaI5j60y2l1mV6d/QuObtxwQhPAso1gklCnzr9p3G0NdZYB87P2QJfLhg==} + '@starknet-react/chains@3.1.2': + resolution: {integrity: sha512-/Oldb4AVYdvHXzlBRxu01s0WwdOjqL2Q47BAmiv07/aBRU7mSZl6r/6l+bYKNrChSZl7WVnlpb+ojfwhRpbGcw==} '@starknet-react/core@2.3.0': resolution: {integrity: sha512-8g9d0Gs811gJnQJHVMxQoXYhv+y5/qug7NQ0lnJ51uytdBhr/Zz5wgeTHW4ZQ5Igljyvf+ks+yhp4P1iSvnSqA==} @@ -3363,8 +3361,8 @@ packages: react: ^18.0 starknet: ^5.25.0 - '@starknet-react/core@3.6.3': - resolution: {integrity: sha512-838NJVlLKtb7TO9fr/PPBpelgtnsybDoI3NhPAGpBFheB/1ZvFKGWXf8NLJY1soY+ctCVTh1Uai4FH3VHa3R7A==} + '@starknet-react/core@3.7.0': + resolution: {integrity: sha512-8L6/yWUqDdjzOq+cE9QVxD1ZDg6XhsNe4GAraUxAza6MJd4acSoYl9KsnYJPyBmPU1XVVRhH46h7zOYxozydoQ==} peerDependencies: get-starknet-core: ^4.0.0 react: ^18.0 @@ -3630,68 +3628,68 @@ packages: resolution: {integrity: sha512-0XR1poYvPQoPpmfDYLEqUGu5ePAQ4pdgN3VFsZBNAeze7qubVpsIY1o1R6PZpKep/DKu33GSm2NhwpCLkMs2Cw==} engines: {node: '>=14'} - '@swc/core-darwin-arm64@1.10.4': - resolution: {integrity: sha512-sV/eurLhkjn/197y48bxKP19oqcLydSel42Qsy2zepBltqUx+/zZ8+/IS0Bi7kaWVFxerbW1IPB09uq8Zuvm3g==} + '@swc/core-darwin-arm64@1.10.7': + resolution: {integrity: sha512-SI0OFg987P6hcyT0Dbng3YRISPS9uhLX1dzW4qRrfqQdb0i75lPJ2YWe9CN47HBazrIA5COuTzrD2Dc0TcVsSQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.10.4': - resolution: {integrity: sha512-gjYNU6vrAUO4+FuovEo9ofnVosTFXkF0VDuo1MKPItz6e2pxc2ale4FGzLw0Nf7JB1sX4a8h06CN16/pLJ8Q2w==} + '@swc/core-darwin-x64@1.10.7': + resolution: {integrity: sha512-RFIAmWVicD/l3RzxgHW0R/G1ya/6nyMspE2cAeDcTbjHi0I5qgdhBWd6ieXOaqwEwiCd0Mot1g2VZrLGoBLsjQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.10.4': - resolution: {integrity: sha512-zd7fXH5w8s+Sfvn2oO464KDWl+ZX1MJiVmE4Pdk46N3PEaNwE0koTfgx2vQRqRG4vBBobzVvzICC3618WcefOA==} + '@swc/core-linux-arm-gnueabihf@1.10.7': + resolution: {integrity: sha512-QP8vz7yELWfop5mM5foN6KkLylVO7ZUgWSF2cA0owwIaziactB2hCPZY5QU690coJouk9KmdFsPWDnaCFUP8tg==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.10.4': - resolution: {integrity: sha512-+UGfoHDxsMZgFD3tABKLeEZHqLNOkxStu+qCG7atGBhS4Slri6h6zijVvf4yI5X3kbXdvc44XV/hrP/Klnui2A==} + '@swc/core-linux-arm64-gnu@1.10.7': + resolution: {integrity: sha512-NgUDBGQcOeLNR+EOpmUvSDIP/F7i/OVOKxst4wOvT5FTxhnkWrW+StJGKj+DcUVSK5eWOYboSXr1y+Hlywwokw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.10.4': - resolution: {integrity: sha512-cDDj2/uYsOH0pgAnDkovLZvKJpFmBMyXkxEG6Q4yw99HbzO6QzZ5HDGWGWVq/6dLgYKlnnmpjZCPPQIu01mXEg==} + '@swc/core-linux-arm64-musl@1.10.7': + resolution: {integrity: sha512-gp5Un3EbeSThBIh6oac5ZArV/CsSmTKj5jNuuUAuEsML3VF9vqPO+25VuxCvsRf/z3py+xOWRaN2HY/rjMeZog==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.10.4': - resolution: {integrity: sha512-qJXh9D6Kf5xSdGWPINpLGixAbB5JX8JcbEJpRamhlDBoOcQC79dYfOMEIxWPhTS1DGLyFakAx2FX/b2VmQmj0g==} + '@swc/core-linux-x64-gnu@1.10.7': + resolution: {integrity: sha512-k/OxLLMl/edYqbZyUNg6/bqEHTXJT15l9WGqsl/2QaIGwWGvles8YjruQYQ9d4h/thSXLT9gd8bExU2D0N+bUA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.10.4': - resolution: {integrity: sha512-A76lIAeyQnHCVt0RL/pG+0er8Qk9+acGJqSZOZm67Ve3B0oqMd871kPtaHBM0BW3OZAhoILgfHW3Op9Q3mx3Cw==} + '@swc/core-linux-x64-musl@1.10.7': + resolution: {integrity: sha512-XeDoURdWt/ybYmXLCEE8aSiTOzEn0o3Dx5l9hgt0IZEmTts7HgHHVeRgzGXbR4yDo0MfRuX5nE1dYpTmCz0uyA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.10.4': - resolution: {integrity: sha512-e6j5kBu4fIY7fFxFxnZI0MlEovRvp50Lg59Fw+DVbtqHk3C85dckcy5xKP+UoXeuEmFceauQDczUcGs19SRGSQ==} + '@swc/core-win32-arm64-msvc@1.10.7': + resolution: {integrity: sha512-nYAbi/uLS+CU0wFtBx8TquJw2uIMKBnl04LBmiVoFrsIhqSl+0MklaA9FVMGA35NcxSJfcm92Prl2W2LfSnTqQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.10.4': - resolution: {integrity: sha512-RSYHfdKgNXV/amY5Tqk1EWVsyQnhlsM//jeqMLw5Fy9rfxP592W9UTumNikNRPdjI8wKKzNMXDb1U29tQjN0dg==} + '@swc/core-win32-ia32-msvc@1.10.7': + resolution: {integrity: sha512-+aGAbsDsIxeLxw0IzyQLtvtAcI1ctlXVvVcXZMNXIXtTURM876yNrufRo4ngoXB3jnb1MLjIIjgXfFs/eZTUSw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.10.4': - resolution: {integrity: sha512-1ujYpaqfqNPYdwKBlvJnOqcl+Syn3UrQ4XE0Txz6zMYgyh6cdU6a3pxqLqIUSJ12MtXRA9ZUhEz1ekU3LfLWXw==} + '@swc/core-win32-x64-msvc@1.10.7': + resolution: {integrity: sha512-TBf4clpDBjF/UUnkKrT0/th76/zwvudk5wwobiTFqDywMApHip5O0VpBgZ+4raY2TM8k5+ujoy7bfHb22zu17Q==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.10.4': - resolution: {integrity: sha512-ut3zfiTLORMxhr6y/GBxkHmzcGuVpwJYX4qyXWuBKkpw/0g0S5iO1/wW7RnLnZbAi8wS/n0atRZoaZlXWBkeJg==} + '@swc/core@1.10.7': + resolution: {integrity: sha512-py91kjI1jV5D5W/Q+PurBdGsdU5TFbrzamP7zSCqLdMcHkKi3rQEM5jkQcZr0MXXSJTaayLxS3MWYTBIkzPDrg==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -3713,20 +3711,20 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - '@tanstack/history@1.95.0': - resolution: {integrity: sha512-w1/yWuIBqmG0Z0MPMf1OuOCce7FXyVH4L4dIA4rvpnjIUCH8qRUgloFAVg37nTMUbOmhMsY2NZDxCpKBv+CLJg==} + '@tanstack/history@1.95.2': + resolution: {integrity: sha512-FgUauZLg+nRybH5dKyAYokmXs064rHc0qpMizKxTegSTMHj/z2B6T7pjEG2Zd6dBegeYNVL97ROg7Srr9cuBug==} engines: {node: '>=12'} - '@tanstack/query-core@5.62.16': - resolution: {integrity: sha512-9Sgft7Qavcd+sN0V25xVyo0nfmcZXBuODy3FVG7BMWTg1HMLm8wwG5tNlLlmSic1u7l1v786oavn+STiFaPH2g==} + '@tanstack/query-core@5.64.0': + resolution: {integrity: sha512-/MPJt/AaaMzdWJZTafgMyYhEX/lGjQrNz8+NDQSk8fNoU5PHqh05FhQaBrEQafW2PeBHsRbefEf//qKMiSAbQQ==} - '@tanstack/react-query@5.62.16': - resolution: {integrity: sha512-XJIZNj65d2IdvU8VBESmrPakfIm6FSdHDzrS1dPrAwmq3ZX+9riMh/ZfbNQHAWnhrgmq7KoXpgZSRyXnqMYT9A==} + '@tanstack/react-query@5.64.0': + resolution: {integrity: sha512-tBMzlROROUcTDMpDt1NC3n9ndKnJHPB3RCpa6Bf9f31TFvqhLz879x8jldtKU+6IwMSw1Pn4K1AKA+2SYyA6TA==} peerDependencies: react: ^18 || ^19 - '@tanstack/react-router@1.95.1': - resolution: {integrity: sha512-P5x4yNhcdkYsCEoYeGZP8Q9Jlxf0WXJa4G/xvbmM905seZc9FqJqvCSRvX3dWTPOXRABhl4g+8DHqfft0c/AvQ==} + '@tanstack/react-router@1.95.5': + resolution: {integrity: sha512-tNS3an0y5noCqUZf1PYDgd/o7W+YnAyDwRx/ZkD/cQ019M2Jc5comTzo1GwpRz/ozT1aKbe9OSsCi5brEYL0zA==} engines: {node: '>=12'} peerDependencies: react: '>=18' @@ -3751,25 +3749,25 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/router-devtools@1.95.1': - resolution: {integrity: sha512-3EtYN0k9QxamQgmIH2SeDQDkrydH3Z1noFXKovBOePXKGjebyrlXV8VxBxNerx0TWQjxvlESiJM9DOxOlGujPg==} + '@tanstack/router-devtools@1.95.5': + resolution: {integrity: sha512-i6wzj3o8Qn1ZODgAYnOTHnVL9h0x1cYD3pzIXLunkhjhyUwECUhBow83gXsTxO/T7D1YFsuQj59TXaAoI+OcyQ==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.95.1 + '@tanstack/react-router': ^1.95.5 react: '>=18' react-dom: '>=18' - '@tanstack/router-generator@1.95.1': - resolution: {integrity: sha512-bUymh20C9AdtwLdZkgfx04S3N9yvm8S60xFFJu1dyYI7gn5g4aPSPYaQKYFmPhc+kQJ67ZbmWVkFBKHZ8YGYvA==} + '@tanstack/router-generator@1.95.5': + resolution: {integrity: sha512-Ot/IcIadFBZ7p3CiOVmUUOAT9PP4mIb+36QNtMK6/flstIcLy5+uPdSSjWyM7yeMjLQj8+B22m+djdtZ/XojnA==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.95.1 + '@tanstack/react-router': ^1.95.5 peerDependenciesMeta: '@tanstack/react-router': optional: true - '@tanstack/router-plugin@1.95.1': - resolution: {integrity: sha512-d8iIaehb/6fAUdhHOuIP/9B9pEXLy0AWTX8yWIK9PB3r/kSShWqNDrx7Qj0O6dg3xK3yiwHSNqPQMtA03s0vag==} + '@tanstack/router-plugin@1.95.5': + resolution: {integrity: sha512-leVSXNJi3Vkqd9mA082bWCzz8AxpzCgI+poTBaIgVGwq3BoiU1j4XH/P/J/C1bfaFlg2hEcERmaeugDAaeTuAA==} engines: {node: '>=12'} peerDependencies: '@rsbuild/core': '>=1.0.2' @@ -3857,8 +3855,8 @@ packages: '@types/babel__traverse@7.20.6': resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - '@types/bun@1.1.15': - resolution: {integrity: sha512-Fi7ND1jCq8O5iU3s9z3TKHggD0hidgpe7wSxyisviXpbMmY4B1KiokF3f/mmjOoDrEcf873tSpixgen7Wm9X0g==} + '@types/bun@1.1.16': + resolution: {integrity: sha512-E+ue6NMcn4FXC5bDRE1W/BXUVs01h5Mt02qH8/8HGCox9akuh8KNOFdwvaQS9TDgT2RmUyJYFRRqA60WtTnm2g==} '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -4206,8 +4204,8 @@ packages: resolution: {integrity: sha512-9lXugdknoIequO4OYvIjhygvfSEgnO8oASLqLelnDhkRjgBZhc39shC3QSlZuyDO9bgYSIVa2cHAiN+St3ty4w==} engines: {node: '>=18.0.0'} - '@whatwg-node/fetch@0.10.1': - resolution: {integrity: sha512-gmPOLrsjSZWEZlr9Oe5+wWFBq3CG6fN13rGlM91Jsj/vZ95G9CCvrORGBAxMXy0AJGiC83aYiHXn3JzTzXQmbA==} + '@whatwg-node/fetch@0.10.3': + resolution: {integrity: sha512-jCTL/qYcIW2GihbBRHypQ/Us7saWMNZ5fsumsta+qPY0Pmi1ccba/KRQvgctmQsbP69FWemJSs8zVcFaNwdL0w==} engines: {node: '>=18.0.0'} '@whatwg-node/fetch@0.9.23': @@ -4218,8 +4216,8 @@ packages: resolution: {integrity: sha512-tcZAhrpx6oVlkEsRngeTEEE7I5/QdLjeEz4IlekabGaESP7+Dkm/6a9KcF1KdCBB7mO9PXtBkwCuTCt8+UPg8Q==} engines: {node: '>=18.0.0'} - '@whatwg-node/node-fetch@0.7.5': - resolution: {integrity: sha512-t7kGrt2fdfNvzy1LCAE9/OnIyMtizgFhgJmk7iLJwQsLmR7S86F8Q4aDRPbCfo7pISJP6Fx/tPdfFNjHS23WTA==} + '@whatwg-node/node-fetch@0.7.7': + resolution: {integrity: sha512-BDbIMOenThOTFDBLh1WscgBNAxfDAdAdd9sMG8Ff83hYxApJVbqEct38bUAj+zn8bTsfBx/lyfnVOTyq5xUlvg==} engines: {node: '>=18.0.0'} abbrev@2.0.0: @@ -4503,8 +4501,8 @@ packages: browser-assert@1.2.1: resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} - browserslist@4.24.3: - resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -4520,8 +4518,8 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - bun-types@1.1.42: - resolution: {integrity: sha512-beMbnFqWbbBQHll/bn3phSwmoOQmnX2nt8NI9iOQKFbgR5Z6rlH3YuaMdlid8vp5XGct3/W4QVQBmhoOEoe4nw==} + bun-types@1.1.43: + resolution: {integrity: sha512-W0wCtVH+bwFp7p3Zgs03CqxEDmXxEvmmUM/FBKgWIv9T8gyeotvIjIbHzuDScc2DphhRNtr7hJLCR5PspYL5qw==} bundle-require@5.1.0: resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} @@ -4572,8 +4570,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001690: - resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} + caniuse-lite@1.0.30001692: + resolution: {integrity: sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==} capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -4658,8 +4656,8 @@ packages: chroma-js@2.6.0: resolution: {integrity: sha512-BLHvCB9s8Z1EV4ethr6xnkl/P2YRFOGqfgvuMG/MyCbZPrTA+NeiByY6XvgF0zP4/2deU2CXnWyMa3zu1LqQ3A==} - chromatic@11.22.0: - resolution: {integrity: sha512-u1kAPR9lj9aFzsCp0iWPXBbsKgcxFU7iJO6mFbgNHGVg+YPBqiJMuvgB8EQHdNbHjk5amFnGnIz/Ww8fK3t9Hw==} + chromatic@11.22.2: + resolution: {integrity: sha512-Z7+9hD1yp1fUm34XX1wojIco0lQlXOVYhzDSE8v1ZU6qLD2r4N6UHKD+N+XY1Jj+gpsDFWYMTpSnDfcHZf5mhg==} hasBin: true peerDependencies: '@chromatic-com/cypress': ^0.*.* || ^1.0.0 @@ -4738,6 +4736,10 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -4787,8 +4789,8 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - core-js-compat@3.39.0: - resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} + core-js-compat@3.40.0: + resolution: {integrity: sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==} cosmiconfig@8.3.6: resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} @@ -4851,6 +4853,10 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -5073,8 +5079,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.78: - resolution: {integrity: sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==} + electron-to-chromium@1.5.80: + resolution: {integrity: sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==} emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -5269,8 +5275,8 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react-refresh@0.4.16: - resolution: {integrity: sha512-slterMlxAhov/DZO8NScf6mEeMBBXodFUolijDvrtTxyezyLoTQaa73FyYus/VbTdftd8wBgBxPMRk3poleXNQ==} + eslint-plugin-react-refresh@0.4.18: + resolution: {integrity: sha512-IRGEoFn3OKalm3hjfolEWGqoF/jPqeEYFp+C8B0WMzwGwBMvlRDQd06kghDhF0C61uJ6WfSDhEZE/sAQjduKgw==} peerDependencies: eslint: '>=8.40' @@ -5286,8 +5292,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.17.0: - resolution: {integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==} + eslint@9.18.0: + resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -5438,6 +5444,10 @@ packages: picomatch: optional: true + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + fetch-cookie@3.1.0: resolution: {integrity: sha512-s/XhhreJpqH0ftkGVcQt8JE9bqk+zRn4jF5mPJXWZeQMCI5odV9K+wEWYbnzFPHgQZlvPSMjS4n4yawWE8RINw==} @@ -5520,14 +5530,18 @@ packages: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + fraction.js@4.3.4: resolution: {integrity: sha512-pwiTgt0Q7t+GHZA4yaLjObx4vXmmdcS0iSJ19o8d/goUGgItX9UZWKWNnLHehxviD8wU2IWRsnR8cD5+yOJP2Q==} fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - framer-motion@11.16.0: - resolution: {integrity: sha512-oL2AWqLQuw0+CNEUa0sz3mWC/n3i147CckvpQn8bLRs30b+HxTxlRi0YR2FpHHhAbWV7DKjNdHU42KHLfBWh/g==} + framer-motion@11.17.0: + resolution: {integrity: sha512-uTNLH9JPMD3ad14WBt3KYRTR+If4tGPLgKTKTIIPaEBMkvazs6EkWNcmCh65qA/tyinOqIbQiuCorXX0qQsNoQ==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -5711,8 +5725,8 @@ packages: peerDependencies: graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - graphql-ws@5.16.0: - resolution: {integrity: sha512-Ju2RCU2dQMgSKtArPbEtsK5gNLnsQyTNIo/T7cZNp96niC1x0KdJNZV0TIoilceBPQwfb5itrGl8pkFeOUMl4A==} + graphql-ws@5.16.2: + resolution: {integrity: sha512-E1uccsZxt/96jH/OwmLPuXMACILs76pKF2i3W861LpKBCYtGIyPQGtWLuBLkND4ox1KHns70e83PS4te50nvPQ==} engines: {node: '>=10'} peerDependencies: graphql: '>=0.11 <=16' @@ -6696,8 +6710,8 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.3: - resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} mobx@6.13.5: resolution: {integrity: sha512-/HTWzW2s8J1Gqt+WmUj5Y0mddZk+LInejADc79NJadrWla3rHzmRHki/mnEUH1AvOmbNTZ1BRbKxr8DSgfdjMA==} @@ -6705,8 +6719,8 @@ packages: modern-ahocorasick@1.1.0: resolution: {integrity: sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ==} - motion-dom@11.16.0: - resolution: {integrity: sha512-4bmEwajSdrljzDAYpu6ceEdtI4J5PH25fmN8YSx7Qxk6OMrC10CXM0D5y+VO/pFZjhmCvm2bGf7Rus482kwhzA==} + motion-dom@11.16.4: + resolution: {integrity: sha512-2wuCie206pCiP2K23uvwJeci4pMFfyQKpWI0Vy6HrCTDzDCer4TsYtT7IVnuGbDeoIV37UuZiUr6SZMHEc1Vww==} motion-utils@11.16.0: resolution: {integrity: sha512-ngdWPjg31rD4WGXFi0eZ00DQQqKKu04QExyv/ymlC+3k+WIgYVFbt6gS5JsFPbJODTF/r8XiE/X+SsoT9c0ocw==} @@ -6751,6 +6765,10 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -6760,6 +6778,10 @@ packages: encoding: optional: true + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + node-gyp-build-optional-packages@5.1.1: resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} hasBin: true @@ -7015,6 +7037,9 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + pathe@2.0.1: + resolution: {integrity: sha512-6jpjMpOth5S9ITVu5clZ7NOgHNsv5vRQdheL9ztp2vZmM6fRbLvyua1tiBIL4lk8SAe3ARzeXEly6siXCjDHDw==} + pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} @@ -7337,9 +7362,9 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - readdirp@4.0.2: - resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} - engines: {node: '>= 14.16.0'} + readdirp@4.1.1: + resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} + engines: {node: '>= 14.18.0'} recast@0.23.9: resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} @@ -7864,6 +7889,10 @@ packages: swap-case@2.0.2: resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} + sync-fetch@0.6.0-2: + resolution: {integrity: sha512-c7AfkZ9udatCuAy9RSfiGPpeOKKUAUK5e1cXadLOGUjasdxqYqAK0jTNkM/FSEyJ3a5Ra27j/tw/PS0qLmaF/A==} + engines: {node: '>=18'} + tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} @@ -7912,8 +7941,8 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - three-stdlib@2.35.2: - resolution: {integrity: sha512-Ns9ZdiFEAsiv8JvHS28Qgxg4YRTq13Ixa4EDUQZhUovZ3j/GLTou4zE887SLSqsuRZwuy3gklttn2ha5JaJpTQ==} + three-stdlib@2.35.7: + resolution: {integrity: sha512-k1oDqa1GYT4smhsN204DtmcQLfDuzSD4bbGmErTvUH40dpcwgBUgbwMzYYVWYB5tT7u0KBvAQpwuAPEXuwJVpQ==} peerDependencies: three: '>=0.128.0' @@ -7923,6 +7952,10 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + timeout-signal@2.0.0: + resolution: {integrity: sha512-YBGpG4bWsHoPvofT6y/5iqulfXIiIErl5B0LdtHT1mGXDFTAhhRrbUpTvBgYbovr+3cKblya2WAOcpoy90XguA==} + engines: {node: '>=16'} + tiny-emitter@2.1.0: resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} @@ -7991,8 +8024,8 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tough-cookie@5.0.0: - resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==} + tough-cookie@5.1.0: + resolution: {integrity: sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==} engines: {node: '>=16'} tr46@0.0.3: @@ -8147,8 +8180,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} engines: {node: '>=14.17'} hasBin: true @@ -8234,16 +8267,16 @@ packages: resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} engines: {node: '>=0.10.0'} - unplugin@1.16.0: - resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==} + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} engines: {node: '>=14.0.0'} upath@1.2.0: resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} engines: {node: '>=4'} - update-browserslist-db@1.1.1: - resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + update-browserslist-db@1.1.2: + resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -8330,8 +8363,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - viem@2.22.3: - resolution: {integrity: sha512-lO8K4lL5vWfJ9dmeJo9BfwlJJ0vNDrgLXgwFJNzjLJ6eDfOGXr48yzNhqt96ybYS7SlM7ecT7yhJIVfhZLkOkw==} + viem@2.22.8: + resolution: {integrity: sha512-iB3PW/a/qzpYbpjo3R662u6a/zo6piZHez/N/bOC25C79FYXBCs8mQDqwiHk3FYErUhS4KVZLabKV9zGMd+EgQ==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -8492,6 +8525,10 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + webauthn-p256@0.0.10: resolution: {integrity: sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA==} @@ -8507,6 +8544,10 @@ packages: whatwg-fetch@3.6.20: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -8721,11 +8762,11 @@ snapshots: optionalDependencies: graphql: 16.10.0 - '@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.2)': + '@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.3)': dependencies: - '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.2) + '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.3) graphql: 16.10.0 - typescript: 5.7.2 + typescript: 5.7.3 '@adobe/css-tools@4.4.1': {} @@ -8750,11 +8791,11 @@ snapshots: '@ardatan/relay-compiler@12.0.0(encoding@0.1.13)(graphql@16.10.0)': dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.3 - '@babel/parser': 7.26.3 + '@babel/generator': 7.26.5 + '@babel/parser': 7.26.5 '@babel/runtime': 7.26.0 - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 babel-preset-fbjs: 3.4.0(@babel/core@7.26.0) chalk: 4.1.2 fb-watchman: 2.0.2 @@ -8771,28 +8812,22 @@ snapshots: - encoding - supports-color - '@ardatan/sync-fetch@0.0.1(encoding@0.1.13)': - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - '@ark-project/core@3.0.0-beta.1(encoding@0.1.13)(typescript@5.7.2)(viem@2.22.3(typescript@5.7.2)(zod@3.24.1))': + '@ark-project/core@3.0.0-beta.1(encoding@0.1.13)(typescript@5.7.3)(viem@2.22.8(typescript@5.7.3)(zod@3.24.1))': dependencies: '@scure/starknet': 0.3.0 starknet: 6.11.0(encoding@0.1.13) - viem: 2.22.3(typescript@5.7.2)(zod@3.24.1) + viem: 2.22.8(typescript@5.7.3)(zod@3.24.1) optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - encoding - '@ark-project/react@2.0.0-beta.2(encoding@0.1.13)(typescript@5.7.2)(viem@2.22.3(typescript@5.7.2)(zod@3.24.1))': + '@ark-project/react@2.0.0-beta.2(encoding@0.1.13)(typescript@5.7.3)(viem@2.22.8(typescript@5.7.3)(zod@3.24.1))': dependencies: - '@ark-project/core': 3.0.0-beta.1(encoding@0.1.13)(typescript@5.7.2)(viem@2.22.3(typescript@5.7.2)(zod@3.24.1)) + '@ark-project/core': 3.0.0-beta.1(encoding@0.1.13)(typescript@5.7.3)(viem@2.22.8(typescript@5.7.3)(zod@3.24.1)) '@starknet-react/chains': 0.1.7 '@starknet-react/core': 2.9.0(get-starknet-core@3.3.4(starknet@6.11.0(encoding@0.1.13)))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13)) - '@tanstack/react-query': 5.62.16(react@18.3.1) + '@tanstack/react-query': 5.64.0(react@18.3.1) get-starknet-core: 3.3.4(starknet@6.11.0(encoding@0.1.13)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -8808,20 +8843,20 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.3': {} + '@babel/compat-data@7.26.5': {} '@babel/core@7.26.0': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.3 - '@babel/helper-compilation-targets': 7.25.9 + '@babel/generator': 7.26.5 + '@babel/helper-compilation-targets': 7.26.5 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.3 + '@babel/parser': 7.26.5 '@babel/template': 7.25.9 - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 convert-source-map: 2.0.0 debug: 4.4.0 gensync: 1.0.0-beta.2 @@ -8830,23 +8865,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.26.3': + '@babel/generator@7.26.5': dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 - '@babel/helper-compilation-targets@7.25.9': + '@babel/helper-compilation-targets@7.26.5': dependencies: - '@babel/compat-data': 7.26.3 + '@babel/compat-data': 7.26.5 '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.3 + browserslist: 4.24.4 lru-cache: 5.1.1 semver: 6.3.1 @@ -8856,9 +8891,9 @@ snapshots: '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0) '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.5 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -8873,8 +8908,8 @@ snapshots: '@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 debug: 4.4.0 lodash.debounce: 4.0.8 resolve: 1.22.10 @@ -8883,15 +8918,15 @@ snapshots: '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color @@ -8900,38 +8935,38 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 - '@babel/helper-plugin-utils@7.25.9': {} + '@babel/helper-plugin-utils@7.26.5': {} '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': + '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color @@ -8944,42 +8979,42 @@ snapshots: '@babel/helper-wrap-function@7.25.9': dependencies: '@babel/template': 7.25.9 - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color '@babel/helpers@7.26.0': dependencies: '@babel/template': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 - '@babel/parser@7.26.3': + '@babel/parser@7.26.5': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: @@ -8988,8 +9023,8 @@ snapshots: '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color @@ -8997,16 +9032,16 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.26.0)': dependencies: - '@babel/compat-data': 7.26.3 + '@babel/compat-data': 7.26.5 '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) @@ -9017,55 +9052,55 @@ snapshots: '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color @@ -9073,26 +9108,26 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -9100,7 +9135,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -9108,10 +9143,10 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.26.4 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0) + '@babel/traverse': 7.26.5 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -9119,56 +9154,56 @@ snapshots: '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/template': 7.25.9 '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-flow-strip-types@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-flow-strip-types@7.26.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.0) '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color @@ -9176,37 +9211,37 @@ snapshots: '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -9214,7 +9249,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -9222,9 +9257,9 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color @@ -9232,7 +9267,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -9240,47 +9275,47 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-nullish-coalescing-operator@7.26.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0) transitivePeerDependencies: - supports-color '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color @@ -9288,13 +9323,13 @@ snapshots: '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -9303,24 +9338,24 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-react-constant-elements@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.0)': dependencies: @@ -9332,21 +9367,21 @@ snapshots: '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color @@ -9354,34 +9389,34 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 regenerator-transform: 0.15.2 '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color @@ -9389,24 +9424,24 @@ snapshots: '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-typescript@7.26.3(@babel/core@7.26.0)': + '@babel/plugin-transform-typescript@7.26.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: @@ -9415,32 +9450,32 @@ snapshots: '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/preset-env@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/compat-data': 7.26.3 + '@babel/compat-data': 7.26.5 '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) @@ -9454,7 +9489,7 @@ snapshots: '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.0) '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) @@ -9479,7 +9514,7 @@ snapshots: '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.26.5(@babel/core@7.26.0) '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) @@ -9505,7 +9540,7 @@ snapshots: babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) - core-js-compat: 3.39.0 + core-js-compat: 3.40.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -9513,14 +9548,14 @@ snapshots: '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/types': 7.26.3 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/types': 7.26.5 esutils: 2.0.3 '@babel/preset-react@7.26.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) @@ -9532,11 +9567,11 @@ snapshots: '@babel/preset-typescript@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) - '@babel/plugin-transform-typescript': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.26.5(@babel/core@7.26.0) transitivePeerDependencies: - supports-color @@ -9547,22 +9582,22 @@ snapshots: '@babel/template@7.25.9': dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 - '@babel/traverse@7.26.4': + '@babel/traverse@7.26.5': dependencies: '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.3 - '@babel/parser': 7.26.3 + '@babel/generator': 7.26.5 + '@babel/parser': 7.26.5 '@babel/template': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.26.3': + '@babel/types@7.26.5': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 @@ -9571,12 +9606,12 @@ snapshots: '@brillout/libassert@0.5.8': {} - '@cartridge/account-wasm@0.5.7': {} + '@cartridge/account-wasm@0.5.8': {} - '@cartridge/connector@0.5.7(encoding@0.1.13)(get-starknet-core@3.3.4(starknet@6.11.0(encoding@0.1.13)))(react@18.3.1)(typescript@5.7.2)': + '@cartridge/connector@0.5.8(encoding@0.1.13)(get-starknet-core@3.3.4(starknet@6.11.0(encoding@0.1.13)))(react@18.3.1)(typescript@5.7.3)': dependencies: - '@cartridge/controller': 0.5.7(encoding@0.1.13) - '@starknet-react/core': 3.6.3(get-starknet-core@3.3.4(starknet@6.11.0(encoding@0.1.13)))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.2) + '@cartridge/controller': 0.5.8(encoding@0.1.13) + '@starknet-react/core': 3.7.0(get-starknet-core@3.3.4(starknet@6.11.0(encoding@0.1.13)))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.3) starknet: 6.11.0(encoding@0.1.13) transitivePeerDependencies: - bufferutil @@ -9586,9 +9621,9 @@ snapshots: - typescript - utf-8-validate - '@cartridge/controller@0.5.7(encoding@0.1.13)': + '@cartridge/controller@0.5.8(encoding@0.1.13)': dependencies: - '@cartridge/account-wasm': 0.5.7 + '@cartridge/account-wasm': 0.5.8 '@cartridge/penpal': 6.2.3 '@starknet-io/types-js': 0.7.10 '@telegram-apps/sdk': 2.11.3 @@ -9622,7 +9657,7 @@ snapshots: '@chromatic-com/storybook@1.9.0(react@18.3.1)': dependencies: - chromatic: 11.22.0 + chromatic: 11.22.2 filesize: 10.1.6 jsonfile: 6.1.0 react-confetti: 6.2.2(react@18.3.1) @@ -9643,9 +9678,9 @@ snapshots: picocolors: 1.1.1 sisteransi: 1.0.5 - '@dojoengine/core@1.0.0-alpha.24(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.2)': + '@dojoengine/core@1.0.0-alpha.24(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.3)': dependencies: - '@dojoengine/recs': 2.0.13(typescript@5.7.2)(zod@3.24.1) + '@dojoengine/recs': 2.0.13(typescript@5.7.3)(zod@3.24.1) starknet: 6.11.0(encoding@0.1.13) zod: 3.24.1 transitivePeerDependencies: @@ -9653,9 +9688,9 @@ snapshots: - typescript - utf-8-validate - '@dojoengine/core@1.0.4-alpha.3.1.0(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.2)': + '@dojoengine/core@1.0.4-alpha.3.1.0(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.3)': dependencies: - '@dojoengine/recs': 2.0.13(typescript@5.7.2)(zod@3.24.1) + '@dojoengine/recs': 2.0.13(typescript@5.7.3)(zod@3.24.1) starknet: 6.11.0(encoding@0.1.13) zod: 3.24.1 transitivePeerDependencies: @@ -9663,9 +9698,9 @@ snapshots: - typescript - utf-8-validate - '@dojoengine/create-burner@1.0.4-alpha.3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.2)': + '@dojoengine/create-burner@1.0.4-alpha.3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.3)': dependencies: - '@dojoengine/core': 1.0.4-alpha.3.1.0(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.2) + '@dojoengine/core': 1.0.4-alpha.3.1.0(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.3) '@scure/bip32': 1.6.1 '@starknet-react/core': 2.3.0(get-starknet-core@3.3.4(starknet@6.11.0(encoding@0.1.13)))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13)) encoding: 0.1.13 @@ -9679,12 +9714,12 @@ snapshots: - typescript - utf-8-validate - '@dojoengine/react@1.0.4-alpha.3.1.0(@types/node@20.17.12)(@types/react@18.3.18)(@vitest/ui@2.1.8(vitest@2.1.8))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))(terser@5.37.0)(type-fest@2.19.0)(typescript@5.7.2)(zod@3.24.1)': + '@dojoengine/react@1.0.4-alpha.3.1.0(@types/node@20.17.12)(@types/react@18.3.18)(@vitest/ui@2.1.8(vitest@2.1.8))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))(terser@5.37.0)(type-fest@2.19.0)(typescript@5.7.3)(zod@3.24.1)': dependencies: - '@dojoengine/recs': 2.0.13(typescript@5.7.2)(zod@3.24.1) - '@dojoengine/state': 1.0.4-alpha.3.1.0(@types/node@20.17.12)(@vitest/ui@2.1.8(vitest@2.1.8))(starknet@6.11.0(encoding@0.1.13))(terser@5.37.0)(typescript@5.7.2)(zod@3.24.1) + '@dojoengine/recs': 2.0.13(typescript@5.7.3)(zod@3.24.1) + '@dojoengine/state': 1.0.4-alpha.3.1.0(@types/node@20.17.12)(@vitest/ui@2.1.8(vitest@2.1.8))(starknet@6.11.0(encoding@0.1.13))(terser@5.37.0)(typescript@5.7.3)(zod@3.24.1) '@dojoengine/torii-client': 1.0.4-alpha.3.1.0 - '@dojoengine/utils': 1.0.4-alpha.3.1.0(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.2)(zod@3.24.1) + '@dojoengine/utils': 1.0.4-alpha.3.1.0(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.3)(zod@3.24.1) '@latticexyz/utils': 2.2.14 encoding: 0.1.13 fast-deep-equal: 3.1.3 @@ -9717,9 +9752,9 @@ snapshots: - utf-8-validate - zod - '@dojoengine/recs@2.0.13(typescript@5.7.2)(zod@3.24.1)': + '@dojoengine/recs@2.0.13(typescript@5.7.3)(zod@3.24.1)': dependencies: - '@latticexyz/schema-type': 2.0.12(typescript@5.7.2)(zod@3.24.1) + '@latticexyz/schema-type': 2.0.12(typescript@5.7.3)(zod@3.24.1) '@latticexyz/utils': 2.0.12 mobx: 6.13.5 rxjs: 7.5.5 @@ -9729,9 +9764,9 @@ snapshots: - utf-8-validate - zod - '@dojoengine/state@1.0.4-alpha.3.1.0(@types/node@20.17.12)(@vitest/ui@2.1.8(vitest@2.1.8))(starknet@6.11.0(encoding@0.1.13))(terser@5.37.0)(typescript@5.7.2)(zod@3.24.1)': + '@dojoengine/state@1.0.4-alpha.3.1.0(@types/node@20.17.12)(@vitest/ui@2.1.8(vitest@2.1.8))(starknet@6.11.0(encoding@0.1.13))(terser@5.37.0)(typescript@5.7.3)(zod@3.24.1)': dependencies: - '@dojoengine/recs': 2.0.13(typescript@5.7.2)(zod@3.24.1) + '@dojoengine/recs': 2.0.13(typescript@5.7.3)(zod@3.24.1) '@dojoengine/torii-client': 1.0.4-alpha.3.1.0 starknet: 6.11.0(encoding@0.1.13) vitest: 1.6.0(@types/node@20.17.12)(@vitest/ui@2.1.8(vitest@2.1.8))(terser@5.37.0) @@ -9761,9 +9796,9 @@ snapshots: '@dojoengine/torii-wasm@1.0.4-alpha.3.1.0': {} - '@dojoengine/utils@1.0.4-alpha.3.1.0(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.2)(zod@3.24.1)': + '@dojoengine/utils@1.0.4-alpha.3.1.0(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.3)(zod@3.24.1)': dependencies: - '@dojoengine/recs': 2.0.13(typescript@5.7.2)(zod@3.24.1) + '@dojoengine/recs': 2.0.13(typescript@5.7.3)(zod@3.24.1) '@latticexyz/utils': 2.2.14 mathjs: 12.4.3 micro-starknet: 0.2.3 @@ -10070,9 +10105,9 @@ snapshots: '@esbuild/win32-x64@0.24.2': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.17.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.4.1(eslint@9.18.0(jiti@2.4.2))': dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -10085,7 +10120,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/core@0.9.1': + '@eslint/core@0.10.0': dependencies: '@types/json-schema': 7.0.15 @@ -10103,12 +10138,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.17.0': {} + '@eslint/js@9.18.0': {} '@eslint/object-schema@2.1.5': {} - '@eslint/plugin-kit@0.2.4': + '@eslint/plugin-kit@0.2.5': dependencies: + '@eslint/core': 0.10.0 levn: 0.4.1 '@floating-ui/core@1.6.9': @@ -10136,11 +10172,11 @@ snapshots: '@floating-ui/utils@0.2.9': {} - '@gql.tada/internal@1.0.8(graphql@16.10.0)(typescript@5.7.2)': + '@gql.tada/internal@1.0.8(graphql@16.10.0)(typescript@5.7.3)': dependencies: '@0no-co/graphql.web': 1.0.13(graphql@16.10.0) graphql: 16.10.0 - typescript: 5.7.2 + typescript: 5.7.3 '@graphql-codegen/add@5.0.3(graphql@16.10.0)': dependencies: @@ -10148,31 +10184,31 @@ snapshots: graphql: 16.10.0 tslib: 2.6.3 - '@graphql-codegen/cli@5.0.3(@parcel/watcher@2.5.0)(@types/node@20.17.12)(encoding@0.1.13)(graphql@16.10.0)(typescript@5.7.2)': + '@graphql-codegen/cli@5.0.3(@parcel/watcher@2.5.0)(@types/node@20.17.12)(encoding@0.1.13)(graphql@16.10.0)(typescript@5.7.3)': dependencies: - '@babel/generator': 7.26.3 + '@babel/generator': 7.26.5 '@babel/template': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@graphql-codegen/client-preset': 4.4.0(encoding@0.1.13)(graphql@16.10.0) '@graphql-codegen/core': 4.0.2(graphql@16.10.0) '@graphql-codegen/plugin-helpers': 5.1.0(graphql@16.10.0) - '@graphql-tools/apollo-engine-loader': 8.0.12(encoding@0.1.13)(graphql@16.10.0) + '@graphql-tools/apollo-engine-loader': 8.0.13(graphql@16.10.0) '@graphql-tools/code-file-loader': 8.1.13(graphql@16.10.0) '@graphql-tools/git-loader': 8.0.17(graphql@16.10.0) - '@graphql-tools/github-loader': 8.0.12(@types/node@20.17.12)(encoding@0.1.13)(graphql@16.10.0) + '@graphql-tools/github-loader': 8.0.13(@types/node@20.17.12)(graphql@16.10.0) '@graphql-tools/graphql-file-loader': 8.0.11(graphql@16.10.0) '@graphql-tools/json-file-loader': 8.0.11(graphql@16.10.0) '@graphql-tools/load': 8.0.12(graphql@16.10.0) '@graphql-tools/prisma-loader': 8.0.17(@types/node@20.17.12)(encoding@0.1.13)(graphql@16.10.0) - '@graphql-tools/url-loader': 8.0.23(@types/node@20.17.12)(encoding@0.1.13)(graphql@16.10.0) + '@graphql-tools/url-loader': 8.0.24(@types/node@20.17.12)(graphql@16.10.0) '@graphql-tools/utils': 10.7.2(graphql@16.10.0) '@whatwg-node/fetch': 0.9.23 chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@5.7.2) + cosmiconfig: 8.3.6(typescript@5.7.3) debounce: 1.2.1 detect-indent: 6.1.0 graphql: 16.10.0 - graphql-config: 5.1.3(@types/node@20.17.12)(encoding@0.1.13)(graphql@16.10.0)(typescript@5.7.2) + graphql-config: 5.1.3(@types/node@20.17.12)(graphql@16.10.0)(typescript@5.7.3) inquirer: 8.2.6 is-glob: 4.0.3 jiti: 1.21.7 @@ -10200,7 +10236,7 @@ snapshots: '@graphql-codegen/client-preset@4.4.0(encoding@0.1.13)(graphql@16.10.0)': dependencies: - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/template': 7.25.9 '@graphql-codegen/add': 5.0.3(graphql@16.10.0) '@graphql-codegen/gql-tag-operations': 4.0.10(encoding@0.1.13)(graphql@16.10.0) @@ -10390,15 +10426,13 @@ snapshots: graphql: 16.10.0 tslib: 2.8.1 - '@graphql-tools/apollo-engine-loader@8.0.12(encoding@0.1.13)(graphql@16.10.0)': + '@graphql-tools/apollo-engine-loader@8.0.13(graphql@16.10.0)': dependencies: - '@ardatan/sync-fetch': 0.0.1(encoding@0.1.13) '@graphql-tools/utils': 10.7.2(graphql@16.10.0) - '@whatwg-node/fetch': 0.10.1 + '@whatwg-node/fetch': 0.10.3 graphql: 16.10.0 + sync-fetch: 0.6.0-2 tslib: 2.8.1 - transitivePeerDependencies: - - encoding '@graphql-tools/batch-execute@9.0.11(graphql@16.10.0)': dependencies: @@ -10448,7 +10482,7 @@ snapshots: '@graphql-tools/utils': 10.7.2(graphql@16.10.0) '@whatwg-node/disposablestack': 0.0.5 graphql: 16.10.0 - graphql-ws: 5.16.0(graphql@16.10.0) + graphql-ws: 5.16.2(graphql@16.10.0) isomorphic-ws: 5.0.0(ws@8.18.0) tslib: 2.8.1 ws: 8.18.0 @@ -10463,7 +10497,7 @@ snapshots: '@graphql-tools/utils': 10.7.2(graphql@16.10.0) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/disposablestack': 0.0.5 - '@whatwg-node/fetch': 0.10.1 + '@whatwg-node/fetch': 0.10.3 extract-files: 11.0.0 graphql: 16.10.0 meros: 1.3.0(@types/node@20.17.12) @@ -10506,19 +10540,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@graphql-tools/github-loader@8.0.12(@types/node@20.17.12)(encoding@0.1.13)(graphql@16.10.0)': + '@graphql-tools/github-loader@8.0.13(@types/node@20.17.12)(graphql@16.10.0)': dependencies: - '@ardatan/sync-fetch': 0.0.1(encoding@0.1.13) '@graphql-tools/executor-http': 1.2.4(@types/node@20.17.12)(graphql@16.10.0) '@graphql-tools/graphql-tag-pluck': 8.3.12(graphql@16.10.0) '@graphql-tools/utils': 10.7.2(graphql@16.10.0) - '@whatwg-node/fetch': 0.10.1 + '@whatwg-node/fetch': 0.10.3 graphql: 16.10.0 + sync-fetch: 0.6.0-2 tslib: 2.8.1 value-or-promise: 1.0.12 transitivePeerDependencies: - '@types/node' - - encoding - supports-color '@graphql-tools/graphql-file-loader@8.0.11(graphql@16.10.0)': @@ -10533,10 +10566,10 @@ snapshots: '@graphql-tools/graphql-tag-pluck@8.3.12(graphql@16.10.0)': dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.3 + '@babel/parser': 7.26.5 '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 '@graphql-tools/utils': 10.7.2(graphql@16.10.0) graphql: 16.10.0 tslib: 2.8.1 @@ -10584,10 +10617,10 @@ snapshots: '@graphql-tools/prisma-loader@8.0.17(@types/node@20.17.12)(encoding@0.1.13)(graphql@16.10.0)': dependencies: - '@graphql-tools/url-loader': 8.0.23(@types/node@20.17.12)(encoding@0.1.13)(graphql@16.10.0) + '@graphql-tools/url-loader': 8.0.24(@types/node@20.17.12)(graphql@16.10.0) '@graphql-tools/utils': 10.7.2(graphql@16.10.0) '@types/js-yaml': 4.0.9 - '@whatwg-node/fetch': 0.10.1 + '@whatwg-node/fetch': 0.10.3 chalk: 4.1.2 debug: 4.4.0 dotenv: 16.4.7 @@ -10636,25 +10669,24 @@ snapshots: tslib: 2.8.1 value-or-promise: 1.0.12 - '@graphql-tools/url-loader@8.0.23(@types/node@20.17.12)(encoding@0.1.13)(graphql@16.10.0)': + '@graphql-tools/url-loader@8.0.24(@types/node@20.17.12)(graphql@16.10.0)': dependencies: - '@ardatan/sync-fetch': 0.0.1(encoding@0.1.13) '@graphql-tools/executor-graphql-ws': 1.3.7(graphql@16.10.0) '@graphql-tools/executor-http': 1.2.4(@types/node@20.17.12)(graphql@16.10.0) '@graphql-tools/executor-legacy-ws': 1.1.10(graphql@16.10.0) '@graphql-tools/utils': 10.7.2(graphql@16.10.0) '@graphql-tools/wrap': 10.0.27(graphql@16.10.0) '@types/ws': 8.5.13 - '@whatwg-node/fetch': 0.10.1 + '@whatwg-node/fetch': 0.10.3 graphql: 16.10.0 isomorphic-ws: 5.0.0(ws@8.18.0) + sync-fetch: 0.6.0-2 tslib: 2.8.1 value-or-promise: 1.0.12 ws: 8.18.0 transitivePeerDependencies: - '@types/node' - bufferutil - - encoding - utf-8-validate '@graphql-tools/utils@10.7.2(graphql@16.10.0)': @@ -10733,13 +10765,13 @@ snapshots: dependencies: '@sinclair/typebox': 0.27.8 - '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.7.3)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0))': dependencies: magic-string: 0.27.0 - react-docgen-typescript: 2.2.2(typescript@5.7.2) + react-docgen-typescript: 2.2.2(typescript@5.7.3) vite: 5.4.11(@types/node@20.17.12)(terser@5.37.0) optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 '@jridgewell/gen-mapping@0.3.8': dependencies: @@ -10765,10 +10797,10 @@ snapshots: '@kamilkisiela/fast-url-parser@1.1.4': {} - '@latticexyz/schema-type@2.0.12(typescript@5.7.2)(zod@3.24.1)': + '@latticexyz/schema-type@2.0.12(typescript@5.7.3)(zod@3.24.1)': dependencies: - abitype: 1.0.0(typescript@5.7.2)(zod@3.24.1) - viem: 2.9.20(typescript@5.7.2)(zod@3.24.1) + abitype: 1.0.0(typescript@5.7.3)(zod@3.24.1) + viem: 2.9.20(typescript@5.7.3)(zod@3.24.1) transitivePeerDependencies: - bufferutil - typescript @@ -10921,27 +10953,27 @@ snapshots: '@octokit/graphql': 7.1.0 '@octokit/request': 8.4.0 '@octokit/request-error': 5.1.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 before-after-hook: 2.2.3 universal-user-agent: 6.0.1 '@octokit/endpoint@9.0.5': dependencies: - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 6.0.1 '@octokit/graphql@7.1.0': dependencies: '@octokit/request': 8.4.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 6.0.1 - '@octokit/openapi-types@22.2.0': {} + '@octokit/openapi-types@23.0.1': {} '@octokit/plugin-paginate-rest@11.3.1(@octokit/core@5.2.0)': dependencies: '@octokit/core': 5.2.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.0)': dependencies: @@ -10950,11 +10982,11 @@ snapshots: '@octokit/plugin-rest-endpoint-methods@13.2.2(@octokit/core@5.2.0)': dependencies: '@octokit/core': 5.2.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 '@octokit/request-error@5.1.0': dependencies: - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 deprecation: 2.3.1 once: 1.4.0 @@ -10962,7 +10994,7 @@ snapshots: dependencies: '@octokit/endpoint': 9.0.5 '@octokit/request-error': 5.1.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 6.0.1 '@octokit/rest@20.1.1': @@ -10972,9 +11004,9 @@ snapshots: '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.0) '@octokit/plugin-rest-endpoint-methods': 13.2.2(@octokit/core@5.2.0) - '@octokit/types@13.6.2': + '@octokit/types@13.7.0': dependencies: - '@octokit/openapi-types': 22.2.0 + '@octokit/openapi-types': 23.0.1 '@parcel/watcher-android-arm64@2.5.0': optional: true @@ -11916,11 +11948,11 @@ snapshots: dependencies: shiki: 1.26.1 - '@shikijs/twoslash@1.26.1(typescript@5.7.2)': + '@shikijs/twoslash@1.26.1(typescript@5.7.3)': dependencies: '@shikijs/core': 1.26.1 '@shikijs/types': 1.26.1 - twoslash: 0.2.12(typescript@5.7.2) + twoslash: 0.2.12(typescript@5.7.3) transitivePeerDependencies: - supports-color - typescript @@ -11938,12 +11970,12 @@ snapshots: '@starknet-react/chains@0.1.7': {} - '@starknet-react/chains@3.1.1': {} + '@starknet-react/chains@3.1.2': {} '@starknet-react/core@2.3.0(get-starknet-core@3.3.4(starknet@6.11.0(encoding@0.1.13)))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))': dependencies: '@starknet-react/chains': 0.1.7 - '@tanstack/react-query': 5.62.16(react@18.3.1) + '@tanstack/react-query': 5.64.0(react@18.3.1) eventemitter3: 5.0.1 get-starknet-core: 3.3.4(starknet@6.11.0(encoding@0.1.13)) immutable: 4.3.7 @@ -11954,7 +11986,7 @@ snapshots: '@starknet-react/core@2.9.0(get-starknet-core@3.3.4(starknet@6.11.0(encoding@0.1.13)))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))': dependencies: '@starknet-react/chains': 0.1.7 - '@tanstack/react-query': 5.62.16(react@18.3.1) + '@tanstack/react-query': 5.64.0(react@18.3.1) eventemitter3: 5.0.1 get-starknet-core: 3.3.4(starknet@6.11.0(encoding@0.1.13)) immutable: 4.3.7 @@ -11962,17 +11994,17 @@ snapshots: starknet: 6.11.0(encoding@0.1.13) zod: 3.24.1 - '@starknet-react/core@3.6.3(get-starknet-core@3.3.4(starknet@6.11.0(encoding@0.1.13)))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.2)': + '@starknet-react/core@3.7.0(get-starknet-core@3.3.4(starknet@6.11.0(encoding@0.1.13)))(react@18.3.1)(starknet@6.11.0(encoding@0.1.13))(typescript@5.7.3)': dependencies: '@starknet-io/types-js': 0.7.10 - '@starknet-react/chains': 3.1.1 - '@tanstack/react-query': 5.62.16(react@18.3.1) + '@starknet-react/chains': 3.1.2 + '@tanstack/react-query': 5.64.0(react@18.3.1) abi-wan-kanabi: 2.2.4 eventemitter3: 5.0.1 get-starknet-core: 3.3.4(starknet@6.11.0(encoding@0.1.13)) react: 18.3.1 starknet: 6.11.0(encoding@0.1.13) - viem: 2.22.3(typescript@5.7.2)(zod@3.24.1) + viem: 2.22.8(typescript@5.7.3)(zod@3.24.1) zod: 3.24.1 transitivePeerDependencies: - bufferutil @@ -12131,7 +12163,7 @@ snapshots: '@storybook/csf-plugin@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: storybook: 8.4.7(prettier@3.4.2) - unplugin: 1.16.0 + unplugin: 1.16.1 '@storybook/csf@0.1.13': dependencies: @@ -12164,12 +12196,12 @@ snapshots: react-dom: 18.3.1(react@18.3.1) storybook: 8.4.7(prettier@3.4.2) - '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.30.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0))': + '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.30.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.3)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.7.3)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)) '@rollup/pluginutils': 5.1.4(rollup@4.30.1) '@storybook/builder-vite': 8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)) - '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) + '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.3) find-up: 5.0.0 magic-string: 0.30.17 react: 18.3.1 @@ -12185,7 +12217,7 @@ snapshots: - supports-color - typescript - '@storybook/react@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)': + '@storybook/react@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.3)': dependencies: '@storybook/components': 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@storybook/global': 5.0.0 @@ -12198,7 +12230,7 @@ snapshots: storybook: 8.4.7(prettier@3.4.2) optionalDependencies: '@storybook/test': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - typescript: 5.7.2 + typescript: 5.7.3 '@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: @@ -12267,12 +12299,12 @@ snapshots: '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.26.0) '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.26.0) - '@svgr/core@8.1.0(typescript@5.7.2)': + '@svgr/core@8.1.0(typescript@5.7.3)': dependencies: '@babel/core': 7.26.0 '@svgr/babel-preset': 8.1.0(@babel/core@7.26.0) camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@5.7.2) + cosmiconfig: 8.3.6(typescript@5.7.3) snake-case: 3.0.4 transitivePeerDependencies: - supports-color @@ -12280,29 +12312,29 @@ snapshots: '@svgr/hast-util-to-babel-ast@8.0.0': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 entities: 4.5.0 - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.7.2))': + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.7.3))': dependencies: '@babel/core': 7.26.0 '@svgr/babel-preset': 8.1.0(@babel/core@7.26.0) - '@svgr/core': 8.1.0(typescript@5.7.2) + '@svgr/core': 8.1.0(typescript@5.7.3) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color - '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.7.2))(typescript@5.7.2)': + '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.7.3))(typescript@5.7.3)': dependencies: - '@svgr/core': 8.1.0(typescript@5.7.2) - cosmiconfig: 8.3.6(typescript@5.7.2) + '@svgr/core': 8.1.0(typescript@5.7.3) + cosmiconfig: 8.3.6(typescript@5.7.3) deepmerge: 4.3.1 svgo: 3.3.2 transitivePeerDependencies: - typescript - '@svgr/rollup@8.1.0(rollup@4.30.1)(typescript@5.7.2)': + '@svgr/rollup@8.1.0(rollup@4.30.1)(typescript@5.7.3)': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-constant-elements': 7.25.9(@babel/core@7.26.0) @@ -12310,59 +12342,59 @@ snapshots: '@babel/preset-react': 7.26.3(@babel/core@7.26.0) '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - '@svgr/core': 8.1.0(typescript@5.7.2) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.7.2)) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.7.2))(typescript@5.7.2) + '@svgr/core': 8.1.0(typescript@5.7.3) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.7.3)) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.7.3))(typescript@5.7.3) transitivePeerDependencies: - rollup - supports-color - typescript - '@swc/core-darwin-arm64@1.10.4': + '@swc/core-darwin-arm64@1.10.7': optional: true - '@swc/core-darwin-x64@1.10.4': + '@swc/core-darwin-x64@1.10.7': optional: true - '@swc/core-linux-arm-gnueabihf@1.10.4': + '@swc/core-linux-arm-gnueabihf@1.10.7': optional: true - '@swc/core-linux-arm64-gnu@1.10.4': + '@swc/core-linux-arm64-gnu@1.10.7': optional: true - '@swc/core-linux-arm64-musl@1.10.4': + '@swc/core-linux-arm64-musl@1.10.7': optional: true - '@swc/core-linux-x64-gnu@1.10.4': + '@swc/core-linux-x64-gnu@1.10.7': optional: true - '@swc/core-linux-x64-musl@1.10.4': + '@swc/core-linux-x64-musl@1.10.7': optional: true - '@swc/core-win32-arm64-msvc@1.10.4': + '@swc/core-win32-arm64-msvc@1.10.7': optional: true - '@swc/core-win32-ia32-msvc@1.10.4': + '@swc/core-win32-ia32-msvc@1.10.7': optional: true - '@swc/core-win32-x64-msvc@1.10.4': + '@swc/core-win32-x64-msvc@1.10.7': optional: true - '@swc/core@1.10.4(@swc/helpers@0.5.15)': + '@swc/core@1.10.7(@swc/helpers@0.5.15)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.17 optionalDependencies: - '@swc/core-darwin-arm64': 1.10.4 - '@swc/core-darwin-x64': 1.10.4 - '@swc/core-linux-arm-gnueabihf': 1.10.4 - '@swc/core-linux-arm64-gnu': 1.10.4 - '@swc/core-linux-arm64-musl': 1.10.4 - '@swc/core-linux-x64-gnu': 1.10.4 - '@swc/core-linux-x64-musl': 1.10.4 - '@swc/core-win32-arm64-msvc': 1.10.4 - '@swc/core-win32-ia32-msvc': 1.10.4 - '@swc/core-win32-x64-msvc': 1.10.4 + '@swc/core-darwin-arm64': 1.10.7 + '@swc/core-darwin-x64': 1.10.7 + '@swc/core-linux-arm-gnueabihf': 1.10.7 + '@swc/core-linux-arm64-gnu': 1.10.7 + '@swc/core-linux-arm64-musl': 1.10.7 + '@swc/core-linux-x64-gnu': 1.10.7 + '@swc/core-linux-x64-musl': 1.10.7 + '@swc/core-win32-arm64-msvc': 1.10.7 + '@swc/core-win32-ia32-msvc': 1.10.7 + '@swc/core-win32-x64-msvc': 1.10.7 '@swc/helpers': 0.5.15 '@swc/counter@0.1.3': {} @@ -12383,18 +12415,18 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 3.4.17 - '@tanstack/history@1.95.0': {} + '@tanstack/history@1.95.2': {} - '@tanstack/query-core@5.62.16': {} + '@tanstack/query-core@5.64.0': {} - '@tanstack/react-query@5.62.16(react@18.3.1)': + '@tanstack/react-query@5.64.0(react@18.3.1)': dependencies: - '@tanstack/query-core': 5.62.16 + '@tanstack/query-core': 5.64.0 react: 18.3.1 - '@tanstack/react-router@1.95.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-router@1.95.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/history': 1.95.0 + '@tanstack/history': 1.95.2 '@tanstack/react-store': 0.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) jsesc: 3.1.0 react: 18.3.1 @@ -12421,9 +12453,9 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@tanstack/router-devtools@1.95.1(@tanstack/react-router@1.95.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/router-devtools@1.95.5(@tanstack/react-router@1.95.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/react-router': 1.95.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-router': 1.95.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) react: 18.3.1 @@ -12431,26 +12463,26 @@ snapshots: transitivePeerDependencies: - csstype - '@tanstack/router-generator@1.95.1(@tanstack/react-router@1.95.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@tanstack/router-generator@1.95.5(@tanstack/react-router@1.95.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: '@tanstack/virtual-file-routes': 1.87.6 prettier: 3.4.2 tsx: 4.19.2 zod: 3.24.1 optionalDependencies: - '@tanstack/react-router': 1.95.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-router': 1.95.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/router-plugin@1.95.1(@tanstack/react-router@1.95.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0))': + '@tanstack/router-plugin@1.95.5(@tanstack/react-router@1.95.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0))': dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.3 - '@babel/parser': 7.26.3 + '@babel/generator': 7.26.5 + '@babel/parser': 7.26.5 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) '@babel/template': 7.25.9 - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 - '@tanstack/router-generator': 1.95.1(@tanstack/react-router@1.95.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 + '@tanstack/router-generator': 1.95.5(@tanstack/react-router@1.95.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@tanstack/virtual-file-routes': 1.87.6 '@types/babel__core': 7.20.5 '@types/babel__generator': 7.6.8 @@ -12458,7 +12490,7 @@ snapshots: '@types/babel__traverse': 7.20.6 babel-dead-code-elimination: 1.0.8 chokidar: 3.6.0 - unplugin: 1.16.0 + unplugin: 1.16.1 zod: 3.24.1 optionalDependencies: vite: 5.4.11(@types/node@20.17.12)(terser@5.37.0) @@ -12543,28 +12575,28 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 - '@types/bun@1.1.15': + '@types/bun@1.1.16': dependencies: - bun-types: 1.1.42 + bun-types: 1.1.43 '@types/debug@4.1.12': dependencies: @@ -12649,52 +12681,52 @@ snapshots: '@types/ws@8.5.13': dependencies: - '@types/node': 20.12.14 + '@types/node': 20.17.12 - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/utils': 7.18.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/type-utils': 7.18.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.4.3(typescript@5.7.2) + ts-api-utils: 1.4.3(typescript@5.7.3) optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/type-utils': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/type-utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.19.1 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.0.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@typescript-eslint/scope-manager': 8.19.1 '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.19.1 debug: 4.4.0 - eslint: 9.17.0(jiti@2.4.2) - typescript: 5.7.2 + eslint: 9.18.0(jiti@2.4.2) + typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -12708,26 +12740,26 @@ snapshots: '@typescript-eslint/types': 8.19.1 '@typescript-eslint/visitor-keys': 8.19.1 - '@typescript-eslint/type-utils@7.18.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/type-utils@7.18.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.7.2) - '@typescript-eslint/utils': 7.18.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.7.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) debug: 4.4.0 - eslint: 9.17.0(jiti@2.4.2) - ts-api-utils: 1.4.3(typescript@5.7.2) + eslint: 9.18.0(jiti@2.4.2) + ts-api-utils: 1.4.3(typescript@5.7.3) optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) debug: 4.4.0 - eslint: 9.17.0(jiti@2.4.2) - ts-api-utils: 2.0.0(typescript@5.7.2) - typescript: 5.7.2 + eslint: 9.18.0(jiti@2.4.2) + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -12735,7 +12767,7 @@ snapshots: '@typescript-eslint/types@8.19.1': {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.7.3)': dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 @@ -12744,13 +12776,13 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.4.3(typescript@5.7.2) + ts-api-utils: 1.4.3(typescript@5.7.3) optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.3)': dependencies: '@typescript-eslint/types': 8.19.1 '@typescript-eslint/visitor-keys': 8.19.1 @@ -12759,30 +12791,30 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 2.0.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/utils@7.18.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.2) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.7.3) + eslint: 9.18.0(jiti@2.4.2) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/utils@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.19.1 '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.2) - typescript: 5.7.2 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) + eslint: 9.18.0(jiti@2.4.2) + typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -12796,10 +12828,10 @@ snapshots: '@typescript-eslint/types': 8.19.1 eslint-visitor-keys: 4.2.0 - '@typescript/vfs@1.6.0(typescript@5.7.2)': + '@typescript/vfs@1.6.0(typescript@5.7.3)': dependencies: debug: 4.4.0 - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -12850,7 +12882,7 @@ snapshots: find-up: 5.0.0 javascript-stringify: 2.1.0 lodash: 4.17.21 - mlly: 1.7.3 + mlly: 1.7.4 outdent: 0.8.0 vite: 5.4.11(@types/node@20.17.12)(terser@5.37.0) vite-node: 1.6.0(@types/node@20.17.12)(terser@5.37.0) @@ -13065,9 +13097,9 @@ snapshots: dependencies: tslib: 2.8.1 - '@whatwg-node/fetch@0.10.1': + '@whatwg-node/fetch@0.10.3': dependencies: - '@whatwg-node/node-fetch': 0.7.5 + '@whatwg-node/node-fetch': 0.7.7 urlpattern-polyfill: 10.0.0 '@whatwg-node/fetch@0.9.23': @@ -13082,12 +13114,10 @@ snapshots: fast-querystring: 1.1.2 tslib: 2.8.1 - '@whatwg-node/node-fetch@0.7.5': + '@whatwg-node/node-fetch@0.7.7': dependencies: - '@kamilkisiela/fast-url-parser': 1.1.4 '@whatwg-node/disposablestack': 0.0.5 busboy: 1.6.0 - fast-querystring: 1.1.2 tslib: 2.8.1 abbrev@2.0.0: {} @@ -13099,14 +13129,14 @@ snapshots: fs-extra: 10.1.0 yargs: 17.7.2 - abitype@1.0.0(typescript@5.7.2)(zod@3.24.1): + abitype@1.0.0(typescript@5.7.3)(zod@3.24.1): optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 zod: 3.24.1 - abitype@1.0.7(typescript@5.7.2)(zod@3.24.1): + abitype@1.0.7(typescript@5.7.3)(zod@3.24.1): optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 zod: 3.24.1 acorn-import-attributes@1.9.5(acorn@8.14.0): @@ -13262,8 +13292,8 @@ snapshots: autoprefixer@10.4.20(postcss@8.4.49): dependencies: - browserslist: 4.24.3 - caniuse-lite: 1.0.30001690 + browserslist: 4.24.4 + caniuse-lite: 1.0.30001692 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -13285,15 +13315,15 @@ snapshots: babel-dead-code-elimination@1.0.8: dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.3 - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.5 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0): dependencies: - '@babel/compat-data': 7.26.3 + '@babel/compat-data': 7.26.5 '@babel/core': 7.26.0 '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) semver: 6.3.1 @@ -13304,7 +13334,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) - core-js-compat: 3.39.0 + core-js-compat: 3.40.0 transitivePeerDependencies: - supports-color @@ -13327,12 +13357,12 @@ snapshots: '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.0) '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-flow-strip-types': 7.26.5(@babel/core@7.26.0) '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) @@ -13401,12 +13431,12 @@ snapshots: browser-assert@1.2.1: {} - browserslist@4.24.3: + browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001690 - electron-to-chromium: 1.5.78 + caniuse-lite: 1.0.30001692 + electron-to-chromium: 1.5.80 node-releases: 2.0.19 - update-browserslist-db: 1.1.1(browserslist@4.24.3) + update-browserslist-db: 1.1.2(browserslist@4.24.4) bser@2.1.1: dependencies: @@ -13424,7 +13454,7 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bun-types@1.1.42: + bun-types@1.1.43: dependencies: '@types/node': 20.12.14 '@types/ws': 8.5.13 @@ -13472,7 +13502,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001690: {} + caniuse-lite@1.0.30001692: {} capital-case@1.0.4: dependencies: @@ -13604,13 +13634,13 @@ snapshots: chokidar@4.0.3: dependencies: - readdirp: 4.0.2 + readdirp: 4.1.1 chownr@3.0.0: {} chroma-js@2.6.0: {} - chromatic@11.22.0: {} + chromatic@11.22.2: {} class-variance-authority@0.7.1: dependencies: @@ -13675,6 +13705,8 @@ snapshots: colorette@2.0.20: {} + colors@1.4.0: {} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -13721,18 +13753,18 @@ snapshots: convert-source-map@2.0.0: {} - core-js-compat@3.39.0: + core-js-compat@3.40.0: dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 - cosmiconfig@8.3.6(typescript@5.7.2): + cosmiconfig@8.3.6(typescript@5.7.3): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 create-vocs@1.0.0-alpha.5: dependencies: @@ -13792,6 +13824,8 @@ snapshots: csstype@3.1.3: {} + data-uri-to-buffer@4.0.1: {} + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.3 @@ -13965,7 +13999,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.78: {} + electron-to-chromium@1.5.80: {} emoji-regex-xs@1.0.0: {} @@ -14215,21 +14249,21 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.17.0(jiti@2.4.2)): + eslint-compat-utils@0.5.1(eslint@9.18.0(jiti@2.4.2)): dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) semver: 7.6.3 - eslint-config-love@114.0.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2): + eslint-config-love@114.0.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@typescript-eslint/utils': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.2) - eslint-plugin-eslint-comments: 3.2.0(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-n: 17.15.1(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-promise: 7.2.1(eslint@9.17.0(jiti@2.4.2)) - typescript: 5.7.2 - typescript-eslint: 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.18.0(jiti@2.4.2) + eslint-plugin-eslint-comments: 3.2.0(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-n: 17.15.1(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-promise: 7.2.1(eslint@9.18.0(jiti@2.4.2)) + typescript: 5.7.3 + typescript-eslint: 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-typescript @@ -14244,30 +14278,30 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0(jiti@2.4.2)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.18.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-es-x@7.8.0(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-es-x@7.8.0(eslint@9.18.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - eslint: 9.17.0(jiti@2.4.2) - eslint-compat-utils: 0.5.1(eslint@9.17.0(jiti@2.4.2)) + eslint: 9.18.0(jiti@2.4.2) + eslint-compat-utils: 0.5.1(eslint@9.18.0(jiti@2.4.2)) - eslint-plugin-eslint-comments@3.2.0(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-eslint-comments@3.2.0(eslint@9.18.0(jiti@2.4.2)): dependencies: escape-string-regexp: 1.0.5 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) ignore: 5.3.2 - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -14276,9 +14310,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0(jiti@2.4.2)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14290,36 +14324,36 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-n@17.15.1(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-n@17.15.1(eslint@9.18.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) enhanced-resolve: 5.18.0 - eslint: 9.17.0(jiti@2.4.2) - eslint-plugin-es-x: 7.8.0(eslint@9.17.0(jiti@2.4.2)) + eslint: 9.18.0(jiti@2.4.2) + eslint-plugin-es-x: 7.8.0(eslint@9.18.0(jiti@2.4.2)) get-tsconfig: 4.8.1 globals: 15.14.0 ignore: 5.3.2 minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-promise@7.2.1(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-promise@7.2.1(eslint@9.18.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) - eslint: 9.17.0(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + eslint: 9.18.0(jiti@2.4.2) - eslint-plugin-react-hooks@5.1.0(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-react-hooks@5.1.0(eslint@9.18.0(jiti@2.4.2)): dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) - eslint-plugin-react-refresh@0.4.16(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-react-refresh@0.4.18(eslint@9.18.0(jiti@2.4.2)): dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) eslint-scope@8.2.0: dependencies: @@ -14330,15 +14364,15 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.17.0(jiti@2.4.2): + eslint@9.18.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.1 - '@eslint/core': 0.9.1 + '@eslint/core': 0.10.0 '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.17.0 - '@eslint/plugin-kit': 0.2.4 + '@eslint/js': 9.18.0 + '@eslint/plugin-kit': 0.2.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.1 @@ -14538,10 +14572,15 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + fetch-cookie@3.1.0: dependencies: set-cookie-parser: 2.7.1 - tough-cookie: 5.0.0 + tough-cookie: 5.1.0 fflate@0.6.10: {} @@ -14613,13 +14652,17 @@ snapshots: format@0.2.2: {} + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + fraction.js@4.3.4: {} fraction.js@4.3.7: {} - framer-motion@11.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + framer-motion@11.17.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - motion-dom: 11.16.0 + motion-dom: 11.16.4 motion-utils: 11.16.0 tslib: 2.8.1 optionalDependencies: @@ -14784,15 +14827,15 @@ snapshots: graphemer@1.4.0: {} - graphql-config@5.1.3(@types/node@20.17.12)(encoding@0.1.13)(graphql@16.10.0)(typescript@5.7.2): + graphql-config@5.1.3(@types/node@20.17.12)(graphql@16.10.0)(typescript@5.7.3): dependencies: '@graphql-tools/graphql-file-loader': 8.0.11(graphql@16.10.0) '@graphql-tools/json-file-loader': 8.0.11(graphql@16.10.0) '@graphql-tools/load': 8.0.12(graphql@16.10.0) '@graphql-tools/merge': 9.0.17(graphql@16.10.0) - '@graphql-tools/url-loader': 8.0.23(@types/node@20.17.12)(encoding@0.1.13)(graphql@16.10.0) + '@graphql-tools/url-loader': 8.0.24(@types/node@20.17.12)(graphql@16.10.0) '@graphql-tools/utils': 10.7.2(graphql@16.10.0) - cosmiconfig: 8.3.6(typescript@5.7.2) + cosmiconfig: 8.3.6(typescript@5.7.3) graphql: 16.10.0 jiti: 2.4.2 minimatch: 9.0.5 @@ -14801,7 +14844,6 @@ snapshots: transitivePeerDependencies: - '@types/node' - bufferutil - - encoding - typescript - utf-8-validate @@ -14823,7 +14865,7 @@ snapshots: graphql: 16.10.0 tslib: 2.8.1 - graphql-ws@5.16.0(graphql@16.10.0): + graphql-ws@5.16.2(graphql@16.10.0): dependencies: graphql: 16.10.0 @@ -15437,7 +15479,7 @@ snapshots: local-pkg@0.5.1: dependencies: - mlly: 1.7.3 + mlly: 1.7.4 pkg-types: 1.3.0 locate-path@5.0.0: @@ -15527,8 +15569,8 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 source-map-js: 1.2.1 make-dir@4.0.0: @@ -16127,10 +16169,10 @@ snapshots: mkdirp@3.0.1: {} - mlly@1.7.3: + mlly@1.7.4: dependencies: acorn: 8.14.0 - pathe: 1.1.2 + pathe: 2.0.1 pkg-types: 1.3.0 ufo: 1.5.4 @@ -16138,7 +16180,7 @@ snapshots: modern-ahocorasick@1.1.0: {} - motion-dom@11.16.0: + motion-dom@11.16.4: dependencies: motion-utils: 11.16.0 @@ -16176,12 +16218,20 @@ snapshots: node-addon-api@7.1.1: {} + node-domexception@1.0.0: {} + node-fetch@2.7.0(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 optionalDependencies: encoding: 0.1.13 + node-fetch@3.3.2: + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + node-gyp-build-optional-packages@5.1.1: dependencies: detect-libc: 2.0.3 @@ -16336,17 +16386,17 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - ox@0.6.0(typescript@5.7.2)(zod@3.24.1): + ox@0.6.0(typescript@5.7.3)(zod@3.24.1): dependencies: '@adraffy/ens-normalize': 1.11.0 '@noble/curves': 1.7.0 '@noble/hashes': 1.6.1 '@scure/bip32': 1.6.0 '@scure/bip39': 1.5.0 - abitype: 1.0.7(typescript@5.7.2)(zod@3.24.1) + abitype: 1.0.7(typescript@5.7.3)(zod@3.24.1) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - zod @@ -16451,6 +16501,8 @@ snapshots: pathe@1.1.2: {} + pathe@2.0.1: {} + pathval@1.1.1: {} pathval@2.0.0: {} @@ -16468,7 +16520,7 @@ snapshots: pkg-types@1.3.0: dependencies: confbox: 0.1.8 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 polished@4.3.1: @@ -16601,15 +16653,15 @@ snapshots: react: 18.3.1 tween-functions: 1.2.0 - react-docgen-typescript@2.2.2(typescript@5.7.2): + react-docgen-typescript@2.2.2(typescript@5.7.3): dependencies: - typescript: 5.7.2 + typescript: 5.7.3 react-docgen@7.1.0: dependencies: '@babel/core': 7.26.0 - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 '@types/doctrine': 0.0.9 @@ -16706,12 +16758,12 @@ snapshots: '@remix-run/router': 1.21.0 react: 18.3.1 - react-shepherd@6.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2): + react-shepherd@6.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) shepherd.js: 14.3.0 - typescript: 5.7.2 + typescript: 5.7.3 react-side-effect@2.1.2(react@18.3.1): dependencies: @@ -16743,7 +16795,7 @@ snapshots: dependencies: picomatch: 2.3.1 - readdirp@4.0.2: {} + readdirp@4.1.1: {} recast@0.23.9: dependencies: @@ -17462,6 +17514,12 @@ snapshots: dependencies: tslib: 2.6.3 + sync-fetch@0.6.0-2: + dependencies: + node-fetch: 3.3.2 + timeout-signal: 2.0.0 + whatwg-mimetype: 4.0.0 + tabbable@6.2.0: {} tailwind-merge@2.6.0: {} @@ -17538,7 +17596,7 @@ snapshots: dependencies: any-promise: 1.3.0 - three-stdlib@2.35.2(three@0.166.1): + three-stdlib@2.35.7(three@0.166.1): dependencies: '@types/draco3d': 1.4.10 '@types/offscreencanvas': 2019.7.3 @@ -17552,6 +17610,8 @@ snapshots: through@2.3.8: {} + timeout-signal@2.0.0: {} + tiny-emitter@2.1.0: {} tiny-invariant@1.3.3: {} @@ -17601,7 +17661,7 @@ snapshots: totalist@3.0.1: {} - tough-cookie@5.0.0: + tough-cookie@5.1.0: dependencies: tldts: 6.1.71 @@ -17617,13 +17677,13 @@ snapshots: trough@2.2.0: {} - ts-api-utils@1.4.3(typescript@5.7.2): + ts-api-utils@1.4.3(typescript@5.7.3): dependencies: - typescript: 5.7.2 + typescript: 5.7.3 - ts-api-utils@2.0.0(typescript@5.7.2): + ts-api-utils@2.0.0(typescript@5.7.3): dependencies: - typescript: 5.7.2 + typescript: 5.7.3 ts-dedent@2.2.0: {} @@ -17652,7 +17712,7 @@ snapshots: tslib@2.8.1: {} - tsup@8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.7.0): + tsup@8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0): dependencies: bundle-require: 5.1.0(esbuild@0.24.2) cac: 6.7.14 @@ -17671,9 +17731,9 @@ snapshots: tinyglobby: 0.2.10 tree-kill: 1.2.2 optionalDependencies: - '@swc/core': 1.10.4(@swc/helpers@0.5.15) + '@swc/core': 1.10.7(@swc/helpers@0.5.15) postcss: 8.4.49 - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - jiti - supports-color @@ -17691,11 +17751,11 @@ snapshots: twoslash-protocol@0.2.12: {} - twoslash@0.2.12(typescript@5.7.2): + twoslash@0.2.12(typescript@5.7.3): dependencies: - '@typescript/vfs': 1.6.0(typescript@5.7.2) + '@typescript/vfs': 1.6.0(typescript@5.7.3) twoslash-protocol: 0.2.12 - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -17746,30 +17806,30 @@ snapshots: typed-function@4.2.1: {} - typedoc-plugin-markdown@4.4.1(typedoc@0.26.11(typescript@5.7.2)): + typedoc-plugin-markdown@4.4.1(typedoc@0.26.11(typescript@5.7.3)): dependencies: - typedoc: 0.26.11(typescript@5.7.2) + typedoc: 0.26.11(typescript@5.7.3) - typedoc@0.26.11(typescript@5.7.2): + typedoc@0.26.11(typescript@5.7.3): dependencies: lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 shiki: 1.26.1 - typescript: 5.7.2 + typescript: 5.7.3 yaml: 2.7.0 - typescript-eslint@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2): + typescript-eslint@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.2) - typescript: 5.7.2 + '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.18.0(jiti@2.4.2) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - typescript@5.7.2: {} + typescript@5.7.3: {} ua-parser-js@1.0.40: {} @@ -17864,16 +17924,16 @@ snapshots: dependencies: normalize-path: 2.1.1 - unplugin@1.16.0: + unplugin@1.16.1: dependencies: acorn: 8.14.0 webpack-virtual-modules: 0.6.2 upath@1.2.0: {} - update-browserslist-db@1.1.1(browserslist@4.24.3): + update-browserslist-db@1.1.2(browserslist@4.24.4): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 escalade: 3.2.0 picocolors: 1.1.1 @@ -17959,36 +18019,36 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - viem@2.22.3(typescript@5.7.2)(zod@3.24.1): + viem@2.22.8(typescript@5.7.3)(zod@3.24.1): dependencies: '@noble/curves': 1.7.0 '@noble/hashes': 1.6.1 '@scure/bip32': 1.6.0 '@scure/bip39': 1.5.0 - abitype: 1.0.7(typescript@5.7.2)(zod@3.24.1) + abitype: 1.0.7(typescript@5.7.3)(zod@3.24.1) isows: 1.0.6(ws@8.18.0) - ox: 0.6.0(typescript@5.7.2)(zod@3.24.1) + ox: 0.6.0(typescript@5.7.3)(zod@3.24.1) webauthn-p256: 0.0.10 ws: 8.18.0 optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - viem@2.9.20(typescript@5.7.2)(zod@3.24.1): + viem@2.9.20(typescript@5.7.3)(zod@3.24.1): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 - abitype: 1.0.0(typescript@5.7.2)(zod@3.24.1) + abitype: 1.0.0(typescript@5.7.3)(zod@3.24.1) isows: 1.0.3(ws@8.13.0) ws: 8.13.0 optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -18051,11 +18111,11 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-svgr@4.3.0(rollup@4.30.1)(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)): + vite-plugin-svgr@4.3.0(rollup@4.30.1)(typescript@5.7.3)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)): dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - '@svgr/core': 8.1.0(typescript@5.7.2) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.7.2)) + '@svgr/core': 8.1.0(typescript@5.7.3) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.7.3)) vite: 5.4.11(@types/node@20.17.12)(terser@5.37.0) transitivePeerDependencies: - rollup @@ -18065,7 +18125,7 @@ snapshots: vite-plugin-top-level-await@1.4.4(@swc/helpers@0.5.15)(rollup@4.30.1)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@4.30.1) - '@swc/core': 1.10.4(@swc/helpers@0.5.15) + '@swc/core': 1.10.7(@swc/helpers@0.5.15) uuid: 10.0.0 vite: 5.4.11(@types/node@20.17.12)(terser@5.37.0) transitivePeerDependencies: @@ -18174,7 +18234,7 @@ snapshots: - supports-color - terser - vocs@1.0.0-alpha.62(@types/node@20.17.12)(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.2): + vocs@1.0.0-alpha.62(@types/node@20.17.12)(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.3): dependencies: '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@hono/node-server': 1.13.7(hono@3.12.12) @@ -18191,7 +18251,7 @@ snapshots: '@radix-ui/react-tabs': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@shikijs/rehype': 1.26.1 '@shikijs/transformers': 1.26.1 - '@shikijs/twoslash': 1.26.1(typescript@5.7.2) + '@shikijs/twoslash': 1.26.1(typescript@5.7.3) '@vanilla-extract/css': 1.17.0 '@vanilla-extract/dynamic': 2.1.2 '@vanilla-extract/vite-plugin': 3.9.5(@types/node@20.17.12)(terser@5.37.0)(vite@5.4.11(@types/node@20.17.12)(terser@5.37.0)) @@ -18234,7 +18294,7 @@ snapshots: shiki: 1.26.1 tailwindcss: 3.4.17 toml: 3.0.0 - twoslash: 0.2.12(typescript@5.7.2) + twoslash: 0.2.12(typescript@5.7.3) ua-parser-js: 1.0.40 unified: 11.0.5 unist-util-visit: 5.0.0 @@ -18261,6 +18321,8 @@ snapshots: dependencies: defaults: 1.0.4 + web-streams-polyfill@3.3.3: {} + webauthn-p256@0.0.10: dependencies: '@noble/curves': 1.7.0 @@ -18274,6 +18336,8 @@ snapshots: whatwg-fetch@3.6.20: {} + whatwg-mimetype@4.0.0: {} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3