@mycelium-ip/core-sdk 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/README.md +176 -0
  2. package/dist/accounts/entity/entity.d.ts +24 -0
  3. package/dist/accounts/entity/entity.js +24 -0
  4. package/dist/accounts/entity/entityTreasury.d.ts +22 -0
  5. package/dist/accounts/entity/entityTreasury.js +25 -0
  6. package/dist/accounts/entity/index.d.ts +2 -0
  7. package/dist/accounts/entity/index.js +2 -0
  8. package/dist/accounts/index.d.ts +3 -0
  9. package/dist/accounts/index.js +3 -0
  10. package/dist/accounts/ipcore/derivativeLink.d.ts +21 -0
  11. package/dist/accounts/ipcore/derivativeLink.js +22 -0
  12. package/dist/accounts/ipcore/index.d.ts +7 -0
  13. package/dist/accounts/ipcore/index.js +7 -0
  14. package/dist/accounts/ipcore/ipAsset.d.ts +25 -0
  15. package/dist/accounts/ipcore/ipAsset.js +26 -0
  16. package/dist/accounts/ipcore/ipRegistry.d.ts +21 -0
  17. package/dist/accounts/ipcore/ipRegistry.js +22 -0
  18. package/dist/accounts/ipcore/moduleConfig.d.ts +21 -0
  19. package/dist/accounts/ipcore/moduleConfig.js +22 -0
  20. package/dist/accounts/ipcore/provenanceClaim.d.ts +25 -0
  21. package/dist/accounts/ipcore/provenanceClaim.js +26 -0
  22. package/dist/accounts/ipcore/registryConfig.d.ts +21 -0
  23. package/dist/accounts/ipcore/registryConfig.js +22 -0
  24. package/dist/accounts/ipcore/registryConfigTreasury.d.ts +18 -0
  25. package/dist/accounts/ipcore/registryConfigTreasury.js +21 -0
  26. package/dist/accounts/metadata/entityMetadata.d.ts +23 -0
  27. package/dist/accounts/metadata/entityMetadata.js +24 -0
  28. package/dist/accounts/metadata/index.d.ts +3 -0
  29. package/dist/accounts/metadata/index.js +3 -0
  30. package/dist/accounts/metadata/ipMetadata.d.ts +23 -0
  31. package/dist/accounts/metadata/ipMetadata.js +24 -0
  32. package/dist/accounts/metadata/schemaRegistry.d.ts +21 -0
  33. package/dist/accounts/metadata/schemaRegistry.js +22 -0
  34. package/dist/constants/index.d.ts +4 -0
  35. package/dist/constants/index.js +4 -0
  36. package/dist/constants/programIds.d.ts +5 -0
  37. package/dist/constants/programIds.js +8 -0
  38. package/dist/constants/schema.d.ts +3 -0
  39. package/dist/constants/schema.js +3 -0
  40. package/dist/constants/seeds.d.ts +17 -0
  41. package/dist/constants/seeds.js +17 -0
  42. package/dist/constants/status.d.ts +24 -0
  43. package/dist/constants/status.js +33 -0
  44. package/dist/helper/index.d.ts +1 -0
  45. package/dist/helper/index.js +1 -0
  46. package/dist/helper/schema.d.ts +3 -0
  47. package/dist/helper/schema.js +28 -0
  48. package/dist/idl/entity.json +373 -0
  49. package/dist/idl/index.d.ts +4 -0
  50. package/dist/idl/index.js +4 -0
  51. package/dist/idl/ipcore.json +916 -0
  52. package/dist/idl/metadata.json +682 -0
  53. package/dist/index.d.ts +8 -0
  54. package/dist/index.js +9 -0
  55. package/dist/instructions/entity/assertControllerThreshold.d.ts +13 -0
  56. package/dist/instructions/entity/assertControllerThreshold.js +29 -0
  57. package/dist/instructions/entity/index.d.ts +5 -0
  58. package/dist/instructions/entity/index.js +5 -0
  59. package/dist/instructions/entity/initEntityCounter.d.ts +8 -0
  60. package/dist/instructions/entity/initEntityCounter.js +12 -0
  61. package/dist/instructions/entity/initEntityTreasury.d.ts +12 -0
  62. package/dist/instructions/entity/initEntityTreasury.js +20 -0
  63. package/dist/instructions/entity/registerEntity.d.ts +10 -0
  64. package/dist/instructions/entity/registerEntity.js +12 -0
  65. package/dist/instructions/entity/updateControllers.d.ts +15 -0
  66. package/dist/instructions/entity/updateControllers.js +29 -0
  67. package/dist/instructions/index.d.ts +3 -0
  68. package/dist/instructions/index.js +3 -0
  69. package/dist/instructions/ipcore/addDerivativeLink.d.ts +9 -0
  70. package/dist/instructions/ipcore/addDerivativeLink.js +10 -0
  71. package/dist/instructions/ipcore/addIpAsset.d.ts +7 -0
  72. package/dist/instructions/ipcore/addIpAsset.js +9 -0
  73. package/dist/instructions/ipcore/createDerivativeLink.d.ts +13 -0
  74. package/dist/instructions/ipcore/createDerivativeLink.js +22 -0
  75. package/dist/instructions/ipcore/createProvenanceClaim.d.ts +15 -0
  76. package/dist/instructions/ipcore/createProvenanceClaim.js +25 -0
  77. package/dist/instructions/ipcore/index.d.ts +11 -0
  78. package/dist/instructions/ipcore/index.js +11 -0
  79. package/dist/instructions/ipcore/initIpCounter.d.ts +8 -0
  80. package/dist/instructions/ipcore/initIpCounter.js +12 -0
  81. package/dist/instructions/ipcore/initIpRegistry.d.ts +8 -0
  82. package/dist/instructions/ipcore/initIpRegistry.js +20 -0
  83. package/dist/instructions/ipcore/initModuleConfig.d.ts +8 -0
  84. package/dist/instructions/ipcore/initModuleConfig.js +10 -0
  85. package/dist/instructions/ipcore/initRegistryConfig.d.ts +8 -0
  86. package/dist/instructions/ipcore/initRegistryConfig.js +9 -0
  87. package/dist/instructions/ipcore/initRegistryConfigTreasury.d.ts +8 -0
  88. package/dist/instructions/ipcore/initRegistryConfigTreasury.js +10 -0
  89. package/dist/instructions/ipcore/registerIpAsset.d.ts +14 -0
  90. package/dist/instructions/ipcore/registerIpAsset.js +21 -0
  91. package/dist/instructions/ipcore/resolveParent.d.ts +12 -0
  92. package/dist/instructions/ipcore/resolveParent.js +12 -0
  93. package/dist/instructions/ipcore/updateRegistryConfig.d.ts +9 -0
  94. package/dist/instructions/ipcore/updateRegistryConfig.js +9 -0
  95. package/dist/instructions/metadata/createEntityMetadata.d.ts +15 -0
  96. package/dist/instructions/metadata/createEntityMetadata.js +22 -0
  97. package/dist/instructions/metadata/createIpMetadata.d.ts +16 -0
  98. package/dist/instructions/metadata/createIpMetadata.js +23 -0
  99. package/dist/instructions/metadata/index.d.ts +7 -0
  100. package/dist/instructions/metadata/index.js +7 -0
  101. package/dist/instructions/metadata/lockEntityMetadata.d.ts +13 -0
  102. package/dist/instructions/metadata/lockEntityMetadata.js +19 -0
  103. package/dist/instructions/metadata/lockIpMetadata.d.ts +14 -0
  104. package/dist/instructions/metadata/lockIpMetadata.js +20 -0
  105. package/dist/instructions/metadata/registerSchema.d.ts +14 -0
  106. package/dist/instructions/metadata/registerSchema.js +18 -0
  107. package/dist/instructions/metadata/updateEntityMetadata.d.ts +16 -0
  108. package/dist/instructions/metadata/updateEntityMetadata.js +23 -0
  109. package/dist/instructions/metadata/updateIpMetadata.d.ts +17 -0
  110. package/dist/instructions/metadata/updateIpMetadata.js +24 -0
  111. package/dist/pda/entity.d.ts +5 -0
  112. package/dist/pda/entity.js +15 -0
  113. package/dist/pda/index.d.ts +4 -0
  114. package/dist/pda/index.js +4 -0
  115. package/dist/pda/ip.d.ts +9 -0
  116. package/dist/pda/ip.js +31 -0
  117. package/dist/pda/metadata.d.ts +3 -0
  118. package/dist/pda/metadata.js +19 -0
  119. package/dist/pda/schema.d.ts +2 -0
  120. package/dist/pda/schema.js +12 -0
  121. package/dist/programs/programIds.d.ts +18 -0
  122. package/dist/programs/programIds.js +16 -0
  123. package/dist/sdk/MyceliumSDK.d.ts +15 -0
  124. package/dist/sdk/MyceliumSDK.js +15 -0
  125. package/dist/sdk/MyceliumSDK.types.d.ts +3 -0
  126. package/dist/sdk/MyceliumSDK.types.js +1 -0
  127. package/dist/sdk/namespaces/admin.d.ts +23 -0
  128. package/dist/sdk/namespaces/admin.js +9 -0
  129. package/dist/sdk/namespaces/entity.d.ts +53 -0
  130. package/dist/sdk/namespaces/entity.js +21 -0
  131. package/dist/sdk/namespaces/ipcore.d.ts +111 -0
  132. package/dist/sdk/namespaces/ipcore.js +42 -0
  133. package/dist/sdk/namespaces/metadata.d.ts +86 -0
  134. package/dist/sdk/namespaces/metadata.js +27 -0
  135. package/dist/transactions/admin/adminTransaction.d.ts +18 -0
  136. package/dist/transactions/admin/adminTransaction.js +43 -0
  137. package/dist/transactions/admin/index.d.ts +1 -0
  138. package/dist/transactions/admin/index.js +1 -0
  139. package/dist/transactions/entity/assertControllerThreshold.d.ts +17 -0
  140. package/dist/transactions/entity/assertControllerThreshold.js +18 -0
  141. package/dist/transactions/entity/index.d.ts +5 -0
  142. package/dist/transactions/entity/index.js +5 -0
  143. package/dist/transactions/entity/initEntityCounter.d.ts +14 -0
  144. package/dist/transactions/entity/initEntityCounter.js +16 -0
  145. package/dist/transactions/entity/initEntityTreasury.d.ts +16 -0
  146. package/dist/transactions/entity/initEntityTreasury.js +18 -0
  147. package/dist/transactions/entity/registerEntity.d.ts +19 -0
  148. package/dist/transactions/entity/registerEntity.js +44 -0
  149. package/dist/transactions/entity/updateControllers.d.ts +19 -0
  150. package/dist/transactions/entity/updateControllers.js +20 -0
  151. package/dist/transactions/index.d.ts +4 -0
  152. package/dist/transactions/index.js +4 -0
  153. package/dist/transactions/ipcore/addDerivativeLink.d.ts +14 -0
  154. package/dist/transactions/ipcore/addDerivativeLink.js +15 -0
  155. package/dist/transactions/ipcore/addIpAsset.d.ts +15 -0
  156. package/dist/transactions/ipcore/addIpAsset.js +13 -0
  157. package/dist/transactions/ipcore/createDerivativeLink.d.ts +19 -0
  158. package/dist/transactions/ipcore/createDerivativeLink.js +18 -0
  159. package/dist/transactions/ipcore/createProvenanceClaim.d.ts +20 -0
  160. package/dist/transactions/ipcore/createProvenanceClaim.js +20 -0
  161. package/dist/transactions/ipcore/index.d.ts +12 -0
  162. package/dist/transactions/ipcore/index.js +12 -0
  163. package/dist/transactions/ipcore/initIpCounter.d.ts +14 -0
  164. package/dist/transactions/ipcore/initIpCounter.js +16 -0
  165. package/dist/transactions/ipcore/initIpRegistry.d.ts +10 -0
  166. package/dist/transactions/ipcore/initIpRegistry.js +17 -0
  167. package/dist/transactions/ipcore/initModuleConfig.d.ts +11 -0
  168. package/dist/transactions/ipcore/initModuleConfig.js +26 -0
  169. package/dist/transactions/ipcore/initializeRegistryConfig.d.ts +11 -0
  170. package/dist/transactions/ipcore/initializeRegistryConfig.js +18 -0
  171. package/dist/transactions/ipcore/initializeRegistryConfigTreasury.d.ts +10 -0
  172. package/dist/transactions/ipcore/initializeRegistryConfigTreasury.js +18 -0
  173. package/dist/transactions/ipcore/registerIpAsset.d.ts +16 -0
  174. package/dist/transactions/ipcore/registerIpAsset.js +64 -0
  175. package/dist/transactions/ipcore/resolveParent.d.ts +15 -0
  176. package/dist/transactions/ipcore/resolveParent.js +22 -0
  177. package/dist/transactions/ipcore/updateRegistryConfig.d.ts +11 -0
  178. package/dist/transactions/ipcore/updateRegistryConfig.js +19 -0
  179. package/dist/transactions/metadata/createEntityMetadata.d.ts +14 -0
  180. package/dist/transactions/metadata/createEntityMetadata.js +22 -0
  181. package/dist/transactions/metadata/createIpMetadata.d.ts +15 -0
  182. package/dist/transactions/metadata/createIpMetadata.js +23 -0
  183. package/dist/transactions/metadata/index.d.ts +7 -0
  184. package/dist/transactions/metadata/index.js +7 -0
  185. package/dist/transactions/metadata/lockEntityMetadata.d.ts +12 -0
  186. package/dist/transactions/metadata/lockEntityMetadata.js +20 -0
  187. package/dist/transactions/metadata/lockIpMetadata.d.ts +13 -0
  188. package/dist/transactions/metadata/lockIpMetadata.js +21 -0
  189. package/dist/transactions/metadata/registerSchema.d.ts +13 -0
  190. package/dist/transactions/metadata/registerSchema.js +21 -0
  191. package/dist/transactions/metadata/updateEntityMetadata.d.ts +13 -0
  192. package/dist/transactions/metadata/updateEntityMetadata.js +32 -0
  193. package/dist/transactions/metadata/updateIpMetadata.d.ts +17 -0
  194. package/dist/transactions/metadata/updateIpMetadata.js +24 -0
  195. package/dist/types/entity.d.ts +416 -0
  196. package/dist/types/entity.js +1 -0
  197. package/dist/types/index.d.ts +3 -0
  198. package/dist/types/index.js +3 -0
  199. package/dist/types/ipcore.d.ts +1008 -0
  200. package/dist/types/ipcore.js +1 -0
  201. package/dist/types/metadata.d.ts +714 -0
  202. package/dist/types/metadata.js +1 -0
  203. package/package.json +42 -0
