@zoralabs/protocol-sdk 0.11.0 → 0.11.2

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.
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export * from "./premint/premint-api-client";
5
5
  export * from "./premint/conversions";
6
6
  export * from "./mint/subgraph-mint-getter";
7
7
  export * from "./mint/mint-client";
8
+ export { type MintParameters, type GetMintParameters, type GetMintsOfContractParameters, type MintTypes, type SaleType, type GetMintCostsParameters, type MakeMintParametersArguments, type SaleStrategies, type ContractInfo, type SalesConfigAndTokenInfo, type GetMintableReturn, type IOnchainMintGetter, type MintCosts, type Erc20Approval, type PrepareMintReturn, type MintableReturn, type PrepareMint, type MintParametersBase, } from "./mint/types";
8
9
  export * from "./create/1155-create-helper";
9
10
  export * from "./sparks/mints-queries";
10
11
  export * from "./sparks/sparks-contracts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AAEzC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,uBAAuB,CAAC;AAEtC,cAAc,6BAA6B,CAAC;AAE5C,cAAc,oBAAoB,CAAC;AAEnC,cAAc,6BAA6B,CAAC;AAE5C,cAAc,wBAAwB,CAAC;AAEvC,cAAc,2BAA2B,CAAC;AAE1C,OAAO,EACL,KAAK,kDAAkD,EACvD,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,GACtC,MAAM,0BAA0B,CAAC;AAElC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,OAAO,CAAC;AAEtB,cAAc,QAAQ,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AAEzC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,uBAAuB,CAAC;AAEtC,cAAc,6BAA6B,CAAC;AAE5C,cAAc,oBAAoB,CAAC;AACnC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,EACjC,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,cAAc,CAAC;AAEtB,cAAc,6BAA6B,CAAC;AAE5C,cAAc,wBAAwB,CAAC;AAEvC,cAAc,2BAA2B,CAAC;AAE1C,OAAO,EACL,KAAK,kDAAkD,EACvD,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,GACtC,MAAM,0BAA0B,CAAC;AAElC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,OAAO,CAAC;AAEtB,cAAc,QAAQ,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,cAAc,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -2786,100 +2786,123 @@ var getApiNetworkConfigForChain = (chainId) => {
2786
2786
  }
2787
2787
  return networkConfigByChain[chainId];
2788
2788
  };
