Composing Modules
The following functions support the usage Eligibility/Toggle modules that compose other existing modules with "and"/"or" logical operations. Check out the documentation here to learn more.
Create New Eligibility/Toggle Chains
createEligibilitiesChain
Create a new eligibilities chain module.
const createInstanceResult = await hatsModulesClient.createEligibilitiesChain({
account,
hatId,
numClauses,
clausesLengths,
modules,
saltNonce,
});
Arguments:
{
account: Account | Address;
hatId: bigint;
numClauses: number;
clausesLengths: number[];
modules: `0x${string}`[];
saltNonce?: bigint;
}
account
- Viem account (Address for JSON-RPC accounts or Account for other types).hatId
- The hat ID for which the module is created.numClauses
- Number of conjunction clauses.clausesLengths
- Length of each clause.modules
- Array of module instances to chain, at the order corresponding to the provided clauses.saltNonce
- Optional salt nonce to use. If not provided, will be randomly generated.
Response:
{
status: "success" | "reverted";
transactionHash: `0x${string}`;
newInstance: `0x${string}`;
}
status
- "success" if transaction was successful, "reverted" if transaction reverted.transactionHash
- transaction's hash.newInstance
- In case of success, the address of the new chain module instance.
createTogglesChain
Create a new toggles chain module.
const createInstanceResult = await hatsModulesClient.createTogglesChain({
account,
hatId,
numClauses,
clausesLengths,
modules,
saltNonce,
});
Arguments:
{
account: Account | Address;
hatId: bigint;
numClauses: number;
clausesLengths: number[];
modules: `0x${string}`[];
saltNonce?: bigint;
}
account
- Viem account (Address for JSON-RPC accounts or Account for other types).hatId
- The hat ID for which the module is created.numClauses
- Number of conjunction clauses.clausesLengths
- Length of each clause.modules
- Array of module instances to chain, at the order corresponding to the provided clauses.saltNonce
- Optional salt nonce to use. If not provided, will be randomly generated.
Response:
{
status: "success" | "reverted";
transactionHash: `0x${string}`;
newInstance: `0x${string}`;
}
status
- "success" if transaction was successful, "reverted" if transaction reverted.transactionHash
- transaction's hash.newInstance
- In case of success, the address of the new chain module instance.
Read From Eligibility/Toggle Chains
The following functions support reading from chain module instances.
getRulesets
Get the rulesets of a module instance.
A ruleset is an array of modules which are chained together with an "AND" logical operator. If the module is a chain with multiple rulesets, then these rulesets are chained together with an "OR" logical operator.
If the provided address is a single module instance (not a chain), then the result will be a single ruleset, which will consist of the single module instance.
const rulesets = await hatsModulesClient.getRulesets(address);
Arguments:
`0x${string}`
Instance address.
Response:
Ruleset[] | undefined
The module's rulesets, or undefined
if the provided address is not a module.
getRulesetsBatched
Get the rulesets of multiple module instances.
A ruleset is an array of modules which are chained together with an "AND" logical operator. If the module is a chain with multiple rulesets, then these rulesets are chained together with an "OR" logical operator.
If the provided address is a single module instance (not a chain), then the result will be a single ruleset, which will consist of the single module instance.
const rulesets = await hatsModulesClient.getRulesetsBatched(addresses);
Arguments:
`0x${string}`[]
Array of instance addresses.
Response:
(Ruleset[] | undefined)[]
For each module instance, returns the module's rulesets, or undefined
if the provided address is not a module.
isChain
Check whether a module instance is a modules chain.
const isChain = await hatsModulesClient.isChain(address);
Arguments:
`0x${string}`
Instance address.
Response:
boolean
true
if the instance is a chain, false
otherwise.
isChainBatched
Check whether multiple module instances are modules chains.
const isChainBatched = await hatsModulesClient.isChainBatched(addresses);
Arguments:
`0x${string}`[]
Instance addresses.
Response:
boolean[]
For each instance, true
if the instance is a chain, false
otherwise.
Last updated