@@ -0,0 +1,7 @@
1
+ export * from "./createEntityMetadata";
2
+ export * from "./createIpMetadata";
3
+ export * from "./lockEntityMetadata";
4
+ export * from "./lockIpMetadata";
5
+ export * from "./registerSchema";
6
+ export * from "./updateEntityMetadata";
7
+ export * from "./updateIpMetadata";
@@ -0,0 +1,7 @@
1
+ export * from "./createEntityMetadata";
2
+ export * from "./createIpMetadata";
3
+ export * from "./lockEntityMetadata";
4
+ export * from "./lockIpMetadata";
5
+ export * from "./registerSchema";
6
+ export * from "./updateEntityMetadata";
7
+ export * from "./updateIpMetadata";
@@ -0,0 +1,13 @@
1
+ import type * as anchor from "@coral-xyz/anchor";
2
+ import type { Program } from "@coral-xyz/anchor";
3
+ import type { Metadata } from "../../types/metadata";
4
+ /**
5
+ * Build the instruction for locking entity metadata
6
+ */
7
+ export declare function buildLockEntityMetadataIx(params: {
8
+ program: Program<Metadata>;
9
+ metadataPda: anchor.web3.PublicKey;
10
+ entityPda: anchor.web3.PublicKey;
11
+ authority: anchor.web3.PublicKey;
12
+ controllers: anchor.web3.PublicKey[];
13
+ }): Promise<anchor.web3.TransactionInstruction>;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Build the instruction for locking entity metadata
3
+ */
4
+ export function buildLockEntityMetadataIx(params) {
5
+ const { program, metadataPda, entityPda, authority, controllers } = params;
6
+ return program.methods
7
+ .lockEntityMetadata()
8
+ .accounts({
9
+ metadata: metadataPda,
10
+ entity: entityPda,
11
+ authority,
12
+ })
13
+ .remainingAccounts(controllers.map((kp) => ({
14
+ pubkey: kp,
15
+ isSigner: true,
16
+ isWritable: false,
17
+ })))
18
+ .instruction();
19
+ }
@@ -0,0 +1,14 @@
1
+ import type * as anchor from "@coral-xyz/anchor";
2
+ import type { Program } from "@coral-xyz/anchor";
3
+ import type { Metadata } from "../../types/metadata";
4
+ /**
5
+ * Build the instruction for locking IP metadata
6
+ */
7
+ export declare function buildLockIpMetadataIx(params: {
8
+ program: Program<Metadata>;
9
+ metadataPda: anchor.web3.PublicKey;
10
+ entityPda: anchor.web3.PublicKey;
11
+ ipAssetPda: anchor.web3.PublicKey;
12
+ authority: anchor.web3.PublicKey;
13
+ controllers: anchor.web3.PublicKey[];
14
+ }): Promise<anchor.web3.TransactionInstruction>;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Build the instruction for locking IP metadata
3
+ */
4
+ export function buildLockIpMetadataIx(params) {
5
+ const { program, metadataPda, entityPda, ipAssetPda, authority, controllers, } = params;
6
+ return program.methods
7
+ .lockIpMetadata()
8
+ .accounts({
9
+ metadata: metadataPda,
10
+ entity: entityPda,
11
+ authority,
12
+ ipAsset: ipAssetPda,
13
+ })
14
+ .remainingAccounts(controllers.map((kp) => ({
15
+ pubkey: kp,
16
+ isSigner: true,
17
+ isWritable: false,
18
+ })))
19
+ .instruction();
20
+ }
@@ -0,0 +1,14 @@
1
+ import type * as anchor from "@coral-xyz/anchor";
2
+ import type { Program } from "@coral-xyz/anchor";
3
+ import type { Metadata } from "../../types/metadata";
4
+ /**
5
+ * Build the instruction for registering a schema
6
+ */
7
+ export declare function buildRegisterSchemaIx(params: {
8
+ program: Program<Metadata>;
9
+ schemaUri: string;
10
+ version: string;
11
+ schemaJson: string;
12
+ schemaId: string;
13
+ creator: anchor.web3.PublicKey;
14
+ }): Promise<anchor.web3.TransactionInstruction>;
@@ -0,0 +1,18 @@
1
+ import { MAX_SCHEMA_ID_LEN, MAX_SCHEMA_URI_LEN, MAX_VERSION_LEN, } from "../../constants";
2
+ import { encodePaddedAscii, sha256 } from "../../helper";
3
+ /**
4
+ * Build the instruction for registering a schema
5
+ */
6
+ export async function buildRegisterSchemaIx(params) {
7
+ const { program, schemaUri, version, schemaJson, schemaId, creator } = params;
8
+ const schemaHashResult = sha256(schemaJson);
9
+ const schemaIdResult = encodePaddedAscii(schemaId, MAX_SCHEMA_ID_LEN);
10
+ const versionResult = encodePaddedAscii(version, MAX_VERSION_LEN);
11
+ const schemaUriResult = encodePaddedAscii(schemaUri, MAX_SCHEMA_URI_LEN);
12
+ return program.methods
13
+ .registerSchema([...schemaIdResult], [...versionResult], [...schemaHashResult], [...schemaUriResult])
14
+ .accounts({
15
+ creator,
16
+ })
17
+ .instruction();
18
+ }
@@ -0,0 +1,16 @@
1
+ import type * as anchor from "@coral-xyz/anchor";
2
+ import type { BN, Program } from "@coral-xyz/anchor";
3
+ import type { Metadata } from "../../types/metadata";
4
+ /**
5
+ * Build the instruction for updating entity metadata
6
+ */
7
+ export declare function buildUpdateEntityMetadataIx(params: {
8
+ program: Program<Metadata>;
9
+ entityPda: anchor.web3.PublicKey;
10
+ previousMetadataPda: anchor.web3.PublicKey;
11
+ schemaPda: anchor.web3.PublicKey;
12
+ payer: anchor.web3.PublicKey;
13
+ controllers: anchor.web3.PublicKey[];
14
+ revision: BN;
15
+ metadataUri: string;
16
+ }): Promise<anchor.web3.TransactionInstruction>;
@@ -0,0 +1,23 @@
1
+ import { encodePaddedAscii } from "../../helper";
2
+ import { MAX_SCHEMA_URI_LEN } from "../../constants";
3
+ /**
4
+ * Build the instruction for updating entity metadata
5
+ */
6
+ export async function buildUpdateEntityMetadataIx(params) {
7
+ const { program, entityPda, previousMetadataPda, schemaPda, payer, controllers, revision, metadataUri, } = params;
8
+ const entityUriResult = encodePaddedAscii(metadataUri, MAX_SCHEMA_URI_LEN);
9
+ return program.methods
10
+ .updateEntityMetadata(revision, [...entityUriResult])
11
+ .accounts({
12
+ entity: entityPda,
13
+ previousMetadata: previousMetadataPda,
14
+ schema: schemaPda,
15
+ payer,
16
+ })
17
+ .remainingAccounts(controllers.map((kp) => ({
18
+ pubkey: kp,
19
+ isSigner: true,
20
+ isWritable: false,
21
+ })))
22
+ .instruction();
23
+ }
@@ -0,0 +1,17 @@
1
+ import type * as anchor from "@coral-xyz/anchor";
2
+ import type { BN, Program } from "@coral-xyz/anchor";
3
+ import type { Metadata } from "../../types/metadata";
4
+ /**
5
+ * Build the instruction for updating IP metadata
6
+ */
7
+ export declare function buildUpdateIpMetadataIx(params: {
8
+ program: Program<Metadata>;
9
+ ipAssetPda: anchor.web3.PublicKey;
10
+ entityPda: anchor.web3.PublicKey;
11
+ previousMetadataPda: anchor.web3.PublicKey;
12
+ schemaPda: anchor.web3.PublicKey;
13
+ payer: anchor.web3.PublicKey;
14
+ version: BN;
15
+ controllers: anchor.web3.PublicKey[];
16
+ metadataUri: string;
17
+ }): Promise<anchor.web3.TransactionInstruction>;
@@ -0,0 +1,24 @@
1
+ import { MAX_SCHEMA_URI_LEN } from "../../constants";
2
+ import { encodePaddedAscii } from "../../helper";
3
+ /**
4
+ * Build the instruction for updating IP metadata
5
+ */
6
+ export async function buildUpdateIpMetadataIx(params) {
7
+ const { program, ipAssetPda, entityPda, previousMetadataPda, schemaPda, payer, version, controllers, metadataUri, } = params;
8
+ const ipUriResult = encodePaddedAscii(metadataUri, MAX_SCHEMA_URI_LEN);
9
+ return program.methods
10
+ .updateIpMetadata(version, [...ipUriResult])
11
+ .accounts({
12
+ ipAsset: ipAssetPda,
13
+ entity: entityPda,
14
+ previousMetadata: previousMetadataPda,
15
+ schema: schemaPda,
16
+ payer,
17
+ })
18
+ .remainingAccounts(controllers.map((kp) => ({
19
+ pubkey: kp,
20
+ isSigner: true,
21
+ isWritable: false,
22
+ })))
23
+ .instruction();
24
+ }
@@ -0,0 +1,5 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ import * as anchor from "@coral-xyz/anchor";
3
+ export declare function deriveEntityPda(owner: PublicKey, entityIndex: anchor.BN): [PublicKey, number];
4
+ export declare function deriveEntityCounterPda(): [PublicKey, number];
5
+ export declare function deriveEntityTreasuryPda(entity: PublicKey): [PublicKey, number];
@@ -0,0 +1,15 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ import { ENTITY_PROGRAM_ID, SEEDS } from "../constants";
3
+ export function deriveEntityPda(owner, entityIndex) {
4
+ return PublicKey.findProgramAddressSync([
5
+ Buffer.from(SEEDS.ENTITY),
6
+ owner.toBuffer(),
7
+ entityIndex.toArrayLike(Buffer, "le", 8),
8
+ ], ENTITY_PROGRAM_ID);
9
+ }
10
+ export function deriveEntityCounterPda() {
11
+ return PublicKey.findProgramAddressSync([Buffer.from(SEEDS.ENTITY_COUNTER)], ENTITY_PROGRAM_ID);
12
+ }
13
+ export function deriveEntityTreasuryPda(entity) {
14
+ return PublicKey.findProgramAddressSync([Buffer.from(SEEDS.ENTITY_TREASURY), entity.toBuffer()], ENTITY_PROGRAM_ID);
15
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./entity";
2
+ export * from "./ip";
3
+ export * from "./metadata";
4
+ export * from "./schema";
@@ -0,0 +1,4 @@
1
+ export * from "./entity";
2
+ export * from "./ip";
3
+ export * from "./metadata";
4
+ export * from "./schema";
@@ -0,0 +1,9 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ import * as anchor from "@coral-xyz/anchor";
3
+ export declare function deriveIPAssetPda(entity: PublicKey, ipIndex: anchor.BN): [PublicKey, number];
4
+ export declare function deriveIpCounterPda(): [PublicKey, number];
5
+ export declare function deriveIPRegistryPda(): [PublicKey, number];
6
+ export declare function deriveDerivativeLinkPda(parentIpId: bigint, childIpId: bigint): [PublicKey, number];
7
+ export declare function deriveProvenanceClaimPda(ipAssetPda: PublicKey, evidenceHash: Buffer): [PublicKey, number];
8
+ export declare function deriveRegistryConfigPda(): [PublicKey, number];
9
+ export declare function deriveRegistryConfigTreasuryPda(): [PublicKey, number];
package/dist/pda/ip.js ADDED
@@ -0,0 +1,31 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ import { IPCORE_PROGRAM_ID, SEEDS } from "../constants";
3
+ export function deriveIPAssetPda(entity, ipIndex) {
4
+ return PublicKey.findProgramAddressSync([
5
+ Buffer.from(SEEDS.IP_ASSET),
6
+ entity.toBuffer(),
7
+ ipIndex.toArrayLike(Buffer, "le", 8),
8
+ ], IPCORE_PROGRAM_ID);
9
+ }
10
+ export function deriveIpCounterPda() {
11
+ return PublicKey.findProgramAddressSync([Buffer.from(SEEDS.IP_COUNTER)], IPCORE_PROGRAM_ID);
12
+ }
13
+ export function deriveIPRegistryPda() {
14
+ return PublicKey.findProgramAddressSync([Buffer.from(SEEDS.IP_REGISTRY)], IPCORE_PROGRAM_ID);
15
+ }
16
+ export function deriveDerivativeLinkPda(parentIpId, childIpId) {
17
+ const parentBuf = Buffer.alloc(8);
18
+ const childBuf = Buffer.alloc(8);
19
+ parentBuf.writeBigUInt64LE(parentIpId);
20
+ childBuf.writeBigUInt64LE(childIpId);
21
+ return PublicKey.findProgramAddressSync([Buffer.from(SEEDS.DERIVATIVE_LINK), parentBuf, childBuf], IPCORE_PROGRAM_ID);
22
+ }
23
+ export function deriveProvenanceClaimPda(ipAssetPda, evidenceHash) {
24
+ return PublicKey.findProgramAddressSync([Buffer.from(SEEDS.PROVENANCE), ipAssetPda.toBuffer(), evidenceHash], IPCORE_PROGRAM_ID);
25
+ }
26
+ export function deriveRegistryConfigPda() {
27
+ return PublicKey.findProgramAddressSync([Buffer.from(SEEDS.REGISTRY_CONFIG)], IPCORE_PROGRAM_ID);
28
+ }
29
+ export function deriveRegistryConfigTreasuryPda() {
30
+ return PublicKey.findProgramAddressSync([Buffer.from(SEEDS.REGISTRY_CONFIG_TREASURY)], IPCORE_PROGRAM_ID);
31
+ }
@@ -0,0 +1,3 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ export declare function deriveEntityMetadataPda(entity: PublicKey, version: number): [PublicKey, number];
3
+ export declare function deriveIPMetadataPda(ipAsset: PublicKey, version: number): [PublicKey, number];
@@ -0,0 +1,19 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ import { METADATA_PROGRAM_ID, SEEDS } from "../constants";
3
+ import * as anchor from "@coral-xyz/anchor";
4
+ export function deriveEntityMetadataPda(entity, version) {
5
+ const versionBN = new anchor.BN(version);
6
+ return PublicKey.findProgramAddressSync([
7
+ Buffer.from(SEEDS.ENTITY_METADATA),
8
+ entity.toBuffer(),
9
+ versionBN.toArrayLike(Buffer, "le", 8),
10
+ ], METADATA_PROGRAM_ID);
11
+ }
12
+ export function deriveIPMetadataPda(ipAsset, version) {
13
+ const versionBN = new anchor.BN(version);
14
+ return PublicKey.findProgramAddressSync([
15
+ Buffer.from(SEEDS.IP_METADATA),
16
+ ipAsset.toBuffer(),
17
+ versionBN.toArrayLike(Buffer, "le", 8),
18
+ ], METADATA_PROGRAM_ID);
19
+ }
@@ -0,0 +1,2 @@
1
+ import * as anchor from "@coral-xyz/anchor";
2
+ export declare const deriveSchemaPda: (schemaId: string, version: string) => [anchor.web3.PublicKey, number];
@@ -0,0 +1,12 @@
1
+ import { MAX_SCHEMA_ID_LEN, MAX_VERSION_LEN, METADATA_PROGRAM_ID, SEEDS, } from "../constants";
2
+ import * as anchor from "@coral-xyz/anchor";
3
+ import { encodePaddedAscii } from "../helper";
4
+ export const deriveSchemaPda = (schemaId, version) => {
5
+ const schemaIdResult = encodePaddedAscii(schemaId, MAX_SCHEMA_ID_LEN);
6
+ const versionResult = encodePaddedAscii(version, MAX_VERSION_LEN);
7
+ return anchor.web3.PublicKey.findProgramAddressSync([
8
+ Buffer.from(SEEDS.SCHEMA),
9
+ Buffer.from(schemaIdResult),
10
+ Buffer.from(versionResult), // u16 LE
11
+ ], METADATA_PROGRAM_ID);
12
+ };
@@ -0,0 +1,18 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ export declare const PROGRAM_IDS: {
3
+ devnet: {
4
+ entity: PublicKey;
5
+ metadata: PublicKey;
6
+ ipcore: PublicKey;
7
+ };
8
+ mainnet: {
9
+ entity: PublicKey;
10
+ metadata: PublicKey;
11
+ ipcore: PublicKey;
12
+ };
13
+ };
14
+ export type ProgramIds = {
15
+ entity: PublicKey;
16
+ metadata: PublicKey;
17
+ ipcore: PublicKey;
18
+ };
@@ -0,0 +1,16 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ import entityIdl from "../idl/entity.json";
3
+ import ipcoreIdl from "../idl/ipcore.json";
4
+ import metadataIdl from "../idl/metadata.json";
5
+ export const PROGRAM_IDS = {
6
+ devnet: {
7
+ entity: new PublicKey(entityIdl.address),
8
+ metadata: new PublicKey(metadataIdl.address),
9
+ ipcore: new PublicKey(ipcoreIdl.address),
10
+ },
11
+ mainnet: {
12
+ entity: new PublicKey(entityIdl.address),
13
+ metadata: new PublicKey(metadataIdl.address),
14
+ ipcore: new PublicKey(ipcoreIdl.address),
15
+ },
16
+ };
@@ -0,0 +1,15 @@
1
+ import type { MyceliumSDKConfig } from "./MyceliumSDK.types";
2
+ import { type ProgramIds } from "../programs/programIds";
3
+ import { EntityNamespace } from "./namespaces/entity";
4
+ import { MetadataNamespace } from "./namespaces/metadata";
5
+ import { IpcoreNamespace } from "./namespaces/ipcore";
6
+ import { AdminNamespace } from "./namespaces/admin";
7
+ export declare class MyceliumSDK {
8
+ readonly chain: MyceliumSDKConfig["chain"];
9
+ readonly programIds: ProgramIds;
10
+ readonly entity: EntityNamespace;
11
+ readonly metadata: MetadataNamespace;
12
+ readonly ipcore: IpcoreNamespace;
13
+ readonly admin: AdminNamespace;
14
+ constructor(config: MyceliumSDKConfig);
15
+ }
@@ -0,0 +1,15 @@
1
+ import { PROGRAM_IDS } from "../programs/programIds";
2
+ import { EntityNamespace } from "./namespaces/entity";
3
+ import { MetadataNamespace } from "./namespaces/metadata";
4
+ import { IpcoreNamespace } from "./namespaces/ipcore";
5
+ import { AdminNamespace } from "./namespaces/admin";
6
+ export class MyceliumSDK {
7
+ constructor(config) {
8
+ this.chain = config.chain;
9
+ this.programIds = PROGRAM_IDS[this.chain];
10
+ this.entity = new EntityNamespace(this.programIds);
11
+ this.metadata = new MetadataNamespace(this.programIds);
12
+ this.ipcore = new IpcoreNamespace(this.programIds);
13
+ this.admin = new AdminNamespace(this.programIds);
14
+ }
15
+ }
@@ -0,0 +1,3 @@
1
+ export type MyceliumSDKConfig = {
2
+ chain: "devnet" | "mainnet";
3
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ import type { Program } from "@coral-xyz/anchor";
2
+ import { type PublicKey, Transaction } from "@solana/web3.js";
3
+ import type { ProgramIds } from "../../programs/programIds";
4
+ import type { Entity } from "../../types/entity";
5
+ import type { Metadata } from "../../types/metadata";
6
+ import type { Ipcore } from "../../types/ipcore";
7
+ export declare class AdminNamespace {
8
+ private readonly programIds;
9
+ constructor(programIds: ProgramIds);
10
+ generateInitAdminTransaction(params: {
11
+ schemaUri: string;
12
+ entityProgram: Program<Entity>;
13
+ metadataProgram: Program<Metadata>;
14
+ ipcoreProgram: Program<Ipcore>;
15
+ payer: PublicKey;
16
+ registrationFee: number;
17
+ schemaVersion: string;
18
+ schemaJson: string;
19
+ schemaId: string;
20
+ }): Promise<{
21
+ transaction: Transaction;
22
+ }>;
23
+ }
@@ -0,0 +1,9 @@
1
+ import { initAdminInstructions } from "../../transactions/admin/adminTransaction";
2
+ export class AdminNamespace {
3
+ constructor(programIds) {
4
+ this.programIds = programIds;
5
+ }
6
+ async generateInitAdminTransaction(params) {
7
+ return initAdminInstructions(params);
8
+ }
9
+ }
@@ -0,0 +1,53 @@
1
+ import type { Program } from "@coral-xyz/anchor";
2
+ import * as anchor from "@coral-xyz/anchor";
3
+ import type { ProgramIds } from "../../programs/programIds";
4
+ import type { Entity } from "../../types/entity";
5
+ import type { Metadata } from "../../types/metadata";
6
+ export declare class EntityNamespace {
7
+ private readonly programIds;
8
+ constructor(programIds: ProgramIds);
9
+ generateRegisterTransaction(params: {
10
+ program: Program<Entity>;
11
+ metadataProgram: Program<Metadata>;
12
+ controllers: anchor.web3.PublicKey[];
13
+ threshold: number;
14
+ metadataUri: string;
15
+ payer: anchor.web3.PublicKey;
16
+ }): Promise<{
17
+ transaction: anchor.web3.Transaction;
18
+ }>;
19
+ generateInitCounterTransaction(params: {
20
+ program: Program<Entity>;
21
+ payer: anchor.web3.PublicKey;
22
+ }): Promise<{
23
+ transaction: anchor.web3.Transaction;
24
+ }>;
25
+ generateInitTreasuryTransaction(params: {
26
+ program: Program<Entity>;
27
+ entityPda: anchor.web3.PublicKey;
28
+ payer: anchor.web3.PublicKey;
29
+ controllers: anchor.web3.PublicKey[];
30
+ }): Promise<{
31
+ transaction: anchor.web3.Transaction;
32
+ }>;
33
+ generateUpdateControllersTransaction(params: {
34
+ program: Program<Entity>;
35
+ owner: anchor.web3.PublicKey;
36
+ entityIndex: anchor.BN;
37
+ newControllers: anchor.web3.PublicKey[];
38
+ newThreshold: number;
39
+ controllers: anchor.web3.PublicKey[];
40
+ }): Promise<{
41
+ transaction: anchor.web3.Transaction;
42
+ entityPda: anchor.web3.PublicKey;
43
+ }>;
44
+ generateAssertControllerThresholdTransaction(params: {
45
+ program: Program<Entity>;
46
+ owner: anchor.web3.PublicKey;
47
+ entityIndex: anchor.BN;
48
+ controllers: anchor.web3.PublicKey[];
49
+ }): Promise<{
50
+ transaction: anchor.web3.Transaction;
51
+ entityPda: anchor.web3.PublicKey;
52
+ }>;
53
+ }
@@ -0,0 +1,21 @@
1
+ import { assertControllerThresholdTransaction, initEntityCounterTransaction, initEntityTreasuryTransaction, updateControllersTransaction, createEntityTransaction, } from "../../transactions/entity";
2
+ export class EntityNamespace {
3
+ constructor(programIds) {
4
+ this.programIds = programIds;
5
+ }
6
+ async generateRegisterTransaction(params) {
7
+ return createEntityTransaction(params);
8
+ }
9
+ async generateInitCounterTransaction(params) {
10
+ return initEntityCounterTransaction(params);
11
+ }
12
+ async generateInitTreasuryTransaction(params) {
13
+ return initEntityTreasuryTransaction(params);
14
+ }
15
+ async generateUpdateControllersTransaction(params) {
16
+ return updateControllersTransaction(params);
17
+ }
18
+ async generateAssertControllerThresholdTransaction(params) {
19
+ return assertControllerThresholdTransaction(params);
20
+ }
21
+ }
@@ -0,0 +1,111 @@
1
+ import type { Program } from "@coral-xyz/anchor";
2
+ import { type PublicKey, Transaction } from "@solana/web3.js";
3
+ import type { ProgramIds } from "../../programs/programIds";
4
+ import type { Ipcore } from "../../types/ipcore";
5
+ import { BN } from "@coral-xyz/anchor";
6
+ export declare class IpcoreNamespace {
7
+ private readonly programIds;
8
+ constructor(programIds: ProgramIds);
9
+ generateAddDerivativeLinkTransaction(params: {
10
+ program: Program<Ipcore>;
11
+ derivativeLink: PublicKey;
12
+ }): Promise<{
13
+ transaction: Transaction;
14
+ }>;
15
+ generateAddIpAssetTransaction(params: {
16
+ program: Program<Ipcore>;
17
+ registryPda: PublicKey;
18
+ ipAsset: PublicKey;
19
+ authority: PublicKey;
20
+ }): Promise<{
21
+ transaction: Transaction;
22
+ }>;
23
+ generateCreateDerivativeLinkTransaction(params: {
24
+ program: Program<Ipcore>;
25
+ parentIpId: BN;
26
+ childIpId: BN;
27
+ authority: PublicKey;
28
+ entityPda: PublicKey;
29
+ }): Promise<{
30
+ transaction: Transaction;
31
+ derivativeLinkPda: PublicKey;
32
+ }>;
33
+ generateCreateProvenanceClaimTransaction(params: {
34
+ program: Program<Ipcore>;
35
+ ipAssetPda: PublicKey;
36
+ entity: PublicKey;
37
+ payer: PublicKey;
38
+ evidenceHash: Buffer;
39
+ uri: string;
40
+ controllers: PublicKey[];
41
+ }): Promise<{
42
+ transaction: Transaction;
43
+ provenancePda: PublicKey;
44
+ }>;
45
+ generateInitIpRegistryTransaction(params: {
46
+ program: Program<Ipcore>;
47
+ payer: PublicKey;
48
+ }): Promise<{
49
+ transaction: Transaction;
50
+ registryPda: PublicKey;
51
+ }>;
52
+ generateInitializeRegistryConfigTransaction(params: {
53
+ program: Program<Ipcore>;
54
+ authority: PublicKey;
55
+ feeLamports: BN;
56
+ }): Promise<{
57
+ transaction: Transaction;
58
+ }>;
59
+ generateInitializeRegistryConfigTreasuryTransaction(params: {
60
+ program: Program<Ipcore>;
61
+ registryConfig: PublicKey;
62
+ authority: PublicKey;
63
+ }): Promise<{
64
+ transaction: Transaction;
65
+ }>;
66
+ generateInitModuleConfigTransaction(params: {
67
+ program: Program<Ipcore>;
68
+ ipAsset: PublicKey;
69
+ payer: PublicKey;
70
+ }): Promise<{
71
+ transaction: Transaction;
72
+ moduleConfigPda: PublicKey;
73
+ }>;
74
+ generateRegisterIpAssetTransaction(params: {
75
+ program: Program<Ipcore>;
76
+ metadataProgram: Program<import("../../types").Metadata>;
77
+ payer: PublicKey;
78
+ entityIndex: number;
79
+ registrationFee: number;
80
+ metadataUri: string;
81
+ controllers: PublicKey[];
82
+ }): Promise<{
83
+ transaction: Transaction;
84
+ ipAssetPda: PublicKey;
85
+ }>;
86
+ generateResolveParentTransaction(params: {
87
+ program: Program<Ipcore>;
88
+ parentIpId: BN;
89
+ derivativeIpId: BN;
90
+ parentIp: PublicKey;
91
+ derivativeIp: PublicKey;
92
+ parentEntityAuthority: PublicKey;
93
+ signer: import("@solana/web3.js").Signer;
94
+ }): Promise<{
95
+ transaction: Transaction;
96
+ }>;
97
+ generateUpdateRegistryConfigTransaction(params: {
98
+ program: Program<Ipcore>;
99
+ registryConfig: PublicKey;
100
+ authority: PublicKey;
101
+ newFeeLamports: BN;
102
+ }): Promise<{
103
+ transaction: Transaction;
104
+ }>;
105
+ generateInitIpCounterTransaction(params: {
106
+ program: Program<Ipcore>;
107
+ payer: PublicKey;
108
+ }): Promise<{
109
+ transaction: Transaction;
110
+ }>;
111
+ }