@hypercerts-org/marketplace-sdk 0.3.12 → 0.3.14

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.esm.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { Contract, ZeroAddress, AbiCoder, TypedDataEncoder, keccak256, solidityPackedKeccak256, ethers, ZeroHash, MaxUint256 } from 'ethers';
2
- import { HypercertExchangeAbi, TransferManagerAbi, OrderValidatorV2AAbi, deployments } from '@hypercerts-org/contracts';
2
+ import { HypercertExchangeAbi, TransferManagerAbi, OrderValidatorV2AAbi, deployments, asDeployedChain as asDeployedChain$2 } from '@hypercerts-org/contracts';
3
3
  import { MerkleTree } from 'merkletreejs';
4
4
  import { keccak256 as keccak256$1 } from 'js-sha3';
5
5
  import { createClient } from '@supabase/supabase-js';
6
- import { CONSTANTS, parseClaimOrFractionId } from '@hypercerts-org/sdk';
6
+ import { parseClaimOrFractionId, CONSTANTS } from '@hypercerts-org/sdk';
7
7
 
8
8
  var abiIERC721 = [
9
9
  {
@@ -686,7 +686,11 @@ var strategies = /*#__PURE__*/Object.freeze({
686
686
  var ChainId;
687
687
  (function (ChainId) {
688
688
  ChainId[ChainId["SEPOLIA"] = 11155111] = "SEPOLIA";
689
+ ChainId[ChainId["BASE_SEPOLIA"] = 84532] = "BASE_SEPOLIA";
689
690
  ChainId[ChainId["HARDHAT"] = 31337] = "HARDHAT";
691
+ ChainId[ChainId["OPTIMISM"] = 10] = "OPTIMISM";
692
+ ChainId[ChainId["CELO"] = 42220] = "CELO";
693
+ ChainId[ChainId["BASE"] = 8453] = "BASE";
690
694
  })(ChainId || (ChainId = {}));
691
695
  /** List of collection types supported by the protocol */
692
696
  var CollectionType;
@@ -1095,26 +1099,119 @@ const sepoliaAddresses = {
1095
1099
  EXCHANGE_V2: deployments[11155111].HypercertExchange,
1096
1100
  TRANSFER_MANAGER_V2: deployments[11155111].TransferManager,
1097
1101
  ORDER_VALIDATOR_V2: deployments[11155111].OrderValidatorV2A,
1098
- WETH: "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9",
1099
1102
  MINTER: deployments[11155111].HypercertMinterUUPS,
1100
1103
  };
1104
+ const baseSepoliaAddresses = {
1105
+ EXCHANGE_V2: deployments[84532].HypercertExchange,
1106
+ TRANSFER_MANAGER_V2: deployments[84532].TransferManager,
1107
+ ORDER_VALIDATOR_V2: deployments[84532].OrderValidatorV2A,
1108
+ MINTER: deployments[84532].HypercertMinterUUPS,
1109
+ };
1110
+ const optimismAddresses = {
1111
+ EXCHANGE_V2: deployments[10].HypercertExchange,
1112
+ TRANSFER_MANAGER_V2: deployments[10].TransferManager,
1113
+ ORDER_VALIDATOR_V2: deployments[10].OrderValidatorV2A,
1114
+ MINTER: deployments[10].HypercertMinterUUPS,
1115
+ };
1116
+ const celoAddresses = {
1117
+ EXCHANGE_V2: deployments[42220].HypercertExchange,
1118
+ TRANSFER_MANAGER_V2: deployments[42220].TransferManager,
1119
+ ORDER_VALIDATOR_V2: deployments[42220].OrderValidatorV2A,
1120
+ MINTER: deployments[42220].HypercertMinterUUPS,
1121
+ };
1122
+ const baseAddresses = {
1123
+ EXCHANGE_V2: deployments[8453].HypercertExchange,
1124
+ TRANSFER_MANAGER_V2: deployments[8453].TransferManager,
1125
+ ORDER_VALIDATOR_V2: deployments[8453].OrderValidatorV2A,
1126
+ MINTER: deployments[8453].HypercertMinterUUPS,
1127
+ };
1101
1128
  /**
1102
1129
  * List of useful contract addresses
1103
1130
  */
1104
1131
  const addressesByNetwork = {
1132
+ // Testnets
1105
1133
  [ChainId.SEPOLIA]: sepoliaAddresses,
1106
1134
  [ChainId.HARDHAT]: sepoliaAddresses,
1135
+ [ChainId.BASE_SEPOLIA]: baseSepoliaAddresses,
1136
+ // Production nets
1137
+ [ChainId.OPTIMISM]: optimismAddresses,
1138
+ [ChainId.CELO]: celoAddresses,
1139
+ [ChainId.BASE]: baseAddresses,
1140
+ };
1141
+
1142
+ const currencyAddressesPerChain = {
1143
+ [ChainId.SEPOLIA]: {
1144
+ ETH: ZeroAddress,
1145
+ WETH: "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9",
1146
+ DAI: "0x68194a729C2450ad26072b3D33ADaCbcef39D574",
1147
+ USDC: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
1148
+ },
1149
+ [ChainId.HARDHAT]: {
1150
+ ETH: ZeroAddress,
1151
+ WETH: "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9",
1152
+ DAI: "0x68194a729C2450ad26072b3D33ADaCbcef39D574",
1153
+ USDC: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
1154
+ },
1155
+ [ChainId.BASE_SEPOLIA]: {
1156
+ ETH: ZeroAddress,
1157
+ WETH: "0x1BDD24840e119DC2602dCC587Dd182812427A5Cc",
1158
+ DAI: "0xbEC8ab89b34835F6b99fFc29c088426E8e708ceA",
1159
+ USDC: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
1160
+ },
1161
+ [ChainId.OPTIMISM]: {
1162
+ ETH: ZeroAddress,
1163
+ WETH: "0x4200000000000000000000000000000000000006",
1164
+ DAI: "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1",
1165
+ USDC: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
1166
+ },
1167
+ [ChainId.CELO]: {
1168
+ ETH: ZeroAddress,
1169
+ WETH: "0x66803fb87abd4aac3cbb3fad7c3aa01f6f3fb207",
1170
+ DAI: "0xE4fE50cdD716522A56204352f00AA110F731932d",
1171
+ USDC: "0xef4229c8c3250C675F21BCefa42f58EfbfF6002a",
1172
+ },
1173
+ [ChainId.BASE]: {
1174
+ ETH: ZeroAddress,
1175
+ WETH: "0x4200000000000000000000000000000000000006",
1176
+ DAI: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb",
1177
+ USDC: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
1178
+ },
1179
+ };
1180
+ const getCurrencies = (chainId) => {
1181
+ const currenciesForChain = currencyAddressesPerChain[chainId];
1182
+ return {
1183
+ ETH: {
1184
+ symbol: "ETH",
1185
+ address: currenciesForChain.ETH,
1186
+ decimals: 18,
1187
+ },
1188
+ WETH: {
1189
+ symbol: "WETH",
1190
+ address: currenciesForChain.WETH,
1191
+ decimals: 18,
1192
+ },
1193
+ DAI: {
1194
+ symbol: "DAI",
1195
+ address: currenciesForChain.DAI,
1196
+ decimals: 18,
1197
+ },
1198
+ USDC: {
1199
+ symbol: "USDC",
1200
+ address: currenciesForChain.USDC,
1201
+ decimals: 6,
1202
+ },
1203
+ };
1204
+ };
1205
+ const currenciesByNetwork = {
1206
+ [ChainId.SEPOLIA]: getCurrencies(ChainId.SEPOLIA),
1207
+ [ChainId.HARDHAT]: getCurrencies(ChainId.HARDHAT),
1208
+ [ChainId.BASE_SEPOLIA]: getCurrencies(ChainId.BASE_SEPOLIA),
1209
+ [ChainId.OPTIMISM]: getCurrencies(ChainId.OPTIMISM),
1210
+ [ChainId.CELO]: getCurrencies(ChainId.CELO),
1211
+ [ChainId.BASE]: getCurrencies(ChainId.BASE),
1107
1212
  };
1108
1213
 
1109
1214
  const chainInfo = {
1110
- // [ChainId.GOERLI]: {
1111
- // label: "Goerli",
1112
- // appUrl: "https://goerli.looksrare.org",
1113
- // explorer: "https://goerli.etherscan.io",
1114
- // rpcUrl: "https://eth-goerli.g.alchemy.com/v2",
1115
- // baseApiUrl: "https://graphql-goerli.looksrare.org",
1116
- // osApiUrl: "https://testnets-api.opensea.io",
1117
- // },
1118
1215
  [ChainId.SEPOLIA]: {
1119
1216
  label: "Sepolia",
1120
1217
  appUrl: "https://sepolia.looksrare.org",
@@ -1131,6 +1228,38 @@ const chainInfo = {
1131
1228
  baseApiUrl: "http://localhost:4000",
1132
1229
  osApiUrl: "https://testnets-api.opensea.io",
1133
1230
  },
1231
+ [ChainId.BASE_SEPOLIA]: {
1232
+ label: "Base Sepolia",
1233
+ appUrl: "https://sepolia.base.looksrare.org",
1234
+ explorer: "https://sepolia.basescan.org",
1235
+ rpcUrl: "https://sepolia.base.org",
1236
+ baseApiUrl: "https://api-sepolia.basescan.org/api",
1237
+ osApiUrl: "https://testnets-api.opensea.io",
1238
+ },
1239
+ [ChainId.OPTIMISM]: {
1240
+ label: "Optimism",
1241
+ appUrl: "https://optimism.looksrare.org",
1242
+ explorer: "https://optimism.etherscan.io",
1243
+ rpcUrl: "https://optimism.g.alchemy.com/v2",
1244
+ baseApiUrl: "https://graphql-optimism.looksrare.org",
1245
+ osApiUrl: "https://testnets-api.opensea.io",
1246
+ },
1247
+ [ChainId.CELO]: {
1248
+ label: "Celo",
1249
+ appUrl: "https://celo.looksrare.org",
1250
+ explorer: "https://explorer.celo.org",
1251
+ rpcUrl: "https://forno.celo.org",
1252
+ baseApiUrl: "https://api.celo.looksrare.org",
1253
+ osApiUrl: "https://testnets-api.opensea.io",
1254
+ },
1255
+ [ChainId.BASE]: {
1256
+ label: "Base",
1257
+ appUrl: "https://base.looksrare.org",
1258
+ explorer: "https://base.etherscan.io",
1259
+ rpcUrl: "https://eth-base.g.alchemy.com/v2",
1260
+ baseApiUrl: "https://graphql-base.looksrare.org",
1261
+ osApiUrl: "https://testnets-api.opensea.io",
1262
+ },
1134
1263
  };
1135
1264
 
1136
1265
  /** Maximum amount of orders in a merkle tree
@@ -5512,9 +5641,69 @@ function print(e) {
5512
5641
  return m$1[e.kind] ? m$1[e.kind](e) : "";
5513
5642
  }
5514
5643
 
5644
+ function initGraphQLTada() {
5645
+ function graphql(e, i) {
5646
+ var a = parse(e).definitions;
5647
+ var t = new Set;
5648
+ for (var s of i || []) {
5649
+ for (var d of s.definitions) {
5650
+ if (d.kind === e$2.FRAGMENT_DEFINITION && !t.has(d)) {
5651
+ a.push(d);
5652
+ t.add(d);
5653
+ }
5654
+ }
5655
+ }
5656
+ if (a[0].kind === e$2.FRAGMENT_DEFINITION && a[0].directives) {
5657
+ a[0].directives = a[0].directives.filter((n => "_unmask" !== n.name.value));
5658
+ }
5659
+ return {
5660
+ kind: e$2.DOCUMENT,
5661
+ definitions: a
5662
+ };
5663
+ }
5664
+ graphql.scalar = function scalar(n, r) {
5665
+ return r;
5666
+ };
5667
+ graphql.persisted = function persisted(r, e) {
5668
+ return {
5669
+ kind: e$2.DOCUMENT,
5670
+ definitions: e ? e.definitions : [],
5671
+ documentId: r
5672
+ };
5673
+ };
5674
+ return graphql;
5675
+ }
5676
+
5677
+ var e$1 = initGraphQLTada();
5678
+
5679
+ const fractionsByIdQuery = e$1(`
5680
+ query fractionsById($fraction_id: String!) {
5681
+ fractions(where: { hypercert_id: { eq: $fraction_id } }) {
5682
+ data {
5683
+ creation_block_timestamp
5684
+ fraction_id
5685
+ last_update_block_timestamp
5686
+ owner_address
5687
+ units
5688
+ }
5689
+ }
5690
+ }
5691
+ `);
5692
+ const getFractionsById = async (fractionId, client) => {
5693
+ const { data, error } = await client
5694
+ .query(fractionsByIdQuery, {
5695
+ fraction_id: fractionId,
5696
+ })
5697
+ .toPromise();
5698
+ if (error) {
5699
+ throw new Error(error.message);
5700
+ }
5701
+ return data?.fractions.data;
5702
+ };
5703
+
5515
5704
  var teardownPlaceholder = () => {};
5516
5705
 
5517
- var e$1 = teardownPlaceholder;
5706
+ var e = teardownPlaceholder;
5518
5707
 
5519
5708
  function start(e) {
5520
5709
  return {
@@ -5536,7 +5725,7 @@ var identity = e => e;
5536
5725
 
5537
5726
  function filter(r) {
5538
5727
  return t => i => {
5539
- var a = e$1;
5728
+ var a = e;
5540
5729
  t((e => {
5541
5730
  if (0 === e) {
5542
5731
  i(0);
@@ -5565,7 +5754,7 @@ function map(e) {
5565
5754
  function mergeMap(r) {
5566
5755
  return t => i => {
5567
5756
  var a = [];
5568
- var f = e$1;
5757
+ var f = e;
5569
5758
  var n = !1;
5570
5759
  var s = !1;
5571
5760
  t((t => {
@@ -5579,7 +5768,7 @@ function mergeMap(r) {
5579
5768
  } else {
5580
5769
  n = !1;
5581
5770
  !function applyInnerSource(r) {
5582
- var t = e$1;
5771
+ var t = e;
5583
5772
  r((e => {
5584
5773
  if (0 === e) {
5585
5774
  if (a.length) {
@@ -5708,7 +5897,7 @@ function onStart(e) {
5708
5897
 
5709
5898
  function share(r) {
5710
5899
  var t = [];
5711
- var i = e$1;
5900
+ var i = e;
5712
5901
  var a = !1;
5713
5902
  return e => {
5714
5903
  t.push(e);
@@ -5748,8 +5937,8 @@ function share(r) {
5748
5937
 
5749
5938
  function switchMap(r) {
5750
5939
  return t => i => {
5751
- var a = e$1;
5752
- var f = e$1;
5940
+ var a = e;
5941
+ var f = e;
5753
5942
  var n = !1;
5754
5943
  var s = !1;
5755
5944
  var l = !1;
@@ -5765,7 +5954,7 @@ function switchMap(r) {
5765
5954
  } else {
5766
5955
  if (l) {
5767
5956
  f(1);
5768
- f = e$1;
5957
+ f = e;
5769
5958
  }
5770
5959
  if (!n) {
5771
5960
  n = !0;
@@ -5825,7 +6014,7 @@ function switchMap(r) {
5825
6014
 
5826
6015
  function take(r) {
5827
6016
  return t => i => {
5828
- var a = e$1;
6017
+ var a = e;
5829
6018
  var f = !1;
5830
6019
  var n = 0;
5831
6020
  t((e => {
@@ -5864,8 +6053,8 @@ function take(r) {
5864
6053
 
5865
6054
  function takeUntil(r) {
5866
6055
  return t => i => {
5867
- var a = e$1;
5868
- var f = e$1;
6056
+ var a = e;
6057
+ var f = e;
5869
6058
  var n = !1;
5870
6059
  t((e => {
5871
6060
  if (n) ; else if (0 === e) {
@@ -5902,7 +6091,7 @@ function takeUntil(r) {
5902
6091
 
5903
6092
  function takeWhile(r, t) {
5904
6093
  return i => a => {
5905
- var f = e$1;
6094
+ var f = e;
5906
6095
  var n = !1;
5907
6096
  i((e => {
5908
6097
  if (n) ; else if (0 === e) {
@@ -6086,7 +6275,7 @@ function makeSubject() {
6086
6275
 
6087
6276
  function subscribe(r) {
6088
6277
  return t => {
6089
- var i = e$1;
6278
+ var i = e;
6090
6279
  var a = !1;
6091
6280
  t((e => {
6092
6281
  if (0 === e) {
@@ -6115,7 +6304,7 @@ function publish(e) {
6115
6304
 
6116
6305
  function toPromise(r) {
6117
6306
  return new Promise((t => {
6118
- var i = e$1;
6307
+ var i = e;
6119
6308
  var a;
6120
6309
  r((e => {
6121
6310
  if (0 === e) {
@@ -7238,76 +7427,12 @@ var C = function Client(e) {
7238
7427
  return p;
7239
7428
  };
7240
7429
 
7241
- function initGraphQLTada() {
7242
- function graphql(e, i) {
7243
- var a = parse(e).definitions;
7244
- var t = new Set;
7245
- for (var s of i || []) {
7246
- for (var d of s.definitions) {
7247
- if (d.kind === e$2.FRAGMENT_DEFINITION && !t.has(d)) {
7248
- a.push(d);
7249
- t.add(d);
7250
- }
7251
- }
7252
- }
7253
- if (a[0].kind === e$2.FRAGMENT_DEFINITION && a[0].directives) {
7254
- a[0].directives = a[0].directives.filter((n => "_unmask" !== n.name.value));
7255
- }
7256
- return {
7257
- kind: e$2.DOCUMENT,
7258
- definitions: a
7259
- };
7260
- }
7261
- graphql.scalar = function scalar(n, r) {
7262
- return r;
7263
- };
7264
- graphql.persisted = function persisted(r, e) {
7265
- return {
7266
- kind: e$2.DOCUMENT,
7267
- definitions: e ? e.definitions : [],
7268
- documentId: r
7269
- };
7270
- };
7271
- return graphql;
7272
- }
7273
-
7274
- var e = initGraphQLTada();
7275
-
7276
- const urqlClient = new C({
7277
- url: CONSTANTS.ENDPOINTS["test"],
7278
- exchanges: [cacheExchange, fetchExchange],
7279
- });
7280
- const fractionsByIdQuery = e(`
7281
- query fractionsById($fraction_id: String!) {
7282
- fractions(where: { hypercert_id: { eq: $fraction_id } }) {
7283
- data {
7284
- creation_block_timestamp
7285
- fraction_id
7286
- last_update_block_timestamp
7287
- owner_address
7288
- units
7289
- }
7290
- }
7291
- }
7292
- `);
7293
- const getFractionsById = async (fractionId) => {
7294
- const { data, error } = await urqlClient
7295
- .query(fractionsByIdQuery, {
7296
- fraction_id: fractionId,
7297
- })
7298
- .toPromise();
7299
- if (error) {
7300
- throw new Error(error.message);
7301
- }
7302
- return data?.fractions.data;
7303
- };
7304
-
7305
- const HYPERCERTS_MARKETPLACE_API_URL = process.env.HYPERCERTS_MARKETPLACE_API_URL;
7306
- const SUPABASE_HYPERCERTS_URL = process.env.SUPABASE_HYPERCERTS_URL;
7307
- const SUPABASE_HYPERCERTS_ANON_KEY = process.env.SUPABASE_HYPERCERTS_ANON_KEY;
7308
- const supabaseHypercerts = createClient(SUPABASE_HYPERCERTS_URL, SUPABASE_HYPERCERTS_ANON_KEY);
7430
+ const SUPABASE_HYPERCERTS_DATA_STAGING_URL = "https://zgvoyckkistexkfdmjqc.supabase.co";
7431
+ const SUPABASE_HYPERCERTS_DATA_STAGING_ANON_KEY_STAGING = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inpndm95Y2traXN0ZXhrZmRtanFjIiwicm9sZSI6ImFub24iLCJpYXQiOjE2OTc4ODM1MjAsImV4cCI6MjAxMzQ1OTUyMH0.6FWDhwP3ZOM1O3ObvyRKtOsvwhJjbrZL2B1N-0MSpFg";
7432
+ const SUPABASE_HYPERCERTS_DATA_PRODUCTION_URL = "https://ueebbafxdbglaqtyslwv.supabase.co";
7433
+ const SUPABASE_HYPERCERTS_DATA_PRODUCTION_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InVlZWJiYWZ4ZGJnbGFxdHlzbHd2Iiwicm9sZSI6ImFub24iLCJpYXQiOjE2OTc1NTA1MzUsImV4cCI6MjAxMzEyNjUzNX0.mhClRFe8QL6IQLMvTXjdprR6agr_OXF9g2CUJBww4mE";
7309
7434
  class ApiClient {
7310
- constructor(baseUrl) {
7435
+ constructor(indexerEnvironment, baseUrl) {
7311
7436
  this.baseUrl = baseUrl;
7312
7437
  /**
7313
7438
  * Fetches order nonce from api
@@ -7362,7 +7487,7 @@ class ApiClient {
7362
7487
  * @param strategy strategy for the order
7363
7488
  */
7364
7489
  this.fetchOrders = async ({ signer, claimTokenIds, chainId, strategy }) => {
7365
- let baseQuery = supabaseHypercerts.from("marketplace_orders").select("*");
7490
+ let baseQuery = this._supabaseHypercerts.from("marketplace_orders").select("*");
7366
7491
  if (signer) {
7367
7492
  baseQuery.eq("signer", signer);
7368
7493
  }
@@ -7383,9 +7508,9 @@ class ApiClient {
7383
7508
  * @param chainId Chain ID
7384
7509
  */
7385
7510
  this.fetchOrdersByHypercertId = async ({ hypercertId }) => {
7386
- const fractions = await getFractionsById(hypercertId);
7511
+ const fractions = await getFractionsById(hypercertId, this._urqlClient);
7387
7512
  const tokenIds = fractions?.flatMap(() => fractions.map((fraction) => parseClaimOrFractionId(fraction.fraction_id).id)) || [];
7388
- const result = await supabaseHypercerts.from("marketplace_orders").select("*").overlaps("itemIds", tokenIds);
7513
+ const result = await this._supabaseHypercerts.from("marketplace_orders").select("*").overlaps("itemIds", tokenIds);
7389
7514
  return result;
7390
7515
  };
7391
7516
  this.handleResponse = async (res) => {
@@ -7395,11 +7520,18 @@ class ApiClient {
7395
7520
  }
7396
7521
  return (await res.json());
7397
7522
  };
7398
- const url = baseUrl || HYPERCERTS_MARKETPLACE_API_URL;
7523
+ const url = baseUrl || `${CONSTANTS.ENDPOINTS[indexerEnvironment]}/v1`;
7399
7524
  if (!url) {
7400
7525
  throw new Error("No API URL provided");
7401
7526
  }
7402
7527
  this._baseUrl = url;
7528
+ this._urqlClient = new C({
7529
+ url: `${CONSTANTS.ENDPOINTS[indexerEnvironment]}/v1/graphql`,
7530
+ exchanges: [cacheExchange, fetchExchange],
7531
+ });
7532
+ this._supabaseHypercerts = createClient(indexerEnvironment === "test" ? SUPABASE_HYPERCERTS_DATA_STAGING_URL : SUPABASE_HYPERCERTS_DATA_PRODUCTION_URL, indexerEnvironment === "test"
7533
+ ? SUPABASE_HYPERCERTS_DATA_STAGING_ANON_KEY_STAGING
7534
+ : SUPABASE_HYPERCERTS_DATA_PRODUCTION_ANON_KEY);
7403
7535
  }
7404
7536
  }
7405
7537
 
@@ -7416,14 +7548,20 @@ class HypercertExchangeClient {
7416
7548
  * @param overrides Override contract addresses or api endpoint used
7417
7549
  */
7418
7550
  constructor(chainId, provider, signer, overrides) {
7551
+ const deployment = CONSTANTS.DEPLOYMENTS[asDeployedChain$2(chainId)];
7552
+ if (!deployment) {
7553
+ throw new Error("Chain not supported");
7554
+ }
7555
+ const indexerEnvironment = deployment.isTestnet ? "test" : "production";
7419
7556
  this.chainId = chainId;
7420
7557
  this.addresses = overrides?.addresses ?? addressesByNetwork[this.chainId];
7558
+ this.currencies = overrides?.currencies ?? currenciesByNetwork[this.chainId];
7421
7559
  this.signer = signer;
7422
7560
  this.provider = provider;
7423
- this.api = new ApiClient(overrides?.apiEndpoint);
7561
+ this.api = new ApiClient(indexerEnvironment, overrides?.apiEndpoint);
7424
7562
  }
7425
7563
  /**
7426
- * Return the signer it it's set, throw an exception otherwise
7564
+ * Return the signer if it's set, throw an exception otherwise
7427
7565
  * @returns Signer
7428
7566
  */
7429
7567
  getSigner() {
@@ -7498,7 +7636,7 @@ class HypercertExchangeClient {
7498
7636
  * @param CreateMakerInput
7499
7637
  * @returns the maker object, isCurrencyApproved, and isBalanceSufficient
7500
7638
  */
7501
- async createMakerBid({ collection, strategyId, collectionType, subsetNonce, orderNonce, endTime, price, itemIds, amounts = [1], currency = this.addresses.WETH, startTime = Math.floor(Date.now() / 1000), additionalParameters = [], }) {
7639
+ async createMakerBid({ collection, strategyId, collectionType, subsetNonce, orderNonce, endTime, price, itemIds, amounts = [1], currency = this.currencies.WETH.address, startTime = Math.floor(Date.now() / 1000), additionalParameters = [], }) {
7502
7640
  const signer = this.getSigner();
7503
7641
  if (!this.isTimestampValid(startTime) || !this.isTimestampValid(endTime)) {
7504
7642
  throw new ErrorTimestamp();
@@ -7805,7 +7943,7 @@ class HypercertExchangeClient {
7805
7943
  * @param currency Currency used to buy the fractions (default to WETH)
7806
7944
  * @param additionalParameters Additional parameters used to support complex orders
7807
7945
  */
7808
- async createDirectFractionsSaleMakerAsk({ itemIds, price, startTime, endTime, currency = this.addresses.WETH, additionalParameters = [], }) {
7946
+ async createDirectFractionsSaleMakerAsk({ itemIds, price, startTime, endTime, currency = this.currencies.WETH.address, additionalParameters = [], }) {
7809
7947
  const address = await this.signer?.getAddress();
7810
7948
  if (!address) {
7811
7949
  throw new Error("No signer address could be determined");
@@ -7846,7 +7984,7 @@ class HypercertExchangeClient {
7846
7984
  * @param sellLeftoverFraction Whether or not the seller wants to sell the leftover units
7847
7985
  * @param root Merkle tree root (optional)
7848
7986
  */
7849
- async createFractionalSaleMakerAsk({ itemIds, price, startTime, endTime, currency = this.addresses.WETH, maxUnitAmount, minUnitAmount, minUnitsToKeep, sellLeftoverFraction, root, }) {
7987
+ async createFractionalSaleMakerAsk({ itemIds, price, startTime, endTime, currency = this.currencies.WETH.address, maxUnitAmount, minUnitAmount, minUnitsToKeep, sellLeftoverFraction, root, }) {
7850
7988
  const address = await this.signer?.getAddress();
7851
7989
  if (!address) {
7852
7990
  throw new Error("No signer address could be determined");
@@ -7931,4 +8069,4 @@ const utils = {
7931
8069
  ...asDeployedChain$1,
7932
8070
  };
7933
8071
 
7934
- export { ApiClient, ChainId, CollectionType, Eip712MakerMerkleTree, Eip712MerkleTree, ErrorItemId, ErrorMerkleTreeDepth, ErrorQuoteType, ErrorSigner, ErrorStrategyType, ErrorTimestamp, HypercertExchangeClient, IERC1155 as IERC1155Abi, abiIERC20 as IERC20Abi, abiIERC721 as IERC721Abi, LooksRareProtocol as LooksRareProtocolAbi, MAX_ORDERS_PER_TREE, MerkleTreeNodePosition, OrderValidatorCode, OrderValidatorV2A as OrderValidatorV2AAbi, QuoteType, StrategyType, TransferManager as TransferManagerAbi, WETH as WETHAbi, addressesByNetwork, chainInfo, defaultMerkleTree, utils };
8072
+ export { ApiClient, ChainId, CollectionType, Eip712MakerMerkleTree, Eip712MerkleTree, ErrorItemId, ErrorMerkleTreeDepth, ErrorQuoteType, ErrorSigner, ErrorStrategyType, ErrorTimestamp, HypercertExchangeClient, IERC1155 as IERC1155Abi, abiIERC20 as IERC20Abi, abiIERC721 as IERC721Abi, LooksRareProtocol as LooksRareProtocolAbi, MAX_ORDERS_PER_TREE, MerkleTreeNodePosition, OrderValidatorCode, OrderValidatorV2A as OrderValidatorV2AAbi, QuoteType, StrategyType, TransferManager as TransferManagerAbi, WETH as WETHAbi, addressesByNetwork, chainInfo, currenciesByNetwork, defaultMerkleTree, utils };
package/dist/types.d.ts CHANGED
@@ -4,14 +4,30 @@ import { Eip712MakerMerkleTree } from "./utils/Eip712MakerMerkleTree";
4
4
  export interface Addresses {
5
5
  EXCHANGE_V2: `0x${string}`;
6
6
  TRANSFER_MANAGER_V2: `0x${string}`;
7
- WETH: `0x${string}`;
8
7
  ORDER_VALIDATOR_V2: `0x${string}`;
9
8
  MINTER: `0x${string}`;
10
9
  }
10
+ /** List of supported currencies */
11
+ export interface Currencies {
12
+ ETH: Currency;
13
+ WETH: Currency;
14
+ USDC: Currency;
15
+ DAI: Currency;
16
+ }
17
+ /** Available information about a currency */
18
+ interface Currency {
19
+ symbol: string;
20
+ address: `0x${string}`;
21
+ decimals: number;
22
+ }
11
23
  /** List of supported chains */
12
24
  export declare enum ChainId {
13
25
  SEPOLIA = 11155111,
14
- HARDHAT = 31337
26
+ BASE_SEPOLIA = 84532,
27
+ HARDHAT = 31337,
28
+ OPTIMISM = 10,
29
+ CELO = 42220,
30
+ BASE = 8453
15
31
  }
16
32
  /** ChainInfo data used to interact with HypercertExchange ecosystem */
17
33
  export interface ChainInfo {
@@ -239,3 +255,4 @@ export declare enum OrderValidatorCode {
239
255
  BUNDLE_ERC2981_NOT_SUPPORTED = 901,
240
256
  CREATOR_FEE_TOO_HIGH = 902
241
257
  }
258
+ export {};