(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2108],{49460:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/config/reference",function(){return n(36899)}])},73307:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var a=n(7505),r=n(11689);let s={logo:function(){return(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.25em",fontSize:"32px",fontFamily:"PP Supply Mono",textTransform:"uppercase"},children:[(0,a.jsx)("img",{src:"/images/logos/mud-white.svg",style:{height:"calc(var(--nextra-navbar-height) - 35px)"},alt:"MUD logo"}),"MUD"]})},useNextSeoProps(){let{asPath:e}=(0,r.useRouter)();return{titleTemplate:"/"===e?"MUD – a framework for ambitious Ethereum applications":"%s – MUD"}},project:{link:"https://github.com/latticexyz/mud"},docsRepositoryBase:"https://github.com/latticexyz/mud/tree/main/docs",head:(0,a.jsx)(a.Fragment,{children:(0,a.jsx)("meta",{property:"title",content:"MUD documentation"})}),darkMode:!1,nextThemes:{defaultTheme:"dark"},footer:{text:"MIT 2023 \xa9 MUD"},primaryHue:28,sidebar:{defaultMenuCollapseLevel:1}};var i=s},36899:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return p}});var a=n(7505),r=n(42585),s=n(38288),i=n(73307);n(54693);var o=n(26736);n(98823),n(7765);var d=n(55979),l=n.n(d);function c(e){let{title:t,children:n}=e;return(0,a.jsxs)(a.Fragment,{children:[t?(0,a.jsx)("div",{className:l().title,children:t}):null,(0,a.jsx)("dl",{className:l().list,children:n})]})}function m(e){let{name:t,children:n}=e;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("dt",{className:l().term,children:t}),(0,a.jsx)("dd",{className:l().definition,children:n})]})}let u={MDXContent:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:t}=Object.assign({},(0,o.ah)(),e.components);return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(h,{...e})}):h(e)},pageOpts:{filePath:"pages/config/reference.mdx",route:"/config/reference",headings:[{depth:1,value:"MUD config reference",id:"mud-config-reference"},{depth:2,value:"Single namespace",id:"single-namespace"},{depth:2,value:"Multiple namespaces",id:"multiple-namespaces"},{depth:2,value:"Additional options",id:"additional-options"}],timestamp:1722856399e3,pageMap:[{kind:"Meta",data:{introduction:{title:"What is MUD?",theme:{breadcrumb:!1}},quickstart:{title:"Get started",theme:{breadcrumb:!1}},protocol:{title:"Protocol",type:"separator"},store:"Store",world:"World",framework:{title:"Framework",type:"separator"},config:"Config",cli:"CLI","state-query":"State Query",services:"Services","---":{title:"",type:"separator"},guides:"Guides",templates:"Templates",contribute:{title:"Contribute",theme:{breadcrumb:!1}},changelog:"Changelog",retrospectives:"Retrospectives",audits:"Audits",version:{title:"2.1.0",type:"menu",items:{changelog:{title:"Changelog",href:"/changelog"},contribute:{title:"Contribute",href:"/contribute"}}},status:{title:"Status",type:"page",href:"https://status.mud.dev",newWindow:!0},community:{title:"Community",type:"page",href:"https://community.mud.dev",newWindow:!0},twitter:{title:"Twitter",type:"page",href:"https://twitter.com/latticexyz",newWindow:!0},discord:{title:"Discord",type:"page",href:"https://lattice.xyz/discord",newWindow:!0}}},{kind:"Folder",name:"audits",route:"/audits",children:[{kind:"MdxPage",name:"2024-02-11-open-zeppelin",route:"/audits/2024-02-11-open-zeppelin"},{kind:"Meta",data:{"2024-02-11-open-zeppelin":"2024-02-11 OpenZeppelin",pdf:{display:"hidden"},icons:{display:"hidden"}}}]},{kind:"MdxPage",name:"changelog",route:"/changelog"},{kind:"Folder",name:"cli",route:"/cli",children:[{kind:"Meta",data:{tablegen:"mud tablegen",worldgen:"mud worldgen",test:"mud test",deploy:"mud deploy",verify:"mud verify","dev-contracts":"mud dev-contracts","abi-ts":"mud abi-ts","set-version":"mud set-version"}},{kind:"MdxPage",name:"abi-ts",route:"/cli/abi-ts"},{kind:"MdxPage",name:"deploy",route:"/cli/deploy"},{kind:"MdxPage",name:"dev-contracts",route:"/cli/dev-contracts"},{kind:"MdxPage",name:"set-version",route:"/cli/set-version"},{kind:"MdxPage",name:"tablegen",route:"/cli/tablegen"},{kind:"MdxPage",name:"test",route:"/cli/test"},{kind:"MdxPage",name:"verify",route:"/cli/verify"},{kind:"MdxPage",name:"worldgen",route:"/cli/worldgen"}]},{kind:"Folder",name:"config",route:"/config",children:[{kind:"MdxPage",name:"reference",route:"/config/reference"},{kind:"Meta",data:{reference:"Reference"}}]},{kind:"MdxPage",name:"config",route:"/config"},{kind:"MdxPage",name:"contribute",route:"/contribute"},{kind:"Folder",name:"guides",route:"/guides",children:[{kind:"Meta",data:{"replicating-onchain-state":"Replicating onchain state","hello-world":"Hello World","extending-a-world":"Extending a World","adding-delegation":"Adding Delegation",emojimon:"Emojimon",testing:"Testing","best-practices":"Best Practices"}},{kind:"MdxPage",name:"adding-delegation",route:"/guides/adding-delegation"},{kind:"Folder",name:"best-practices",route:"/guides/best-practices",children:[{kind:"Meta",data:{"system-best-practices":"System Best Practices","deployment-settings":"Recommended Deployment Settings",kms:"Deploy production worlds using AWS KMS"}},{kind:"MdxPage",name:"deployment-settings",route:"/guides/best-practices/deployment-settings"},{kind:"MdxPage",name:"kms",route:"/guides/best-practices/kms"},{kind:"MdxPage",name:"system-best-practices",route:"/guides/best-practices/system-best-practices"}]},{kind:"Folder",name:"emojimon",route:"/guides/emojimon",children:[{kind:"MdxPage",name:"1-preface-the-ecs-model",route:"/guides/emojimon/1-preface-the-ecs-model"},{kind:"MdxPage",name:"2-getting-started",route:"/guides/emojimon/2-getting-started"},{kind:"MdxPage",name:"3-players-and-movement",route:"/guides/emojimon/3-players-and-movement"},{kind:"MdxPage",name:"4-map-and-terrain",route:"/guides/emojimon/4-map-and-terrain"},{kind:"MdxPage",name:"5-a-wild-emojimon-appears",route:"/guides/emojimon/5-a-wild-emojimon-appears"},{kind:"MdxPage",name:"6-advanced",route:"/guides/emojimon/6-advanced"},{kind:"Meta",data:{"1-preface-the-ecs-model":"Preface: the ECS model","2-getting-started":"Getting started","3-players-and-movement":"Players and movement","4-map-and-terrain":"Map and terrain","5-a-wild-emojimon-appears":"A wild Emojimon appears","6-advanced":"Advanced features"}}]},{kind:"MdxPage",name:"emojimon",route:"/guides/emojimon"},{kind:"Folder",name:"extending-a-world",route:"/guides/extending-a-world",children:[{kind:"Meta",data:{index:"Extending a World Permissionlessly"}},{kind:"MdxPage",name:"index",route:"/guides/extending-a-world"}]},{kind:"Folder",name:"hello-world",route:"/guides/hello-world",children:[{kind:"Meta",data:{"add-table":"Add a table","filter-sync":"Filter data synchronization","add-system":"Add a system",deploy:{title:"Deploy to a blockchain",href:"/cli/deploy"}}},{kind:"MdxPage",name:"add-system",route:"/guides/hello-world/add-system"},{kind:"MdxPage",name:"add-table",route:"/guides/hello-world/add-table"},{kind:"MdxPage",name:"filter-sync",route:"/guides/hello-world/filter-sync"}]},{kind:"MdxPage",name:"hello-world",route:"/guides/hello-world"},{kind:"MdxPage",name:"replicating-onchain-state",route:"/guides/replicating-onchain-state"},{kind:"MdxPage",name:"testing",route:"/guides/testing"}]},{kind:"MdxPage",name:"introduction",route:"/introduction"},{kind:"MdxPage",name:"quickstart",route:"/quickstart"},{kind:"Folder",name:"retrospectives",route:"/retrospectives",children:[{kind:"MdxPage",name:"2023-09-12-register-system-vulnerability",route:"/retrospectives/2023-09-12-register-system-vulnerability"},{kind:"MdxPage",name:"2024-04-17-storeread-getdynamicfieldlength-bug",route:"/retrospectives/2024-04-17-storeread-getdynamicfieldlength-bug"},{kind:"Meta",data:{"2024-04-17-storeread-getdynamicfieldlength-bug":"2024-04-17 StoreRead.getDynamicFieldLength bug","2023-09-12-register-system-vulnerability":"2023-09-12 registerSystem vulnerability"}}]},{kind:"Folder",name:"services",route:"/services",children:[{kind:"Meta",data:{indexer:"Indexer",faucet:"Faucet"}},{kind:"MdxPage",name:"faucet",route:"/services/faucet"},{kind:"MdxPage",name:"indexer",route:"/services/indexer"}]},{kind:"Folder",name:"state-query",route:"/state-query",children:[{kind:"Meta",data:{typescript:"TypeScript"}},{kind:"Folder",name:"typescript",route:"/state-query/typescript",children:[{kind:"Meta",data:{recs:"RECS",zustand:"Zustand"}},{kind:"MdxPage",name:"recs",route:"/state-query/typescript/recs"},{kind:"MdxPage",name:"zustand",route:"/state-query/typescript/zustand"}]}]},{kind:"Folder",name:"store",route:"/store",children:[{kind:"Meta",data:{introduction:"Introduction","data-model":"Data model",tables:"Tables","table-libraries":"Table libraries",encoding:"Encoding","store-hooks":"Store hooks",reference:"Reference"}},{kind:"MdxPage",name:"data-model",route:"/store/data-model"},{kind:"MdxPage",name:"encoding",route:"/store/encoding"},{kind:"MdxPage",name:"introduction",route:"/store/introduction"},{kind:"Folder",name:"reference",route:"/store/reference",children:[{kind:"Meta",data:{"store-core":"StoreCore (internal)",store:"IStore (external)","store-hook":"StoreHook",misc:"Miscellaneous"}},{kind:"MdxPage",name:"misc",route:"/store/reference/misc"},{kind:"MdxPage",name:"store-core",route:"/store/reference/store-core"},{kind:"MdxPage",name:"store-hook",route:"/store/reference/store-hook"},{kind:"MdxPage",name:"store",route:"/store/reference/store"}]},{kind:"MdxPage",name:"store-hooks",route:"/store/store-hooks"},{kind:"MdxPage",name:"table-libraries",route:"/store/table-libraries"},{kind:"MdxPage",name:"tables",route:"/store/tables"}]},{kind:"Folder",name:"templates",route:"/templates",children:[{kind:"Meta",data:{typescript:"TypeScript",godot:"Godot",pwa:"Progressive Web App (for mobile)",swift:"Swift",svelte:"Svelte",unity:"Unity"}},{kind:"MdxPage",name:"godot",route:"/templates/godot"},{kind:"MdxPage",name:"pwa",route:"/templates/pwa"},{kind:"MdxPage",name:"svelte",route:"/templates/svelte"},{kind:"MdxPage",name:"swift",route:"/templates/swift"},{kind:"Folder",name:"typescript",route:"/templates/typescript",children:[{kind:"Meta",data:{contracts:"Contracts",vanilla:"Vanilla","react-ecs":"React-ECS",threejs:"Three.js",vue:"Vue"}},{kind:"MdxPage",name:"contracts",route:"/templates/typescript/contracts"},{kind:"MdxPage",name:"react-ecs",route:"/templates/typescript/react-ecs"},{kind:"MdxPage",name:"threejs",route:"/templates/typescript/threejs"},{kind:"MdxPage",name:"vanilla",route:"/templates/typescript/vanilla"},{kind:"MdxPage",name:"vue",route:"/templates/typescript/vue"}]},{kind:"MdxPage",name:"unity",route:"/templates/unity"}]},{kind:"Folder",name:"world",route:"/world",children:[{kind:"Meta",data:{introduction:"Introduction","resource-ids":"Resource Identifiers","namespaces-access-control":"Namespaces & Access Control",tables:"Tables",systems:"Systems","system-hooks":"System Hooks","function-selectors":"Function Selectors",balance:"Balance","account-delegation":"Account Delegation","batch-calls":"Batch Calls",upgrades:"Upgrading",modules:"Modules",reference:"Reference"}},{kind:"MdxPage",name:"account-delegation",route:"/world/account-delegation"},{kind:"MdxPage",name:"balance",route:"/world/balance"},{kind:"MdxPage",name:"batch-calls",route:"/world/batch-calls"},{kind:"MdxPage",name:"function-selectors",route:"/world/function-selectors"},{kind:"MdxPage",name:"introduction",route:"/world/introduction"},{kind:"Folder",name:"modules",route:"/world/modules",children:[{kind:"Meta",data:{keyswithvalue:"Keys with Value"}},{kind:"MdxPage",name:"keyswithvalue",route:"/world/modules/keyswithvalue"}]},{kind:"MdxPage",name:"modules",route:"/world/modules"},{kind:"MdxPage",name:"namespaces-access-control",route:"/world/namespaces-access-control"},{kind:"Folder",name:"reference",route:"/world/reference",children:[{kind:"Meta",data:{"delegation-external":"Delegation (interface)",module:"Modules","module-external":"Modules (interface)",system:"Systems","system-external":"Systems (interface)",world:"World","world-external":"World (interfaces)","world-context":"World context","world-context-external":"World context (interface)","resource-ids":"Resource IDs",misc:"Miscellaneous",internal:"Internals"}},{kind:"MdxPage",name:"delegation-external",route:"/world/reference/delegation-external"},{kind:"Folder",name:"internal",route:"/world/reference/internal",children:[{kind:"Meta",data:{"access-control":"Access Control",create:"Create2",delegation:"Delegation",erc165:"ERC165","erc165-external":"ERC165 (interface)","init-module":"Init Module","init-module-implementation":"Init Module Implementation",systemcall:"SystemCall"}},{kind:"MdxPage",name:"access-control",route:"/world/reference/internal/access-control"},{kind:"MdxPage",name:"create",route:"/world/reference/internal/create"},{kind:"MdxPage",name:"delegation",route:"/world/reference/internal/delegation"},{kind:"MdxPage",name:"erc165-external",route:"/world/reference/internal/erc165-external"},{kind:"MdxPage",name:"erc165",route:"/world/reference/internal/erc165"},{kind:"MdxPage",name:"init-module-implementation",route:"/world/reference/internal/init-module-implementation"},{kind:"MdxPage",name:"init-module",route:"/world/reference/internal/init-module"},{kind:"MdxPage",name:"systemcall",route:"/world/reference/internal/systemcall"}]},{kind:"MdxPage",name:"misc",route:"/world/reference/misc"},{kind:"MdxPage",name:"module-external",route:"/world/reference/module-external"},{kind:"MdxPage",name:"module",route:"/world/reference/module"},{kind:"MdxPage",name:"resource-ids",route:"/world/reference/resource-ids"},{kind:"MdxPage",name:"system-external",route:"/world/reference/system-external"},{kind:"MdxPage",name:"system",route:"/world/reference/system"},{kind:"MdxPage",name:"world-context-external",route:"/world/reference/world-context-external"},{kind:"MdxPage",name:"world-context",route:"/world/reference/world-context"},{kind:"MdxPage",name:"world-external",route:"/world/reference/world-external"},{kind:"MdxPage",name:"world",route:"/world/reference/world"}]},{kind:"MdxPage",name:"resource-ids",route:"/world/resource-ids"},{kind:"MdxPage",name:"system-hooks",route:"/world/system-hooks"},{kind:"MdxPage",name:"systems",route:"/world/systems"},{kind:"MdxPage",name:"tables",route:"/world/tables"},{kind:"MdxPage",name:"upgrades",route:"/world/upgrades"}]}],flexsearch:{codeblocks:!0},title:"MUD config reference"},pageNextRoute:"/config/reference",nextraLayout:s.ZP,themeConfig:i.Z};function h(e){let t=Object.assign({h1:"h1",p:"p",code:"code",h2:"h2",a:"a"},(0,o.ah)(),e.components);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.h1,{children:"MUD config reference"}),"\n",(0,a.jsxs)(t.p,{children:["The MUD config has two modes: single namespace and multiple namespaces. By default, the config will assume a single namespace unless you start using the ",(0,a.jsx)(t.code,{children:"namespaces"})," config option."]}),"\n",(0,a.jsx)(t.h2,{id:"single-namespace",children:"Single namespace"}),"\n",(0,a.jsxs)(c,{children:[(0,a.jsx)(m,{name:"namespace",children:(0,a.jsxs)(t.p,{children:["The namespace used for this project's resources and access control. The namespace must fit into a ",(0,a.jsx)(t.code,{children:"bytes14"}),". Leaving\nthis blank will use the root namespace, which is ",(0,a.jsx)(t.a,{href:"/guides/best-practices/system-best-practices#avoid-the-root-namespace-if-possible",children:"not\nrecommended"})," for most use cases."]})}),(0,a.jsxs)(m,{name:"tables",children:[(0,a.jsx)(t.p,{children:"A mapping of table labels to their table config. Unless disabled, this will codegen a corresponding table library\nfor better UX when reading/writing records."}),(0,a.jsxs)(c,{title:"Table options",children:[(0,a.jsx)(m,{name:"name",children:(0,a.jsxs)(t.p,{children:["The ",(0,a.jsx)(t.code,{children:"bytes14"})," name used in the resource ID. Defaults to the first 14 characters of the table label."]})}),(0,a.jsx)(m,{name:"type",children:(0,a.jsxs)(t.p,{children:[(0,a.jsx)(t.a,{href:"/store/tables#types-of-tables",children:"Table type"}),", either ",(0,a.jsx)(t.code,{children:'"table"'})," or ",(0,a.jsx)(t.code,{children:'"offchainTable"'}),". Defaults to ",(0,a.jsx)(t.code,{children:'"table"'}),"."]})}),(0,a.jsx)(m,{name:"schema",children:(0,a.jsxs)(t.p,{children:["An ordered mapping of field names to their schema type, ",(0,a.jsx)(t.code,{children:"enums"})," label, or ",(0,a.jsx)(t.code,{children:"userTypes"})," label. Static-length field types (e.g. ",(0,a.jsx)(t.code,{children:"uint256"}),") must come before dynamic-length field types (e.g. ",(0,a.jsx)(t.code,{children:"string"})," or ",(0,a.jsx)(t.code,{children:"uint8[]"}),")."]})}),(0,a.jsx)(m,{name:"key",children:(0,a.jsxs)(t.p,{children:["A tuple of field names in the ",(0,a.jsx)(t.code,{children:"schema"})," to be used as the primary key of table records. Only static-length fields\nare supported as keys."]})}),(0,a.jsxs)(m,{name:"codegen",children:[(0,a.jsx)(t.p,{children:"Customize how codegen should behave when generating this table's corresponding Solidity library."}),(0,a.jsxs)(c,{children:[(0,a.jsxs)(m,{name:"outputDirectory",children:["Output directory of codegen table library relative to top-level ",(0,a.jsx)(t.code,{children:"codegen.outputDirectory"}),". Defaults to ",(0,a.jsx)(t.code,{children:'"tables"'}),"."]}),(0,a.jsxs)(m,{name:"dataStruct",children:["Whether or not to use a struct for table data. Defaults to ",(0,a.jsx)(t.code,{children:"true"}),"."]})]})]}),(0,a.jsxs)(m,{name:"deploy",children:[(0,a.jsx)(t.p,{children:"Customize how to deploy this table."}),(0,a.jsx)(c,{children:(0,a.jsxs)(m,{name:"disabled",children:["Disable deployment of this table. Defaults to ",(0,a.jsx)(t.code,{children:"false"}),"."]})})]})]}),(0,a.jsxs)(t.p,{children:["Tables can also be defined using shorthands.\nFor multi-field tables, the value in the mapping can be just the table schema, but must include a static-length ",(0,a.jsx)(t.code,{children:"id"})," field to be used as the ",(0,a.jsx)(t.code,{children:"key"}),".\nFor single-field tables, the value in the mapping can be just the field type, which assumes a schema of ",(0,a.jsx)(t.code,{children:'{ id: "bytes32", value: … }'})," where ",(0,a.jsx)(t.code,{children:"value"})," is the provided field type."]})]}),(0,a.jsxs)(m,{name:"systems",children:[(0,a.jsxs)(t.p,{children:["A mapping of system labels to their system config. All systems must be named using a ",(0,a.jsx)(t.code,{children:"System"})," suffix. Systems only need to be included here if they are deviating from system config defaults."]}),(0,a.jsxs)(c,{title:"System options",children:[(0,a.jsx)(m,{name:"name",children:(0,a.jsxs)(t.p,{children:["The ",(0,a.jsx)(t.code,{children:"bytes14"})," name used in the resource ID. Defaults to the first 14 characters of the system label."]})}),(0,a.jsxs)(m,{name:"openAccess",children:["Whether or not any address can call this system. Defaults to ",(0,a.jsx)(t.code,{children:"true"}),"."]}),(0,a.jsxs)(m,{name:"accessList",children:["A list of contract addresses or system labels that can call this system, used with ",(0,a.jsx)(t.code,{children:"openAccess: false"}),"."]})]})]})]}),"\n",(0,a.jsx)(t.h2,{id:"multiple-namespaces",children:"Multiple namespaces"}),"\n",(0,a.jsx)(c,{children:(0,a.jsxs)(m,{name:"namespaces",children:[(0,a.jsxs)(t.p,{children:["A mapping of namespace labels to their namespace config. Using this config option expects your project's source\ndirectory to use a similar structure of namespace directories like ",(0,a.jsx)(t.code,{children:"src/namespaces/[namespaceLabel]"}),"."]}),(0,a.jsxs)(c,{title:"Namespace options",children:[(0,a.jsx)(m,{name:"namespace",children:(0,a.jsxs)(t.p,{children:["The ",(0,a.jsx)(t.code,{children:"bytes14"})," namespace used in the resource ID. Defaults to the first 14 characters of the namespace label."]})}),(0,a.jsx)(m,{name:"tables",children:(0,a.jsxs)(t.p,{children:["Tables in this namespace. Same shape as ",(0,a.jsx)(t.code,{children:"tables"})," in ",(0,a.jsx)(t.a,{href:"#single-namespace",children:"single namespace mode"}),"."]})}),(0,a.jsx)(m,{name:"systems",children:(0,a.jsxs)(t.p,{children:["Systems in this namespace. Same shape as ",(0,a.jsx)(t.code,{children:"systems"})," in ",(0,a.jsx)(t.a,{href:"#single-namespace",children:"single namespace mode"}),"."]})})]})]})}),"\n",(0,a.jsx)(t.h2,{id:"additional-options",children:"Additional options"}),"\n",(0,a.jsx)(t.p,{children:"The following options are available in both single- and multiple-namespace modes."}),"\n",(0,a.jsxs)(c,{children:[(0,a.jsx)(m,{name:"enums",children:(0,a.jsx)(t.p,{children:"A mapping of enum labels to an array of string values. Enum labels can be used as schema types within tables."})}),(0,a.jsxs)(m,{name:"userTypes",children:[(0,a.jsx)(t.p,{children:"A mapping of user type labels to their user type config. User type labels can be used as schema types within tables."}),(0,a.jsxs)(c,{title:"User type options",children:[(0,a.jsx)(m,{name:"type",children:"Solidity-native schema type."}),(0,a.jsx)(m,{name:"filePath",children:(0,a.jsxs)(t.p,{children:["Path to source file relative to project root (must start with ",(0,a.jsx)(t.code,{children:"./"}),") or import path from a package (must have\nproper remappings set up)."]})})]})]}),(0,a.jsxs)(m,{name:"modules",children:[(0,a.jsx)(t.p,{children:"A list of modules to install into the world during the deploy step."}),(0,a.jsxs)(c,{title:"Module config options",children:[(0,a.jsxs)(m,{name:"artifactPath",children:["Relative path to the module's compiled JSON artifact (usually in ",(0,a.jsx)(t.code,{children:"out"}),") or an import path if using a module from an npm package. This path is resolved using ",(0,a.jsxs)(t.a,{href:"https://nodejs.org/api/modules.html#modulerequireid",children:["Node's module ",(0,a.jsx)(t.code,{children:"require"})," API"]}),"."]}),(0,a.jsxs)(m,{name:"root",children:["Whether or not to install this as a root module. Defaults to ",(0,a.jsx)(t.code,{children:"false"}),"."]}),(0,a.jsx)(m,{name:"args",children:"A list of arguments used to call the module's install function."})]})]}),(0,a.jsx)(m,{name:"excludeSystems",children:"A list of system labels to exclude from codegen and deploy."}),(0,a.jsxs)(m,{name:"sourceDirectory",children:["Path to this project's Solidity source files, relative to the project root. Defaults to ",(0,a.jsx)(t.code,{children:'"src"'}),". This should be kept in alignment with ",(0,a.jsx)(t.code,{children:"foundry.toml"}),"."]}),(0,a.jsxs)(m,{name:"codegen",children:[(0,a.jsx)(t.p,{children:"Customize how codegen should behave when generating this table's corresponding Solidity library."}),(0,a.jsxs)(c,{children:[(0,a.jsxs)(m,{name:"outputDirectory",children:["Output directory of codegen relative to ",(0,a.jsx)(t.code,{children:"sourceDirectory"}),". Defaults to ",(0,a.jsx)(t.code,{children:'"codegen"'}),". When using multiple namespaces, this will be prefixed with ",(0,a.jsx)(t.code,{children:"namespaces/[namespaceLabel]"}),"."]}),(0,a.jsxs)(m,{name:"userTypesFilename",children:["Filename relative to ",(0,a.jsx)(t.code,{children:"outputDirectory"})," to codegen enums into. Defaults to ",(0,a.jsx)(t.code,{children:'"common.sol"'}),"."]}),(0,a.jsxs)(m,{name:"worldgenDirectory",children:["Output directory of world interfaces relative to ",(0,a.jsx)(t.code,{children:"outputDirectory"}),". Defaults to ",(0,a.jsx)(t.code,{children:'"world"'}),"."]})]})]}),(0,a.jsxs)(m,{name:"deploy",children:[(0,a.jsx)(t.p,{children:"Customize how to deploy this table."}),(0,a.jsxs)(c,{children:[(0,a.jsxs)(m,{name:"deploysDirectory",children:["Directory, relative to project root, to write the deployment artifacts to. Defaults to ",(0,a.jsx)(t.code,{children:'"deploys"'}),"."]}),(0,a.jsxs)(m,{name:"postDeployScript",children:["Script name to execute after the deployment is complete. Defaults to ",(0,a.jsx)(t.code,{children:'"PostDeploy"'}),"."]}),(0,a.jsxs)(m,{name:"worldsFile",children:["JSON filename, relative to project root, to write per-chain world deployment addresses. Defaults to ",(0,a.jsx)(t.code,{children:'"worlds.json"'}),"."]}),(0,a.jsxs)(m,{name:"upgradeableWorldImplementation",children:["Wheter or not to deploy the world with an upgradeable proxy, allowing for the core implementation to be upgraded. Defaults to ",(0,a.jsx)(t.code,{children:"false"}),", but ",(0,a.jsxs)(t.a,{href:"/guides/best-practices/deployment-settings",children:["we recommend ",(0,a.jsx)(t.code,{children:"true"})]}),"."]})]})]})]})]})}var p=(0,r.j)(u)},55979:function(e){e.exports={list:"Params_list__Jdtd9",title:"Params_title__KoUrs",term:"Params_term__x3mEU",definition:"Params_definition__AQkRB"}}},function(e){e.O(0,[3720,2888,179],function(){return e(e.s=49460)}),_N_E=e.O()}]);