@story-protocol/core-sdk 0.0.1-beta-rc.5 → 0.0.1-beta-rc.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (25) hide show
  1. package/README.md +97 -43
  2. package/dist/declarations/src/constants/common.d.ts +1 -0
  3. package/dist/declarations/src/constants/common.d.ts.map +1 -1
  4. package/dist/declarations/src/resources/dispute.d.ts +0 -20
  5. package/dist/declarations/src/resources/dispute.d.ts.map +1 -1
  6. package/dist/declarations/src/resources/ipAccount.d.ts +0 -20
  7. package/dist/declarations/src/resources/ipAccount.d.ts.map +1 -1
  8. package/dist/declarations/src/resources/ipAsset.d.ts +52 -21
  9. package/dist/declarations/src/resources/ipAsset.d.ts.map +1 -1
  10. package/dist/declarations/src/resources/license.d.ts +43 -40
  11. package/dist/declarations/src/resources/license.d.ts.map +1 -1
  12. package/dist/declarations/src/resources/permission.d.ts +1 -41
  13. package/dist/declarations/src/resources/permission.d.ts.map +1 -1
  14. package/dist/declarations/src/resources/policy.d.ts +99 -82
  15. package/dist/declarations/src/resources/policy.d.ts.map +1 -1
  16. package/dist/declarations/src/types/resources/ipAsset.d.ts +4 -4
  17. package/dist/declarations/src/types/resources/ipAsset.d.ts.map +1 -1
  18. package/dist/declarations/src/types/resources/permission.d.ts +1 -1
  19. package/dist/declarations/src/types/resources/permission.d.ts.map +1 -1
  20. package/dist/declarations/src/types/resources/policy.d.ts +39 -1
  21. package/dist/declarations/src/types/resources/policy.d.ts.map +1 -1
  22. package/dist/story-protocol-core-sdk.cjs.dev.js +551 -114
  23. package/dist/story-protocol-core-sdk.cjs.prod.js +551 -114
  24. package/dist/story-protocol-core-sdk.esm.js +552 -115
  25. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { getAddress, decodeEventLog, encodeAbiParameters, parseAbiParameters, encodeFunctionData, zeroAddress, stringToHex, createPublicClient, createWalletClient } from 'viem';
1
+ import { getAddress, encodeAbiParameters, parseAbiParameters, decodeEventLog, encodeFunctionData, zeroAddress, stringToHex, createPublicClient, createWalletClient } from 'viem';
2
2
  import * as dotenv from 'dotenv';
3
3
  import { polygonMumbai, sepolia as sepolia$1, mainnet } from 'viem/chains';
4
4
  import axios from 'axios';
@@ -422,6 +422,7 @@ function handleError(error, msg) {
422
422
 
423
423
  var AddressZero = "0x0000000000000000000000000000000000000000";
424
424
  var HashZero = "0x0000000000000000000000000000000000000000000000000000000000000000";
425
+ var SepoliaChainId = "11155111";
425
426
 
426
427
  function _arrayLikeToArray(arr, len) {
427
428
  if (len == null || len > arr.length) len = arr.length;
@@ -794,6 +795,42 @@ var IPAssetRegistryABI = [{
794
795
  }],
795
796
  name: "IPRegistered",
796
797
  type: "event"
798
+ }, {
799
+ inputs: [{
800
+ internalType: "uint256",
801
+ name: "chainId",
802
+ type: "uint256"
803
+ }, {
804
+ internalType: "address",
805
+ name: "tokenContract",
806
+ type: "address"
807
+ }, {
808
+ internalType: "uint256",
809
+ name: "tokenId",
810
+ type: "uint256"
811
+ }],
812
+ name: "ipId",
813
+ outputs: [{
814
+ internalType: "address",
815
+ name: "",
816
+ type: "address"
817
+ }],
818
+ stateMutability: "view",
819
+ type: "function"
820
+ }, {
821
+ inputs: [{
822
+ internalType: "address",
823
+ name: "id",
824
+ type: "address"
825
+ }],
826
+ name: "isRegistered",
827
+ outputs: [{
828
+ internalType: "bool",
829
+ name: "",
830
+ type: "bool"
831
+ }],
832
+ stateMutability: "view",
833
+ type: "function"
797
834
  }];
798
835
 