2789
- function parseSalesConfig(targetStrategy, contractMintFee) {
2790
- if (targetStrategy.type === "FIXED_PRICE")
2791
- return {
2789
+ function parseFixedPriceSalesConfig(fixedPrice, contractMintFee, blockTime) {
2790
+ const saleEnd = BigInt(fixedPrice.saleEnd);
2791
+ return {
2792
+ salesStrategy: {
2792
2793
  saleType: "fixedPrice",
2793
- ...targetStrategy.fixedPrice,
2794
- maxTokensPerAddress: BigInt(
2795
- targetStrategy.fixedPrice.maxTokensPerAddress
2796
- ),
2797
- pricePerToken: BigInt(targetStrategy.fixedPrice.pricePerToken),
2794
+ ...fixedPrice,
2795
+ maxTokensPerAddress: BigInt(fixedPrice.maxTokensPerAddress),
2796
+ pricePerToken: BigInt(fixedPrice.pricePerToken),
2798
2797
  mintFeePerQuantity: contractMintFee
2799
- };
2800
- if (targetStrategy.type === "ERC_20_MINTER") {
2801
- return {
2798
+ },
2799
+ saleEnd,
2800
+ saleActive: BigInt(fixedPrice.saleStart) <= blockTime && BigInt(saleEnd) > blockTime
2801
+ };
2802
+ }
2803
+ function parseERC20SalesConfig(erc20Minter, blockTime) {
2804
+ const saleEnd = BigInt(erc20Minter.saleEnd);
2805
+ return {
2806
+ salesStrategy: {
2802
2807
  saleType: "erc20",
2803
- ...targetStrategy.erc20Minter,
2804
- maxTokensPerAddress: BigInt(
2805
- targetStrategy.erc20Minter.maxTokensPerAddress
2806
- ),
2807
- pricePerToken: BigInt(targetStrategy.erc20Minter.pricePerToken),
2808
+ ...erc20Minter,
2809
+ maxTokensPerAddress: BigInt(erc20Minter.maxTokensPerAddress),
2810
+ pricePerToken: BigInt(erc20Minter.pricePerToken),
2808
2811
  mintFeePerQuantity: 0n
2809
- };
2810
- }
2811
- if (targetStrategy.type === "PRESALE") {
2812
- return {
2812
+ },
2813
+ saleEnd,
2814
+ saleActive: BigInt(erc20Minter.saleStart) <= blockTime && saleEnd > blockTime
2815
+ };
2816
+ }
2817
+ function parsePresaleSalesConfig(presale, contractMintFee, blockTime) {
2818
+ const saleEnd = BigInt(presale.presaleEnd);
2819
+ return {
2820
+ salesStrategy: {
2813
2821
  saleType: "allowlist",
2814
- address: targetStrategy.presale.address,
2815
- merkleRoot: targetStrategy.presale.merkleRoot,
2816
- saleStart: targetStrategy.presale.presaleStart,
2817
- saleEnd: targetStrategy.presale.presaleEnd,
2822
+ address: presale.address,
2823
+ merkleRoot: presale.merkleRoot,
2824
+ saleStart: presale.presaleStart,
2825
+ saleEnd: presale.presaleEnd,
2818
2826
  mintFeePerQuantity: contractMintFee
2819
- };
2820
- }
2821
- if (targetStrategy.type === "ZORA_TIMED") {
2822
- return {
2823
- saleType: "timed",
2824
- address: targetStrategy.zoraTimedMinter.address,
2825
- mintFee: BigInt(targetStrategy.zoraTimedMinter.mintFee),
2826
- saleStart: targetStrategy.zoraTimedMinter.saleStart,
2827
- saleEnd: targetStrategy.zoraTimedMinter.saleEnd,
2828
- erc20Z: targetStrategy.zoraTimedMinter.erc20Z.id,
2829
- pool: targetStrategy.zoraTimedMinter.erc20Z.pool,
2830
- secondaryActivated: targetStrategy.zoraTimedMinter.secondaryActivated,
2831
- mintFeePerQuantity: BigInt(targetStrategy.zoraTimedMinter.mintFee),
2832
- marketCountdown: targetStrategy.zoraTimedMinter.marketCountdown ? BigInt(targetStrategy.zoraTimedMinter.marketCountdown) : void 0,
2833
- minimumMarketEth: targetStrategy.zoraTimedMinter.minimumMarketEth ? BigInt(targetStrategy.zoraTimedMinter.minimumMarketEth) : void 0
2834
- };
2835
- }
2836
- throw new Error("Unknown saleType");
2827
+ },
2828
+ saleEnd,
2829
+ saleActive: BigInt(presale.presaleStart) <= blockTime && saleEnd > blockTime
2830
+ };
2837
2831
  }
2838
- function getSaleEnd(a) {
2839
- if (a.type === "FIXED_PRICE")
2840
- return BigInt(a.fixedPrice.saleEnd);
2841
- if (a.type === "ERC_20_MINTER")
2842
- return BigInt(a.erc20Minter.saleEnd);
2843
- if (a.type === "ZORA_TIMED")
2844
- return BigInt(a.zoraTimedMinter.saleEnd);
2845
- return BigInt(a.presale.presaleEnd);
2832
+ function parseZoraTimedSalesConfig(zoraTimedMinter, blockTime) {
2833
+ const saleEnd = BigInt(zoraTimedMinter.saleEnd);
2834
+ const hasSaleEnd = saleEnd > 0n;
2835
+ return {
2836
+ salesStrategy: {
2837
+ saleType: "timed",
2838
+ address: zoraTimedMinter.address,
2839
+ mintFee: BigInt(zoraTimedMinter.mintFee),
2840
+ saleStart: zoraTimedMinter.saleStart,
2841
+ saleEnd: zoraTimedMinter.saleEnd,
2842
+ erc20Z: zoraTimedMinter.erc20Z.id,
2843
+ pool: zoraTimedMinter.erc20Z.pool,
2844
+ secondaryActivated: zoraTimedMinter.secondaryActivated,
2845
+ mintFeePerQuantity: BigInt(zoraTimedMinter.mintFee),
2846
+ marketCountdown: zoraTimedMinter.marketCountdown ? BigInt(zoraTimedMinter.marketCountdown) : void 0,
2847
+ minimumMarketEth: zoraTimedMinter.minimumMarketEth ? BigInt(zoraTimedMinter.minimumMarketEth) : void 0
2848
+ },
2849
+ saleEnd: hasSaleEnd ? saleEnd : void 0,
2850
+ secondaryMarketActive: zoraTimedMinter.secondaryActivated,
2851
+ saleActive: BigInt(zoraTimedMinter.saleStart) <= blockTime && (hasSaleEnd ? saleEnd > blockTime : true)
2852
+ };
2846
2853
  }
2847
- function strategyIsStillValid(strategy, blockTime) {
2848
- if (strategy.type === "FIXED_PRICE") {
2849
- return BigInt(strategy.fixedPrice.saleEnd) > blockTime;
2850
- }
2851
- if (strategy.type === "ERC_20_MINTER") {
2852
- return BigInt(strategy.erc20Minter.saleEnd) > blockTime;
2853
- }
2854
- if (strategy.type === "ZORA_TIMED") {
2855
- return BigInt(strategy.zoraTimedMinter.saleEnd) === 0n || BigInt(strategy.zoraTimedMinter.saleEnd) > blockTime;
2854
+ function parseSalesConfig(targetStrategy, contractMintFee, blockTime) {
2855
+ switch (targetStrategy.type) {
2856
+ case "FIXED_PRICE":
2857
+ return parseFixedPriceSalesConfig(
2858
+ targetStrategy.fixedPrice,
2859
+ contractMintFee,
2860
+ blockTime
2861
+ );
2862
+ case "ERC_20_MINTER":
2863
+ return parseERC20SalesConfig(targetStrategy.erc20Minter, blockTime);
2864
+ case "PRESALE":
2865
+ return parsePresaleSalesConfig(
2866
+ targetStrategy.presale,
2867
+ contractMintFee,
2868
+ blockTime
2869
+ );
2870
+ case "ZORA_TIMED":
2871
+ return parseZoraTimedSalesConfig(
2872
+ targetStrategy.zoraTimedMinter,
2873
+ blockTime
2874
+ );
2875
+ default:
2876
+ throw new Error("Unknown saleType");
2856
2877
  }
2857
- return BigInt(strategy.presale.presaleEnd) > blockTime;
2858
2878
  }
2859
2879
  function getTargetStrategy({
2860
2880
  tokenId,
2861
2881
  preferredSaleType,
2862
2882
  token,
2863
- blockTime
2883
+ blockTime,
2884
+ contractMintFee
2864
2885
  }) {
2865
2886
  const allStrategies = (typeof tokenId !== "undefined" ? token.salesStrategies : token.contract.salesStrategies) || [];
2866
- const stillValidSalesStrategies = allStrategies.filter(
2867
- (strategy) => strategyIsStillValid(strategy, blockTime)
2887
+ const parsedStrategies = allStrategies.map(
2888
+ (strategy) => parseSalesConfig(strategy, contractMintFee, blockTime)
2889
+ );
2890
+ const stillValidSalesStrategies = parsedStrategies.filter(
2891
+ (strategy) => strategy.saleActive
2868
2892
  );
2869
2893
  const saleStrategies = stillValidSalesStrategies.sort(
2870
- (a, b) => getSaleEnd(a) > getSaleEnd(b) ? 1 : -1
2894
+ (a, b) => (a.saleEnd ?? 0n) > (b.saleEnd ?? 0n) ? 1 : -1
2871
2895
  );
2872
2896
  let targetStrategy;
2873
2897
  if (!preferredSaleType) {
2874
2898
  return saleStrategies[0];
2875
2899
  } else {
2876
- const mappedSaleType = preferredSaleType === "erc20" ? "ERC_20_MINTER" : "FIXED_PRICE";
2877
2900
  targetStrategy = saleStrategies.find(
2878
- (strategy) => strategy.type === mappedSaleType
2901
+ ({ salesStrategy }) => salesStrategy.saleType === preferredSaleType
2879
2902
  );
2880
2903
  if (!targetStrategy) {
2881
2904
  const targetStrategy2 = saleStrategies.find(
2882
- (strategy) => strategy.type === "FIXED_PRICE" || strategy.type === "ERC_20_MINTER"
2905
+ ({ salesStrategy }) => salesStrategy.saleType === "timed" || salesStrategy.saleType === "fixedPrice" || salesStrategy.saleType === "erc20"
2883
2906
  );
2884
2907
  if (!targetStrategy2)
2885
2908
  throw new Error("Cannot find valid sale strategy");
@@ -2956,7 +2979,7 @@ var SubgraphMintGetter = class extends SubgraphGetter {
2956
2979
  })) || [];
2957
2980
  }
2958
2981
  };
2959
- function getTargetStrategyAndMintFee({
2982
+ function getTargetStrategyAndMintFeeAndSaleActive({
2960
2983
  token,
2961
2984
  tokenId,
2962
2985
  preferredSaleType,
@@ -2967,12 +2990,10 @@ function getTargetStrategyAndMintFee({
2967
2990
  tokenId,
2968
2991
  preferredSaleType,
2969
2992
  token,
2970
- blockTime
2993
+ blockTime,
2994
+ contractMintFee: defaultMintFee
2971
2995
  });
2972
- if (!targetStrategy)
2973
- return void 0;
2974
- const salesConfig = parseSalesConfig(targetStrategy, defaultMintFee);
2975
- return salesConfig;
2996
+ return targetStrategy;
2976
2997
  }
2977
2998
  function parseTokenQueryResult({
2978
2999
  token,
@@ -2981,7 +3002,7 @@ function parseTokenQueryResult({
2981
3002
  defaultMintFee,
2982
3003
  blockTime
2983
3004
  }) {
2984
- const salesConfig = getTargetStrategyAndMintFee({
3005
+ const salesStrategyAndMintInfo = getTargetStrategyAndMintFeeAndSaleActive({
2985
3006
  token,
2986
3007
  tokenId,
2987
3008
  preferredSaleType,
@@ -2992,8 +3013,13 @@ function parseTokenQueryResult({
2992
3013
  token
2993
3014
  });
2994
3015
  return {
2995
- ...tokenInfo,
2996
- salesConfig
3016
+ salesConfigAndTokenInfo: {
3017
+ ...tokenInfo,
3018
+ salesConfig: salesStrategyAndMintInfo?.salesStrategy
3019
+ },
3020
+ primaryMintActive: salesStrategyAndMintInfo?.saleActive ?? false,
3021
+ primaryMintEnd: salesStrategyAndMintInfo?.saleEnd,
3022
+ secondaryMarketActive: salesStrategyAndMintInfo?.secondaryMarketActive ?? false
2997
3023
  };
2998
3024
  }
2999
3025
  function parseTokenInfo({
@@ -4012,7 +4038,7 @@ async function getMintCosts({
4012
4038
  if (isOnChainMint(params)) {
4013
4039
  const tokenId = is1155Mint(params) ? params.tokenId : void 0;
4014
4040
  const blockTime = (await publicClient.getBlock()).timestamp;
4015
- const salesConfigAndTokenInfo = await mintGetter.getMintable({
4041
+ const { salesConfigAndTokenInfo } = await mintGetter.getMintable({
4016
4042
  tokenId,
4017
4043
  tokenAddress: collection,
4018
4044
  blockTime
@@ -4071,6 +4097,10 @@ async function getPremintsOfContractMintable({
4071
4097
  });
4072
4098
  });
4073
4099
  }
4100
+ function isPrimaryMintActive(premint) {
4101
+ const currentTime = (/* @__PURE__ */ new Date()).getTime() / 1e3;
4102
+ return premint.premintConfig.tokenConfig.mintStart < currentTime;
4103
+ }
4074
4104
  function parsePremint({
4075
4105
  premint,
4076
4106
  mintFee
@@ -4117,27 +4147,58 @@ var makeOnchainPrepareMint = (result) => (params) => {
4117
4147
  };
4118
4148
  };
4119
4149
  function toMintableReturn(result) {
4120
- return { token: result, prepareMint: makeOnchainPrepareMint(result) };
4150
+ const primaryMintActive = result.primaryMintActive;
4151
+ if (!primaryMintActive) {
4152
+ return {
4153
+ token: result.salesConfigAndTokenInfo,
4154
+ primaryMintActive,
4155
+ primaryMintEnd: result.primaryMintEnd,
4156
+ secondaryMarketActive: result.secondaryMarketActive,
4157
+ prepareMint: void 0
4158
+ };
4159
+ }
4160
+ return {
4161
+ token: result.salesConfigAndTokenInfo,
4162
+ primaryMintActive,
4163
+ primaryMintEnd: result.primaryMintEnd,
4164
+ secondaryMarketActive: result.secondaryMarketActive,
4165
+ prepareMint: makeOnchainPrepareMint(result.salesConfigAndTokenInfo)
4166
+ };
4121
4167
  }
4122
- var makePremintPrepareMint = (mintable, mintFee, premint) => (params) => ({
4123
- parameters: buildPremintMintCall({
4124
- mintArguments: params,
4125
- mintFee,
4126
- premint
4127
- }),
4128
- costs: parseMintCosts({
4129
- quantityToMint: BigInt(params.quantityToMint),
4130
- salesConfig: mintable.salesConfig,
4131
- allowListEntry: params.allowListEntry
4132
- })
4133
- });
4168
+ var makePremintPrepareMint = (mintable, mintFee, premint) => {
4169
+ return (params) => {
4170
+ return {
4171
+ parameters: buildPremintMintCall({
4172
+ mintArguments: params,
4173
+ mintFee,
4174
+ premint
4175
+ }),
4176
+ costs: parseMintCosts({
4177
+ quantityToMint: BigInt(params.quantityToMint),
4178
+ salesConfig: mintable.salesConfig,
4179
+ allowListEntry: params.allowListEntry
4180
+ })
4181
+ };
4182
+ };
4183
+ };
4134
4184
  function toPremintMintReturn({
4135
4185
  premint,
4136
4186
  mintFee
4137
4187
  }) {
4138
4188
  const mintable = parsePremint({ premint, mintFee });
4189
+ const primaryMintActive = isPrimaryMintActive(premint.premint);
4190
+ if (!primaryMintActive) {
4191
+ return {
4192
+ token: mintable,
4193
+ primaryMintActive,
4194
+ prepareMint: void 0,
4195
+ secondaryMarketActive: false
4196
+ };
4197
+ }
4139
4198
  return {
4140
4199
  token: mintable,
4200
+ primaryMintActive,
4201
+ secondaryMarketActive: false,
4141
4202
  prepareMint: makePremintPrepareMint(mintable, mintFee, premint)
4142
4203
  };
4143
4204
  }
@@ -4233,12 +4294,15 @@ async function mint({
4233
4294
  mintGetter,
4234
4295
  premintGetter
4235
4296
  }) {
4236
- const { prepareMint } = await getMint({
4297
+ const { prepareMint, primaryMintActive } = await getMint({
4237
4298
  params: parameters,
4238
4299
  mintGetter,
4239
4300
  premintGetter,
4240
4301
  publicClient
4241
4302
  });
4303
+ if (!primaryMintActive) {
4304
+ throw new Error("Primary mint is not active");
4305
+ }
4242
4306
  return prepareMint({
4243
4307
  minterAccount: parameters.minterAccount,
4244
4308
  quantityToMint: parameters.quantityToMint,