UNPKG

@allo-team/allo-v2-sdk

Version:
412 lines (302 loc) 10.9 kB
# Registry Table of Contents - [Registry Table of Contents](#registry-table-of-contents) - [Registry](#registry) - [Initialization](#initialization) - [Creating a Registry Instance](#creating-a-registry-instance) - [Read Functions](#read-functions) - [Get Allo Owner](#get-allo-owner) - [Get Default Admin Role](#get-default-admin-role) - [Get Native](#get-native) - [Get Anchor To Profile Id](#get-anchor-to-profile-id) - [Get Profile By Anchor](#get-profile-by-anchor) - [Get Profile By ID](#get-profile-by-id) - [Get Role Admin](#get-role-admin) - [Check Role Membership](#check-role-membership) - [Check Membership in Profile](#check-membership-in-profile) - [Check Ownership of Profile](#check-ownership-of-profile) - [Check Ownership or Membership in Profile](#check-ownership-or-membership-in-profile) - [Get Profile ID to Pending Owner](#get-profile-id-to-pending-owner) - [Get Profile Details by ID](#get-profile-details-by-id) - [Write Functions](#write-functions) - [Creating a Profile](#creating-a-profile) - [Accepting Profile Ownership](#accepting-profile-ownership) - [Adding Members to a Profile](#adding-members-to-a-profile) - [Removing Members from a Profile](#removing-members-from-a-profile) - [Updating Profile Metadata](#updating-profile-metadata) - [Updating Profile Name](#updating-profile-name) - [Updating Profile Pending Owner](#updating-profile-pending-owner) --- # Registry The Registry class provides a set of functions for interacting with the Registry contract's view and write functions. This README provides examples and explanations for using these functions. ## Initialization Before using the functions provided by the Registry module, you need to create an instance of the Registry class. Here's how you can create a Registry instance: ### Creating a Registry Instance To create a new Registry instance, you need to provide the chain information. In this example, we're using the 5 chain information. ```javascript import { Registry } from "@allo-team/allo-v2-sdk/"; const registry = new Registry({ chain: 5 }); ``` This registry instance can then be used to call various read and transactional functions provided by the Registry module. Refer to the sections above for detailed examples on how to use these functions. Remember to replace placeholder values with actual values according to your requirements. --- ## Read Functions ### Get Allo Owner To retrieve the Allo Owner: ```javascript const alloOwner: string = await registry.getAlloOwner(); console.log(alloOwner); ``` ### Get Default Admin Role To get the Default Admin Role: ```javascript const defaultAdminRole: string = await registry.getDefaultAdminRole(); console.log(defaultAdminRole); ``` ### Get Native To obtain the Native: ```javascript const native: string = await registry.getNative(); console.log(native); ``` ### Get Anchor To Profile Id To retrieve the Profile ID associated with an Anchor: ```javascript const anchor = "your_anchor_value_here"; const profileId: string = await registry.getAnchorToProfileId(anchor); console.log(profileId); ``` ### Get Profile By Anchor To fetch a Profile using an Anchor: ```javascript import { Profile } from "@allo-team/allo-v2-sdk/dist/Registry/types"; const anchor = "your_anchor_value_here"; const profile: Profile = await registry.getProfileByAnchor(anchor); console.log(profile); ``` ### Get Profile By ID To retrieve a Profile using its ID: ```javascript import { Profile } from "@allo-team/allo-v2-sdk/dist/Registry/types"; const profileId = "your_profile_id_here"; const profile: Profile = await registry.getProfileById(profileId); console.log(profile); ``` ### Get Role Admin To get the admin of a specified role: ```javascript const role = "your_role_here"; const admin: string = await registry.getRoleAdmin(role); console.log(admin); ``` ### Check Role Membership To check if an account has a specific role: ```javascript import { HasRoleArgs } from "@allo-team/allo-v2-sdk/dist/Registry/types"; const hasRoleArgs: HasRoleArgs = { role: "your_role_here", account: "account_address_here", }; const hasRole: boolean = await registry.hasRole(hasRoleArgs); console.log(hasRole); ``` ### Check Membership in Profile To check if an account is a member of a profile: ```javascript import { ProfileAndAddressArgs } from "@allo-team/allo-v2-sdk/dist/Registry/types"; const profileAndAddressArgs: ProfileAndAddressArgs = { profileId: "your_profile_id_here", account: "account_address_here", }; const isMember: boolean = await registry.isMemberOfProfile( profileAndAddressArgs, ); console.log(isMember); ``` ### Check Ownership of Profile To check if an account is the owner of a profile: ```javascript import { ProfileAndAddressArgs } from "@allo-team/allo-v2-sdk/dist/Registry/types"; const profileAndAddressArgs: ProfileAndAddressArgs = { profileId: "your_profile_id_here", account: "account_address_here", }; const isOwner: boolean = await registry.isOwnerOfProfile(profileAndAddressArgs); console.log(isOwner); ``` ### Check Ownership or Membership in Profile To check if an account is either the owner or a member of a profile: ```javascript import { ProfileAndAddressArgs } from "@allo-team/allo-v2-sdk/dist/Registry/types"; const profileAndAddressArgs: ProfileAndAddressArgs = { profileId: "your_profile_id_here", account: "account_address_here", }; const isOwnerOrMember: boolean = await registry.isOwnerOrMemberOfProfile( profileAndAddressArgs, ); console.log(isOwnerOrMember); ``` ### Get Profile ID to Pending Owner To get the pending owner of a profile: ```javascript const profileId = "your_profile_id_here"; const pendingOwner: string = await registry.getProfileIdToPendingOwner( profileId, ); console.log(pendingOwner); ``` ### Get Profile Details by ID To get profile details by ID: ```javascript import { Profile } from "@allo-team/allo-v2-sdk/dist/Registry/types"; const profileId = "your_profile_id_here"; const profile: Profile = await registry.getProfilesById(profileId); console.log(profile); ``` --- ## Write Functions ### Creating a Profile To create a new profile using the `createProfile` function: ```javascript import { CreateProfileArgs } from "@allo-team/allo-v2-sdk/dist/Registry/types"; import { TransactionData } from "@allo-team/allo-v2-sdk/dist/Common/types"; const createProfileArgs: CreateProfileArgs = { nonce: 3, name: "Module Test 1", metadata: { protocol: BigInt(1), pointer: "bafybeia4khbew3r2mkflyn7nzlvfzcb3qpfeftz5ivpzfwn77ollj47gqi", }, owner: "0xE7eB5D2b5b188777df902e89c54570E7Ef4F59CE", members: [ "0x5cdb35fADB8262A3f88863254c870c2e6A848CcA", "0xE7eB5D2b5b188777df902e89c54570E7Ef4F59CE", ], }; const txData: TransactionData = registry.createProfile(createProfileArgs); // Client could be from ethers, viem, etc.. const hash = await client.sendTransaction({ data: txData.data, to: txData.to, account, value: BigInt(txData.value), }); console.log(`Transaction hash: ${hash}`); ``` ### Accepting Profile Ownership To accept ownership of a profile using the `acceptProfileOwnership` function: ```javascript const profileId = "your_profile_id_here"; const txData: TransactionData = registry.acceptProfileOwnership(profileId); // Client could be from ethers, viem, etc.. const hash = await client.sendTransaction({ data: txData.data, account, to: txData.to, value: BigInt(txData.value), }); console.log(`Transaction hash: ${hash}`); ``` ### Adding Members to a Profile To add members to a profile using the `addMembers` function: ```javascript import { MemberArgs } from "@allo-team/allo-v2-sdk/dist/Registry/types"; const memberArgs: MemberArgs = { profileId: "your_profile_id_here", members: [ "0xMemberAddress1", "0xMemberAddress2", // Add more member addresses if needed ], }; const txData: TransactionData = registry.addMembers(memberArgs); // Client could be from ethers, viem, etc.. const hash = await client.sendTransaction({ data: txData.data, account, to: txData.to, value: BigInt(txData.value), }); console.log(`Transaction hash: ${hash}`); ``` ### Removing Members from a Profile To remove members from a profile using the `removeMembers` function: ```javascript import { MemberArgs } from "@allo-team/allo-v2-sdk/dist/Registry/types"; const memberArgs: MemberArgs = { profileId: "your_profile_id_here", members: [ "0xMemberAddress1", "0xMemberAddress2", // Add more member addresses if needed ], }; const txData: TransactionData = registry.removeMembers(memberArgs); // Client could be from ethers, viem, etc.. const hash = await client.sendTransaction({ data: txData.data, account, to: txData.to, value: BigInt(txData.value), }); console.log(`Transaction hash: ${hash}`); ``` ### Updating Profile Metadata To update profile metadata using the `updateProfileMetadata` function: ```javascript import { ProfileMetadataArgs } from "@allo-team/allo-v2-sdk/dist/Registry/types"; const profileMetadataArgs: ProfileMetadataArgs = { profileId: "your_profile_id_here", metadata: { protocol: 2, pointer: "bafybeia4khbew3r2mkflyn7nzlvfzcb3qpfeftz5ivpzfwn77ollj47gqi", }, }; const txData: TransactionData = registry.updateProfileMetadata(profileMetadataArgs); // Client could be from ethers, viem, etc.. const hash = await client.sendTransaction({ data: txData.data, account, to: txData.to, value: BigInt(txData.value), }); console.log(`Transaction hash: ${hash}`); ``` ### Updating Profile Name To update profile name using the `updateProfileName` function: ```javascript import { ProfileNameArgs } from "@allo-team/allo-v2-sdk/dist/Registry/types"; const profileNameArgs: ProfileNameArgs = { profileId: "your_profile_id_here", name: "New Profile Name", }; const txData: TransactionData = registry.updateProfileName(profileNameArgs); // Client could be from ethers, viem, etc.. const hash = await client.sendTransaction({ data: txData.data, account, to: txData.to, value: BigInt(txData.value), }); console.log(`Transaction hash: ${hash}`); ``` ### Updating Profile Pending Owner To update the pending owner of a profile using the `updateProfilePendingOwner` function: ```javascript import { ProfileAndAddressArgs } from "@allo-team/allo-v2-sdk/dist/Registry/types"; const profilePendingOwnerArgs: ProfileAndAddressArgs = { profileId: "your_profile_id_here", account: "new_pending_owner_address_here", }; const txData: TransactionData = registry.updateProfilePendingOwner( profilePendingOwnerArgs, ); // Client could be from ethers, viem, etc.. const hash = await client.sendTransaction({ data: txData.data, account, to: txData.to, value: BigInt(txData.value), }); console.log(`Transaction hash: ${hash}`); ```