799
836
  var LicensingModuleABI = [{
@@ -904,6 +941,49 @@ var LicensingModuleABI = [{
904
941
  }],
905
942
  stateMutability: "nonpayable",
906
943
  type: "function"
944
+ }, {
945
+ inputs: [{
946
+ components: [{
947
+ internalType: "bool",
948
+ name: "isLicenseTransferable",
949
+ type: "bool"
950
+ }, {
951
+ internalType: "address",
952
+ name: "policyFramework",
953
+ type: "address"
954
+ }, {
955
+ internalType: "bytes",
956
+ name: "frameworkData",
957
+ type: "bytes"
958
+ }, {
959
+ internalType: "address",
960
+ name: "royaltyPolicy",
961
+ type: "address"
962
+ }, {
963
+ internalType: "bytes",
964
+ name: "royaltyData",
965
+ type: "bytes"
966
+ }, {
967
+ internalType: "uint256",
968
+ name: "mintingFee",
969
+ type: "uint256"
970
+ }, {
971
+ internalType: "address",
972
+ name: "mintingFeeToken",
973
+ type: "address"
974
+ }],
975
+ internalType: "struct Licensing.Policy",
976
+ name: "pol",
977
+ type: "tuple"
978
+ }],
979
+ name: "getPolicyId",
980
+ outputs: [{
981
+ internalType: "uint256",
982
+ name: "policyId",
983
+ type: "uint256"
984
+ }],
985
+ stateMutability: "view",
986
+ type: "function"
907
987
  }, {
908
988
  inputs: [{
909
989
  internalType: "uint256[]",
@@ -1805,50 +1885,31 @@ var ErrorsABI = [{
1805
1885
  inputs: [],
1806
1886
  name: "RoyaltyPolicyLAP__ZeroRoyaltyModule",
1807
1887
  type: "error"
1808
- }, {
1809
- inputs: [],
1810
- name: "TaggingModule__DstIpIdDoesNotHaveDstTag",
1811
- type: "error"
1812
- }, {
1813
- inputs: [],
1814
- name: "TaggingModule__InvalidRelationTypeName",
1815
- type: "error"
1816
- }, {
1817
- inputs: [],
1818
- name: "TaggingModule__RelationTypeAlreadyExists",
1819
- type: "error"
1820
- }, {
1821
- inputs: [],
1822
- name: "TaggingModule__RelationTypeDoesNotExist",
1823
- type: "error"
1824
- }, {
1825
- inputs: [],
1826
- name: "TaggingModule__SrcIpIdDoesNotHaveSrcTag",
1827
- type: "error"
1828
1888
  }];
1829
1889
 
1830
1890
  var sepolia = {
1831
- AccessController: "0x31dd83a3FebB5fAD7F7bc8D4E05B623461B74a02",
1832
- AncestorsVaultLAP: "0x9Faa4E491a211bFa415d44554120B1b31b6f4e59",
1833
- ArbitrationPolicySP: "0x75e181d5eb307eCccf8d3b4724109eca14719A75",
1834
- DisputeModule: "0x11dAA3F573C4d6673BBE7f2D96B4C91073A0d55d",
1835
- Governance: "0xa18252Aa11Ff1B20b89C10109050CC46A4067b22",
1836
- IPAccountImpl: "0x7BBaB2BD68fd3990c8dA2c26334a6DF8Acc7E96E",
1837
- IPAccountRegistry: "0x7184bAdAdf24dc261C7C27BceFF53d7A25a06846",
1838
- IPAssetRegistry: "0xF59adB67B7CC87436A7CC41040A7dB24AE90aDB8",
1839
- IPAssetRenderer: "0x986d8E96b30b688FCD84e9A5A757C3d4304B47b6",
1840
- IPMetadataProvider: "0xfcD468A72F76e89F2Df517274063ef7210a32e2A",
1841
- IPResolver: "0xF0920314Fb4C375cdEB5b15c4e77277aCf36E3D7",
1842
- LicenseRegistry: "0x4D6a54B467332dF675cFa689cb294A4cB9122866",
1843
- LicensingModule: "0x0C72b24067a15994f91D92Fd9bA23eB5ebcF8378",
1844
- MockERC20: "0xd53C2A80D24F6B3Ff009E48CF88D3b482E8E1457",
1845
- MockERC721: "0xD3719824a768c139AAa7C5eFc8BDb5D1d13A1564",
1846
- MockTokenGatedHook: "0x2d3ED4354eD09B0E6aa252938aEF41920aB6FC40",
1847
- ModuleRegistry: "0x17Ad1cD06d44ae5F5480A675A4D8BD8DAED40410",
1848
- PILPolicyFrameworkManager: "0x49cF5C5523011F8B4A0489969096Eb68C571C197",
1849
- RegistrationModule: "0x248c8CbF469ec7CB22Dc9914E569920b93d717a3",
1850
- RoyaltyModule: "0x512bbF310452cC96E0E9818B0870EcA557b86d4D",
1851
- RoyaltyPolicyLAP: "0x8404061350BA0CA85c4E733B0be78c5519679003"
1891
+ AccessController: "0x8eB53745795E2107E3568c647A77a7294C89Ef31",
1892
+ AncestorsVaultLAP: "0x7FD793C4914da052022524BA17508976733B09AA",
1893
+ ArbitrationPolicySP: "0xFfE389378AFa13D91485182D72700d226Cb0db16",
1894
+ DisputeModule: "0xe94d7198EF5657C15be755aC3D9cb386F2Db50Bd",
1895
+ Governance: "0x14Ac96796aadef6053e993aBDc3C1e7830ede901",
1896
+ IPAccountImpl: "0xec3F947902fac41e59aa25669Fe39997BFA1357c",
1897
+ IPAccountRegistry: "0xfe3ef84acECAd1F91583CB09E62953669C1c2bb5",
1898
+ IPAssetRegistry: "0xA3a77482C64e91d4C89114D83Bd51457132ea947",
1899
+ IPAssetRenderer: "0xF36c279a61b32D39e5Bc25e317f779362Be07E1d",
1900
+ IPMetadataProvider: "0x40D52438C3852A872c71eB3a8b81d6274C5b6274",
1901
+ IPResolver: "0x8BcE3019dBe94402A0276A2630373CDDB67fe271",
1902
+ LicenseRegistry: "0x176d33Cc80ed3390256033bbf7Fd651c9C5A364F",
1903
+ LicensingModule: "0x9CDDD88Dd34429a0F39eaDf91a56D1bf0533E72B",
1904
+ MockERC20: "0x1219A0E87e617E6560104fA11cfd4f01FeB47362",
1905
+ MockERC721: "0x9d790FF5B6A7469f32f18E677E15D48b86C6839b",
1906
+ MockTokenGatedHook: "0x25018B7521E7607A7101302401bE81eDCA2E9730",
1907
+ ModuleRegistry: "0x6E09516f10a4094b9B9A8C2b7Aa611A2D7827d3F",
1908
+ PILPolicyFrameworkManager: "0x50c3bCAA67D4eC3f285E4328451315Ab0D9e539f",
1909
+ RegistrationModule: "0x8b3f6b736b520F69c37a575293D3c1ff6383D495",
1910
+ RoyaltyModule: "0x833774B42357939B4c96e1bCF5cE26e815AE3Ae6",
1911
+ RoyaltyPolicyLAP: "0xda483fd6e6ecA1C2D913802F9a6B57a83b73029f",
1912
+ TokenWithdrawalModule: "0x01469702E71F5C8199A15a97e8147D002C60a0B9"
1852
1913
  };
1853
1914
 
1854
1915
  var IPAccountABI = [].concat(_toConsumableArray(IPAccountImplABI), _toConsumableArray(ErrorsABI));
@@ -1880,6 +1941,9 @@ var PILPolicyFrameworkManagerConfig = {
1880
1941
  abi: [].concat(_toConsumableArray(PILPolicyFrameworkManagerABI), _toConsumableArray(ErrorsABI)),
1881
1942
  address: getAddress(sepolia.PILPolicyFrameworkManager)
1882
1943
  };
1944
+ var RoyaltyPolicyLAPConfig = {
1945
+ address: getAddress(sepolia.RoyaltyPolicyLAP)
1946
+ };
1883
1947
 
1884
1948
  function _createForOfIteratorHelper(o, allowArrayLike) {
1885
1949
  var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
@@ -2148,12 +2212,24 @@ var IPAssetClient = /*#__PURE__*/function () {
2148
2212
  key: "registerRootIp",
2149
2213
  value: function () {
2150
2214
  var _registerRootIp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(request) {
2151
- var _request$txOptions, _yield$this$rpcClient, call, txHash, targetLog;
2215
+ var _request$txOptions, ipId, _yield$this$rpcClient, call, txHash, targetLog;
2152
2216
  return _regeneratorRuntime().wrap(function _callee$(_context) {
2153
2217
  while (1) switch (_context.prev = _context.next) {
2154
2218
  case 0:
2155
2219
  _context.prev = 0;
2156
2220
  _context.next = 3;
2221
+ return this.isNFTRegistered(SepoliaChainId, request.tokenContractAddress, request.tokenId);
2222
+ case 3:
2223
+ ipId = _context.sent;
2224
+ if (!ipId) {
2225
+ _context.next = 6;
2226
+ break;
2227
+ }
2228
+ return _context.abrupt("return", {
2229
+ ipId: ipId
2230
+ });
2231
+ case 6:
2232
+ _context.next = 8;
2157
2233
  return this.rpcClient.simulateContract(_objectSpread2(_objectSpread2({}, this.registrationModuleConfig), {}, {
2158
2234
  functionName: "registerRootIp",
2159
2235
  args: [parseToBigInt(request.policyId || "0"), getAddress(request.tokenContractAddress),
@@ -2161,43 +2237,43 @@ var IPAssetClient = /*#__PURE__*/function () {
2161
2237
  parseToBigInt(request.tokenId), request.ipName || "", request.contentHash || HashZero, request.uri || ""],
2162
2238
  account: this.wallet.account
2163
2239
  }));
2164
- case 3:
2240
+ case 8:
2165
2241
  _yield$this$rpcClient = _context.sent;
2166
2242
  call = _yield$this$rpcClient.request;
2167
- _context.next = 7;
2243
+ _context.next = 12;
2168
2244
  return this.wallet.writeContract(call);
2169
- case 7:
2245
+ case 12:
2170
2246
  txHash = _context.sent;
2171
2247
  if (!((_request$txOptions = request.txOptions) !== null && _request$txOptions !== void 0 && _request$txOptions.waitForTransaction)) {
2172
- _context.next = 15;
2248
+ _context.next = 20;
2173
2249
  break;
2174
2250
  }
2175
- _context.next = 11;
2251
+ _context.next = 16;
2176
2252
  return waitTxAndFilterLog(this.rpcClient, txHash, _objectSpread2(_objectSpread2({}, this.ipAssetRegistryConfig), {}, {
2177
2253
  eventName: "IPRegistered"
2178
2254
  }));
2179
- case 11:
2255
+ case 16:
2180
2256
  targetLog = _context.sent;
2181
2257
  return _context.abrupt("return", {
2182
2258
  txHash: txHash,
2183
2259
  ipId: targetLog.args.ipId
2184
2260
  });
2185
- case 15:
2261
+ case 20:
2186
2262
  return _context.abrupt("return", {
2187
2263
  txHash: txHash
2188
2264
  });
2189
- case 16:
2190
- _context.next = 21;
2265
+ case 21:
2266
+ _context.next = 26;
2191
2267
  break;
2192
- case 18:
2193
- _context.prev = 18;
2268
+ case 23:
2269
+ _context.prev = 23;
2194
2270
  _context.t0 = _context["catch"](0);
2195
2271
  handleError(_context.t0, "Failed to register root IP");
2196
- case 21:
2272
+ case 26:
2197
2273
  case "end":
2198
2274
  return _context.stop();
2199
2275
  }
2200
- }, _callee, this, [[0, 18]]);
2276
+ }, _callee, this, [[0, 23]]);
2201
2277
  }));
2202
2278
  function registerRootIp(_x) {
2203
2279
  return _registerRootIp.apply(this, arguments);
@@ -2223,20 +2299,32 @@ var IPAssetClient = /*#__PURE__*/function () {
2223
2299
  key: "registerDerivativeIp",
2224
2300
  value: function () {
2225
2301
  var _registerDerivativeIp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(request) {
2226
- var _request$txOptions2, licenseIds, royaltyContext, _yield$this$rpcClient2, call, txHash, targetLog;
2302
+ var _request$txOptions2, ipId, licenseIds, royaltyContext, _yield$this$rpcClient2, call, txHash, targetLog;
2227
2303
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
2228
2304
  while (1) switch (_context2.prev = _context2.next) {
2229
2305
  case 0:
2230
2306
  _context2.prev = 0;
2307
+ _context2.next = 3;
2308
+ return this.isNFTRegistered(SepoliaChainId, request.tokenContractAddress, request.tokenId);
2309
+ case 3:
2310
+ ipId = _context2.sent;
2311
+ if (!(ipId !== "0x")) {
2312
+ _context2.next = 6;
2313
+ break;
2314
+ }
2315
+ return _context2.abrupt("return", {
2316
+ ipId: ipId
2317
+ });
2318
+ case 6:
2231
2319
  licenseIds = [];
2232
2320
  request.licenseIds.forEach(function (licenseId) {
2233
2321
  licenseIds.push(parseToBigInt(licenseId));
2234
2322
  });
2235
- _context2.next = 5;
2323
+ _context2.next = 10;
2236
2324
  return computeRoyaltyContext(request.licenseIds, this.storyClient);
2237
- case 5:
2325
+ case 10:
2238
2326
  royaltyContext = _context2.sent;
2239
- _context2.next = 8;
2327
+ _context2.next = 13;
2240
2328
  return this.rpcClient.simulateContract(_objectSpread2(_objectSpread2({}, this.registrationModuleConfig), {}, {
2241
2329
  functionName: "registerDerivativeIp",
2242
2330
  args: [licenseIds, getAddress(request.tokenContractAddress),
@@ -2244,49 +2332,83 @@ var IPAssetClient = /*#__PURE__*/function () {
2244
2332
  parseToBigInt(request.tokenId), request.ipName || "", request.contentHash || HashZero, request.uri || "", encodeRoyaltyContext(royaltyContext)],
2245
2333
  account: this.wallet.account
2246
2334
  }));
2247
- case 8:
2335
+ case 13:
2248
2336
  _yield$this$rpcClient2 = _context2.sent;
2249
2337
  call = _yield$this$rpcClient2.request;
2250
- _context2.next = 12;
2338
+ _context2.next = 17;
2251
2339
  return this.wallet.writeContract(call);
2252
- case 12:
2340
+ case 17:
2253
2341
  txHash = _context2.sent;
2254
2342
  if (!((_request$txOptions2 = request.txOptions) !== null && _request$txOptions2 !== void 0 && _request$txOptions2.waitForTransaction)) {
2255
- _context2.next = 20;
2343
+ _context2.next = 25;
2256
2344
  break;
2257
2345
  }
2258
- _context2.next = 16;
2346
+ _context2.next = 21;
2259
2347
  return waitTxAndFilterLog(this.rpcClient, txHash, _objectSpread2(_objectSpread2({}, this.ipAssetRegistryConfig), {}, {
2260
2348
  eventName: "IPRegistered"
2261
2349
  }));
2262
- case 16:
2350
+ case 21:
2263
2351
  targetLog = _context2.sent;
2264
2352
  return _context2.abrupt("return", {
2265
2353
  txHash: txHash,
2266
2354
  ipId: targetLog.args.ipId
2267
2355
  });
2268
- case 20:
2356
+ case 25:
2269
2357
  return _context2.abrupt("return", {
2270
2358
  txHash: txHash
2271
2359
  });
2272
- case 21:
2273
- _context2.next = 26;
2360
+ case 26:
2361
+ _context2.next = 31;
2274
2362
  break;
2275
- case 23:
2276
- _context2.prev = 23;
2363
+ case 28:
2364
+ _context2.prev = 28;
2277
2365
  _context2.t0 = _context2["catch"](0);
2278
2366
  handleError(_context2.t0, "Failed to register derivative IP");
2279
- case 26:
2367
+ case 31:
2280
2368
  case "end":
2281
2369
  return _context2.stop();
2282
2370
  }
2283
- }, _callee2, this, [[0, 23]]);
2371
+ }, _callee2, this, [[0, 28]]);
2284
2372
  }));
2285
2373
  function registerDerivativeIp(_x2) {
2286
2374
  return _registerDerivativeIp.apply(this, arguments);
2287
2375
  }
2288
2376
  return registerDerivativeIp;
2289
2377
  }()
2378
+ }, {
2379
+ key: "isNFTRegistered",
2380
+ value: function () {
2381
+ var _isNFTRegistered = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(chainId, tokenAddress, tokenId) {
2382
+ var ipId, isRegistered;
2383
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
2384
+ while (1) switch (_context3.prev = _context3.next) {
2385
+ case 0:
2386
+ _context3.next = 2;
2387
+ return this.rpcClient.readContract(_objectSpread2(_objectSpread2({}, this.ipAssetRegistryConfig), {}, {
2388
+ functionName: "ipId",
2389
+ args: [parseToBigInt(chainId), tokenAddress, parseToBigInt(tokenId)]
2390
+ }));
2391
+ case 2:
2392
+ ipId = _context3.sent;
2393
+ _context3.next = 5;
2394
+ return this.rpcClient.readContract(_objectSpread2(_objectSpread2({}, this.ipAssetRegistryConfig), {}, {
2395
+ functionName: "isRegistered",
2396
+ args: [ipId]
2397
+ }));
2398
+ case 5:
2399
+ isRegistered = _context3.sent;
2400
+ return _context3.abrupt("return", isRegistered ? ipId : "0x");
2401
+ case 7:
2402
+ case "end":
2403
+ return _context3.stop();
2404
+ }
2405
+ }, _callee3, this);
2406
+ }));
2407
+ function isNFTRegistered(_x3, _x4, _x5) {
2408
+ return _isNFTRegistered.apply(this, arguments);
2409
+ }
2410
+ return isNFTRegistered;
2411
+ }()
2290
2412
  }]);
