@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.
@@ -1,5 +1,5 @@
1
1
  import { BigNumberish, ContractTransactionResponse, Overrides, Provider, Signer, TypedDataDomain } from "ethers";
2
- import { Addresses, BatchTransferItem, ChainId, ContractMethods, CreateMakerAskOutput, CreateMakerBidOutput, CreateMakerCollectionOfferInput, CreateMakerCollectionOfferWithProofInput, CreateMakerInput, Maker, MerkleTree, OrderValidatorCode, SignMerkleTreeOrdersOutput, StrategyInfo, StrategyType, Taker } from "./types";
2
+ import { Addresses, BatchTransferItem, ChainId, ContractMethods, CreateMakerAskOutput, CreateMakerBidOutput, CreateMakerCollectionOfferInput, CreateMakerCollectionOfferWithProofInput, CreateMakerInput, Currencies, Maker, MerkleTree, OrderValidatorCode, SignMerkleTreeOrdersOutput, StrategyInfo, StrategyType, Taker } from "./types";
3
3
  import { ApiClient } from "./utils/api";
4
4
  /**
5
5
  * HypercertExchange
@@ -10,6 +10,9 @@ export declare class HypercertExchangeClient {
10
10
  readonly chainId: ChainId;
11
11
  /** Mapping of Hypercert protocol addresses for the current chain */
12
12
  readonly addresses: Addresses;
13
+ /** List of supported currencies for the current chain */
14
+ readonly currencies: Currencies;
15
+ /** API client to interact with the HypercertExchange API */
13
16
  readonly api: ApiClient;
14
17
  /**
15
18
  * Ethers signer
@@ -30,10 +33,11 @@ export declare class HypercertExchangeClient {
30
33
  */
31
34
  constructor(chainId: ChainId, provider: Provider, signer?: Signer, overrides?: {
32
35
  addresses: Addresses;
36
+ currencies: Currencies;
33
37
  apiEndpoint?: string;
34
38
  });
35
39
  /**
36
- * Return the signer it it's set, throw an exception otherwise
40
+ * Return the signer if it's set, throw an exception otherwise
37
41
  * @returns Signer
38
42
  */
39
43
  private getSigner;
@@ -0,0 +1,2 @@
1
+ import { ChainId, Currencies } from "../types";
2
+ export declare const currenciesByNetwork: Record<ChainId, Currencies>;
@@ -11,4 +11,5 @@ export declare const defaultMerkleTree: {
11
11
  proof: never[];
12
12
  };
13
13
  export { addressesByNetwork } from "./addresses";
14
+ export { currenciesByNetwork } from "./currencies";
14
15
  export { chainInfo } from "./chains";
