Primodium Client Core
The Primodium Client Core library exposes core functionality for interacting with Primodium game contracts with a TypeScript-based API. The library includes the following components:
- The Core object, which contains:
- Tables, allowing user to access and update functionality. See reactive-tables for more details.
- Network, an object that handles connection to the blockchain running Primodium.
- Utils, a suite of tools that allow for ease of getting and setting data
- Sync, a suite of tools for fetching data from an indexer
- Hooks, which expose a set of hooks for React-based use cases
- Constants and Mappings, used throughout the core package for type safety and developer experience.
Getting Started
Prerequisites
Installation
pnpm install @primodiumxyz/core
Usage
Node
import { createCore, chainConfigs } from "@primodiumxyz/core";
const coreConfig = {
chain: chainConfigs.dev,
worldAddress: "0x0",
initialBlockNumber: BigInt(0),
runSync: true, // runs default sync process if indexer url provided in chain config
runSystems: true, // runs default systems to keep core table data updated as blockchain state changes
};
const core = createCore(coreConfig);
const time = core.components.Time.get()?.value;
React
import { createCore, chainConfigs } from "@primodiumxyz/core";
import { CoreProvider, AccountClientProvider, useCore, useAccountClient } from "@primodiumxyz/core/react";
const App = () => {
const core = createCore(coreConfig);
const privateKey = <PRIVATE_KEY>
// AccountClientProvider must be defined within the core context
return (
<CoreProvider {...core}>
<AccountClientProvider playerPrivateKey={privateKey} sessionPrivateKey={privateKey}>
<Content />
</AccountClientProvider>
</CoreProvider>
);
};
const Content = () => {
const core = useCore();
const account = useAccountClient();
return (
<div>
{account.playerAccount.address}
</div>
)
}