@latticexyz/world 2.0.4 → 2.0.5-main-e2e8ec8b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -137,23 +137,20 @@ type SystemFunction = {
137
137
  };
138
138
  declare function callFrom<TChain extends Chain, TAccount extends Account>(params: CallFromParameters): (client: Client<Transport, TChain, TAccount>) => Pick<WalletActions<TChain, TAccount>, "writeContract">;
139
139
 
140
- declare const delegationWithSignatureTypes: {
141
- readonly Delegation: readonly [{
142
- readonly name: "delegatee";
140
+ declare const callWithSignatureTypes: {
141
+ readonly Call: readonly [{
142
+ readonly name: "signer";
143
143
  readonly type: "address";
144
144
  }, {
145
- readonly name: "delegationControlId";
145
+ readonly name: "systemId";
146
146
  readonly type: "bytes32";
147
147
  }, {
148
- readonly name: "initCallData";
148
+ readonly name: "callData";
149
149
  readonly type: "bytes";
150
- }, {
151
- readonly name: "delegator";
152
- readonly type: "address";
153
150
  }, {
154
151
  readonly name: "nonce";
155
152
  readonly type: "uint256";
156
153
  }];
157
154
  };
158
155
 
159
- export { ResolvedSystemConfig, ResolvedWorldConfig, SystemCall, SystemCallFrom, SystemConfig, WorldConfig, callFrom, delegationWithSignatureTypes, encodeSystemCall, encodeSystemCallFrom, encodeSystemCalls, encodeSystemCallsFrom, resolveSystemConfig, resolveWorldConfig };
156
+ export { ResolvedSystemConfig, ResolvedWorldConfig, SystemCall, SystemCallFrom, SystemConfig, WorldConfig, callFrom, callWithSignatureTypes, encodeSystemCall, encodeSystemCallFrom, encodeSystemCalls, encodeSystemCallsFrom, resolveSystemConfig, resolveWorldConfig };
package/dist/internal.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as l}from"./chunk-OS2BVN74.js";import{a as W,b as H}from"./chunk-AGPG4DQJ.js";import"./chunk-3GSLUFHC.js";import{a as R,b as E}from"./chunk-RF4HOV37.js";import{a as k,b as M}from"./chunk-YMY7QWFU.js";import{encodeFunctionData as C}from"viem";function c({abi:t,systemId:n,functionName:e,args:a}){return[n,C({abi:t,functionName:e,args:a})]}import{encodeFunctionData as x}from"viem";function p({abi:t,from:n,systemId:e,functionName:a,args:i}){return[n,e,x({abi:t,functionName:a,args:i})]}function X(t,n){return n.map(e=>c({...e,abi:t}))}function ee(t,n,e){return e.map(a=>p({...a,abi:t,from:n}))}import{slice as I,concat as T}from"viem";import{getAction as d,encodeFunctionData as A}from"viem/utils";import{writeContract as b}from"viem/actions";import{readHex as P}from"@latticexyz/common";import{getKeySchema as g,getValueSchema as N,getSchemaTypes as F,decodeValueArgs as w,encodeKey as h}from"@latticexyz/protocol-parser/internal";var u=[{type:"function",name:"getDynamicField",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"dynamicFieldIndex",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"view"},{type:"function",name:"getDynamicFieldLength",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"dynamicFieldIndex",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getDynamicFieldSlice",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"dynamicFieldIndex",type:"uint8",internalType:"uint8"},{name:"start",type:"uint256",internalType:"uint256"},{name:"end",type:"uint256",internalType:"uint256"}],outputs:[{name:"data",type:"bytes",internalType:"bytes"}],stateMutability:"view"},{type:"function",name:"getField",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"fieldIndex",type:"uint8",internalType:"uint8"},{name:"fieldLayout",type:"bytes32",internalType:"FieldLayout"}],outputs:[{name:"data",type:"bytes",internalType:"bytes"}],stateMutability:"view"},{type:"function",name:"getField",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"fieldIndex",type:"uint8",internalType:"uint8"}],outputs:[{name:"data",type:"bytes",internalType:"bytes"}],stateMutability:"view"},{type:"function",name:"getFieldLayout",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"}],outputs:[{name:"fieldLayout",type:"bytes32",internalType:"FieldLayout"}],stateMutability:"view"},{type:"function",name:"getFieldLength",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"fieldIndex",type:"uint8",internalType:"uint8"},{name:"fieldLayout",type:"bytes32",internalType:"FieldLayout"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getFieldLength",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"fieldIndex",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getKeySchema",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"}],outputs:[{name:"keySchema",type:"bytes32",internalType:"Schema"}],stateMutability:"view"},{type:"function",name:"getRecord",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"fieldLayout",type:"bytes32",internalType:"FieldLayout"}],outputs:[{name:"staticData",type:"bytes",internalType:"bytes"},{name:"encodedLengths",type:"bytes32",internalType:"EncodedLengths"},{name:"dynamicData",type:"bytes",internalType:"bytes"}],stateMutability:"view"},{type:"function",name:"getRecord",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"}],outputs:[{name:"staticData",type:"bytes",internalType:"bytes"},{name:"encodedLengths",type:"bytes32",internalType:"EncodedLengths"},{name:"dynamicData",type:"bytes",internalType:"bytes"}],stateMutability:"view"},{type:"function",name:"getStaticField",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"fieldIndex",type:"uint8",internalType:"uint8"},{name:"fieldLayout",type:"bytes32",internalType:"FieldLayout"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"getValueSchema",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"}],outputs:[{name:"valueSchema",type:"bytes32",internalType:"Schema"}],stateMutability:"view"}];function ce(t){return n=>({writeContract:async e=>{if(e.address!==t.worldAddress||e.functionName==="call"||e.functionName==="callFrom"||e.functionName==="registerDelegationWithSignature")return d(n,b,"writeContract")(e);let a=A({abi:e.abi,functionName:e.functionName,args:e.args}),i=I(a,0,4),{systemId:o,systemFunctionSelector:r}=await v(t,i),y=T([r,P(a,4)]),s={...e,functionName:"callFrom",args:[t.delegatorAddress,o,y]};return d(n,b,"writeContract")(s)}})}var f=new Map;async function v(t,n){let e=T([t.worldAddress,n]),a=f.get(e);if(a)return a;let i=t.worldFunctionToSystemFunction?await t.worldFunctionToSystemFunction(n):await D(t.publicClient,t.worldAddress,n);return f.set(e,i),i}async function D(t,n,e){let a=l.tables.world__FunctionSelectors,i=F(g(a)),o=F(N(a)),[r,y,s]=await t.readContract({address:n,abi:u,functionName:"getRecord",args:[a.tableId,h(i,{worldFunctionSelector:e})]}),m=w(o,{staticData:r,encodedLengths:y,dynamicData:s});return{systemId:m.systemId,systemFunctionSelector:m.systemFunctionSelector}}var ue={Delegation:[{name:"delegatee",type:"address"},{name:"delegationControlId",type:"bytes32"},{name:"initCallData",type:"bytes"},{name:"delegator",type:"address"},{name:"nonce",type:"uint256"}]};export{R as SYSTEM_DEFAULTS,E as WORLD_DEFAULTS,ce as callFrom,ue as delegationWithSignatureTypes,c as encodeSystemCall,p as encodeSystemCallFrom,X as encodeSystemCalls,ee as encodeSystemCallsFrom,M as resolveSystemConfig,k as resolveWorldConfig,H as zPluginWorldConfig,W as zWorldConfig};
1
+ import{a as l}from"./chunk-OS2BVN74.js";import{a as W,b as H}from"./chunk-AGPG4DQJ.js";import"./chunk-3GSLUFHC.js";import{a as R,b as E}from"./chunk-RF4HOV37.js";import{a as k,b as M}from"./chunk-YMY7QWFU.js";import{encodeFunctionData as C}from"viem";function c({abi:t,systemId:n,functionName:e,args:a}){return[n,C({abi:t,functionName:e,args:a})]}import{encodeFunctionData as x}from"viem";function p({abi:t,from:n,systemId:e,functionName:a,args:i}){return[n,e,x({abi:t,functionName:a,args:i})]}function X(t,n){return n.map(e=>c({...e,abi:t}))}function ee(t,n,e){return e.map(a=>p({...a,abi:t,from:n}))}import{slice as I,concat as T}from"viem";import{getAction as d,encodeFunctionData as A}from"viem/utils";import{writeContract as b}from"viem/actions";import{readHex as P}from"@latticexyz/common";import{getKeySchema as N,getValueSchema as g,getSchemaTypes as F,decodeValueArgs as w,encodeKey as h}from"@latticexyz/protocol-parser/internal";var u=[{type:"function",name:"getDynamicField",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"dynamicFieldIndex",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"view"},{type:"function",name:"getDynamicFieldLength",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"dynamicFieldIndex",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getDynamicFieldSlice",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"dynamicFieldIndex",type:"uint8",internalType:"uint8"},{name:"start",type:"uint256",internalType:"uint256"},{name:"end",type:"uint256",internalType:"uint256"}],outputs:[{name:"data",type:"bytes",internalType:"bytes"}],stateMutability:"view"},{type:"function",name:"getField",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"fieldIndex",type:"uint8",internalType:"uint8"},{name:"fieldLayout",type:"bytes32",internalType:"FieldLayout"}],outputs:[{name:"data",type:"bytes",internalType:"bytes"}],stateMutability:"view"},{type:"function",name:"getField",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"fieldIndex",type:"uint8",internalType:"uint8"}],outputs:[{name:"data",type:"bytes",internalType:"bytes"}],stateMutability:"view"},{type:"function",name:"getFieldLayout",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"}],outputs:[{name:"fieldLayout",type:"bytes32",internalType:"FieldLayout"}],stateMutability:"view"},{type:"function",name:"getFieldLength",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"fieldIndex",type:"uint8",internalType:"uint8"},{name:"fieldLayout",type:"bytes32",internalType:"FieldLayout"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getFieldLength",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"fieldIndex",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getKeySchema",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"}],outputs:[{name:"keySchema",type:"bytes32",internalType:"Schema"}],stateMutability:"view"},{type:"function",name:"getRecord",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"fieldLayout",type:"bytes32",internalType:"FieldLayout"}],outputs:[{name:"staticData",type:"bytes",internalType:"bytes"},{name:"encodedLengths",type:"bytes32",internalType:"EncodedLengths"},{name:"dynamicData",type:"bytes",internalType:"bytes"}],stateMutability:"view"},{type:"function",name:"getRecord",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"}],outputs:[{name:"staticData",type:"bytes",internalType:"bytes"},{name:"encodedLengths",type:"bytes32",internalType:"EncodedLengths"},{name:"dynamicData",type:"bytes",internalType:"bytes"}],stateMutability:"view"},{type:"function",name:"getStaticField",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"},{name:"fieldIndex",type:"uint8",internalType:"uint8"},{name:"fieldLayout",type:"bytes32",internalType:"FieldLayout"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"getValueSchema",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"}],outputs:[{name:"valueSchema",type:"bytes32",internalType:"Schema"}],stateMutability:"view"}];function ce(t){return n=>({writeContract:async e=>{if(e.address!==t.worldAddress||e.functionName==="call"||e.functionName==="callFrom"||e.functionName==="callWithSignature")return d(n,b,"writeContract")(e);let a=A({abi:e.abi,functionName:e.functionName,args:e.args}),i=I(a,0,4),{systemId:o,systemFunctionSelector:r}=await v(t,i),y=T([r,P(a,4)]),s={...e,functionName:"callFrom",args:[t.delegatorAddress,o,y]};return d(n,b,"writeContract")(s)}})}var f=new Map;async function v(t,n){let e=T([t.worldAddress,n]),a=f.get(e);if(a)return a;let i=t.worldFunctionToSystemFunction?await t.worldFunctionToSystemFunction(n):await D(t.publicClient,t.worldAddress,n);return f.set(e,i),i}async function D(t,n,e){let a=l.tables.world__FunctionSelectors,i=F(N(a)),o=F(g(a)),[r,y,s]=await t.readContract({address:n,abi:u,functionName:"getRecord",args:[a.tableId,h(i,{worldFunctionSelector:e})]}),m=w(o,{staticData:r,encodedLengths:y,dynamicData:s});return{systemId:m.systemId,systemFunctionSelector:m.systemFunctionSelector}}var ue={Call:[{name:"signer",type:"address"},{name:"systemId",type:"bytes32"},{name:"callData",type:"bytes"},{name:"nonce",type:"uint256"}]};export{R as SYSTEM_DEFAULTS,E as WORLD_DEFAULTS,ce as callFrom,ue as callWithSignatureTypes,c as encodeSystemCall,p as encodeSystemCallFrom,X as encodeSystemCalls,ee as encodeSystemCallsFrom,M as resolveSystemConfig,k as resolveWorldConfig,H as zPluginWorldConfig,W as zWorldConfig};
2
2
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../ts/encodeSystemCall.ts","../ts/encodeSystemCallFrom.ts","../ts/encodeSystemCalls.ts","../ts/encodeSystemCallsFrom.ts","../ts/actions/callFrom.ts","../out/IStoreRead.sol/IStoreRead.abi.json","../ts/delegationWithSignatureTypes.ts"],"sourcesContent":["import { Abi, EncodeFunctionDataParameters, Hex, encodeFunctionData, type ContractFunctionName } from \"viem\";\nimport type { AbiParametersToPrimitiveTypes, ExtractAbiFunction } from \"abitype\";\nimport IWorldCallAbi from \"../out/IWorldKernel.sol/IWorldCall.abi.json\";\n\nexport type SystemCall<abi extends Abi, functionName extends ContractFunctionName<abi>> = EncodeFunctionDataParameters<\n abi,\n functionName\n> & {\n readonly systemId: Hex;\n};\n\n/** Encode a system call to be passed as arguments into `World.call` */\nexport function encodeSystemCall<abi extends Abi, functionName extends ContractFunctionName<abi>>({\n abi,\n systemId,\n functionName,\n args,\n}: SystemCall<abi, functionName>): AbiParametersToPrimitiveTypes<\n ExtractAbiFunction<typeof IWorldCallAbi, \"call\">[\"inputs\"]\n> {\n return [\n systemId,\n encodeFunctionData<abi, functionName>({\n abi,\n functionName,\n args,\n } as unknown as EncodeFunctionDataParameters<abi, functionName>),\n ];\n}\n","import { Abi, EncodeFunctionDataParameters, encodeFunctionData, Address, type ContractFunctionName } from \"viem\";\nimport type { AbiParametersToPrimitiveTypes, ExtractAbiFunction } from \"abitype\";\nimport IWorldCallAbi from \"../out/IWorldKernel.sol/IWorldCall.abi.json\";\nimport { SystemCall } from \"./encodeSystemCall\";\n\nexport type SystemCallFrom<abi extends Abi, functionName extends ContractFunctionName<abi>> = SystemCall<\n abi,\n functionName\n> & {\n readonly from: Address;\n};\n\n/** Encode a system call to be passed as arguments into `World.callFrom` */\nexport function encodeSystemCallFrom<abi extends Abi, functionName extends ContractFunctionName<abi>>({\n abi,\n from,\n systemId,\n functionName,\n args,\n}: SystemCallFrom<abi, functionName>): AbiParametersToPrimitiveTypes<\n ExtractAbiFunction<typeof IWorldCallAbi, \"callFrom\">[\"inputs\"]\n> {\n return [\n from,\n systemId,\n encodeFunctionData<abi, functionName>({\n abi,\n functionName,\n args,\n } as unknown as EncodeFunctionDataParameters<abi, functionName>),\n ];\n}\n","import { Abi, type ContractFunctionName } from \"viem\";\nimport IWorldCallAbi from \"../out/IWorldKernel.sol/IWorldCall.abi.json\";\nimport { SystemCall, encodeSystemCall } from \"./encodeSystemCall\";\nimport type { AbiParametersToPrimitiveTypes, ExtractAbiFunction } from \"abitype\";\n\n/** Encode system calls to be passed as arguments into `World.batchCall` */\nexport function encodeSystemCalls<abi extends Abi, functionName extends ContractFunctionName<abi>>(\n abi: abi,\n systemCalls: readonly Omit<SystemCall<abi, functionName>, \"abi\">[],\n): AbiParametersToPrimitiveTypes<ExtractAbiFunction<typeof IWorldCallAbi, \"call\">[\"inputs\"]>[] {\n return systemCalls.map((systemCall) => encodeSystemCall({ ...systemCall, abi } as SystemCall<abi, functionName>));\n}\n","import { Abi, Address, type ContractFunctionName } from \"viem\";\nimport IWorldCallAbi from \"../out/IWorldKernel.sol/IWorldCall.abi.json\";\nimport { SystemCallFrom, encodeSystemCallFrom } from \"./encodeSystemCallFrom\";\nimport type { AbiParametersToPrimitiveTypes, ExtractAbiFunction } from \"abitype\";\n\n/** Encode system calls to be passed as arguments into `World.batchCallFrom` */\nexport function encodeSystemCallsFrom<abi extends Abi, functionName extends ContractFunctionName<abi>>(\n abi: abi,\n from: Address,\n systemCalls: readonly Omit<SystemCallFrom<abi, functionName>, \"abi\" | \"from\">[],\n): AbiParametersToPrimitiveTypes<ExtractAbiFunction<typeof IWorldCallAbi, \"callFrom\">[\"inputs\"]>[] {\n return systemCalls.map((systemCall) =>\n encodeSystemCallFrom({ ...systemCall, abi, from } as SystemCallFrom<abi, functionName>),\n );\n}\n","import {\n slice,\n concat,\n type Transport,\n type Chain,\n type Account,\n type Hex,\n type WalletActions,\n type WriteContractReturnType,\n type EncodeFunctionDataParameters,\n type PublicClient,\n Client,\n} from \"viem\";\nimport { getAction, encodeFunctionData } from \"viem/utils\";\nimport { writeContract } from \"viem/actions\";\nimport { readHex } from \"@latticexyz/common\";\nimport {\n getKeySchema,\n getValueSchema,\n getSchemaTypes,\n decodeValueArgs,\n encodeKey,\n} from \"@latticexyz/protocol-parser/internal\";\nimport worldConfig from \"../../mud.config\";\nimport IStoreReadAbi from \"../../out/IStoreRead.sol/IStoreRead.abi.json\";\n\n// Accepts either `worldFunctionToSystemFunction` or `publicClient`, but not both.\ntype CallFromParameters = CallFromFunctionParameters | CallFromClientParameters;\ntype CallFromBaseParameters = {\n worldAddress: Hex;\n delegatorAddress: Hex;\n};\ntype CallFromFunctionParameters = CallFromBaseParameters & {\n worldFunctionToSystemFunction: (worldFunctionSelector: Hex) => Promise<SystemFunction>;\n publicClient?: never;\n};\ntype CallFromClientParameters = CallFromBaseParameters & {\n worldFunctionToSystemFunction?: never;\n publicClient: PublicClient;\n};\n\ntype SystemFunction = { systemId: Hex; systemFunctionSelector: Hex };\n\n// By extending viem clients with this function after delegation, the delegation is automatically applied to World contract writes.\n// This means that these writes are made on behalf of the delegator.\n// Internally, it transforms the write arguments to use `callFrom`.\n//\n// Accepts either `worldFunctionToSystemFunction` or `publicClient` as an argument.\n// `worldFunctionToSystemFunction` allows manually providing the mapping function, thus users can utilize their client store for the lookup.\n// If `publicClient` is provided instead, this function retrieves the corresponding system function from the World contract.\n//\n// The function mapping is cached to avoid redundant retrievals for the same World function.\nexport function callFrom<TChain extends Chain, TAccount extends Account>(\n params: CallFromParameters,\n): (client: Client<Transport, TChain, TAccount>) => Pick<WalletActions<TChain, TAccount>, \"writeContract\"> {\n return (client) => ({\n // Applies to: `client.writeContract`, `getContract(client, ...).write`\n writeContract: async (writeArgs): Promise<WriteContractReturnType> => {\n // Skip if the contract isn't the World or the function called should not be redirected through `callFrom`.\n if (\n writeArgs.address !== params.worldAddress ||\n writeArgs.functionName === \"call\" ||\n writeArgs.functionName === \"callFrom\" ||\n writeArgs.functionName === \"registerDelegationWithSignature\"\n ) {\n return getAction(client, writeContract, \"writeContract\")(writeArgs);\n }\n\n // Encode the World's calldata (which includes the World's function selector).\n const worldCalldata = encodeFunctionData({\n abi: writeArgs.abi,\n functionName: writeArgs.functionName,\n args: writeArgs.args,\n } as unknown as EncodeFunctionDataParameters);\n\n // The first 4 bytes of calldata represent the function selector.\n const worldFunctionSelector = slice(worldCalldata, 0, 4);\n\n // Get the systemId and System's function selector.\n const { systemId, systemFunctionSelector } = await worldFunctionToSystemFunction(params, worldFunctionSelector);\n\n // Construct the System's calldata by replacing the World's function selector with the System's.\n // Use `readHex` instead of `slice` to prevent out-of-bounds errors with calldata that has no args.\n const systemCalldata = concat([systemFunctionSelector, readHex(worldCalldata, 4)]);\n\n // Construct args for `callFrom`.\n const callFromArgs: typeof writeArgs = {\n ...writeArgs,\n functionName: \"callFrom\",\n args: [params.delegatorAddress, systemId, systemCalldata],\n };\n\n // Call `writeContract` with the new args.\n return getAction(client, writeContract, \"writeContract\")(callFromArgs);\n },\n });\n}\n\nconst systemFunctionCache = new Map<Hex, SystemFunction>();\n\nasync function worldFunctionToSystemFunction(\n params: CallFromParameters,\n worldFunctionSelector: Hex,\n): Promise<SystemFunction> {\n const cacheKey = concat([params.worldAddress, worldFunctionSelector]);\n\n // Use cache if the function has been called previously.\n const cached = systemFunctionCache.get(cacheKey);\n if (cached) return cached;\n\n // If a mapping function is provided, use it. Otherwise, call the World contract.\n const systemFunction = params.worldFunctionToSystemFunction\n ? await params.worldFunctionToSystemFunction(worldFunctionSelector)\n : await retrieveSystemFunctionFromContract(params.publicClient, params.worldAddress, worldFunctionSelector);\n\n systemFunctionCache.set(cacheKey, systemFunction);\n\n return systemFunction;\n}\n\nasync function retrieveSystemFunctionFromContract(\n publicClient: PublicClient,\n worldAddress: Hex,\n worldFunctionSelector: Hex,\n): Promise<SystemFunction> {\n const table = worldConfig.tables.world__FunctionSelectors;\n\n const keySchema = getSchemaTypes(getKeySchema(table));\n const valueSchema = getSchemaTypes(getValueSchema(table));\n\n const [staticData, encodedLengths, dynamicData] = await publicClient.readContract({\n address: worldAddress,\n abi: IStoreReadAbi,\n functionName: \"getRecord\",\n args: [table.tableId, encodeKey(keySchema, { worldFunctionSelector })],\n });\n\n const decoded = decodeValueArgs(valueSchema, { staticData, encodedLengths, dynamicData });\n\n const systemFunction: SystemFunction = {\n systemId: decoded.systemId,\n systemFunctionSelector: decoded.systemFunctionSelector,\n };\n\n return systemFunction;\n}\n","[\n {\n \"type\": \"function\",\n \"name\": \"getDynamicField\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"dynamicFieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getDynamicFieldLength\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"dynamicFieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getDynamicFieldSlice\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"dynamicFieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"start\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"end\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getField\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"fieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"fieldLayout\",\n \"type\": \"bytes32\",\n \"internalType\": \"FieldLayout\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getField\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"fieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFieldLayout\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"fieldLayout\",\n \"type\": \"bytes32\",\n \"internalType\": \"FieldLayout\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFieldLength\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"fieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"fieldLayout\",\n \"type\": \"bytes32\",\n \"internalType\": \"FieldLayout\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFieldLength\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"fieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getKeySchema\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"keySchema\",\n \"type\": \"bytes32\",\n \"internalType\": \"Schema\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRecord\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"fieldLayout\",\n \"type\": \"bytes32\",\n \"internalType\": \"FieldLayout\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"staticData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"encodedLengths\",\n \"type\": \"bytes32\",\n \"internalType\": \"EncodedLengths\"\n },\n {\n \"name\": \"dynamicData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRecord\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"staticData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"encodedLengths\",\n \"type\": \"bytes32\",\n \"internalType\": \"EncodedLengths\"\n },\n {\n \"name\": \"dynamicData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getStaticField\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"fieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"fieldLayout\",\n \"type\": \"bytes32\",\n \"internalType\": \"FieldLayout\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getValueSchema\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"valueSchema\",\n \"type\": \"bytes32\",\n \"internalType\": \"Schema\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n]","// Follows https://viem.sh/docs/actions/wallet/signTypedData#usage\n\nexport const delegationWithSignatureTypes = {\n Delegation: [\n { name: \"delegatee\", type: \"address\" },\n { name: \"delegationControlId\", type: \"bytes32\" },\n { name: \"initCallData\", type: \"bytes\" },\n { name: \"delegator\", type: \"address\" },\n { name: \"nonce\", type: \"uint256\" },\n ],\n} as const;\n"],"mappings":"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","names":["encodeFunctionData","encodeSystemCall","abi","systemId","functionName","args","encodeFunctionData","encodeSystemCallFrom","abi","from","systemId","functionName","args","encodeSystemCalls","abi","systemCalls","systemCall","encodeSystemCall","encodeSystemCallsFrom","abi","from","systemCalls","systemCall","encodeSystemCallFrom","slice","concat","getAction","encodeFunctionData","writeContract","readHex","getKeySchema","getValueSchema","getSchemaTypes","decodeValueArgs","encodeKey","IStoreRead_abi_default","callFrom","params","client","writeArgs","getAction","writeContract","worldCalldata","encodeFunctionData","worldFunctionSelector","slice","systemId","systemFunctionSelector","worldFunctionToSystemFunction","systemCalldata","concat","readHex","callFromArgs","systemFunctionCache","cacheKey","cached","systemFunction","retrieveSystemFunctionFromContract","publicClient","worldAddress","table","mud_config_default","keySchema","getSchemaTypes","getKeySchema","valueSchema","getValueSchema","staticData","encodedLengths","dynamicData","IStoreRead_abi_default","encodeKey","decoded","decodeValueArgs","delegationWithSignatureTypes"]}
1
+ {"version":3,"sources":["../ts/encodeSystemCall.ts","../ts/encodeSystemCallFrom.ts","../ts/encodeSystemCalls.ts","../ts/encodeSystemCallsFrom.ts","../ts/actions/callFrom.ts","../out/IStoreRead.sol/IStoreRead.abi.json","../ts/callWithSignatureTypes.ts"],"sourcesContent":["import { Abi, EncodeFunctionDataParameters, Hex, encodeFunctionData, type ContractFunctionName } from \"viem\";\nimport type { AbiParametersToPrimitiveTypes, ExtractAbiFunction } from \"abitype\";\nimport IWorldCallAbi from \"../out/IWorldKernel.sol/IWorldCall.abi.json\";\n\nexport type SystemCall<abi extends Abi, functionName extends ContractFunctionName<abi>> = EncodeFunctionDataParameters<\n abi,\n functionName\n> & {\n readonly systemId: Hex;\n};\n\n/** Encode a system call to be passed as arguments into `World.call` */\nexport function encodeSystemCall<abi extends Abi, functionName extends ContractFunctionName<abi>>({\n abi,\n systemId,\n functionName,\n args,\n}: SystemCall<abi, functionName>): AbiParametersToPrimitiveTypes<\n ExtractAbiFunction<typeof IWorldCallAbi, \"call\">[\"inputs\"]\n> {\n return [\n systemId,\n encodeFunctionData<abi, functionName>({\n abi,\n functionName,\n args,\n } as unknown as EncodeFunctionDataParameters<abi, functionName>),\n ];\n}\n","import { Abi, EncodeFunctionDataParameters, encodeFunctionData, Address, type ContractFunctionName } from \"viem\";\nimport type { AbiParametersToPrimitiveTypes, ExtractAbiFunction } from \"abitype\";\nimport IWorldCallAbi from \"../out/IWorldKernel.sol/IWorldCall.abi.json\";\nimport { SystemCall } from \"./encodeSystemCall\";\n\nexport type SystemCallFrom<abi extends Abi, functionName extends ContractFunctionName<abi>> = SystemCall<\n abi,\n functionName\n> & {\n readonly from: Address;\n};\n\n/** Encode a system call to be passed as arguments into `World.callFrom` */\nexport function encodeSystemCallFrom<abi extends Abi, functionName extends ContractFunctionName<abi>>({\n abi,\n from,\n systemId,\n functionName,\n args,\n}: SystemCallFrom<abi, functionName>): AbiParametersToPrimitiveTypes<\n ExtractAbiFunction<typeof IWorldCallAbi, \"callFrom\">[\"inputs\"]\n> {\n return [\n from,\n systemId,\n encodeFunctionData<abi, functionName>({\n abi,\n functionName,\n args,\n } as unknown as EncodeFunctionDataParameters<abi, functionName>),\n ];\n}\n","import { Abi, type ContractFunctionName } from \"viem\";\nimport IWorldCallAbi from \"../out/IWorldKernel.sol/IWorldCall.abi.json\";\nimport { SystemCall, encodeSystemCall } from \"./encodeSystemCall\";\nimport type { AbiParametersToPrimitiveTypes, ExtractAbiFunction } from \"abitype\";\n\n/** Encode system calls to be passed as arguments into `World.batchCall` */\nexport function encodeSystemCalls<abi extends Abi, functionName extends ContractFunctionName<abi>>(\n abi: abi,\n systemCalls: readonly Omit<SystemCall<abi, functionName>, \"abi\">[],\n): AbiParametersToPrimitiveTypes<ExtractAbiFunction<typeof IWorldCallAbi, \"call\">[\"inputs\"]>[] {\n return systemCalls.map((systemCall) => encodeSystemCall({ ...systemCall, abi } as SystemCall<abi, functionName>));\n}\n","import { Abi, Address, type ContractFunctionName } from \"viem\";\nimport IWorldCallAbi from \"../out/IWorldKernel.sol/IWorldCall.abi.json\";\nimport { SystemCallFrom, encodeSystemCallFrom } from \"./encodeSystemCallFrom\";\nimport type { AbiParametersToPrimitiveTypes, ExtractAbiFunction } from \"abitype\";\n\n/** Encode system calls to be passed as arguments into `World.batchCallFrom` */\nexport function encodeSystemCallsFrom<abi extends Abi, functionName extends ContractFunctionName<abi>>(\n abi: abi,\n from: Address,\n systemCalls: readonly Omit<SystemCallFrom<abi, functionName>, \"abi\" | \"from\">[],\n): AbiParametersToPrimitiveTypes<ExtractAbiFunction<typeof IWorldCallAbi, \"callFrom\">[\"inputs\"]>[] {\n return systemCalls.map((systemCall) =>\n encodeSystemCallFrom({ ...systemCall, abi, from } as SystemCallFrom<abi, functionName>),\n );\n}\n","import {\n slice,\n concat,\n type Transport,\n type Chain,\n type Account,\n type Hex,\n type WalletActions,\n type WriteContractReturnType,\n type EncodeFunctionDataParameters,\n type PublicClient,\n Client,\n} from \"viem\";\nimport { getAction, encodeFunctionData } from \"viem/utils\";\nimport { writeContract } from \"viem/actions\";\nimport { readHex } from \"@latticexyz/common\";\nimport {\n getKeySchema,\n getValueSchema,\n getSchemaTypes,\n decodeValueArgs,\n encodeKey,\n} from \"@latticexyz/protocol-parser/internal\";\nimport worldConfig from \"../../mud.config\";\nimport IStoreReadAbi from \"../../out/IStoreRead.sol/IStoreRead.abi.json\";\n\n// Accepts either `worldFunctionToSystemFunction` or `publicClient`, but not both.\ntype CallFromParameters = CallFromFunctionParameters | CallFromClientParameters;\ntype CallFromBaseParameters = {\n worldAddress: Hex;\n delegatorAddress: Hex;\n};\ntype CallFromFunctionParameters = CallFromBaseParameters & {\n worldFunctionToSystemFunction: (worldFunctionSelector: Hex) => Promise<SystemFunction>;\n publicClient?: never;\n};\ntype CallFromClientParameters = CallFromBaseParameters & {\n worldFunctionToSystemFunction?: never;\n publicClient: PublicClient;\n};\n\ntype SystemFunction = { systemId: Hex; systemFunctionSelector: Hex };\n\n// By extending viem clients with this function after delegation, the delegation is automatically applied to World contract writes.\n// This means that these writes are made on behalf of the delegator.\n// Internally, it transforms the write arguments to use `callFrom`.\n//\n// Accepts either `worldFunctionToSystemFunction` or `publicClient` as an argument.\n// `worldFunctionToSystemFunction` allows manually providing the mapping function, thus users can utilize their client store for the lookup.\n// If `publicClient` is provided instead, this function retrieves the corresponding system function from the World contract.\n//\n// The function mapping is cached to avoid redundant retrievals for the same World function.\nexport function callFrom<TChain extends Chain, TAccount extends Account>(\n params: CallFromParameters,\n): (client: Client<Transport, TChain, TAccount>) => Pick<WalletActions<TChain, TAccount>, \"writeContract\"> {\n return (client) => ({\n // Applies to: `client.writeContract`, `getContract(client, ...).write`\n writeContract: async (writeArgs): Promise<WriteContractReturnType> => {\n // Skip if the contract isn't the World or the function called should not be redirected through `callFrom`.\n if (\n writeArgs.address !== params.worldAddress ||\n writeArgs.functionName === \"call\" ||\n writeArgs.functionName === \"callFrom\" ||\n writeArgs.functionName === \"callWithSignature\"\n ) {\n return getAction(client, writeContract, \"writeContract\")(writeArgs);\n }\n\n // Encode the World's calldata (which includes the World's function selector).\n const worldCalldata = encodeFunctionData({\n abi: writeArgs.abi,\n functionName: writeArgs.functionName,\n args: writeArgs.args,\n } as unknown as EncodeFunctionDataParameters);\n\n // The first 4 bytes of calldata represent the function selector.\n const worldFunctionSelector = slice(worldCalldata, 0, 4);\n\n // Get the systemId and System's function selector.\n const { systemId, systemFunctionSelector } = await worldFunctionToSystemFunction(params, worldFunctionSelector);\n\n // Construct the System's calldata by replacing the World's function selector with the System's.\n // Use `readHex` instead of `slice` to prevent out-of-bounds errors with calldata that has no args.\n const systemCalldata = concat([systemFunctionSelector, readHex(worldCalldata, 4)]);\n\n // Construct args for `callFrom`.\n const callFromArgs: typeof writeArgs = {\n ...writeArgs,\n functionName: \"callFrom\",\n args: [params.delegatorAddress, systemId, systemCalldata],\n };\n\n // Call `writeContract` with the new args.\n return getAction(client, writeContract, \"writeContract\")(callFromArgs);\n },\n });\n}\n\nconst systemFunctionCache = new Map<Hex, SystemFunction>();\n\nasync function worldFunctionToSystemFunction(\n params: CallFromParameters,\n worldFunctionSelector: Hex,\n): Promise<SystemFunction> {\n const cacheKey = concat([params.worldAddress, worldFunctionSelector]);\n\n // Use cache if the function has been called previously.\n const cached = systemFunctionCache.get(cacheKey);\n if (cached) return cached;\n\n // If a mapping function is provided, use it. Otherwise, call the World contract.\n const systemFunction = params.worldFunctionToSystemFunction\n ? await params.worldFunctionToSystemFunction(worldFunctionSelector)\n : await retrieveSystemFunctionFromContract(params.publicClient, params.worldAddress, worldFunctionSelector);\n\n systemFunctionCache.set(cacheKey, systemFunction);\n\n return systemFunction;\n}\n\nasync function retrieveSystemFunctionFromContract(\n publicClient: PublicClient,\n worldAddress: Hex,\n worldFunctionSelector: Hex,\n): Promise<SystemFunction> {\n const table = worldConfig.tables.world__FunctionSelectors;\n\n const keySchema = getSchemaTypes(getKeySchema(table));\n const valueSchema = getSchemaTypes(getValueSchema(table));\n\n const [staticData, encodedLengths, dynamicData] = await publicClient.readContract({\n address: worldAddress,\n abi: IStoreReadAbi,\n functionName: \"getRecord\",\n args: [table.tableId, encodeKey(keySchema, { worldFunctionSelector })],\n });\n\n const decoded = decodeValueArgs(valueSchema, { staticData, encodedLengths, dynamicData });\n\n const systemFunction: SystemFunction = {\n systemId: decoded.systemId,\n systemFunctionSelector: decoded.systemFunctionSelector,\n };\n\n return systemFunction;\n}\n","[\n {\n \"type\": \"function\",\n \"name\": \"getDynamicField\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"dynamicFieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getDynamicFieldLength\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"dynamicFieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getDynamicFieldSlice\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"dynamicFieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"start\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"end\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getField\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"fieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"fieldLayout\",\n \"type\": \"bytes32\",\n \"internalType\": \"FieldLayout\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getField\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"fieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFieldLayout\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"fieldLayout\",\n \"type\": \"bytes32\",\n \"internalType\": \"FieldLayout\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFieldLength\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"fieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"fieldLayout\",\n \"type\": \"bytes32\",\n \"internalType\": \"FieldLayout\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFieldLength\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"fieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getKeySchema\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"keySchema\",\n \"type\": \"bytes32\",\n \"internalType\": \"Schema\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRecord\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"fieldLayout\",\n \"type\": \"bytes32\",\n \"internalType\": \"FieldLayout\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"staticData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"encodedLengths\",\n \"type\": \"bytes32\",\n \"internalType\": \"EncodedLengths\"\n },\n {\n \"name\": \"dynamicData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRecord\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"staticData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"encodedLengths\",\n \"type\": \"bytes32\",\n \"internalType\": \"EncodedLengths\"\n },\n {\n \"name\": \"dynamicData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getStaticField\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n },\n {\n \"name\": \"keyTuple\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"fieldIndex\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"fieldLayout\",\n \"type\": \"bytes32\",\n \"internalType\": \"FieldLayout\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getValueSchema\",\n \"inputs\": [\n {\n \"name\": \"tableId\",\n \"type\": \"bytes32\",\n \"internalType\": \"ResourceId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"valueSchema\",\n \"type\": \"bytes32\",\n \"internalType\": \"Schema\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n]","// Follows https://viem.sh/docs/actions/wallet/signTypedData#usage\n\nexport const callWithSignatureTypes = {\n Call: [\n { name: \"signer\", type: \"address\" },\n { name: \"systemId\", type: \"bytes32\" },\n { name: \"callData\", type: \"bytes\" },\n { name: \"nonce\", type: \"uint256\" },\n ],\n} as const;\n"],"mappings":"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","names":["encodeFunctionData","encodeSystemCall","abi","systemId","functionName","args","encodeFunctionData","encodeSystemCallFrom","abi","from","systemId","functionName","args","encodeSystemCalls","abi","systemCalls","systemCall","encodeSystemCall","encodeSystemCallsFrom","abi","from","systemCalls","systemCall","encodeSystemCallFrom","slice","concat","getAction","encodeFunctionData","writeContract","readHex","getKeySchema","getValueSchema","getSchemaTypes","decodeValueArgs","encodeKey","IStoreRead_abi_default","callFrom","params","client","writeArgs","getAction","writeContract","worldCalldata","encodeFunctionData","worldFunctionSelector","slice","systemId","systemFunctionSelector","worldFunctionToSystemFunction","systemCalldata","concat","readHex","callFromArgs","systemFunctionCache","cacheKey","cached","systemFunction","retrieveSystemFunctionFromContract","publicClient","worldAddress","table","mud_config_default","keySchema","getSchemaTypes","getKeySchema","valueSchema","getValueSchema","staticData","encodedLengths","dynamicData","IStoreRead_abi_default","encodeKey","decoded","decodeValueArgs","callWithSignatureTypes"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@latticexyz/world",
3
- "version": "2.0.4",
3
+ "version": "2.0.5-main-e2e8ec8b",
4
4
  "description": "World framework",
5
5
  "repository": {
6
6
  "type": "git",
@@ -43,11 +43,11 @@
43
43
  "arktype": "1.0.29-alpha",
44
44
  "viem": "2.7.12",
45
45
  "zod": "^3.21.4",
46
- "@latticexyz/common": "2.0.4",
47
- "@latticexyz/config": "2.0.4",
48
- "@latticexyz/protocol-parser": "2.0.4",
49
- "@latticexyz/schema-type": "2.0.4",
50
- "@latticexyz/store": "2.0.4"
46
+ "@latticexyz/common": "2.0.5-main-e2e8ec8b",
47
+ "@latticexyz/config": "2.0.5-main-e2e8ec8b",
48
+ "@latticexyz/protocol-parser": "2.0.5-main-e2e8ec8b",
49
+ "@latticexyz/store": "2.0.5-main-e2e8ec8b",
50
+ "@latticexyz/schema-type": "2.0.5-main-e2e8ec8b"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@types/ejs": "^3.1.1",
@@ -62,8 +62,8 @@
62
62
  "tsup": "^6.7.0",
63
63
  "tsx": "^3.12.6",
64
64
  "vitest": "0.34.6",
65
- "@latticexyz/abi-ts": "2.0.4",
66
- "@latticexyz/gas-report": "2.0.4"
65
+ "@latticexyz/gas-report": "2.0.5-main-e2e8ec8b",
66
+ "@latticexyz/abi-ts": "2.0.5-main-e2e8ec8b"
67
67
  },
68
68
  "scripts": {
69
69
  "build": "pnpm run build:mud && pnpm run build:abi && pnpm run build:abi-ts && pnpm run build:js",
@@ -61,7 +61,7 @@ export function callFrom<TChain extends Chain, TAccount extends Account>(
61
61
  writeArgs.address !== params.worldAddress ||
62
62
  writeArgs.functionName === "call" ||
63
63
  writeArgs.functionName === "callFrom" ||
64
- writeArgs.functionName === "registerDelegationWithSignature"
64
+ writeArgs.functionName === "callWithSignature"
65
65
  ) {
66
66
  return getAction(client, writeContract, "writeContract")(writeArgs);
67
67
  }
@@ -0,0 +1,10 @@
1
+ // Follows https://viem.sh/docs/actions/wallet/signTypedData#usage
2
+
3
+ export const callWithSignatureTypes = {
4
+ Call: [
5
+ { name: "signer", type: "address" },
6
+ { name: "systemId", type: "bytes32" },
7
+ { name: "callData", type: "bytes" },
8
+ { name: "nonce", type: "uint256" },
9
+ ],
10
+ } as const;
@@ -10,4 +10,4 @@ export * from "../encodeSystemCallsFrom";
10
10
 
11
11
  export * from "../actions/callFrom";
12
12
 
13
- export * from "../delegationWithSignatureTypes";
13
+ export * from "../callWithSignatureTypes";
@@ -1,11 +0,0 @@
1
- // Follows https://viem.sh/docs/actions/wallet/signTypedData#usage
2
-
3
- export const delegationWithSignatureTypes = {
4
- Delegation: [
5
- { name: "delegatee", type: "address" },
6
- { name: "delegationControlId", type: "bytes32" },
7
- { name: "initCallData", type: "bytes" },
8
- { name: "delegator", type: "address" },
9
- { name: "nonce", type: "uint256" },
10
- ],
11
- } as const;