2291
2413
  return IPAssetClient;
2292
2414
  }();
@@ -2314,7 +2436,7 @@ var PermissionClient = /*#__PURE__*/function () {
2314
2436
  * @param request.ipAsset The address of the IP account that grants the permission for `signer`
2315
2437
  * @param request.signer The address that can call `to` on behalf of the `ipAccount`
2316
2438
  * @param request.to The address that can be called by the `signer` (currently only modules can be `to`)
2317
- * @param request.func The function selector string of `to` that can be called by the `signer` on behalf of the `ipAccount`
2439
+ * @param request.func Optional. The function selector string of `to` that can be called by the `signer` on behalf of the `ipAccount`. Be default, it allows all functions.
2318
2440
  * @param request.permission The new permission level
2319
2441
  * @returns A Promise that resolves to an object containing the transaction hash
2320
2442
  * @emits PermissionSet (ipAccountOwner, ipAccount, signer, to, func, permission)
@@ -2344,7 +2466,7 @@ var PermissionClient = /*#__PURE__*/function () {
2344
2466
  // 0x Address
2345
2467
  getAddress(request.to),
2346
2468
  // 0x Address
2347
- request.func,
2469
+ request.func || "0x00000000",
2348
2470
  // bytes4
2349
2471
  request.permission // uint8
2350
2472
  ]
@@ -2581,6 +2703,7 @@ var PolicyClient = /*#__PURE__*/function () {
2581
2703
  _defineProperty(this, "ipAccountABI", IPAccountABI);
2582
2704
  _defineProperty(this, "licensingModuleConfig", LicensingModuleConfig);
2583
2705
  _defineProperty(this, "pilPolicyFrameworkManagerConfig", PILPolicyFrameworkManagerConfig);
2706
+ _defineProperty(this, "royaltyPolicyLAPConfig", RoyaltyPolicyLAPConfig);
2584
2707
  this.wallet = wallet;
2585
2708
  this.rpcClient = rpcClient;
2586
2709
  }
@@ -2608,18 +2731,49 @@ var PolicyClient = /*#__PURE__*/function () {
2608
2731
  key: "registerPILPolicy",
2609
2732
  value: function () {
2610
2733
  var _registerPILPolicy = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(request) {
2611
- var _request$txOptions, _yield$this$rpcClient, call, txHash, targetLog;
2734
+ var _request$txOptions, frameworkData, policyId, _yield$this$rpcClient, call, txHash, targetLog;
2612
2735
  return _regeneratorRuntime().wrap(function _callee$(_context) {
2613
2736
  while (1) switch (_context.prev = _context.next) {
2614
2737
  case 0:
2615
2738
  _context.prev = 0;
2616
- _context.next = 3;
2739
+ // First check if the policy exists
2740
+ frameworkData = {
2741
+ attribution: request.attribution || false,
2742
+ commercialUse: request.commercialUse || false,
2743
+ commercialAttribution: request.commercialAttribution || false,
2744
+ commercializerChecker: request.commercializerChecker || zeroAddress,
2745
+ commercializerCheckerData: request.commercializerCheckerData || "0x",
2746
+ commercialRevShare: request.commercialRevShare || 0,
2747
+ derivativesAllowed: request.derivativesAllowed || false,
2748
+ derivativesAttribution: request.derivativesAttribution || false,
2749
+ derivativesApproval: request.derivativesApproval || false,
2750
+ derivativesReciprocal: request.derivativesReciprocal || false,
2751
+ territories: request.territories || [],
2752
+ distributionChannels: request.distributionChannels || [],
2753
+ contentRestrictions: request.contentRestrictions || []
2754
+ };
2755
+ _context.next = 4;
2756
+ return this.getPolicyId(request.transferable, this.encodeFrameworkData(frameworkData), typedDataToBytes({
2757
+ "interface": "uint32",
2758
+ data: [request.commercialRevShare || 0]
2759
+ }), request.mintingFee || "0", request.mintingFeeToken || zeroAddress, request.royaltyPolicy || zeroAddress);
2760
+ case 4:
2761
+ policyId = _context.sent;
2762
+ if (!(policyId !== 0)) {
2763
+ _context.next = 7;
2764
+ break;
2765
+ }
2766
+ return _context.abrupt("return", {
2767
+ policyId: policyId.toString()
2768
+ });
2769
+ case 7:
2770
+ _context.next = 9;
2617
2771
  return this.rpcClient.simulateContract(_objectSpread2(_objectSpread2({}, this.pilPolicyFrameworkManagerConfig), {}, {
2618
2772
  functionName: "registerPolicy",
2619
2773
  args: [{
2620
2774
  transferable: request.transferable,
2621
2775
  royaltyPolicy: request.royaltyPolicy || zeroAddress,
2622
- mintingFee: parseToBigInt(request.mintingFee || 0),
2776
+ mintingFee: parseToBigInt(request.mintingFee || "0"),
2623
2777
  mintingFeeToken: request.mintingFeeToken || zeroAddress,
2624
2778
  policy: {
2625
2779
  attribution: request.attribution || false,
@@ -2627,7 +2781,7 @@ var PolicyClient = /*#__PURE__*/function () {
2627
2781
  commercialAttribution: request.commercialAttribution || false,
2628
2782
  commercialRevShare: request.commercialRevShare || 0,
2629
2783
  derivativesAllowed: request.derivativesAllowed || false,
2630
- derivativesAttribution: request.commercialAttribution || false,
2784
+ derivativesAttribution: request.derivativesAttribution || false,
2631
2785
  derivativesApproval: request.derivativesApproval || false,
2632
2786
  derivativesReciprocal: request.derivativesReciprocal || false,
2633
2787
  commercializerChecker: request.commercializerChecker || zeroAddress,
@@ -2639,49 +2793,332 @@ var PolicyClient = /*#__PURE__*/function () {
2639
2793
  }],
2640
2794
  account: this.wallet.account
2641
2795
  }));
2642
- case 3:
2796
+ case 9:
2643
2797
  _yield$this$rpcClient = _context.sent;
2644
2798
  call = _yield$this$rpcClient.request;
2645
- _context.next = 7;
2799
+ _context.next = 13;
2646
2800
  return this.wallet.writeContract(call);
2647
- case 7:
2801
+ case 13:
2648
2802
  txHash = _context.sent;
2649
2803
  if (!((_request$txOptions = request.txOptions) !== null && _request$txOptions !== void 0 && _request$txOptions.waitForTransaction)) {
2650
- _context.next = 15;
2804
+ _context.next = 21;
2651
2805
  break;
2652
2806
  }
2653
- _context.next = 11;
2807
+ _context.next = 17;
2654
2808
  return waitTxAndFilterLog(this.rpcClient, txHash, _objectSpread2(_objectSpread2({}, this.licensingModuleConfig), {}, {
2655
2809
  eventName: "PolicyRegistered"
2656
2810
  }));
2657
- case 11:
2811
+ case 17:
2658
2812
  targetLog = _context.sent;
2659
2813
  return _context.abrupt("return", {
2660
2814
  txHash: txHash,
2661
2815
  policyId: targetLog === null || targetLog === void 0 ? void 0 : targetLog.args.policyId.toString()
2662
2816
  });
2663
- case 15:
2817
+ case 21:
2664
2818
  return _context.abrupt("return", {
2665
2819
  txHash: txHash
2666
2820
  });
2667
- case 16:
2668
- _context.next = 21;
2821
+ case 22:
2822
+ _context.next = 27;
2669
2823
  break;
2670
- case 18:
2671
- _context.prev = 18;
2824
+ case 24:
2825
+ _context.prev = 24;
2672
2826
  _context.t0 = _context["catch"](0);
2673
2827
  handleError(_context.t0, "Failed to register policy");
2674
- case 21:
2828
+ case 27:
2675
2829
  case "end":
2676
2830
  return _context.stop();
2677
2831
  }
2678
- }, _callee, this, [[0, 18]]);
2832
+ }, _callee, this, [[0, 24]]);
2679
2833
  }));
2680
2834
  function registerPILPolicy(_x) {
2681
2835
  return _registerPILPolicy.apply(this, arguments);
2682
2836
  }
2683
2837
  return registerPILPolicy;
2684
2838
  }()
2839
+ /**
2840
+ * Convenient function to register a PIL social remix policy to the registry
2841
+ * Internally, this function must generate a Licensing.Policy struct and call registerPolicy.
2842
+ * @param request - the licensing parameters for the Programmable IP License v1 (PIL) standard.
2843
+ * @param request.territories List of territories where the license is valid. If empty, global.
2844
+ * @param request.distributionChannels List of distribution channels where the license is valid. Empty if no restrictions.
2845
+ * @param request.contentRestrictions List of content restrictions where the license is valid. Empty if no restrictions.
2846
+ * @returns the transaction hash and the policy ID if the txOptions.waitForTransaction is set to true
2847
+ */
2848
+ }, {
2849
+ key: "registerPILSocialRemixPolicy",
2850
+ value: function () {
2851
+ var _registerPILSocialRemixPolicy = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(request) {
2852
+ var _request$txOptions2, frameworkData, policyId, _yield$this$rpcClient2, call, txHash, targetLog;
2853
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
2854
+ while (1) switch (_context2.prev = _context2.next) {
2855
+ case 0:
2856
+ _context2.prev = 0;
2857
+ // First check if the policy exists
2858
+ frameworkData = {
2859
+ attribution: true,
2860
+ commercialUse: false,
2861
+ commercialAttribution: false,
2862
+ commercializerChecker: zeroAddress,
2863
+ commercializerCheckerData: "0x",
2864
+ commercialRevShare: 0,
2865
+ derivativesAllowed: true,
2866
+ derivativesAttribution: true,
2867
+ derivativesApproval: false,
2868
+ derivativesReciprocal: true,
2869
+ territories: request.territories || [],
2870
+ distributionChannels: request.distributionChannels || [],
2871
+ contentRestrictions: request.contentRestrictions || []
2872
+ };
2873
+ _context2.next = 4;
2874
+ return this.getPolicyId(true, this.encodeFrameworkData(frameworkData), typedDataToBytes({
2875
+ "interface": "uint32",
2876
+ data: [0]
2877
+ }), "0", zeroAddress, zeroAddress);
2878
+ case 4:
2879
+ policyId = _context2.sent;
2880
+ if (!(policyId !== 0)) {
2881
+ _context2.next = 7;
2882
+ break;
2883
+ }
2884
+ return _context2.abrupt("return", {
2885
+ policyId: policyId.toString()
2886
+ });
2887
+ case 7:
2888
+ _context2.next = 9;
2889
+ return this.rpcClient.simulateContract(_objectSpread2(_objectSpread2({}, this.pilPolicyFrameworkManagerConfig), {}, {
2890
+ functionName: "registerPolicy",
2891
+ args: [{
2892
+ transferable: true,
2893
+ royaltyPolicy: zeroAddress,
2894
+ mintingFee: parseToBigInt(0),
2895
+ mintingFeeToken: zeroAddress,
2896
+ policy: {
2897
+ attribution: true,
2898
+ commercialUse: false,
2899
+ commercialAttribution: false,
2900
+ commercialRevShare: 0,
2901
+ derivativesAllowed: true,
2902
+ derivativesAttribution: true,
2903
+ derivativesApproval: false,
2904
+ derivativesReciprocal: true,
2905
+ commercializerChecker: zeroAddress,
2906
+ commercializerCheckerData: "0x",
2907
+ territories: request.territories || [],
2908
+ distributionChannels: request.distributionChannels || [],
2909
+ contentRestrictions: request.contentRestrictions || []
2910
+ }
2911
+ }],
2912
+ account: this.wallet.account
2913
+ }));
2914
+ case 9:
2915
+ _yield$this$rpcClient2 = _context2.sent;
2916
+ call = _yield$this$rpcClient2.request;
2917
+ _context2.next = 13;
2918
+ return this.wallet.writeContract(call);
2919
+ case 13:
2920
+ txHash = _context2.sent;
2921
+ if (!((_request$txOptions2 = request.txOptions) !== null && _request$txOptions2 !== void 0 && _request$txOptions2.waitForTransaction)) {
2922
+ _context2.next = 21;
2923
+ break;
2924
+ }
2925
+ _context2.next = 17;
2926
+ return waitTxAndFilterLog(this.rpcClient, txHash, _objectSpread2(_objectSpread2({}, this.licensingModuleConfig), {}, {
2927
+ eventName: "PolicyRegistered"
2928
+ }));
2929
+ case 17:
2930
+ targetLog = _context2.sent;
2931
+ return _context2.abrupt("return", {
2932
+ txHash: txHash,
2933
+ policyId: targetLog === null || targetLog === void 0 ? void 0 : targetLog.args.policyId.toString()
2934
+ });
2935
+ case 21:
2936
+ return _context2.abrupt("return", {
2937
+ txHash: txHash
2938
+ });
2939
+ case 22:
2940
+ _context2.next = 27;
2941
+ break;
2942
+ case 24:
2943
+ _context2.prev = 24;
2944
+ _context2.t0 = _context2["catch"](0);
2945
+ handleError(_context2.t0, "Failed to register social remix policy");
2946
+ case 27:
2947
+ case "end":
2948
+ return _context2.stop();
2949
+ }
2950
+ }, _callee2, this, [[0, 24]]);
2951
+ }));
2952
+ function registerPILSocialRemixPolicy(_x2) {
2953
+ return _registerPILSocialRemixPolicy.apply(this, arguments);
2954
+ }
2955
+ return registerPILSocialRemixPolicy;
2956
+ }()
2957
+ /**
2958
+ * Convenient function to register a PIL social remix policy to the registry
2959
+ * Internally, this function must generate a Licensing.Policy struct and call registerPolicy.
2960
+ * @param request - the licensing parameters for the Programmable IP License v1 (PIL) standard.
2961
+ * @param request.commercialRevShare Percentage of revenue that must be shared with the licensor
2962
+ * @param mintingFee Fee to be paid when minting a license
2963
+ * @param mintingFeeToken Token to be used to pay the minting fee
2964
+ * @param request.territories List of territories where the license is valid. If empty, global.
2965
+ * @param request.distributionChannels List of distribution channels where the license is valid. Empty if no restrictions.
2966
+ * @param request.contentRestrictions List of content restrictions where the license is valid. Empty if no restrictions.
2967
+ * @returns the transaction hash and the policy ID if the txOptions.waitForTransaction is set to true
2968
+ */
2969
+ }, {
2970
+ key: "registerPILCommercialUsePolicy",
2971
+ value: function () {
2972
+ var _registerPILCommercialUsePolicy = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(request) {
2973
+ var _request$txOptions3, frameworkData, policyId, _yield$this$rpcClient3, call, txHash, targetLog;
2974
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
2975
+ while (1) switch (_context3.prev = _context3.next) {
2976
+ case 0:
2977
+ _context3.prev = 0;
2978
+ // First check if the policy exists
2979
+ frameworkData = {
2980
+ attribution: true,
2981
+ commercialUse: true,
2982
+ commercialAttribution: true,
2983
+ commercializerChecker: zeroAddress,
2984
+ commercializerCheckerData: "0x",
2985
+ commercialRevShare: request.commercialRevShare,
2986
+ derivativesAllowed: true,
2987
+ derivativesAttribution: true,
2988
+ derivativesApproval: false,
2989
+ derivativesReciprocal: true,
2990
+ territories: request.territories || [],
2991
+ distributionChannels: request.distributionChannels || [],
2992
+ contentRestrictions: request.contentRestrictions || []
2993
+ };
2994
+ _context3.next = 4;
2995
+ return this.getPolicyId(true, this.encodeFrameworkData(frameworkData), typedDataToBytes({
2996
+ "interface": "uint32",
2997
+ data: [request.commercialRevShare]
2998
+ }), request.mintingFee || "0", request.mintingFeeToken || zeroAddress, this.royaltyPolicyLAPConfig.address);
2999
+ case 4:
3000
+ policyId = _context3.sent;
3001
+ if (!(policyId !== 0)) {
3002
+ _context3.next = 7;
3003
+ break;
3004
+ }
3005
+ return _context3.abrupt("return", {
3006
+ policyId: policyId.toString()
3007
+ });
3008
+ case 7:
3009
+ _context3.next = 9;
3010
+ return this.rpcClient.simulateContract(_objectSpread2(_objectSpread2({}, this.pilPolicyFrameworkManagerConfig), {}, {
3011
+ functionName: "registerPolicy",
3012
+ args: [{
3013
+ transferable: true,
3014
+ royaltyPolicy: this.royaltyPolicyLAPConfig.address,
3015
+ mintingFee: parseToBigInt(request.mintingFee || "0"),
3016
+ mintingFeeToken: request.mintingFeeToken || zeroAddress,
3017
+ policy: {
3018
+ attribution: true,
3019
+ commercialUse: true,
3020
+ commercialAttribution: true,
3021
+ commercialRevShare: request.commercialRevShare,
3022
+ derivativesAllowed: true,
3023
+ derivativesAttribution: true,
3024
+ derivativesApproval: false,
3025
+ derivativesReciprocal: true,
3026
+ commercializerChecker: zeroAddress,
3027
+ commercializerCheckerData: "0x",
3028
+ territories: request.territories || [],
3029
+ distributionChannels: request.distributionChannels || [],
3030
+ contentRestrictions: request.contentRestrictions || []
3031
+ }
3032
+ }],
3033
+ account: this.wallet.account
3034
+ }));
3035
+ case 9:
3036
+ _yield$this$rpcClient3 = _context3.sent;
3037
+ call = _yield$this$rpcClient3.request;
3038
+ _context3.next = 13;
3039
+ return this.wallet.writeContract(call);
3040
+ case 13:
3041
+ txHash = _context3.sent;
3042
+ if (!((_request$txOptions3 = request.txOptions) !== null && _request$txOptions3 !== void 0 && _request$txOptions3.waitForTransaction)) {
3043
+ _context3.next = 21;
3044
+ break;
3045
+ }
3046
+ _context3.next = 17;
3047
+ return waitTxAndFilterLog(this.rpcClient, txHash, _objectSpread2(_objectSpread2({}, this.licensingModuleConfig), {}, {
3048
+ eventName: "PolicyRegistered"
3049
+ }));
3050
+ case 17:
3051
+ targetLog = _context3.sent;
3052
+ return _context3.abrupt("return", {
3053
+ txHash: txHash,
3054
+ policyId: targetLog === null || targetLog === void 0 ? void 0 : targetLog.args.policyId.toString()
3055
+ });
3056
+ case 21:
3057
+ return _context3.abrupt("return", {
3058
+ txHash: txHash
3059
+ });
3060
+ case 22:
3061
+ _context3.next = 27;
3062
+ break;
3063
+ case 24:
3064
+ _context3.prev = 24;
3065
+ _context3.t0 = _context3["catch"](0);
3066
+ handleError(_context3.t0, "Failed to register commercial use policy");
3067
+ case 27:
3068
+ case "end":
3069
+ return _context3.stop();
3070
+ }
3071
+ }, _callee3, this, [[0, 24]]);
3072
+ }));
3073
+ function registerPILCommercialUsePolicy(_x3) {
3074
+ return _registerPILCommercialUsePolicy.apply(this, arguments);
3075
+ }
3076
+ return registerPILCommercialUsePolicy;
3077
+ }()
3078
+ }, {
3079
+ key: "getPolicyId",
3080
+ value: function () {
3081
+ var _getPolicyId = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(transferable, frameworkData, royaltyData, mintingFee, mintingFeeToken, royaltyPolicy, policyFramework) {
3082
+ var data;
3083
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
3084
+ while (1) switch (_context4.prev = _context4.next) {
3085
+ case 0:
3086
+ _context4.next = 2;
3087
+ return this.rpcClient.readContract(_objectSpread2(_objectSpread2({}, this.licensingModuleConfig), {}, {
3088
+ functionName: "getPolicyId",
3089
+ args: [{
3090
+ isLicenseTransferable: transferable,
3091
+ policyFramework: policyFramework || this.pilPolicyFrameworkManagerConfig.address,
3092
+ frameworkData: frameworkData,
3093
+ royaltyPolicy: royaltyPolicy,
3094
+ royaltyData: royaltyData,
3095
+ mintingFee: parseToBigInt(mintingFee),
3096
+ mintingFeeToken: mintingFeeToken
3097
+ }]
3098
+ }));
3099
+ case 2:
3100
+ data = _context4.sent;
3101
+ return _context4.abrupt("return", Number(data));
3102
+ case 4:
3103
+ case "end":
3104
+ return _context4.stop();
3105
+ }
3106
+ }, _callee4, this);
3107
+ }));
3108
+ function getPolicyId(_x4, _x5, _x6, _x7, _x8, _x9, _x10) {
3109
+ return _getPolicyId.apply(this, arguments);
3110
+ }
3111
+ return getPolicyId;
3112
+ }()
3113
+ }, {
3114
+ key: "encodeFrameworkData",
3115
+ value: function encodeFrameworkData(data) {
3116
+ return typedDataToBytes({
3117
+ "interface": "(bool, bool, bool, address, bytes, uint32, bool, bool, bool, bool, string[], string[], string[])",
3118
+ data: [[data.attribution, data.commercialUse, data.commercialAttribution, data.commercializerChecker, data.commercializerCheckerData, data.commercialRevShare, data.derivativesAllowed, data.derivativesAttribution, data.derivativesApproval, data.derivativesReciprocal, data.territories, data.distributionChannels, data.contentRestrictions]]
3119
+ });
3120
+ }
3121
+
2685
3122
  /**
2686
3123
  * Adds a policy to the set of policies of an IP
2687
3124
  * @param request The request object containing details to add a policy to an IP
@@ -2692,17 +3129,17 @@ var PolicyClient = /*#__PURE__*/function () {
2692
3129
  }, {
2693
3130
  key: "addPolicyToIp",
2694
3131
  value: function () {
2695
- var _addPolicyToIp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(request) {
2696
- var _request$txOptions2, IPAccountConfig, _yield$this$rpcClient2, call, txHash, targetLog;
2697
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
2698
- while (1) switch (_context2.prev = _context2.next) {
3132
+ var _addPolicyToIp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(request) {
3133
+ var _request$txOptions4, IPAccountConfig, _yield$this$rpcClient4, call, txHash, targetLog;
3134
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
3135
+ while (1) switch (_context5.prev = _context5.next) {
2699
3136
  case 0:
2700
- _context2.prev = 0;
3137
+ _context5.prev = 0;
2701
3138
  IPAccountConfig = {
2702
3139
  abi: this.ipAccountABI,
2703
3140
  address: getAddress(request.ipId)
2704
3141
  };
2705
- _context2.next = 4;
3142
+ _context5.next = 4;
2706
3143
  return this.rpcClient.simulateContract(_objectSpread2(_objectSpread2({}, IPAccountConfig), {}, {
2707
3144
  functionName: "execute",
2708
3145
  args: [this.licensingModuleConfig.address, parseToBigInt(0), encodeFunctionData({
@@ -2713,44 +3150,44 @@ var PolicyClient = /*#__PURE__*/function () {
2713
3150
  account: this.wallet.account
2714
3151
  }));
2715
3152
  case 4:
2716
- _yield$this$rpcClient2 = _context2.sent;
2717
- call = _yield$this$rpcClient2.request;
2718
- _context2.next = 8;
3153
+ _yield$this$rpcClient4 = _context5.sent;
3154
+ call = _yield$this$rpcClient4.request;
3155
+ _context5.next = 8;
2719
3156
  return this.wallet.writeContract(call);
2720
3157
  case 8:
2721
- txHash = _context2.sent;
2722
- if (!((_request$txOptions2 = request.txOptions) !== null && _request$txOptions2 !== void 0 && _request$txOptions2.waitForTransaction)) {
2723
- _context2.next = 16;
3158
+ txHash = _context5.sent;
3159
+ if (!((_request$txOptions4 = request.txOptions) !== null && _request$txOptions4 !== void 0 && _request$txOptions4.waitForTransaction)) {
3160
+ _context5.next = 16;
2724
3161
  break;
2725
3162
  }
2726
- _context2.next = 12;
3163
+ _context5.next = 12;
2727
3164
  return waitTxAndFilterLog(this.rpcClient, txHash, _objectSpread2(_objectSpread2({}, this.licensingModuleConfig), {}, {
2728
3165
  eventName: "PolicyAddedToIpId"
2729
3166
  }));
2730
3167
  case 12:
2731
- targetLog = _context2.sent;
2732
- return _context2.abrupt("return", {
3168
+ targetLog = _context5.sent;
3169
+ return _context5.abrupt("return", {
2733
3170
  txHash: txHash,
2734
3171
  index: targetLog.args.index.toString()
2735
3172
  });
2736
3173
  case 16:
2737
- return _context2.abrupt("return", {
3174
+ return _context5.abrupt("return", {
2738
3175
  txHash: txHash
2739
3176
  });
2740
3177
  case 17:
2741
- _context2.next = 22;
3178
+ _context5.next = 22;
2742
3179
  break;
2743
3180
  case 19:
2744
- _context2.prev = 19;
2745
- _context2.t0 = _context2["catch"](0);
2746
- handleError(_context2.t0, "Failed to add policy to IP");
3181
+ _context5.prev = 19;
3182
+ _context5.t0 = _context5["catch"](0);
3183
+ handleError(_context5.t0, "Failed to add policy to IP");
2747
3184
  case 22:
2748
3185
  case "end":
2749
- return _context2.stop();
3186
+ return _context5.stop();
2750
3187
  }
2751
- }, _callee2, this, [[0, 19]]);
3188
+ }, _callee5, this, [[0, 19]]);
2752
3189
  }));
2753
- function addPolicyToIp(_x2) {
3190
+ function addPolicyToIp(_x11) {
2754
3191
  return _addPolicyToIp.apply(this, arguments);
2755
3192
  }
2756
3193
  return addPolicyToIp;