Create New Instance/s

createNewInstance

Create a new module instance.

const createInstanceResult = await hatsModulesClient.createNewInstance({
    account,
    moduleId,
    hatId,
    immutableArgs,
    mutableArgs,
    saltNonce,
});

Arguments:

{
    account: Account | Address;
    moduleId: string;
    hatId: bigint;
    immutableArgs: unknown[];
    mutableArgs: unknown[];
    saltNonce?: bigint;
}
  • account - Viem account (Address for JSON-RPC accounts or Account for other types).

  • moduleId - The module ID (implementation address).

  • hatId - The hat ID for which the module is created.

  • immutableArgs - The module's immutable args. The arguments should be in the same order as in the Module object.

  • mutableArgs - The module's mutable args. The arguments should be in the same order as in the Module object.

  • 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 module instance.

batchCreateNewInstances

Batch create new module instances.

Each module will be created according to the provided parameters, on the same corresponding array index.

const createInstancesResult = await hatsModulesClient.batchCreateNewInstances({
    account,
    moduleIds,
    hatIds,
    immutableArgsArray,
    mutableArgsArray,
    saltNonces
});

Arguments:

{
    account: Account | Address;
    moduleIds: string[];
    hatIds: bigint[];
    immutableArgsArray: unknown[][];
    mutableArgsArray: unknown[][];
    saltNonces?: bigint[]; 
}
  • account - Viem account (Address for JSON-RPC accounts or Account for other types).

  • moduleIds - The module IDs (implementation address).

  • hatIds - The hat IDs for which the modules are created.

  • immutableArgsArray - Each module's immutable arguments. For each module, the arguments should be in the same order as in the Module object.

  • mutableArgsArray - Each module's mutable arguments. For each module, the arguments should be in the same order as in the Module object.

  • saltNonces - Optional salt nonces to use. If not provided, will be randomly generated.

Response:

{
  status: "success" | "reverted";
  transactionHash: `0x${string}`;
  newInstances: Array<`0x${string}`>;
}
  • status - "success" if transaction was successful, "reverted" if transaction reverted.

  • transactionHash - transaction's hash.

  • newInstances - The address of the new module instances.

predictHatsModuleAddress

Predict a module's address before/after it was created, using its creation arguments.

const predictedAddress = await hatsModulesClient.predictHatsModuleAddress({
    moduleId,
    hatId,
    immutableArgs,
    saltNonce,
});

Arguments:

{
   moduleId: string;
   hatId: bigint;
   immutableArgs: unknown[];
   saltNonce: bigint;
}

Response:

`0x${string}`

The predicted module address.

Last updated