@zoralabs/protocol-sdk 0.9.5 → 0.10.0

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 (45) hide show
  1. package/.turbo/turbo-build.log +7 -7
  2. package/CHANGELOG.md +17 -2
  3. package/dist/anvil.d.ts +11 -1
  4. package/dist/anvil.d.ts.map +1 -1
  5. package/dist/apis/multicall3.d.ts +9 -0
  6. package/dist/apis/multicall3.d.ts.map +1 -0
  7. package/dist/apis/subgraph-getter.d.ts +9 -0
  8. package/dist/apis/subgraph-getter.d.ts.map +1 -0
  9. package/dist/create/contract-getter.d.ts +3 -6
  10. package/dist/create/contract-getter.d.ts.map +1 -1
  11. package/dist/fixtures/mint-query-results.d.ts +10 -0
  12. package/dist/fixtures/mint-query-results.d.ts.map +1 -0
  13. package/dist/fixtures/rewards-query-results.d.ts +6 -0
  14. package/dist/fixtures/rewards-query-results.d.ts.map +1 -0
  15. package/dist/index.cjs +402 -161
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.js +408 -161
  18. package/dist/index.js.map +1 -1
  19. package/dist/mint/subgraph-mint-getter.d.ts +3 -5
  20. package/dist/mint/subgraph-mint-getter.d.ts.map +1 -1
  21. package/dist/rewards/rewards-client.d.ts +34 -0
  22. package/dist/rewards/rewards-client.d.ts.map +1 -0
  23. package/dist/rewards/rewards-queries.d.ts +34 -0
  24. package/dist/rewards/rewards-queries.d.ts.map +1 -0
  25. package/dist/rewards/subgraph-queries.d.ts +20 -0
  26. package/dist/rewards/subgraph-queries.d.ts.map +1 -0
  27. package/dist/rewards/subgraph-rewards-getter.d.ts +15 -0
  28. package/dist/rewards/subgraph-rewards-getter.d.ts.map +1 -0
  29. package/dist/sdk.d.ts +5 -0
  30. package/dist/sdk.d.ts.map +1 -1
  31. package/package.json +2 -2
  32. package/src/apis/multicall3.ts +19 -0
  33. package/src/apis/subgraph-getter.ts +33 -0
  34. package/src/create/1155-create-helper.test.ts +18 -18
  35. package/src/create/contract-getter.ts +7 -29
  36. package/src/fixtures/mint-query-results.ts +55 -0
  37. package/src/fixtures/rewards-query-results.ts +25 -0
  38. package/src/mint/mint-client.test.ts +18 -46
  39. package/src/mint/subgraph-mint-getter.ts +7 -27
  40. package/src/rewards/rewards-client.test.ts +406 -0
  41. package/src/rewards/rewards-client.ts +67 -0
  42. package/src/rewards/rewards-queries.ts +253 -0
  43. package/src/rewards/subgraph-queries.ts +49 -0
  44. package/src/rewards/subgraph-rewards-getter.ts +33 -0
  45. package/src/sdk.ts +18 -0