package/dist/index.cjs.js CHANGED
@@ -688,7 +688,11 @@ var strategies = /*#__PURE__*/Object.freeze({
688
688
  exports.ChainId = void 0;
689
689
  (function (ChainId) {
690
690
  ChainId[ChainId["SEPOLIA"] = 11155111] = "SEPOLIA";
691
+ ChainId[ChainId["BASE_SEPOLIA"] = 84532] = "BASE_SEPOLIA";
691
692
  ChainId[ChainId["HARDHAT"] = 31337] = "HARDHAT";
693
+ ChainId[ChainId["OPTIMISM"] = 10] = "OPTIMISM";
694
+ ChainId[ChainId["CELO"] = 42220] = "CELO";
695
+ ChainId[ChainId["BASE"] = 8453] = "BASE";
692
696
  })(exports.ChainId || (exports.ChainId = {}));
693
697
  /** List of collection types supported by the protocol */
694
698
  exports.CollectionType = void 0;
@@ -1097,26 +1101,119 @@ const sepoliaAddresses = {
1097
1101
  EXCHANGE_V2: contracts.deployments[11155111].HypercertExchange,
1098
1102
  TRANSFER_MANAGER_V2: contracts.deployments[11155111].TransferManager,
1099
1103
  ORDER_VALIDATOR_V2: contracts.deployments[11155111].OrderValidatorV2A,
1100
- WETH: "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9",
1101
1104
  MINTER: contracts.deployments[11155111].HypercertMinterUUPS,
1102
1105
  };
1106
+ const baseSepoliaAddresses = {
1107
+ EXCHANGE_V2: contracts.deployments[84532].HypercertExchange,
1108
+ TRANSFER_MANAGER_V2: contracts.deployments[84532].TransferManager,
1109
+ ORDER_VALIDATOR_V2: contracts.deployments[84532].OrderValidatorV2A,
1110
+ MINTER: contracts.deployments[84532].HypercertMinterUUPS,
1111
+ };
1112
+ const optimismAddresses = {
1113
+ EXCHANGE_V2: contracts.deployments[10].HypercertExchange,
1114
+ TRANSFER_MANAGER_V2: contracts.deployments[10].TransferManager,
1115
+ ORDER_VALIDATOR_V2: contracts.deployments[10].OrderValidatorV2A,
1116
+ MINTER: contracts.deployments[10].HypercertMinterUUPS,
1117
+ };
1118
+ const celoAddresses = {
1119
+ EXCHANGE_V2: contracts.deployments[42220].HypercertExchange,
1120
+ TRANSFER_MANAGER_V2: contracts.deployments[42220].TransferManager,
1121
+ ORDER_VALIDATOR_V2: contracts.deployments[42220].OrderValidatorV2A,
1122
+ MINTER: contracts.deployments[42220].HypercertMinterUUPS,
1123
+ };
1124
+ const baseAddresses = {
1125
+ EXCHANGE_V2: contracts.deployments[8453].HypercertExchange,
1126
+ TRANSFER_MANAGER_V2: contracts.deployments[8453].TransferManager,
1127
+ ORDER_VALIDATOR_V2: contracts.deployments[8453].OrderValidatorV2A,
1128
+ MINTER: contracts.deployments[8453].HypercertMinterUUPS,
1129
+ };
1103
1130
  /**
1104
1131
  * List of useful contract addresses
1105
1132
  */
1106
1133
  const addressesByNetwork = {
1134
+ // Testnets
1107
1135
  [exports.ChainId.SEPOLIA]: sepoliaAddresses,
1108
1136
  [exports.ChainId.HARDHAT]: sepoliaAddresses,
1137
+ [exports.ChainId.BASE_SEPOLIA]: baseSepoliaAddresses,
1138
+ // Production nets
1139
+ [exports.ChainId.OPTIMISM]: optimismAddresses,
1140
+ [exports.ChainId.CELO]: celoAddresses,
1141
+ [exports.ChainId.BASE]: baseAddresses,
1142
+ };
1143
+
1144
+ const currencyAddressesPerChain = {
1145
+ [exports.ChainId.SEPOLIA]: {
1146
+ ETH: ethers.ZeroAddress,
1147
+ WETH: "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9",
1148
+ DAI: "0x68194a729C2450ad26072b3D33ADaCbcef39D574",
1149
+ USDC: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
1150
+ },
1151
+ [exports.ChainId.HARDHAT]: {
1152
+ ETH: ethers.ZeroAddress,
1153
+ WETH: "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9",
1154
+ DAI: "0x68194a729C2450ad26072b3D33ADaCbcef39D574",
1155
+ USDC: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
1156
+ },
1157
+ [exports.ChainId.BASE_SEPOLIA]: {
1158
+ ETH: ethers.ZeroAddress,
1159
+ WETH: "0x1BDD24840e119DC2602dCC587Dd182812427A5Cc",
1160
+ DAI: "0xbEC8ab89b34835F6b99fFc29c088426E8e708ceA",
1161
+ USDC: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
1162
+ },
1163
+ [exports.ChainId.OPTIMISM]: {
1164
+ ETH: ethers.ZeroAddress,
1165
+ WETH: "0x4200000000000000000000000000000000000006",
1166
+ DAI: "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1",
1167
+ USDC: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
1168
+ },
1169
+ [exports.ChainId.CELO]: {
1170
+ ETH: ethers.ZeroAddress,
1171
+ WETH: "0x66803fb87abd4aac3cbb3fad7c3aa01f6f3fb207",
1172
+ DAI: "0xE4fE50cdD716522A56204352f00AA110F731932d",
1173
+ USDC: "0xef4229c8c3250C675F21BCefa42f58EfbfF6002a",
1174
+ },
1175
+ [exports.ChainId.BASE]: {
1176
+ ETH: ethers.ZeroAddress,
1177
+ WETH: "0x4200000000000000000000000000000000000006",
1178
+ DAI: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb",
1179
+ USDC: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
1180
+ },
1181
+ };
1182
+ const getCurrencies = (chainId) => {
1183
+ const currenciesForChain = currencyAddressesPerChain[chainId];
1184
+ return {
1185
+ ETH: {
1186
+ symbol: "ETH",
1187
+ address: currenciesForChain.ETH,
1188
+ decimals: 18,
1189
+ },
1190
+ WETH: {
1191
+ symbol: "WETH",
1192
+ address: currenciesForChain.WETH,
1193
+ decimals: 18,
1194
+ },
1195
+ DAI: {
1196
+ symbol: "DAI",
1197
+ address: currenciesForChain.DAI,
1198
+ decimals: 18,
1199
+ },
1200
+ USDC: {
1201
+ symbol: "USDC",
1202
+ address: currenciesForChain.USDC,
1203
+ decimals: 6,
1204
+ },
1205
+ };
1206
+ };
1207
+ const currenciesByNetwork = {
1208
+ [exports.ChainId.SEPOLIA]: getCurrencies(exports.ChainId.SEPOLIA),
1209
+ [exports.ChainId.HARDHAT]: getCurrencies(exports.ChainId.HARDHAT),
1210
+ [exports.ChainId.BASE_SEPOLIA]: getCurrencies(exports.ChainId.BASE_SEPOLIA),
1211
+ [exports.ChainId.OPTIMISM]: getCurrencies(exports.ChainId.OPTIMISM),
1212
+ [exports.ChainId.CELO]: getCurrencies(exports.ChainId.CELO),
1213
+ [exports.ChainId.BASE]: getCurrencies(exports.ChainId.BASE),
1109
1214
  };
1110
1215
 
1111
1216
  const chainInfo = {
1112
- // [ChainId.GOERLI]: {
1113
- // label: "Goerli",
1114
- // appUrl: "https://goerli.looksrare.org",
1115
- // explorer: "https://goerli.etherscan.io",
1116
- // rpcUrl: "https://eth-goerli.g.alchemy.com/v2",
1117
- // baseApiUrl: "https://graphql-goerli.looksrare.org",
1118
- // osApiUrl: "https://testnets-api.opensea.io",
1119
- // },
1120
1217
  [exports.ChainId.SEPOLIA]: {
1121
1218
  label: "Sepolia",
1122
1219
  appUrl: "https://sepolia.looksrare.org",
@@ -1133,6 +1230,38 @@ const chainInfo = {
1133
1230
  baseApiUrl: "http://localhost:4000",
1134
1231
  osApiUrl: "https://testnets-api.opensea.io",
1135
1232
  },
1233
+ [exports.ChainId.BASE_SEPOLIA]: {
1234
+ label: "Base Sepolia",
1235
+ appUrl: "https://sepolia.base.looksrare.org",
1236
+ explorer: "https://sepolia.basescan.org",
1237
+ rpcUrl: "https://sepolia.base.org",
1238
+ baseApiUrl: "https://api-sepolia.basescan.org/api",
1239
+ osApiUrl: "https://testnets-api.opensea.io",
1240
+ },
1241
+ [exports.ChainId.OPTIMISM]: {
1242
+ label: "Optimism",
1243
+ appUrl: "https://optimism.looksrare.org",
1244
+ explorer: "https://optimism.etherscan.io",
1245
+ rpcUrl: "https://optimism.g.alchemy.com/v2",
1246
+ baseApiUrl: "https://graphql-optimism.looksrare.org",
1247
+ osApiUrl: "https://testnets-api.opensea.io",
1248
+ },
1249
+ [exports.ChainId.CELO]: {
1250
+ label: "Celo",
1251
+ appUrl: "https://celo.looksrare.org",
1252
+ explorer: "https://explorer.celo.org",
1253
+ rpcUrl: "https://forno.celo.org",
1254
+ baseApiUrl: "https://api.celo.looksrare.org",
1255
+ osApiUrl: "https://testnets-api.opensea.io",
1256
+ },
1257
+ [exports.ChainId.BASE]: {
1258
+ label: "Base",
1259
+ appUrl: "https://base.looksrare.org",
1260
+ explorer: "https://base.etherscan.io",
1261
+ rpcUrl: "https://eth-base.g.alchemy.com/v2",
1262
+ baseApiUrl: "https://graphql-base.looksrare.org",
1263
+ osApiUrl: "https://testnets-api.opensea.io",
1264
+ },
1136
1265
  };
1137
1266
 
1138
1267
  /** Maximum amount of orders in a merkle tree
@@ -5514,9 +5643,69 @@ function print(e) {
5514
5643
  return m$1[e.kind] ? m$1[e.kind](e) : "";
5515
5644
  }
5516
5645
 
5646
+ function initGraphQLTada() {
5647
+ function graphql(e, i) {
5648
+ var a = parse(e).definitions;
5649
+ var t = new Set;
5650
+ for (var s of i || []) {
5651
+ for (var d of s.definitions) {
5652
+ if (d.kind === e$2.FRAGMENT_DEFINITION && !t.has(d)) {
5653
+ a.push(d);
5654
+ t.add(d);
5655
+ }
5656
+ }
5657
+ }
5658
+ if (a[0].kind === e$2.FRAGMENT_DEFINITION && a[0].directives) {
5659
+ a[0].directives = a[0].directives.filter((n => "_unmask" !== n.name.value));
5660
+ }
5661
+ return {
5662
+ kind: e$2.DOCUMENT,
5663
+ definitions: a
5664
+ };
5665
+ }
5666
+ graphql.scalar = function scalar(n, r) {
5667
+ return r;
5668
+ };
5669
+ graphql.persisted = function persisted(r, e) {
5670
+ return {
5671
+ kind: e$2.DOCUMENT,
5672
+ definitions: e ? e.definitions : [],
5673
+ documentId: r
5674
+ };
5675
+ };
5676
+ return graphql;
5677
+ }
5678
+
5679
+ var e$1 = initGraphQLTada();
5680
+
5681
+ const fractionsByIdQuery = e$1(`
5682
+ query fractionsById($fraction_id: String!) {
5683
+ fractions(where: { hypercert_id: { eq: $fraction_id } }) {
5684
+ data {
5685
+ creation_block_timestamp
5686
+ fraction_id
5687
+ last_update_block_timestamp
5688
+ owner_address
5689
+ units
5690
+ }
5691
+ }
5692
+ }
5693
+ `);
5694
+ const getFractionsById = async (fractionId, client) => {
5695
+ const { data, error } = await client
5696
+ .query(fractionsByIdQuery, {
5697
+ fraction_id: fractionId,
5698
+ })
5699
+ .toPromise();
5700
+ if (error) {
5701
+ throw new Error(error.message);
5702
+ }
5703
+ return data?.fractions.data;
5704
+ };
5705
+
5517
5706
  var teardownPlaceholder = () => {};
5518
5707
 
5519
- var e$1 = teardownPlaceholder;
5708
+ var e = teardownPlaceholder;
5520
5709
 
5521
5710
  function start(e) {
5522
5711
  return {
@@ -5538,7 +5727,7 @@ var identity = e => e;
5538
5727
 
5539
5728
  function filter(r) {
5540
5729
  return t => i => {
5541
- var a = e$1;
5730
+ var a = e;
5542
5731
  t((e => {
5543
5732
  if (0 === e) {
5544
5733
  i(0);
@@ -5567,7 +5756,7 @@ function map(e) {
5567
5756
  function mergeMap(r) {
5568
5757
  return t => i => {
5569
5758
  var a = [];
5570
- var f = e$1;
5759
+ var f = e;
5571
5760
  var n = !1;
5572
5761
  var s = !1;
5573
5762
  t((t => {
@@ -5581,7 +5770,7 @@ function mergeMap(r) {
5581
5770
  } else {
5582
5771
  n = !1;
5583
5772
  !function applyInnerSource(r) {
5584
- var t = e$1;
5773
+ var t = e;
5585
5774
  r((e => {
5586
5775
  if (0 === e) {
5587
5776
  if (a.length) {
@@ -5710,7 +5899,7 @@ function onStart(e) {
5710
5899
 
5711
5900
  function share(r) {
5712
5901
  var t = [];
5713
- var i = e$1;
5902
+ var i = e;
5714
5903
  var a = !1;
5715
5904
  return e => {
5716
5905
  t.push(e);
@@ -5750,8 +5939,8 @@ function share(r) {
5750
5939
 
5751
5940
  function switchMap(r) {
5752
5941
  return t => i => {
5753
- var a = e$1;
5754
- var f = e$1;
5942
+ var a = e;
5943
+ var f = e;
5755
5944
  var n = !1;
5756
5945
  var s = !1;
5757
5946
  var l = !1;
@@ -5767,7 +5956,7 @@ function switchMap(r) {
5767
5956
  } else {
5768
5957
  if (l) {
5769
5958
  f(1);
5770
- f = e$1;
5959
+ f = e;
5771
5960
  }
5772
5961
  if (!n) {
5773
5962
  n = !0;
@@ -5827,7 +6016,7 @@ function switchMap(r) {
5827
6016
 
5828
6017
  function take(r) {
5829
6018
  return t => i => {
5830
- var a = e$1;
6019
+ var a = e;
5831
6020
  var f = !1;
5832
6021
  var n = 0;
5833
6022
  t((e => {
@@ -5866,8 +6055,8 @@ function take(r) {
5866
6055
 
5867
6056
  function takeUntil(r) {
5868
6057
  return t => i => {
5869
- var a = e$1;
5870
- var f = e$1;
6058
+ var a = e;
6059
+ var f = e;
5871
6060
  var n = !1;
5872
6061
  t((e => {
5873
6062
  if (n) ; else if (0 === e) {
@@ -5904,7 +6093,7 @@ function takeUntil(r) {
5904
6093
 
5905
6094
  function takeWhile(r, t) {
5906
6095
  return i => a => {
5907
- var f = e$1;
6096
+ var f = e;
5908
6097
  var n = !1;
5909
6098
  i((e => {
5910
6099
  if (n) ; else if (0 === e) {
@@ -6088,7 +6277,7 @@ function makeSubject() {
6088
6277
 
6089
6278
  function subscribe(r) {
6090
6279
  return t => {
6091
- var i = e$1;
6280
+ var i = e;
6092
6281
  var a = !1;
6093
6282
  t((e => {
6094
6283
  if (0 === e) {
@@ -6117,7 +6306,7 @@ function publish(e) {
6117
6306
 
6118
6307
  function toPromise(r) {
6119
6308
  return new Promise((t => {
6120
- var i = e$1;
6309
+ var i = e;
6121
6310
  var a;
6122
6311
  r((e => {
6123
6312
  if (0 === e) {
@@ -7240,76 +7429,12 @@ var C = function Client(e) {
7240
7429
  return p;
7241
7430
  };
7242
7431
 
7243
- function initGraphQLTada() {
7244
- function graphql(e, i) {
7245
- var a = parse(e).definitions;
7246
- var t = new Set;
7247
- for (var s of i || []) {
7248
- for (var d of s.definitions) {
7249
- if (d.kind === e$2.FRAGMENT_DEFINITION && !t.has(d)) {
7250
- a.push(d);
7251
- t.add(d);
7252
- }
7253
- }
7254
- }
7255
- if (a[0].kind === e$2.FRAGMENT_DEFINITION && a[0].directives) {
7256
- a[0].directives = a[0].directives.filter((n => "_unmask" !== n.name.value));
7257
- }
7258
- return {
7259
- kind: e$2.DOCUMENT,
7260
- definitions: a
7261
- };
7262
- }
7263
- graphql.scalar = function scalar(n, r) {
7264
- return r;
7265
- };
7266
- graphql.persisted = function persisted(r, e) {
7267
- return {
7268
- kind: e$2.DOCUMENT,
7269
- definitions: e ? e.definitions : [],
7270
- documentId: r
7271
- };
7272
- };
7273
- return graphql;
7274
- }
7275
-
7276
- var e = initGraphQLTada();
7277
-
7278
- const urqlClient = new C({
7279
- url: sdk.CONSTANTS.ENDPOINTS["test"],
7280
- exchanges: [cacheExchange, fetchExchange],
7281
- });
7282
- const fractionsByIdQuery = e(`
7283
- query fractionsById($fraction_id: String!) {
7284
- fractions(where: { hypercert_id: { eq: $fraction_id } }) {
7285
- data {
7286
- creation_block_timestamp
7287
- fraction_id
7288
- last_update_block_timestamp
7289
- owner_address
7290
- units
7291
- }
7292
- }
7293
- }
7294
- `);
7295
- const getFractionsById = async (fractionId) => {
7296
- const { data, error } = await urqlClient
7297
- .query(fractionsByIdQuery, {
7298
- fraction_id: fractionId,
7299
- })
7300
- .toPromise();
7301
- if (error) {
7302
- throw new Error(error.message);
7303
- }
7304
- return data?.fractions.data;
7305
- };
7306
-
7307
- const HYPERCERTS_MARKETPLACE_API_URL = process.env.HYPERCERTS_MARKETPLACE_API_URL;
7308
- const SUPABASE_HYPERCERTS_URL = process.env.SUPABASE_HYPERCERTS_URL;
7309
- const SUPABASE_HYPERCERTS_ANON_KEY = process.env.SUPABASE_HYPERCERTS_ANON_KEY;
7310
- const supabaseHypercerts = supabaseJs.createClient(SUPABASE_HYPERCERTS_URL, SUPABASE_HYPERCERTS_ANON_KEY);
7432
+ const SUPABASE_HYPERCERTS_DATA_STAGING_URL = "https://zgvoyckkistexkfdmjqc.supabase.co";
7433
+ const SUPABASE_HYPERCERTS_DATA_STAGING_ANON_KEY_STAGING = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inpndm95Y2traXN0ZXhrZmRtanFjIiwicm9sZSI6ImFub24iLCJpYXQiOjE2OTc4ODM1MjAsImV4cCI6MjAxMzQ1OTUyMH0.6FWDhwP3ZOM1O3ObvyRKtOsvwhJjbrZL2B1N-0MSpFg";
7434
+ const SUPABASE_HYPERCERTS_DATA_PRODUCTION_URL = "https://ueebbafxdbglaqtyslwv.supabase.co";
7435
+ const SUPABASE_HYPERCERTS_DATA_PRODUCTION_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InVlZWJiYWZ4ZGJnbGFxdHlzbHd2Iiwicm9sZSI6ImFub24iLCJpYXQiOjE2OTc1NTA1MzUsImV4cCI6MjAxMzEyNjUzNX0.mhClRFe8QL6IQLMvTXjdprR6agr_OXF9g2CUJBww4mE";
7311
7436
  class ApiClient {
7312
- constructor(baseUrl) {
7437
+ constructor(indexerEnvironment, baseUrl) {
7313
7438
  this.baseUrl = baseUrl;
7314
7439
  /**
7315
7440
  * Fetches order nonce from api
@@ -7364,7 +7489,7 @@ class ApiClient {
7364
7489
  * @param strategy strategy for the order
7365
7490
  */
7366
7491
  this.fetchOrders = async ({ signer, claimTokenIds, chainId, strategy }) => {
7367
- let baseQuery = supabaseHypercerts.from("marketplace_orders").select("*");
7492
+ let baseQuery = this._supabaseHypercerts.from("marketplace_orders").select("*");
7368
7493
  if (signer) {
7369
7494
  baseQuery.eq("signer", signer);
7370
7495
  }
@@ -7385,9 +7510,9 @@ class ApiClient {
7385
7510
  * @param chainId Chain ID
7386
7511
  */
7387
7512
  this.fetchOrdersByHypercertId = async ({ hypercertId }) => {
7388
- const fractions = await getFractionsById(hypercertId);
7513
+ const fractions = await getFractionsById(hypercertId, this._urqlClient);
7389
7514
  const tokenIds = fractions?.flatMap(() => fractions.map((fraction) => sdk.parseClaimOrFractionId(fraction.fraction_id).id)) || [];
7390
- const result = await supabaseHypercerts.from("marketplace_orders").select("*").overlaps("itemIds", tokenIds);
7515
+ const result = await this._supabaseHypercerts.from("marketplace_orders").select("*").overlaps("itemIds", tokenIds);
7391
7516
  return result;
7392
7517
  };
7393
7518
  this.handleResponse = async (res) => {
@@ -7397,11 +7522,18 @@ class ApiClient {
7397
7522
  }
7398
7523
  return (await res.json());
7399
7524
  };
7400
- const url = baseUrl || HYPERCERTS_MARKETPLACE_API_URL;
7525
+ const url = baseUrl || `${sdk.CONSTANTS.ENDPOINTS[indexerEnvironment]}/v1`;
7401
7526
  if (!url) {
7402
7527
  throw new Error("No API URL provided");
7403
7528
  }
7404
7529
  this._baseUrl = url;
7530
+ this._urqlClient = new C({
7531
+ url: `${sdk.CONSTANTS.ENDPOINTS[indexerEnvironment]}/v1/graphql`,
7532
+ exchanges: [cacheExchange, fetchExchange],
7533
+ });
7534
+ this._supabaseHypercerts = supabaseJs.createClient(indexerEnvironment === "test" ? SUPABASE_HYPERCERTS_DATA_STAGING_URL : SUPABASE_HYPERCERTS_DATA_PRODUCTION_URL, indexerEnvironment === "test"
7535
+ ? SUPABASE_HYPERCERTS_DATA_STAGING_ANON_KEY_STAGING
7536
+ : SUPABASE_HYPERCERTS_DATA_PRODUCTION_ANON_KEY);
7405
7537
  }
7406
7538
  }
7407
7539
 
@@ -7418,14 +7550,20 @@ class HypercertExchangeClient {
7418
7550
  * @param overrides Override contract addresses or api endpoint used
7419
7551
  */
7420
7552
  constructor(chainId, provider, signer, overrides) {
7553
+ const deployment = sdk.CONSTANTS.DEPLOYMENTS[contracts.asDeployedChain(chainId)];
7554
+ if (!deployment) {
7555
+ throw new Error("Chain not supported");
7556
+ }
7557
+ const indexerEnvironment = deployment.isTestnet ? "test" : "production";
7421
7558
  this.chainId = chainId;
7422
7559
  this.addresses = overrides?.addresses ?? addressesByNetwork[this.chainId];
7560
+ this.currencies = overrides?.currencies ?? currenciesByNetwork[this.chainId];
7423
7561
  this.signer = signer;
7424
7562
  this.provider = provider;
7425
- this.api = new ApiClient(overrides?.apiEndpoint);
7563
+ this.api = new ApiClient(indexerEnvironment, overrides?.apiEndpoint);
7426
7564
  }
7427
7565
  /**
7428
- * Return the signer it it's set, throw an exception otherwise
7566
+ * Return the signer if it's set, throw an exception otherwise
7429
7567
  * @returns Signer
7430
7568
  */
7431
7569
  getSigner() {
@@ -7500,7 +7638,7 @@ class HypercertExchangeClient {
7500
7638
  * @param CreateMakerInput
7501
7639
  * @returns the maker object, isCurrencyApproved, and isBalanceSufficient
7502
7640
  */
7503
- async createMakerBid({ collection, strategyId, collectionType, subsetNonce, orderNonce, endTime, price, itemIds, amounts = [1], currency = this.addresses.WETH, startTime = Math.floor(Date.now() / 1000), additionalParameters = [], }) {
7641
+ async createMakerBid({ collection, strategyId, collectionType, subsetNonce, orderNonce, endTime, price, itemIds, amounts = [1], currency = this.currencies.WETH.address, startTime = Math.floor(Date.now() / 1000), additionalParameters = [], }) {
7504
7642
  const signer = this.getSigner();
7505
7643
  if (!this.isTimestampValid(startTime) || !this.isTimestampValid(endTime)) {
7506
7644
  throw new ErrorTimestamp();
@@ -7807,7 +7945,7 @@ class HypercertExchangeClient {
7807
7945
  * @param currency Currency used to buy the fractions (default to WETH)
7808
7946
  * @param additionalParameters Additional parameters used to support complex orders
7809
7947
  */
7810
- async createDirectFractionsSaleMakerAsk({ itemIds, price, startTime, endTime, currency = this.addresses.WETH, additionalParameters = [], }) {
7948
+ async createDirectFractionsSaleMakerAsk({ itemIds, price, startTime, endTime, currency = this.currencies.WETH.address, additionalParameters = [], }) {
7811
7949
  const address = await this.signer?.getAddress();
7812
7950
  if (!address) {
7813
7951
  throw new Error("No signer address could be determined");
@@ -7848,7 +7986,7 @@ class HypercertExchangeClient {
7848
7986
  * @param sellLeftoverFraction Whether or not the seller wants to sell the leftover units
7849
7987
  * @param root Merkle tree root (optional)
7850
7988
  */
7851
- async createFractionalSaleMakerAsk({ itemIds, price, startTime, endTime, currency = this.addresses.WETH, maxUnitAmount, minUnitAmount, minUnitsToKeep, sellLeftoverFraction, root, }) {
7989
+ async createFractionalSaleMakerAsk({ itemIds, price, startTime, endTime, currency = this.currencies.WETH.address, maxUnitAmount, minUnitAmount, minUnitsToKeep, sellLeftoverFraction, root, }) {
7852
7990
  const address = await this.signer?.getAddress();
7853
7991
  if (!address) {
7854
7992
  throw new Error("No signer address could be determined");
@@ -7953,5 +8091,6 @@ exports.TransferManagerAbi = TransferManager;
7953
8091
  exports.WETHAbi = WETH;
7954
8092
  exports.addressesByNetwork = addressesByNetwork;
7955
8093
  exports.chainInfo = chainInfo;
8094
+ exports.currenciesByNetwork = currenciesByNetwork;
7956
8095
  exports.defaultMerkleTree = defaultMerkleTree;
7957
8096
  exports.utils = utils;