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.request.txOptions
: [Optional] The transaction options.
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.
request.txOptions
: [Optional] The transaction options.
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.
request.txOptions
: [Optional] The transaction options.
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.request.txOptions
: [Optional] The transaction options.
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.
request.txOptions
: [Optional] The transaction options.
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.request.txOptions
: [Optional] The transaction options.
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.request.txOptions
: [Optional] The transaction options.
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.request.txOptions
: [Optional] The transaction options.
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.request.txOptions
: [Optional] The transaction options.
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.request.txOptions
: [Optional] The transaction options.