@provable-games/metagame-sdk 0.1.2 → 0.1.4
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.
- package/dist/abis.cjs +2794 -0
- package/dist/abis.cjs.map +1 -0
- package/dist/abis.d.cts +2012 -0
- package/dist/abis.d.ts +2012 -0
- package/dist/abis.js +2786 -0
- package/dist/abis.js.map +1 -0
- package/dist/{prizeAggregation-CHwIJzXr.d.cts → client-CD-q6Alx.d.ts} +36 -2
- package/dist/{prizeAggregation-CHwIJzXr.d.ts → client-CcoKJS8i.d.cts} +36 -2
- package/dist/index.cjs +309 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +123 -3
- package/dist/index.d.ts +123 -3
- package/dist/index.js +302 -7
- package/dist/index.js.map +1 -1
- package/dist/merkle.cjs +209 -0
- package/dist/merkle.cjs.map +1 -0
- package/dist/merkle.d.cts +151 -0
- package/dist/merkle.d.ts +151 -0
- package/dist/merkle.js +200 -0
- package/dist/merkle.js.map +1 -0
- package/dist/react.cjs +243 -22
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +53 -18
- package/dist/react.d.ts +53 -18
- package/dist/react.js +242 -25
- package/dist/react.js.map +1 -1
- package/dist/rpc.cjs.map +1 -1
- package/dist/rpc.js.map +1 -1
- package/package.json +31 -11
package/dist/rpc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/rpc/extensions.ts","../src/rpc/feeAndPrizeExtensions.ts"],"names":["CallData"],"mappings":"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","file":"rpc.js","sourcesContent":["/**\n * RPC calls for EGS entry requirement extensions.\n *\n * These functions call the shared extension contracts on Starknet.\n * They take a starknet.js provider (or any object with callContract)\n * and return parsed results.\n *\n * Every metagame that uses the entry requirement system needs these\n * same calls — they're not app-specific, they call the same contracts.\n */\n\nimport { CallData, type BigNumberish } from \"starknet\";\n\n/** Minimal provider interface — anything with callContract works */\nexport interface StarknetCallProvider {\n callContract(call: {\n contractAddress: string;\n entrypoint: string;\n calldata: string[];\n }): Promise<string[]>;\n}\n\n// ---------------------------------------------------------------------------\n// Extension contract calls (IEntryRequirementExtension)\n// ---------------------------------------------------------------------------\n\n/**\n * Check if a player has a valid entry for an extension-gated event.\n *\n * Calls `valid_entry(context_id, player_address, qualification)` on the\n * extension contract.\n *\n * @param provider - Starknet RPC provider\n * @param extensionAddress - The extension contract address\n * @param contextId - The metagame event ID (tournament ID, quest ID, etc.)\n * @param playerAddress - The player's address\n * @param qualification - Proof data (felt252 array)\n * @returns Whether the entry is valid\n */\nexport async function checkExtensionValidEntry(\n provider: StarknetCallProvider,\n extensionAddress: string,\n contextId: BigNumberish,\n playerAddress: string,\n qualification: string[],\n): Promise<boolean> {\n try {\n const result = await provider.callContract({\n contractAddress: extensionAddress,\n entrypoint: \"valid_entry\",\n calldata: CallData.compile([contextId, playerAddress, qualification]),\n });\n return result[0] === \"0x1\" || BigInt(result[0]) === 1n;\n } catch (error) {\n console.error(\"Error checking extension valid_entry:\", error);\n return false;\n }\n}\n\n/**\n * Get the number of entries left for a player via an extension.\n *\n * Calls `entries_left(context_id, player_address, qualification)` on the\n * extension contract. Returns null if the extension has no entry limit\n * (Option::None).\n *\n * @returns Number of entries remaining, or null if unlimited\n */\nexport async function getExtensionEntriesLeft(\n provider: StarknetCallProvider,\n extensionAddress: string,\n contextId: BigNumberish,\n playerAddress: string,\n qualification: string[],\n): Promise<number | null> {\n try {\n const result = await provider.callContract({\n contractAddress: extensionAddress,\n entrypoint: \"entries_left\",\n calldata: CallData.compile([contextId, playerAddress, qualification]),\n });\n\n // Result is Option<u8>\n // Option::None: result[0] is 1\n // Option::Some: result[0] is 0, result[1] is the value\n if (result[0] === \"0x1\" || BigInt(result[0]) === 1n) {\n return null; // No limit\n }\n return Number(result[1]);\n } catch (error) {\n console.error(\"Error checking extension entries_left:\", error);\n return null;\n }\n}\n\n/**\n * Check if a player's entry should be banned via an extension.\n *\n * Calls `should_ban(context_id, game_token_id, current_owner, proof)`.\n *\n * @param gameTokenId - The game token ID to check (felt252)\n * @param currentOwner - Current owner of the game token\n * @param proof - Ban proof data (felt252 array)\n * @returns Whether the entry should be banned\n */\nexport async function checkExtensionShouldBan(\n provider: StarknetCallProvider,\n extensionAddress: string,\n contextId: BigNumberish,\n gameTokenId: string,\n currentOwner: string,\n proof: string[],\n): Promise<boolean> {\n try {\n const result = await provider.callContract({\n contractAddress: extensionAddress,\n entrypoint: \"should_ban\",\n calldata: CallData.compile([contextId, gameTokenId, currentOwner, proof]),\n });\n return result[0] === \"0x1\" || BigInt(result[0]) === 1n;\n } catch (error) {\n console.error(\"Error checking extension should_ban:\", error);\n return false;\n }\n}\n\n/**\n * Get the context owner for an entry requirement extension contract.\n *\n * Extensions are multi-tenant: each context_id has its own owner\n * (set by the first caller to configure that context via add_config).\n *\n * @param provider - Starknet RPC provider\n * @param extensionAddress - The extension contract address\n * @param contextId - The metagame event ID (tournament ID, quest ID, etc.)\n * @returns The owner address for that context, or empty string if unclaimed\n */\nexport async function getEntryRequirementContextOwner(\n provider: StarknetCallProvider,\n extensionAddress: string,\n contextId: BigNumberish,\n): Promise<string> {\n try {\n const result = await provider.callContract({\n contractAddress: extensionAddress,\n entrypoint: \"context_owner\",\n calldata: CallData.compile([contextId]),\n });\n return result[0] ?? \"\";\n } catch (error) {\n console.error(\"Error checking extension context_owner:\", error);\n return \"\";\n }\n}\n\n// ---------------------------------------------------------------------------\n// Opus Protocol calls (for Opus Troves extension)\n// ---------------------------------------------------------------------------\n\n/** Mainnet Opus Abbot contract address */\nconst OPUS_ABBOT_ADDRESS =\n \"0x04d0bb0a4c40012384e7c419e6eb3c637b28e8363fb66958b60d90505b9c072f\";\n\n/** Mainnet Opus Shrine contract address */\nconst OPUS_SHRINE_ADDRESS =\n \"0x0498edfaf50ca5855666a700c25dd629d577eb9afccdf3b5977aec79aee55ada\";\n\n/**\n * Get all trove IDs owned by a user from the Opus Abbot contract.\n *\n * @param provider - Starknet RPC provider\n * @param userAddress - The user's address\n * @param abbotAddress - Override Abbot address (defaults to mainnet)\n * @returns Array of trove IDs\n */\nexport async function getUserTroveIds(\n provider: StarknetCallProvider,\n userAddress: BigNumberish,\n abbotAddress: string = OPUS_ABBOT_ADDRESS,\n): Promise<bigint[]> {\n try {\n const result = await provider.callContract({\n contractAddress: abbotAddress,\n entrypoint: \"get_user_trove_ids\",\n calldata: CallData.compile([userAddress]),\n });\n\n // Result: [array_length, ...trove_ids]\n const arrayLength = Number(result[0] || 0);\n const troveIds: bigint[] = [];\n for (let i = 1; i <= arrayLength; i++) {\n troveIds.push(BigInt(result[i] || 0));\n }\n return troveIds;\n } catch (error) {\n console.error(\"Error getting user trove IDs:\", error);\n return [];\n }\n}\n\n/**\n * Get a trove's debt from the Opus Shrine contract.\n *\n * Calls `get_trove_health(trove_id)` which returns [value, threshold, ltv, debt].\n * We extract the debt (18 decimals, denominated in CASH which is 1:1 USD).\n *\n * @param provider - Starknet RPC provider\n * @param troveId - The trove ID\n * @param shrineAddress - Override Shrine address (defaults to mainnet)\n * @returns Debt amount in CASH (18 decimals), or null on error\n */\nexport async function getTroveDebt(\n provider: StarknetCallProvider,\n troveId: BigNumberish,\n shrineAddress: string = OPUS_SHRINE_ADDRESS,\n): Promise<bigint | null> {\n try {\n const result = await provider.callContract({\n contractAddress: shrineAddress,\n entrypoint: \"get_trove_health\",\n calldata: CallData.compile([troveId]),\n });\n return BigInt(result[3] || 0);\n } catch (error) {\n console.error(\"Error getting trove health:\", error);\n return null;\n }\n}\n\n/**\n * Get total debt across all of a user's troves.\n *\n * Convenience function that calls getUserTroveIds then getTroveDebt for each.\n *\n * @param provider - Starknet RPC provider\n * @param userAddress - The user's address\n * @returns Total debt in CASH (18 decimals)\n */\nexport async function getUserTotalTroveDebt(\n provider: StarknetCallProvider,\n userAddress: BigNumberish,\n abbotAddress?: string,\n shrineAddress?: string,\n): Promise<bigint> {\n const troveIds = await getUserTroveIds(provider, userAddress, abbotAddress);\n if (troveIds.length === 0) return 0n;\n\n let totalDebt = 0n;\n for (const troveId of troveIds) {\n const debt = await getTroveDebt(provider, troveId, shrineAddress);\n if (debt !== null) totalDebt += debt;\n }\n return totalDebt;\n}\n","/**\n * RPC calldata builders and view calls for entry fee and prize extensions.\n *\n * These match the Cairo interfaces IEntryFeeExtension and IPrizeExtension.\n * They build calldata arrays that can be passed to contract invocations,\n * and provide view call wrappers for ownership checks.\n */\n\nimport { CallData, type BigNumberish } from \"starknet\";\nimport type { StarknetCallProvider } from \"./extensions\";\n\n// ---------------------------------------------------------------------------\n// Entry fee extension calldata builders\n// ---------------------------------------------------------------------------\n\n/**\n * Build calldata for setting entry fee config on an extension.\n */\nexport function buildSetEntryFeeConfigCalldata(\n contextId: BigNumberish,\n config: BigNumberish[],\n): string[] {\n return CallData.compile([contextId, config]);\n}\n\n/**\n * Build calldata for paying an entry fee via an extension.\n */\nexport function buildPayEntryFeeCalldata(\n contextId: BigNumberish,\n payParams: BigNumberish[],\n): string[] {\n return CallData.compile([contextId, payParams]);\n}\n\n/**\n * Build calldata for claiming entry fees via an extension.\n */\nexport function buildClaimEntryFeeCalldata(\n contextId: BigNumberish,\n claimParams: BigNumberish[],\n): string[] {\n return CallData.compile([contextId, claimParams]);\n}\n\n// ---------------------------------------------------------------------------\n// Prize extension calldata builders\n// ---------------------------------------------------------------------------\n\n/**\n * Build calldata for adding a prize via an extension.\n */\nexport function buildAddPrizeCalldata(\n contextId: BigNumberish,\n prizeId: BigNumberish,\n config: BigNumberish[],\n): string[] {\n return CallData.compile([contextId, prizeId, config]);\n}\n\n/**\n * Build calldata for claiming a prize via an extension.\n */\nexport function buildClaimPrizeCalldata(\n contextId: BigNumberish,\n claimParams: BigNumberish[],\n): string[] {\n return CallData.compile([contextId, claimParams]);\n}\n\n// ---------------------------------------------------------------------------\n// View call wrappers\n// ---------------------------------------------------------------------------\n\n/**\n * Get the context owner for an entry fee extension contract.\n *\n * Extensions are multi-tenant: each context_id has its own owner\n * (set by the first caller to configure that context).\n */\nexport async function getEntryFeeContextOwner(\n provider: StarknetCallProvider,\n address: string,\n contextId: BigNumberish,\n): Promise<string> {\n try {\n const result = await provider.callContract({\n contractAddress: address,\n entrypoint: \"context_owner\",\n calldata: CallData.compile([contextId]),\n });\n return result[0] ?? \"\";\n } catch (error) {\n console.error(\"Error checking entry fee extension context_owner:\", error);\n return \"\";\n }\n}\n\n/**\n * Get the context owner for a prize extension contract.\n *\n * Extensions are multi-tenant: each context_id has its own owner\n * (set by the first caller to configure that context).\n */\nexport async function getPrizeContextOwner(\n provider: StarknetCallProvider,\n address: string,\n contextId: BigNumberish,\n): Promise<string> {\n try {\n const result = await provider.callContract({\n contractAddress: address,\n entrypoint: \"context_owner\",\n calldata: CallData.compile([contextId]),\n });\n return result[0] ?? \"\";\n } catch (error) {\n console.error(\"Error checking prize extension context_owner:\", error);\n return \"\";\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/rpc/extensions.ts","../src/rpc/feeAndPrizeExtensions.ts"],"names":["CallData"],"mappings":"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","file":"rpc.js","sourcesContent":["/**\n * RPC calls for EGS entry requirement extensions.\n *\n * These functions call the shared extension contracts on Starknet.\n * They take a starknet.js provider (or any object with callContract)\n * and return parsed results.\n *\n * Every metagame that uses the entry requirement system needs these\n * same calls — they're not app-specific, they call the same contracts.\n */\n\nimport { CallData, type BigNumberish } from \"starknet\";\n\n/** Minimal provider interface — anything with callContract works */\nexport interface StarknetCallProvider {\n callContract(call: {\n contractAddress: string;\n entrypoint: string;\n calldata: string[];\n }): Promise<string[]>;\n}\n\n// ---------------------------------------------------------------------------\n// Extension contract calls (IEntryRequirementExtension)\n// ---------------------------------------------------------------------------\n\n/**\n * Check if a player has a valid entry for an extension-gated event.\n *\n * Calls `valid_entry(context_id, player_address, qualification)` on the\n * extension contract.\n *\n * @param provider - Starknet RPC provider\n * @param extensionAddress - The extension contract address\n * @param contextId - The metagame event ID (tournament ID, quest ID, etc.)\n * @param playerAddress - The player's address\n * @param qualification - Proof data (felt252 array)\n * @returns Whether the entry is valid\n */\nexport async function checkExtensionValidEntry(\n provider: StarknetCallProvider,\n extensionAddress: string,\n contextId: BigNumberish,\n playerAddress: string,\n qualification: string[],\n): Promise<boolean> {\n try {\n const result = await provider.callContract({\n contractAddress: extensionAddress,\n entrypoint: \"valid_entry\",\n calldata: CallData.compile([contextId, playerAddress, qualification]),\n });\n return result[0] === \"0x1\" || BigInt(result[0]) === 1n;\n } catch (error) {\n console.error(\"Error checking extension valid_entry:\", error);\n return false;\n }\n}\n\n/**\n * Get the number of entries left for a player via an extension.\n *\n * Calls `entries_left(context_id, player_address, qualification)` on the\n * extension contract. Returns null if the extension has no entry limit\n * (Option::None).\n *\n * @returns Number of entries remaining, or null if unlimited\n */\nexport async function getExtensionEntriesLeft(\n provider: StarknetCallProvider,\n extensionAddress: string,\n contextId: BigNumberish,\n playerAddress: string,\n qualification: string[],\n): Promise<number | null> {\n try {\n const result = await provider.callContract({\n contractAddress: extensionAddress,\n entrypoint: \"entries_left\",\n calldata: CallData.compile([contextId, playerAddress, qualification]),\n });\n\n // Result is Option<u32>\n // Option::None: result[0] is 1\n // Option::Some: result[0] is 0, result[1] is the value\n if (result[0] === \"0x1\" || BigInt(result[0]) === 1n) {\n return null; // No limit\n }\n return Number(result[1]);\n } catch (error) {\n console.error(\"Error checking extension entries_left:\", error);\n return null;\n }\n}\n\n/**\n * Check if a player's entry should be banned via an extension.\n *\n * Calls `should_ban(context_id, game_token_id, current_owner, proof)`.\n *\n * @param gameTokenId - The game token ID to check (felt252)\n * @param currentOwner - Current owner of the game token\n * @param proof - Ban proof data (felt252 array)\n * @returns Whether the entry should be banned\n */\nexport async function checkExtensionShouldBan(\n provider: StarknetCallProvider,\n extensionAddress: string,\n contextId: BigNumberish,\n gameTokenId: string,\n currentOwner: string,\n proof: string[],\n): Promise<boolean> {\n try {\n const result = await provider.callContract({\n contractAddress: extensionAddress,\n entrypoint: \"should_ban\",\n calldata: CallData.compile([contextId, gameTokenId, currentOwner, proof]),\n });\n return result[0] === \"0x1\" || BigInt(result[0]) === 1n;\n } catch (error) {\n console.error(\"Error checking extension should_ban:\", error);\n return false;\n }\n}\n\n/**\n * Get the context owner for an entry requirement extension contract.\n *\n * Extensions are multi-tenant: each context_id has its own owner\n * (set by the first caller to configure that context via add_config).\n *\n * @param provider - Starknet RPC provider\n * @param extensionAddress - The extension contract address\n * @param contextId - The metagame event ID (tournament ID, quest ID, etc.)\n * @returns The owner address for that context, or empty string if unclaimed\n */\nexport async function getEntryRequirementContextOwner(\n provider: StarknetCallProvider,\n extensionAddress: string,\n contextId: BigNumberish,\n): Promise<string> {\n try {\n const result = await provider.callContract({\n contractAddress: extensionAddress,\n entrypoint: \"context_owner\",\n calldata: CallData.compile([contextId]),\n });\n return result[0] ?? \"\";\n } catch (error) {\n console.error(\"Error checking extension context_owner:\", error);\n return \"\";\n }\n}\n\n// ---------------------------------------------------------------------------\n// Opus Protocol calls (for Opus Troves extension)\n// ---------------------------------------------------------------------------\n\n/** Mainnet Opus Abbot contract address */\nconst OPUS_ABBOT_ADDRESS =\n \"0x04d0bb0a4c40012384e7c419e6eb3c637b28e8363fb66958b60d90505b9c072f\";\n\n/** Mainnet Opus Shrine contract address */\nconst OPUS_SHRINE_ADDRESS =\n \"0x0498edfaf50ca5855666a700c25dd629d577eb9afccdf3b5977aec79aee55ada\";\n\n/**\n * Get all trove IDs owned by a user from the Opus Abbot contract.\n *\n * @param provider - Starknet RPC provider\n * @param userAddress - The user's address\n * @param abbotAddress - Override Abbot address (defaults to mainnet)\n * @returns Array of trove IDs\n */\nexport async function getUserTroveIds(\n provider: StarknetCallProvider,\n userAddress: BigNumberish,\n abbotAddress: string = OPUS_ABBOT_ADDRESS,\n): Promise<bigint[]> {\n try {\n const result = await provider.callContract({\n contractAddress: abbotAddress,\n entrypoint: \"get_user_trove_ids\",\n calldata: CallData.compile([userAddress]),\n });\n\n // Result: [array_length, ...trove_ids]\n const arrayLength = Number(result[0] || 0);\n const troveIds: bigint[] = [];\n for (let i = 1; i <= arrayLength; i++) {\n troveIds.push(BigInt(result[i] || 0));\n }\n return troveIds;\n } catch (error) {\n console.error(\"Error getting user trove IDs:\", error);\n return [];\n }\n}\n\n/**\n * Get a trove's debt from the Opus Shrine contract.\n *\n * Calls `get_trove_health(trove_id)` which returns [value, threshold, ltv, debt].\n * We extract the debt (18 decimals, denominated in CASH which is 1:1 USD).\n *\n * @param provider - Starknet RPC provider\n * @param troveId - The trove ID\n * @param shrineAddress - Override Shrine address (defaults to mainnet)\n * @returns Debt amount in CASH (18 decimals), or null on error\n */\nexport async function getTroveDebt(\n provider: StarknetCallProvider,\n troveId: BigNumberish,\n shrineAddress: string = OPUS_SHRINE_ADDRESS,\n): Promise<bigint | null> {\n try {\n const result = await provider.callContract({\n contractAddress: shrineAddress,\n entrypoint: \"get_trove_health\",\n calldata: CallData.compile([troveId]),\n });\n return BigInt(result[3] || 0);\n } catch (error) {\n console.error(\"Error getting trove health:\", error);\n return null;\n }\n}\n\n/**\n * Get total debt across all of a user's troves.\n *\n * Convenience function that calls getUserTroveIds then getTroveDebt for each.\n *\n * @param provider - Starknet RPC provider\n * @param userAddress - The user's address\n * @returns Total debt in CASH (18 decimals)\n */\nexport async function getUserTotalTroveDebt(\n provider: StarknetCallProvider,\n userAddress: BigNumberish,\n abbotAddress?: string,\n shrineAddress?: string,\n): Promise<bigint> {\n const troveIds = await getUserTroveIds(provider, userAddress, abbotAddress);\n if (troveIds.length === 0) return 0n;\n\n let totalDebt = 0n;\n for (const troveId of troveIds) {\n const debt = await getTroveDebt(provider, troveId, shrineAddress);\n if (debt !== null) totalDebt += debt;\n }\n return totalDebt;\n}\n","/**\n * RPC calldata builders and view calls for entry fee and prize extensions.\n *\n * These match the Cairo interfaces IEntryFeeExtension and IPrizeExtension.\n * They build calldata arrays that can be passed to contract invocations,\n * and provide view call wrappers for ownership checks.\n */\n\nimport { CallData, type BigNumberish } from \"starknet\";\nimport type { StarknetCallProvider } from \"./extensions\";\n\n// ---------------------------------------------------------------------------\n// Entry fee extension calldata builders\n// ---------------------------------------------------------------------------\n\n/**\n * Build calldata for setting entry fee config on an extension.\n */\nexport function buildSetEntryFeeConfigCalldata(\n contextId: BigNumberish,\n config: BigNumberish[],\n): string[] {\n return CallData.compile([contextId, config]);\n}\n\n/**\n * Build calldata for paying an entry fee via an extension.\n */\nexport function buildPayEntryFeeCalldata(\n contextId: BigNumberish,\n payParams: BigNumberish[],\n): string[] {\n return CallData.compile([contextId, payParams]);\n}\n\n/**\n * Build calldata for claiming entry fees via an extension.\n */\nexport function buildClaimEntryFeeCalldata(\n contextId: BigNumberish,\n claimParams: BigNumberish[],\n): string[] {\n return CallData.compile([contextId, claimParams]);\n}\n\n// ---------------------------------------------------------------------------\n// Prize extension calldata builders\n// ---------------------------------------------------------------------------\n\n/**\n * Build calldata for adding a prize via an extension.\n */\nexport function buildAddPrizeCalldata(\n contextId: BigNumberish,\n prizeId: BigNumberish,\n config: BigNumberish[],\n): string[] {\n return CallData.compile([contextId, prizeId, config]);\n}\n\n/**\n * Build calldata for claiming a prize via an extension.\n */\nexport function buildClaimPrizeCalldata(\n contextId: BigNumberish,\n claimParams: BigNumberish[],\n): string[] {\n return CallData.compile([contextId, claimParams]);\n}\n\n// ---------------------------------------------------------------------------\n// View call wrappers\n// ---------------------------------------------------------------------------\n\n/**\n * Get the context owner for an entry fee extension contract.\n *\n * Extensions are multi-tenant: each context_id has its own owner\n * (set by the first caller to configure that context).\n */\nexport async function getEntryFeeContextOwner(\n provider: StarknetCallProvider,\n address: string,\n contextId: BigNumberish,\n): Promise<string> {\n try {\n const result = await provider.callContract({\n contractAddress: address,\n entrypoint: \"context_owner\",\n calldata: CallData.compile([contextId]),\n });\n return result[0] ?? \"\";\n } catch (error) {\n console.error(\"Error checking entry fee extension context_owner:\", error);\n return \"\";\n }\n}\n\n/**\n * Get the context owner for a prize extension contract.\n *\n * Extensions are multi-tenant: each context_id has its own owner\n * (set by the first caller to configure that context).\n */\nexport async function getPrizeContextOwner(\n provider: StarknetCallProvider,\n address: string,\n contextId: BigNumberish,\n): Promise<string> {\n try {\n const result = await provider.callContract({\n contractAddress: address,\n entrypoint: \"context_owner\",\n calldata: CallData.compile([contextId]),\n });\n return result[0] ?? \"\";\n } catch (error) {\n console.error(\"Error checking prize extension context_owner:\", error);\n return \"\";\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@provable-games/metagame-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Shared types, utilities, and headless hooks for Provable Games metagame SDKs",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -36,6 +36,26 @@
|
|
|
36
36
|
"types": "./dist/rpc.d.cts",
|
|
37
37
|
"default": "./dist/rpc.cjs"
|
|
38
38
|
}
|
|
39
|
+
},
|
|
40
|
+
"./merkle": {
|
|
41
|
+
"import": {
|
|
42
|
+
"types": "./dist/merkle.d.ts",
|
|
43
|
+
"default": "./dist/merkle.js"
|
|
44
|
+
},
|
|
45
|
+
"require": {
|
|
46
|
+
"types": "./dist/merkle.d.cts",
|
|
47
|
+
"default": "./dist/merkle.cjs"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"./abis": {
|
|
51
|
+
"import": {
|
|
52
|
+
"types": "./dist/abis.d.ts",
|
|
53
|
+
"default": "./dist/abis.js"
|
|
54
|
+
},
|
|
55
|
+
"require": {
|
|
56
|
+
"types": "./dist/abis.d.cts",
|
|
57
|
+
"default": "./dist/abis.cjs"
|
|
58
|
+
}
|
|
39
59
|
}
|
|
40
60
|
},
|
|
41
61
|
"files": [
|
|
@@ -64,18 +84,17 @@
|
|
|
64
84
|
"access": "public"
|
|
65
85
|
},
|
|
66
86
|
"devDependencies": {
|
|
67
|
-
"@
|
|
68
|
-
"@types/
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"vitest": "3.0.0"
|
|
87
|
+
"@types/node": "^22.0.0",
|
|
88
|
+
"@types/react": "^19.0.0",
|
|
89
|
+
"react": "^19.0.0",
|
|
90
|
+
"starknet": "^9.2.1",
|
|
91
|
+
"tsup": "^8.4.0",
|
|
92
|
+
"typescript": "^5.7.3",
|
|
93
|
+
"vitest": "^3.0.5"
|
|
75
94
|
},
|
|
76
95
|
"peerDependencies": {
|
|
77
96
|
"react": ">=18.0.0",
|
|
78
|
-
"starknet": ">=
|
|
97
|
+
"starknet": ">=9.0.0"
|
|
79
98
|
},
|
|
80
99
|
"peerDependenciesMeta": {
|
|
81
100
|
"react": {
|
|
@@ -89,6 +108,7 @@
|
|
|
89
108
|
"node": ">=22.0.0"
|
|
90
109
|
},
|
|
91
110
|
"dependencies": {
|
|
92
|
-
"@
|
|
111
|
+
"@ericnordelo/strk-merkle-tree": "^1.0.1",
|
|
112
|
+
"@rollup/rollup-linux-arm64-gnu": "^4.59.0"
|
|
93
113
|
}
|
|
94
114
|
}
|