Group
GroupClient allows you to create groups and add IP Assets to them.
GroupClient
Methods
- registerGroup
- mintAndRegisterIpAndAttachLicenseAndAddToGroup
- registerIpAndAttachLicenseAndAddToGroup
- registerGroupAndAttachLicense
- registerGroupAndAttachLicenseAndAddIps
- collectAndDistributeGroupRoyalties
- addIpsToGroup
- getClaimableReward
- removeIpsFromGroup
- claimReward
- collectRoyalties
registerGroup
Registers a Group IPA.
Method | Type |
---|---|
registerGroup | (request: RegisterGroupRequest) => Promise<RegisterGroupResponse> |
Parameters:
request.groupPool
: The address specifying how royalty will be split amongst the pool of IPs in the group.
mintAndRegisterIpAndAttachLicenseAndAddToGroup
Mint an NFT from a SPGNFT collection, register it with metadata as an IP, attach license terms to the registered IP, and add it to a group IP.
Method | Type |
---|---|
mintAndRegisterIpAndAttachLicenseAndAddToGroup | (request: MintAndRegisterIpAndAttachLicenseAndAddToGroupRequest) => Promise<MintAndRegisterIpAndAttachLicenseAndAddToGroupResponse> |
Parameters:
request.nftContract
: The address of the NFT collection.request.groupId
: The ID of the group IP to add the newly registered IP.request.licenseTermsId
: The ID of the registered license terms that will be attached to the new IP.request.recipient
: [Optional] The address of the recipient of the minted NFT,default value is your wallet address.request.licenseTemplate
: [Optional] The address of the license template to be attached to the new group IP,default value is Programmable IP License.request.deadline
: [Optional] The deadline for the signature in milliseconds,default value is 1000ms.request.ipMetadata
: [Optional] The desired metadata for the newly minted NFT and newly registered IP.request.ipMetadata.ipMetadataURI
[Optional] The URI of the metadata for the IP.request.ipMetadata.ipMetadataHash
[Optional] The hash of the metadata for the IP.request.ipMetadata.nftMetadataURI
[Optional] The URI of the metadata for the NFT.request.ipMetadata.nftMetadataHash
[Optional] The hash of the metadata for the IP NFT.
registerIpAndAttachLicenseAndAddToGroup
Register an NFT as IP with metadata, attach license terms to the registered IP, and add it to a group IP.
Method | Type |
---|---|
registerIpAndAttachLicenseAndAddToGroup | (request: RegisterIpAndAttachLicenseAndAddToGroupRequest) => Promise<RegisterIpAndAttachLicenseAndAddToGroupResponse> |
Parameters:
request.spgNftContract
: The address of the NFT collection.request.tokenId
: The ID of the NFT.request.groupId
: The ID of the group IP to add the newly registered IP.request.licenseTermsId
: The ID of the registered license terms that will be attached to the new IP.request.licenseTemplate
: [Optional] The address of the license template to be attached to the new group IP, default value is Programmable IP License.request.deadline
: [Optional] The deadline for the signature in milliseconds, default is 1000ms.request.ipMetadata
: [Optional] The desired metadata for the newly minted NFT and newly registered IP.request.ipMetadata.ipMetadataURI
[Optional] The URI of the metadata for the IP.request.ipMetadata.ipMetadataHash
[Optional] The hash of the metadata for the IP.request.ipMetadata.nftMetadataURI
[Optional] The URI of the metadata for the NFT.request.ipMetadata.nftMetadataHash
[Optional] The hash of the metadata for the IP NFT.
registerGroupAndAttachLicense
Register a group IP with a group reward pool and attach license terms to the group IP.
Method | Type |
---|---|
registerGroupAndAttachLicense | (request: RegisterGroupAndAttachLicenseRequest) => Promise<RegisterGroupAndAttachLicenseResponse> |
Parameters:
request.groupPool
: The address specifying how royalty will be split amongst the pool of IPs in the group.request.licenseTermsId
: The ID of the registered license terms that will be attached to the new group IP.request.licenseTemplate
: [Optional] The address of the license template to be attached to the new group IP, default value is Programmable IP License.
registerGroupAndAttachLicenseAndAddIps
Register a group IP with a group reward pool, attach license terms to the group IP, and add individual IPs to the group IP.
Method | Type |
---|---|
registerGroupAndAttachLicenseAndAddIps | (request: RegisterGroupAndAttachLicenseAndAddIpsRequest) => Promise<RegisterGroupAndAttachLicenseAndAddIpsResponse> |
Parameters:
request.ipIds
: The IP IDs of the IPs to be added to the group.request.groupPool
: The address specifying how royalty will be split amongst the pool of IPs in the group.request.maxAllowedRevShare
: The maximum reward share percentage that can be allocated to each member IP.request.licenseData
: The data of the license and its configuration to be attached to the new group IP.request.licenseData.licenseTermsId
: The ID of the registered license terms that will be attached to the new group IP.request.licenseData.licensingConfig
: [Optional] See the LicensingConfig type. If none provided, it will default to the one shown here.request.licenseData.licenseTemplate
: [Optional] The address of the license template to be attached to the new group IP, default value is Programmable IP License.
collectAndDistributeGroupRoyalties
Collect royalties for the entire group and distribute the rewards to each member IP’s royalty vault.
Method | Type |
---|---|
collectAndDistributeGroupRoyalties | (request: CollectAndDistributeGroupRoyaltiesRequest) => Promise<CollectAndDistributeGroupRoyaltiesResponse> |
Parameters:
request.groupIpId
: The IP ID of the group.request.currencyTokens
: The addresses of the currency (revenue) tokens to claim.request.memberIpIds
: The IDs of the member IPs to distribute the rewards to.
addIpsToGroup
Adds IPs to a group. The function must be called by the Group IP owner or an authorized operator.
Method | Type |
---|---|
addIpsToGroup | (request: AddIpRequest) => Promise<TransactionResponse> |
Parameters:
request.groupIpId
: The ID of the group IP to add the IPs to.request.ipIds
: The addresses of the IPs to add to the Group IP. IP IDs must be attached to the group IP license terms.request.maxAllowedRewardSharePercentage
: [Optional] The maximum reward share percentage that can be allocated to each member IP. Must be between 0 and 100 (where 100% represents 100_000_000). Default is 100.
getClaimableReward
Returns the available reward for each IP in the group.
Method | Type |
---|---|
getClaimableReward | (request: GetClaimableRewardRequest) => Promise<bigint[]> |
Parameters:
request.groupIpId
: The ID of the group IP.request.currencyToken
: The address of the currency (revenue) token to check.request.memberIpIds
: The IDs of the member IPs to check rewards for.
removeIpsFromGroup
Removes IPs from a group. The function must be called by the Group IP owner or an authorized operator.
Method | Type |
---|---|
removeIpsFromGroup | (request: RemoveIpsFromGroupRequest) => Promise<TransactionResponse> |
Parameters:
request.groupIpId
: The ID of the group IP to remove the IPs from.request.ipIds
: The addresses of the IPs to remove from the Group IP.
claimReward
Claims reward for member IPs in a group. Emits an on-chain ClaimedReward event.
Method | Type |
---|---|
claimReward | (request: ClaimRewardRequest) => Promise<ClaimRewardResponse> |
Parameters:
request.groupIpId
: The ID of the group IP.request.currencyToken
: The address of the currency (revenue) token to claim.request.memberIpIds
: The IDs of the member IPs to distribute the rewards to.
collectRoyalties
Collects royalties into the pool, making them claimable by group member IPs. Emits an on-chain CollectedRoyaltiesToGroupPool event.
Method | Type |
---|---|
collectRoyalties | (request: CollectRoyaltiesRequest) => Promise<CollectRoyaltiesResponse> |
Parameters:
request.groupIpId
: The ID of the group IP.request.currencyToken
: The address of the currency (revenue) token to collect.