package/dist/index.cjs CHANGED
@@ -2551,136 +2551,6 @@ var toContractCreationConfigOrAddress = ({
2551
2551
  // src/premint/premint-client.ts
2552
2552
  var import_protocol_deployments4 = require("@zoralabs/protocol-deployments");
2553
2553
 
2554
- // src/retries.ts
2555
- async function wait(delayMs) {
2556
- return new Promise((resolve) => {
2557
- setTimeout(resolve, delayMs);
2558
- });
2559
- }
2560
- var retryInternal = async ({
2561
- tryFn,
2562
- maxTries = 3,
2563
- atTry,
2564
- linearBackoffMS = 200,
2565
- shouldRetryOnError = () => true
2566
- }) => {
2567
- try {
2568
- return await tryFn();
2569
- } catch (err) {
2570
- if (shouldRetryOnError(err)) {
2571
- if (atTry <= maxTries) {
2572
- await wait(atTry * linearBackoffMS);
2573
- return await retryInternal({
2574
- tryFn,
2575
- maxTries,
2576
- atTry: atTry + 1,
2577
- linearBackoffMS,
2578
- shouldRetryOnError
2579
- });
2580
- }
2581
- }
2582
- throw err;
2583
- }
2584
- };
2585
- var retriesGeneric = async (params) => {
2586
- return retryInternal({
2587
- ...params,
2588
- atTry: 1
2589
- });
2590
- };
2591
-
2592
- // src/apis/http-api-base.ts
2593
- var BadResponseError = class extends Error {
2594
- constructor(message, status, json) {
2595
- super(message);
2596
- this.name = "BadResponseError";
2597
- this.status = status;
2598
- this.json = json;
2599
- }
2600
- };
2601
- var get = async (url) => {
2602
- const response = await fetch(url, { method: "GET" });
2603
- if (response.status !== 200) {
2604
- let json;
2605
- try {
2606
- json = await response.json();
2607
- } catch (e) {
2608
- }
2609
- throw new BadResponseError(
2610
- `Invalid response, status ${response.status}`,
2611
- response.status,
2612
- json
2613
- );
2614
- }
2615
- return await response.json();
2616
- };
2617
- var post = async (url, data) => {
2618
- const controller = new AbortController();
2619
- const { signal } = controller;
2620
- const timeout = 30 * 60 * 1e3;
2621
- const timeoutId = setTimeout(() => controller.abort(), timeout);
2622
- const response = await fetch(url, {
2623
- method: "POST",
2624
- headers: {
2625
- "content-type": "application/json",
2626
- accept: "application/json"
2627
- },
2628
- body: JSON.stringify(data),
2629
- signal
2630
- });
2631
- clearTimeout(timeoutId);
2632
- if (response.status !== 200) {
2633
- let json;
2634
- try {
2635
- json = await response.json();
2636
- } catch (e) {
2637
- }
2638
- throw new BadResponseError(
2639
- `Bad response: ${response.status}`,
2640
- response.status,
2641
- json
2642
- );
2643
- }
2644
- return await response.json();
2645
- };
2646
- var defaultShouldRetry = (err) => {
2647
- return err instanceof BadResponseError && err.status >= 500;
2648
- };
2649
- var retries = async (tryFn, maxTries = 3, linearBackoffMS = 200, shouldRetry = defaultShouldRetry) => {
2650
- return retriesGeneric({
2651
- tryFn,
2652
- maxTries,
2653
- linearBackoffMS,
2654
- shouldRetryOnError: shouldRetry
2655
- });
2656
- };
2657
- var httpClient = {
2658
- get,
2659
- post,
2660
- retries
2661
- };
2662
-
2663
- // src/apis/subgraph-querier.ts
2664
- var SubgraphQuerier = class {
2665
- constructor(httpClient2) {
2666
- this.httpClient = httpClient2;
2667
- }
2668
- async query({
2669
- subgraphUrl,
2670
- query,
2671
- variables
2672
- }) {
2673
- const { retries: retries2, post: post2 } = this.httpClient;
2674
- const result = await retries2(async () => {
2675
- return await post2(subgraphUrl, {
2676
- query,
2677
- variables
2678
- });
2679
- });
2680
- return result?.data;
2681
- }
2682
- };
2683
-
2684
2554
  // src/mint/subgraph-queries.ts
2685
2555
  var NFT_SALE_STRATEGY_FRAGMENT = `
2686
2556
  fragment SaleStrategy on SalesStrategyConfig {
@@ -2807,6 +2677,156 @@ function buildPremintsOfContractQuery({
2807
2677
  };
2808
2678
  }
2809
2679
 
2680
+ // src/apis/subgraph-querier.ts
2681
+ var SubgraphQuerier = class {
2682
+ constructor(httpClient2) {
2683
+ this.httpClient = httpClient2;
2684
+ }
2685
+ async query({
2686
+ subgraphUrl,
2687
+ query,
2688
+ variables
2689
+ }) {
2690
+ const { retries: retries2, post: post2 } = this.httpClient;
2691
+ const result = await retries2(async () => {
2692
+ return await post2(subgraphUrl, {
2693
+ query,
2694
+ variables
2695
+ });
2696
+ });
2697
+ return result?.data;
2698
+ }
2699
+ };
2700
+
2701
+ // src/retries.ts
2702
+ async function wait(delayMs) {
2703
+ return new Promise((resolve) => {
2704
+ setTimeout(resolve, delayMs);
2705
+ });
2706
+ }
2707
+ var retryInternal = async ({
2708
+ tryFn,
2709
+ maxTries = 3,
2710
+ atTry,
2711
+ linearBackoffMS = 200,
2712
+ shouldRetryOnError = () => true
2713
+ }) => {
2714
+ try {
2715
+ return await tryFn();
2716
+ } catch (err) {
2717
+ if (shouldRetryOnError(err)) {
2718
+ if (atTry <= maxTries) {
2719
+ await wait(atTry * linearBackoffMS);
2720
+ return await retryInternal({
2721
+ tryFn,
2722
+ maxTries,
2723
+ atTry: atTry + 1,
2724
+ linearBackoffMS,
2725
+ shouldRetryOnError
2726
+ });
2727
+ }
2728
+ }
2729
+ throw err;
2730
+ }
2731
+ };
2732
+ var retriesGeneric = async (params) => {
2733
+ return retryInternal({
2734
+ ...params,
2735
+ atTry: 1
2736
+ });
2737
+ };
2738
+
2739
+ // src/apis/http-api-base.ts
2740
+ var BadResponseError = class extends Error {
2741
+ constructor(message, status, json) {
2742
+ super(message);
2743
+ this.name = "BadResponseError";
2744
+ this.status = status;
2745
+ this.json = json;
2746
+ }
2747
+ };
2748
+ var get = async (url) => {
2749
+ const response = await fetch(url, { method: "GET" });
2750
+ if (response.status !== 200) {
2751
+ let json;
2752
+ try {
2753
+ json = await response.json();
2754
+ } catch (e) {
2755
+ }
2756
+ throw new BadResponseError(
2757
+ `Invalid response, status ${response.status}`,
2758
+ response.status,
2759
+ json
2760
+ );
2761
+ }
2762
+ return await response.json();
2763
+ };
2764
+ var post = async (url, data) => {
2765
+ const controller = new AbortController();
2766
+ const { signal } = controller;
2767
+ const timeout = 30 * 60 * 1e3;
2768
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
2769
+ const response = await fetch(url, {
2770
+ method: "POST",
2771
+ headers: {
2772
+ "content-type": "application/json",
2773
+ accept: "application/json"
2774
+ },
2775
+ body: JSON.stringify(data),
2776
+ signal
2777
+ });
2778
+ clearTimeout(timeoutId);
2779
+ if (response.status !== 200) {
2780
+ let json;
2781
+ try {
2782
+ json = await response.json();
2783
+ } catch (e) {
2784
+ }
2785
+ throw new BadResponseError(
2786
+ `Bad response: ${response.status}`,
2787
+ response.status,
2788
+ json
2789
+ );
2790
+ }
2791
+ return await response.json();
2792
+ };
2793
+ var defaultShouldRetry = (err) => {
2794
+ return err instanceof BadResponseError && err.status >= 500;
2795
+ };
2796
+ var retries = async (tryFn, maxTries = 3, linearBackoffMS = 200, shouldRetry = defaultShouldRetry) => {
2797
+ return retriesGeneric({
2798
+ tryFn,
2799
+ maxTries,
2800
+ linearBackoffMS,
2801
+ shouldRetryOnError: shouldRetry
2802
+ });
2803
+ };
2804
+ var httpClient = {
2805
+ get,
2806
+ post,
2807
+ retries
2808
+ };
2809
+
2810
+ // src/apis/subgraph-getter.ts
2811
+ var SubgraphGetter = class {
2812
+ constructor(chainId, subgraphQuerier) {
2813
+ this.subgraphQuerier = subgraphQuerier || new SubgraphQuerier(httpClient);
2814
+ this.networkConfig = getApiNetworkConfigForChain(chainId);
2815
+ }
2816
+ async querySubgraphWithRetries({
2817
+ query,
2818
+ variables,
2819
+ parseResponseData
2820
+ }) {
2821
+ const responseData = await this.subgraphQuerier.query({
2822
+ subgraphUrl: this.networkConfig.subgraphUrl,
2823
+ query,
2824
+ variables
2825
+ });
2826
+ return parseResponseData(responseData);
2827
+ }
2828
+ };
2829
+
2810
2830
  // src/mint/subgraph-mint-getter.ts
2811
2831
  var getApiNetworkConfigForChain = (chainId) => {
2812
2832
  if (!networkConfigByChain[chainId]) {
@@ -2916,8 +2936,9 @@ function getTargetStrategy({
2916
2936
  }
2917
2937
  return targetStrategy;
2918
2938
  }
2919
- var SubgraphMintGetter = class {
2939
+ var SubgraphMintGetter = class extends SubgraphGetter {
2920
2940
  constructor(chainId, subgraphQuerier) {
2941
+ super(chainId, subgraphQuerier);
2921
2942
  this.getMintable = async ({
2922
2943
  tokenAddress,
2923
2944
  tokenId,
@@ -2942,24 +2963,10 @@ var SubgraphMintGetter = class {
2942
2963
  blockTime
2943
2964
  });
2944
2965
  };
2945
- this.subgraphQuerier = subgraphQuerier || new SubgraphQuerier(httpClient);
2946
- this.networkConfig = getApiNetworkConfigForChain(chainId);
2947
2966
  }
2948
2967
  async getContractMintFee(contract) {
2949
2968
  return BigInt(contract.mintFeePerQuantity);
2950
2969
  }
2951
- async querySubgraphWithRetries({
2952
- query,
2953
- variables,
2954
- parseResponseData
2955
- }) {
2956
- const responseData = await this.subgraphQuerier.query({
2957
- subgraphUrl: this.networkConfig.subgraphUrl,
2958
- query,
2959
- variables
2960
- });
2961
- return parseResponseData(responseData);
2962
- }
2963
2970
  async getContractMintable({
2964
2971
  tokenAddress,
2965
2972
  preferredSaleType,
@@ -5388,22 +5395,9 @@ function buildContractInfoQuery({
5388
5395
  }
5389
5396
 
5390
5397
  // src/create/contract-getter.ts
5391
- var SubgraphContractGetter = class {
5398
+ var SubgraphContractGetter = class extends SubgraphGetter {
5392
5399
  constructor(chainId, subgraphQuerier) {
5393
- this.subgraphQuerier = subgraphQuerier || new SubgraphQuerier(httpClient);
5394
- this.networkConfig = getApiNetworkConfigForChain(chainId);
5395
- }
5396
- async querySubgraphWithRetries({
5397
- query,
5398
- variables,
5399
- parseResponseData
5400
- }) {
5401
- const responseData = await this.subgraphQuerier.query({
5402
- subgraphUrl: this.networkConfig.subgraphUrl,
5403
- query,
5404
- variables
5405
- });
5406
- return parseResponseData(responseData);
5400
+ super(chainId, subgraphQuerier);
5407
5401
  }
5408
5402
  async getContractInfo({
5409
5403
  contractAddress,
@@ -5434,6 +5428,246 @@ var SubgraphContractGetter = class {
5434
5428
  }
5435
5429
  };
5436
5430
 
5431
+ // src/rewards/rewards-queries.ts
5432
+ var import_protocol_deployments12 = require("@zoralabs/protocol-deployments");
5433
+ var import_viem12 = require("viem");
5434
+
5435
+ // src/apis/multicall3.ts
5436
+ var multicall3Abi = [
5437
+ "struct Call { address target; bytes callData; }",
5438
+ "struct Call3 { address target; bool allowFailure; bytes callData; }",
5439
+ "struct Call3Value { address target; bool allowFailure; uint256 value; bytes callData; }",
5440
+ "struct Result { bool success; bytes returnData; }",
5441
+ "function aggregate(Call[] calldata calls) public payable returns (uint256 blockNumber, bytes[] memory returnData)",
5442
+ "function aggregate3(Call3[] calldata calls) public payable returns (Result[] memory returnData)",
5443
+ "function aggregate3Value(Call3Value[] calldata calls) public payable returns (Result[] memory returnData)"
5444
+ ];
5445
+ var multicall3Address = "0xcA11bde05977b3631167028862bE2a173976CA11";
5446
+
5447
+ // src/rewards/rewards-queries.ts
5448
+ function aggregateUnclaimedFees(unclaimedFees, wethAddress2) {
5449
+ let ethBalance = 0n;
5450
+ const unclaimedFeesAggregate = unclaimedFees.reduce(
5451
+ (acc, fee) => {
5452
+ const addFee = (token, amount) => {
5453
+ if (token === wethAddress2) {
5454
+ ethBalance += amount;
5455
+ } else if (acc[token]) {
5456
+ acc[token] += amount;
5457
+ } else {
5458
+ acc[token] = amount;
5459
+ }
5460
+ };
5461
+ addFee(fee.token0, fee.token0Amount * 75n / 100n);
5462
+ addFee(fee.token1, fee.token1Amount * 75n / 100n);
5463
+ return acc;
5464
+ },
5465
+ {}
5466
+ );
5467
+ return {
5468
+ eth: ethBalance * 75n / 100n,
5469
+ // Apply 75% fee to ETH balance
5470
+ erc20: unclaimedFeesAggregate
5471
+ };
5472
+ }
5473
+ var getRewardsBalance = async ({
5474
+ account,
5475
+ // The account to check rewards for (Address or Account object)
5476
+ publicClient,
5477
+ // The public client for making blockchain queries
5478
+ chainId,
5479
+ // The ID of the blockchain network
5480
+ rewardsGetter
5481
+ // Interface for getting ERC20Z tokens for a creator
5482
+ }) => {
5483
+ const address = typeof account === "string" ? account : account.address;
5484
+ const erc20Zs = await rewardsGetter.getErc20ZzForCreator({ address });
5485
+ const result = await publicClient.multicall({
5486
+ contracts: [
5487
+ {
5488
+ address: import_protocol_deployments12.protocolRewardsAddress[chainId],
5489
+ abi: import_protocol_deployments12.protocolRewardsABI,
5490
+ functionName: "balanceOf",
5491
+ args: [address]
5492
+ },
5493
+ {
5494
+ address: import_protocol_deployments12.erc20ZRoyaltiesAddress[chainId],
5495
+ abi: import_protocol_deployments12.erc20ZRoyaltiesABI,
5496
+ functionName: "getUnclaimedFeesBatch",
5497
+ args: [erc20Zs]
5498
+ }
5499
+ ],
5500
+ multicallAddress: multicall3Address,
5501
+ allowFailure: false
5502
+ });
5503
+ const protocolRewardsBalance = result[0];
5504
+ const wethAddressForChain = import_protocol_deployments12.wethAddress[chainId];
5505
+ const unclaimedFeesAggregate = aggregateUnclaimedFees(
5506
+ result[1],
5507
+ wethAddressForChain
5508
+ );
5509
+ return {
5510
+ protocolRewards: protocolRewardsBalance,
5511
+ secondaryRoyalties: unclaimedFeesAggregate
5512
+ };
5513
+ };
5514
+ var withdrawProtocolRewards = ({
5515
+ withdrawFor,
5516
+ chainId
5517
+ }) => {
5518
+ return makeContractParameters({
5519
+ abi: import_protocol_deployments12.protocolRewardsABI,
5520
+ functionName: "withdrawFor",
5521
+ address: import_protocol_deployments12.protocolRewardsAddress[chainId],
5522
+ args: [withdrawFor, 0n]
5523
+ });
5524
+ };
5525
+ var makeClaimSecondaryRoyaltiesCalls = async ({
5526
+ claimFor,
5527
+ chainId,
5528
+ rewardsGetter
5529
+ }) => {
5530
+ const erc20z = await rewardsGetter.getErc20ZzForCreator({
5531
+ address: claimFor
5532
+ });
5533
+ const royaltiesAddress = import_protocol_deployments12.erc20ZRoyaltiesAddress[chainId];
5534
+ if (erc20z.length === 0) {
5535
+ return [];
5536
+ }
5537
+ return erc20z.map((erc20z2) => ({
5538
+ target: royaltiesAddress,
5539
+ callData: (0, import_viem12.encodeFunctionData)({
5540
+ abi: import_protocol_deployments12.erc20ZRoyaltiesABI,
5541
+ functionName: "claimFor",
5542
+ args: [erc20z2]
5543
+ }),
5544
+ allowFailure: false
5545
+ }));
5546
+ };
5547
+ var createProtocolRewardsCall = (chainId, withdrawFor) => ({
5548
+ target: import_protocol_deployments12.protocolRewardsAddress[chainId],
5549
+ callData: (0, import_viem12.encodeFunctionData)({
5550
+ abi: import_protocol_deployments12.protocolRewardsABI,
5551
+ functionName: "withdrawFor",
5552
+ args: [withdrawFor, 0n]
5553
+ }),
5554
+ allowFailure: false
5555
+ });
5556
+ var createMulticallParameters = (calls, account) => makeContractParameters({
5557
+ abi: (0, import_viem12.parseAbi)(multicall3Abi),
5558
+ functionName: "aggregate3",
5559
+ address: multicall3Address,
5560
+ args: [calls],
5561
+ account
5562
+ });
5563
+ var withdrawRewards = async ({
5564
+ account,
5565
+ withdrawFor,
5566
+ claimSecondaryRoyalties = true,
5567
+ chainId,
5568
+ rewardsGetter
5569
+ }) => {
5570
+ if (!claimSecondaryRoyalties) {
5571
+ return {
5572
+ ...withdrawProtocolRewards({ chainId, withdrawFor }),
5573
+ account
5574
+ };
5575
+ }
5576
+ const protocolRewardsCall = createProtocolRewardsCall(chainId, withdrawFor);
5577
+ const secondaryRoyaltiesCalls = await makeClaimSecondaryRoyaltiesCalls({
5578
+ chainId,
5579
+ claimFor: withdrawFor,
5580
+ rewardsGetter
5581
+ });
5582
+ const allCalls = [protocolRewardsCall, ...secondaryRoyaltiesCalls];
5583
+ return createMulticallParameters(allCalls, account);
5584
+ };
5585
+
5586
+ // src/rewards/rewards-client.ts
5587
+ var RewardsClient = class {
5588
+ constructor({
5589
+ chainId,
5590
+ publicClient,
5591
+ rewardsGetter
5592
+ }) {
5593
+ this.chainId = chainId;
5594
+ this.publicClient = publicClient;
5595
+ this.rewardsGetter = rewardsGetter;
5596
+ }
5597
+ /** Withdraws rewards for a given account */
5598
+ async withdrawRewards({
5599
+ account,
5600
+ withdrawFor,
5601
+ claimSecondaryRoyalties
5602
+ }) {
5603
+ return {
5604
+ parameters: await withdrawRewards({
5605
+ chainId: this.chainId,
5606
+ rewardsGetter: this.rewardsGetter,
5607
+ withdrawFor,
5608
+ claimSecondaryRoyalties,
5609
+ account
5610
+ })
5611
+ };
5612
+ }
5613
+ /** Retrieves the rewards balances for a given account */
5614
+ async getRewardsBalances(params) {
5615
+ return getRewardsBalance({
5616
+ account: params.account,
5617
+ chainId: this.chainId,
5618
+ publicClient: this.publicClient,
5619
+ rewardsGetter: this.rewardsGetter
5620
+ });
5621
+ }
5622
+ };
5623
+
5624
+ // src/rewards/subgraph-queries.ts
5625
+ function buildCreatorERC20zs({
5626
+ address
5627
+ }) {
5628
+ return {
5629
+ query: `
5630
+ query ($address: Bytes!) {
5631
+ zoraCreateTokens(
5632
+ where: { royalties_: { user: $address }, salesStrategies_: { type: "ZORA_TIMED" } }
5633
+ ) {
5634
+ royalties {
5635
+ user
5636
+ }
5637
+ salesStrategies {
5638
+ zoraTimedMinter {
5639
+ erc20Z {
5640
+ id
5641
+ }
5642
+ }
5643
+ }
5644
+ }
5645
+ }
5646
+ `,
5647
+ variables: { address },
5648
+ parseResponseData: (responseData) => {
5649
+ return responseData?.zoraCreateTokens;
5650
+ }
5651
+ };
5652
+ }
5653
+
5654
+ // src/rewards/subgraph-rewards-getter.ts
5655
+ var SubgraphRewardsGetter = class extends SubgraphGetter {
5656
+ constructor(chainId, subgraphQuerier) {
5657
+ super(chainId, subgraphQuerier);
5658
+ }
5659
+ async getErc20ZzForCreator({
5660
+ address
5661
+ }) {
5662
+ const queryResults = await this.querySubgraphWithRetries(
5663
+ buildCreatorERC20zs({ address })
5664
+ );
5665
+ return queryResults?.map(
5666
+ (result) => result.salesStrategies[0].zoraTimedMinter.erc20Z.id
5667
+ ) || [];
5668
+ }
5669
+ };
5670
+
5437
5671
  // src/sdk.ts
5438
5672
  function createCreatorClient(clientConfig) {
5439
5673
  const premintClient = new PremintClient({
@@ -5446,12 +5680,19 @@ function createCreatorClient(clientConfig) {
5446
5680
  publicClient: clientConfig.publicClient,
5447
5681
  contractGetter: clientConfig.contractGetter || new SubgraphContractGetter(clientConfig.chainId)
5448
5682
  });
5683
+ const rewardsClient = new RewardsClient({
5684
+ chainId: clientConfig.chainId,
5685
+ publicClient: clientConfig.publicClient,
5686
+ rewardsGetter: clientConfig.rewardsGetter || new SubgraphRewardsGetter(clientConfig.chainId)
5687
+ });
5449
5688
  return {
5450
5689
  createPremint: (p) => premintClient.createPremint(p),
5451
5690
  updatePremint: (p) => premintClient.updatePremint(p),
5452
5691
  deletePremint: (p) => premintClient.deletePremint(p),
5453
5692
  create1155: (p) => create1155CreatorClient.createNew1155(p),
5454
- create1155OnExistingContract: (p) => create1155CreatorClient.createNew1155OnExistingContract(p)
5693
+ create1155OnExistingContract: (p) => create1155CreatorClient.createNew1155OnExistingContract(p),
5694
+ getRewardsBalances: (p) => rewardsClient.getRewardsBalances(p),
5695
+ withdrawRewards: (p) => rewardsClient.withdrawRewards(p)
5455
5696
  };
5456
5697
  }
5457
5698
  function createCollectorClient(params) {