@gobob/bob-sdk 2.0.0 → 2.2.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.
package/dist/esplora.d.ts CHANGED
@@ -67,19 +67,7 @@ export interface Block {
67
67
  previousblockhash: string | null;
68
68
  mediantime: number;
69
69
  }
70
- export interface EsploraClient {
71
- getLatestHeight(): Promise<number>;
72
- getBlock(hash: string): Promise<Block>;
73
- getBlockHash(height: number): Promise<string>;
74
- getBlockHeader(hash: string): Promise<string>;
75
- getTransaction(txId: string): Promise<Transaction>;
76
- getTransactionHex(txId: string): Promise<string>;
77
- getMerkleProof(txId: string): Promise<MerkleProof>;
78
- getFeeEstimate(confirmationTarget: number): Promise<number>;
79
- getAddressUtxos(address: string): Promise<Array<UTXO>>;
80
- broadcastTx(txHex: string): Promise<string>;
81
- }
82
- export declare class DefaultEsploraClient implements EsploraClient {
70
+ export declare class EsploraClient {
83
71
  private basePath;
84
72
  constructor(networkOrUrl?: string);
85
73
  getLatestHeight(): Promise<number>;
@@ -93,6 +81,6 @@ export declare class DefaultEsploraClient implements EsploraClient {
93
81
  getFeeEstimate(confirmationTarget: number): Promise<number>;
94
82
  getAddressUtxos(address: string, confirmed?: boolean): Promise<Array<UTXO>>;
95
83
  broadcastTx(txHex: string): Promise<string>;
96
- getJson<T>(url: string): Promise<T>;
97
- getText(url: string): Promise<string>;
84
+ private getJson;
85
+ private getText;
98
86
  }
package/dist/esplora.js CHANGED
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DefaultEsploraClient = exports.REGTEST_ESPLORA_BASE_PATH = exports.TESTNET_ESPLORA_BASE_PATH = exports.MAINNET_ESPLORA_BASE_PATH = void 0;
3
+ exports.EsploraClient = exports.REGTEST_ESPLORA_BASE_PATH = exports.TESTNET_ESPLORA_BASE_PATH = exports.MAINNET_ESPLORA_BASE_PATH = void 0;
4
4
  exports.MAINNET_ESPLORA_BASE_PATH = "https://btc-mainnet.gobob.xyz";
5
5
  exports.TESTNET_ESPLORA_BASE_PATH = "https://btc-testnet.gobob.xyz";
6
6
  exports.REGTEST_ESPLORA_BASE_PATH = "http://localhost:3003";
7
7
  function encodeEsploraMerkleProof(merkle) {
8
8
  return merkle.map(item => Buffer.from(item, "hex").reverse().toString("hex")).join('');
9
9
  }
10
- class DefaultEsploraClient {
10
+ class EsploraClient {
11
11
  constructor(networkOrUrl = "mainnet") {
12
12
  switch (networkOrUrl) {
13
13
  case "mainnet":
@@ -93,5 +93,5 @@ class DefaultEsploraClient {
93
93
  return await response.text();
94
94
  }
95
95
  }
96
- exports.DefaultEsploraClient = DefaultEsploraClient;
96
+ exports.EsploraClient = EsploraClient;
97
97
  //# sourceMappingURL=esplora.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"esplora.js","sourceRoot":"","sources":["../src/esplora.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esplora.js","sourceRoot":"","sources":["../src/esplora.ts"],"names":[],"mappings":"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"}
@@ -1,45 +1,19 @@
1
- import { GatewayQuoteParams } from "./types";
2
- import { Token as TokenInfo } from "./tokens";
3
- type EvmAddress = string;
4
- type GatewayQuote = {
5
- gatewayAddress: EvmAddress;
6
- dustThreshold: number;
7
- satoshis: number;
8
- fee: number;
9
- gratuity: string;
10
- bitcoinAddress: string;
11
- txProofDifficultyFactor: number;
12
- strategyAddress: EvmAddress | null;
13
- };
14
- type GatewayOrderResponse = {
15
- gatewayAddress: EvmAddress;
16
- tokenAddress: EvmAddress;
17
- txid: string;
18
- status: boolean;
19
- timestamp: number;
20
- tokens: string;
21
- satoshis: number;
22
- fee: number;
23
- txProofDifficultyFactor: number;
24
- };
25
- type GatewayCreateOrderResponse = {
26
- uuid: string;
27
- opReturnHash: string;
28
- };
29
- type GatewayStartOrderResult = GatewayCreateOrderResponse & {
30
- bitcoinAddress: string;
31
- satoshis: number;
32
- };
1
+ import { GatewayQuoteParams, GatewayQuote, Token, GatewayStrategyContract, GatewayOrder, GatewayStartOrder, EvmAddress } from "./types";
2
+ type Optional<T, K extends keyof T> = Omit<T, K> & Partial<T>;
33
3
  export declare const MAINNET_GATEWAY_BASE_URL = "https://gateway-api-mainnet.gobob.xyz";
34
4
  export declare const TESTNET_GATEWAY_BASE_URL = "https://gateway-api-testnet.gobob.xyz";
35
5
  export declare class GatewayApiClient {
6
+ private chain;
36
7
  private baseUrl;
37
- constructor(networkOrUrl?: string);
38
- getQuote(params: GatewayQuoteParams): Promise<GatewayQuote>;
39
- startOrder(gatewayQuote: GatewayQuote, params: GatewayQuoteParams): Promise<GatewayStartOrderResult>;
40
- finalizeOrder(orderUuid: string, bitcoinTx: string): Promise<void>;
41
- getOrders(userAddress: EvmAddress): Promise<GatewayOrderResponse[]>;
42
- getTokens(): Promise<EvmAddress[]>;
43
- getTokensInfo(): Promise<TokenInfo[]>;
8
+ constructor(chainName: string);
9
+ getChains(): string[];
10
+ getQuote(params: Optional<GatewayQuoteParams, "amount" | "fromChain" | "fromToken" | "fromUserAddress" | "toUserAddress">): Promise<GatewayQuote>;
11
+ startOrder(gatewayQuote: GatewayQuote, params: Optional<GatewayQuoteParams, "toToken" | "amount">): Promise<GatewayStartOrder>;
12
+ finalizeOrder(uuid: string, bitcoinTxHex: string): Promise<void>;
13
+ getOrders(userAddress: EvmAddress): Promise<GatewayOrder[]>;
14
+ getStrategies(): Promise<GatewayStrategyContract[]>;
15
+ getTokenAddresses(includeStrategies?: boolean): Promise<EvmAddress[]>;
16
+ getTokens(includeStrategies?: boolean): Promise<Token[]>;
17
+ private fetchGet;
44
18
  }
45
19
  export {};
@@ -2,40 +2,73 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GatewayApiClient = exports.TESTNET_GATEWAY_BASE_URL = exports.MAINNET_GATEWAY_BASE_URL = void 0;
4
4
  const ethers_1 = require("ethers");
5
+ const types_1 = require("./types");
5
6
  const tokens_1 = require("./tokens");
7
+ const wallet_1 = require("../wallet");
6
8
  exports.MAINNET_GATEWAY_BASE_URL = "https://gateway-api-mainnet.gobob.xyz";
7
9
  exports.TESTNET_GATEWAY_BASE_URL = "https://gateway-api-testnet.gobob.xyz";
8
10
  class GatewayApiClient {
9
- constructor(networkOrUrl = "mainnet") {
10
- switch (networkOrUrl) {
11
- case "mainnet" || "bob":
11
+ constructor(chainName) {
12
+ switch (chainName) {
13
+ case "mainnet":
14
+ case types_1.Chain.BOB:
15
+ this.chain = types_1.Chain.BOB;
12
16
  this.baseUrl = exports.MAINNET_GATEWAY_BASE_URL;
13
17
  break;
14
- case "testnet" || "bob-sepolia":
18
+ case "testnet":
19
+ case types_1.Chain.BOB_SEPOLIA:
20
+ this.chain = types_1.Chain.BOB_SEPOLIA;
15
21
  this.baseUrl = exports.TESTNET_GATEWAY_BASE_URL;
16
22
  break;
17
23
  default:
18
- this.baseUrl = networkOrUrl;
24
+ throw new Error("Invalid chain");
19
25
  }
20
26
  }
27
+ getChains() {
28
+ return Object.values(types_1.Chain);
29
+ }
21
30
  async getQuote(params) {
22
- const isMainnet = params.toChain == "bob" || params.toChain == 60808;
31
+ const isMainnet = params.toChain === types_1.ChainId.BOB ||
32
+ (typeof params.toChain === "string" && params.toChain.toLowerCase() === types_1.Chain.BOB);
33
+ const isTestnet = params.toChain === types_1.ChainId.BOB_SEPOLIA ||
34
+ (typeof params.toChain === "string" && params.toChain.toLowerCase() === types_1.Chain.BOB_SEPOLIA);
35
+ const isInvalidNetwork = !isMainnet && !isTestnet;
36
+ const isMismatchMainnet = isMainnet && this.chain !== types_1.Chain.BOB;
37
+ const isMismatchTestnet = isTestnet && this.chain !== types_1.Chain.BOB_SEPOLIA;
38
+ if (isInvalidNetwork || isMismatchMainnet || isMismatchTestnet) {
39
+ throw new Error("Invalid output chain");
40
+ }
23
41
  let outputToken = "";
24
- if (params.toToken.startsWith("0x")) {
25
- outputToken = params.toToken;
42
+ let strategyAddress;
43
+ const toToken = params.toToken.toLowerCase();
44
+ if (params.strategyAddress?.startsWith("0x")) {
45
+ strategyAddress = params.strategyAddress;
46
+ }
47
+ if (toToken.startsWith("0x")) {
48
+ outputToken = toToken;
49
+ }
50
+ else if (isMainnet && this.chain === types_1.Chain.BOB && tokens_1.SYMBOL_LOOKUP[types_1.ChainId.BOB][toToken]) {
51
+ outputToken = tokens_1.SYMBOL_LOOKUP[types_1.ChainId.BOB][toToken].address;
26
52
  }
27
- else if (params.toToken in tokens_1.TOKENS_INFO) {
28
- outputToken = isMainnet ? tokens_1.TOKENS_INFO[params.toToken].bob : tokens_1.TOKENS_INFO[params.toToken].bobSepolia;
53
+ else if (isTestnet && this.chain === types_1.Chain.BOB_SEPOLIA && tokens_1.SYMBOL_LOOKUP[types_1.ChainId.BOB_SEPOLIA][toToken]) {
54
+ outputToken = tokens_1.SYMBOL_LOOKUP[types_1.ChainId.BOB_SEPOLIA][toToken].address;
29
55
  }
30
56
  else {
31
- throw new Error('Unknown output token');
57
+ throw new Error("Unknown output token");
58
+ }
59
+ var url = new URL(`${this.baseUrl}/quote/${outputToken}`);
60
+ if (strategyAddress) {
61
+ url.searchParams.append("strategy", `${strategyAddress}`);
32
62
  }
33
63
  const atomicAmount = params.amount;
34
- const response = await fetch(`${this.baseUrl}/quote/${outputToken}/${atomicAmount || ''}`, {
64
+ if (atomicAmount) {
65
+ url.searchParams.append("satoshis", `${atomicAmount}`);
66
+ }
67
+ const response = await fetch(url, {
35
68
  headers: {
36
- 'Content-Type': 'application/json',
37
- Accept: 'application/json'
38
- }
69
+ "Content-Type": "application/json",
70
+ Accept: "application/json",
71
+ },
39
72
  });
40
73
  return await response.json();
41
74
  }
@@ -43,73 +76,126 @@ class GatewayApiClient {
43
76
  const request = {
44
77
  gatewayAddress: gatewayQuote.gatewayAddress,
45
78
  strategyAddress: gatewayQuote.strategyAddress,
46
- satsToConvertToEth: params.gasRefill,
79
+ satsToConvertToEth: params.gasRefill || 0,
47
80
  userAddress: params.toUserAddress,
48
- gatewayExtraData: null,
49
- strategyExtraData: null,
81
+ gatewayExtraData: undefined,
82
+ strategyExtraData: undefined,
50
83
  satoshis: gatewayQuote.satoshis,
51
84
  };
52
85
  const response = await fetch(`${this.baseUrl}/order`, {
53
- method: 'POST',
86
+ method: "POST",
54
87
  headers: {
55
- 'Content-Type': 'application/json',
56
- Accept: 'application/json'
88
+ "Content-Type": "application/json",
89
+ Accept: "application/json",
57
90
  },
58
- body: JSON.stringify(request)
91
+ body: JSON.stringify(request),
59
92
  });
60
93
  if (!response.ok) {
61
- throw new Error('Failed to create order');
94
+ throw new Error("Failed to create order");
62
95
  }
63
96
  const data = await response.json();
64
97
  if (data.opReturnHash != calculateOpReturnHash(request)) {
65
- throw new Error('Invalid OP_RETURN hash');
98
+ throw new Error("Invalid OP_RETURN hash");
99
+ }
100
+ let psbtBase64;
101
+ if (params.fromUserAddress &&
102
+ typeof params.fromChain === "string" &&
103
+ params.fromChain.toLowerCase() === types_1.Chain.BITCOIN) {
104
+ psbtBase64 = await (0, wallet_1.createBitcoinPsbt)(params.fromUserAddress, gatewayQuote.bitcoinAddress, gatewayQuote.satoshis, params.fromUserPublicKey, data.opReturnHash, gatewayQuote.txProofDifficultyFactor);
66
105
  }
67
106
  return {
68
107
  uuid: data.uuid,
69
108
  opReturnHash: data.opReturnHash,
70
109
  bitcoinAddress: gatewayQuote.bitcoinAddress,
71
110
  satoshis: gatewayQuote.satoshis,
111
+ psbtBase64,
72
112
  };
73
113
  }
74
- async finalizeOrder(orderUuid, bitcoinTx) {
75
- const response = await fetch(`${this.baseUrl}/order/${orderUuid}`, {
76
- method: 'PATCH',
114
+ async finalizeOrder(uuid, bitcoinTxHex) {
115
+ const response = await fetch(`${this.baseUrl}/order/${uuid}`, {
116
+ method: "PATCH",
77
117
  headers: {
78
- 'Content-Type': 'application/json',
79
- Accept: 'application/json'
118
+ "Content-Type": "application/json",
119
+ Accept: "application/json",
80
120
  },
81
- body: JSON.stringify({ bitcoinTx: bitcoinTx })
121
+ body: JSON.stringify({ bitcoinTx: bitcoinTxHex }),
82
122
  });
83
123
  if (!response.ok) {
84
- throw new Error('Failed to update order');
124
+ throw new Error("Failed to update order");
85
125
  }
86
126
  }
87
127
  async getOrders(userAddress) {
88
- const response = await fetch(`${this.baseUrl}/orders/${userAddress}`, {
89
- method: 'GET',
90
- headers: {
91
- 'Content-Type': 'application/json',
92
- Accept: 'application/json'
93
- }
128
+ const response = await this.fetchGet(`${this.baseUrl}/orders/${userAddress}`);
129
+ const orders = await response.json();
130
+ return orders.map((order) => {
131
+ return { gasRefill: order.satsToConvertToEth, ...order };
94
132
  });
95
- return response.json();
96
133
  }
97
- async getTokens() {
98
- const response = await fetch(`${this.baseUrl}/tokens`, {
99
- method: 'GET',
100
- headers: {
101
- 'Content-Type': 'application/json',
102
- Accept: 'application/json'
103
- }
134
+ async getStrategies() {
135
+ const response = await this.fetchGet(`${this.baseUrl}/strategies`);
136
+ const chainName = (this.chain === types_1.Chain.BOB ? types_1.Chain.BOB : types_1.Chain.BOB_SEPOLIA).toString();
137
+ const chainId = this.chain === types_1.Chain.BOB ? types_1.ChainId.BOB : types_1.ChainId.BOB_SEPOLIA;
138
+ const strategies = await response.json();
139
+ return strategies.map((strategy) => {
140
+ const inputToken = tokens_1.ADDRESS_LOOKUP[strategy.inputTokenAddress];
141
+ const outputToken = strategy.outputTokenAddress ? tokens_1.ADDRESS_LOOKUP[strategy.outputTokenAddress] : undefined;
142
+ return {
143
+ id: "",
144
+ type: "deposit",
145
+ address: strategy.strategyAddress,
146
+ method: "",
147
+ chain: {
148
+ id: "",
149
+ chainId: chainId,
150
+ slug: chainName,
151
+ name: chainName,
152
+ logo: "",
153
+ type: "evm",
154
+ singleChainSwap: true,
155
+ singleChainStaking: true,
156
+ },
157
+ integration: {
158
+ type: strategy.strategyType,
159
+ slug: strategy.strategyName,
160
+ name: strategy.strategyName,
161
+ logo: "",
162
+ monetization: false,
163
+ },
164
+ inputToken: {
165
+ symbol: inputToken.symbol,
166
+ address: inputToken.address,
167
+ logo: inputToken.logoURI,
168
+ decimals: inputToken.decimals,
169
+ chain: chainName,
170
+ },
171
+ outputToken: outputToken
172
+ ? {
173
+ symbol: outputToken.symbol,
174
+ address: outputToken.address,
175
+ logo: outputToken.logoURI,
176
+ decimals: outputToken.decimals,
177
+ chain: chainName,
178
+ }
179
+ : null,
180
+ };
104
181
  });
182
+ }
183
+ async getTokenAddresses(includeStrategies = true) {
184
+ const response = await this.fetchGet(`${this.baseUrl}/tokens?includeStrategies=${includeStrategies}`);
105
185
  return response.json();
106
186
  }
107
- async getTokensInfo() {
108
- const tokens = await this.getTokens();
109
- return tokens
110
- .map(token => tokens_1.ADDRESS_LOOKUP[token])
111
- .filter(token => token !== undefined);
112
- ;
187
+ async getTokens(includeStrategies = true) {
188
+ const tokens = await this.getTokenAddresses(includeStrategies);
189
+ return tokens.map((token) => tokens_1.ADDRESS_LOOKUP[token]).filter((token) => token !== undefined);
190
+ }
191
+ async fetchGet(url) {
192
+ return await fetch(url, {
193
+ method: "GET",
194
+ headers: {
195
+ "Content-Type": "application/json",
196
+ Accept: "application/json",
197
+ },
198
+ });
113
199
  }
114
200
  }
115
201
  exports.GatewayApiClient = GatewayApiClient;
@@ -120,8 +206,8 @@ function calculateOpReturnHash(req) {
120
206
  req.strategyAddress || ethers_1.ethers.ZeroAddress,
121
207
  req.satsToConvertToEth,
122
208
  req.userAddress,
123
- req.gatewayExtraData,
124
- req.strategyExtraData
209
+ req.gatewayExtraData || "0x",
210
+ req.strategyExtraData || "0x",
125
211
  ]));
126
212
  }
127
213
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/gateway/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/gateway/client.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  export { GatewayApiClient as GatewaySDK } from "./client";
2
- export { GatewayQuoteParams } from "./types";
2
+ export { GatewayQuoteParams, GatewayQuote, GatewayOrder, GatewayStrategyContract } from "./types";
@@ -1,11 +1,8 @@
1
- export type Token = {
2
- name: string;
3
- symbol: string;
4
- bob: string;
5
- bobSepolia: string;
6
- };
7
- export declare const TOKENS_INFO: {
8
- [key: string]: Token;
1
+ import { Token } from "./types";
2
+ export declare const SYMBOL_LOOKUP: {
3
+ [key in number]: {
4
+ [key in string]: Token;
5
+ };
9
6
  };
10
7
  export declare const ADDRESS_LOOKUP: {
11
8
  [address: string]: Token;
@@ -1,64 +1,98 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ADDRESS_LOOKUP = exports.TOKENS_INFO = void 0;
4
- const TOKENS = {
5
- "tBTC": {
3
+ exports.ADDRESS_LOOKUP = exports.SYMBOL_LOOKUP = void 0;
4
+ const types_1 = require("./types");
5
+ const TOKENS = [
6
+ {
6
7
  name: "tBTC v2",
7
8
  symbol: "tBTC",
9
+ decimals: 18,
8
10
  bob: "0xBBa2eF945D523C4e2608C9E1214C2Cc64D4fc2e2",
9
11
  bobSepolia: "0x6744bAbDf02DCF578EA173A9F0637771A9e1c4d0",
10
12
  },
11
- "WBTC": {
13
+ {
12
14
  name: "Wrapped BTC",
13
15
  symbol: "WBTC",
16
+ decimals: 8,
14
17
  bob: "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3",
15
18
  bobSepolia: "0xe51e40e15e6e1496a0981f90Ca1D632545bdB519",
16
19
  },
17
- "sbtBTC": {
20
+ {
18
21
  name: "sb tBTC v2",
19
22
  symbol: "sbtBTC",
23
+ decimals: 8,
20
24
  bob: "0x2925dF9Eb2092B53B06A06353A7249aF3a8B139e",
21
25
  bobSepolia: "",
22
26
  },
23
- "sbWBTC": {
27
+ {
24
28
  name: "sb Wrapped BTC",
25
29
  symbol: "sbWBTC",
30
+ decimals: 8,
26
31
  bob: "0x5c46D274ed8AbCAe2964B63c0360ad3Ccc384dAa",
27
32
  bobSepolia: "",
28
33
  },
29
- "seTBTC": {
34
+ {
30
35
  name: "Segment TBTC",
31
36
  symbol: "seTBTC",
37
+ decimals: 8,
32
38
  bob: "0xD30288EA9873f376016A0250433b7eA375676077",
33
39
  bobSepolia: "",
34
40
  },
35
- "seWBTC": {
41
+ {
36
42
  name: "Segment WBTC",
37
43
  symbol: "seWBTC",
44
+ decimals: 8,
38
45
  bob: "0x6265C05158f672016B771D6Fb7422823ed2CbcDd",
39
46
  bobSepolia: "",
40
47
  },
41
- "stmtBTC": {
48
+ {
42
49
  name: "Staked mtBTC",
43
50
  symbol: "stmtBTC",
51
+ decimals: 18,
44
52
  bob: "",
45
53
  bobSepolia: "0xc4229678b65e2D9384FDf96F2E5D512d6eeC0C77",
46
- }
47
- };
48
- exports.TOKENS_INFO = {};
54
+ },
55
+ {
56
+ name: "Solv BTC",
57
+ symbol: "SolvBTC",
58
+ decimals: 18,
59
+ bob: "0x541FD749419CA806a8bc7da8ac23D346f2dF8B77",
60
+ bobSepolia: "",
61
+ },
62
+ {
63
+ name: "uniBTC",
64
+ symbol: "uniBTC",
65
+ decimals: 8,
66
+ bob: "0x236f8c0a61dA474dB21B693fB2ea7AAB0c803894",
67
+ bobSepolia: "",
68
+ },
69
+ ];
70
+ exports.SYMBOL_LOOKUP = {};
49
71
  exports.ADDRESS_LOOKUP = {};
50
- for (const key in exports.TOKENS_INFO) {
51
- const token = TOKENS[key];
52
- const lowerBob = token.bob.toLowerCase();
53
- const lowerBobSepolia = token.bobSepolia.toLowerCase();
54
- const lowercasedToken = {
72
+ exports.SYMBOL_LOOKUP[types_1.ChainId.BOB] = {};
73
+ exports.SYMBOL_LOOKUP[types_1.ChainId.BOB_SEPOLIA] = {};
74
+ for (const token of TOKENS) {
75
+ const lowerAddressBob = token.bob.toLowerCase();
76
+ const lowerTokenBob = {
77
+ chainId: types_1.ChainId.BOB,
78
+ address: lowerAddressBob,
79
+ name: token.name,
80
+ symbol: token.symbol,
81
+ decimals: token.decimals,
82
+ logoURI: "",
83
+ };
84
+ const lowerAddressBobSepolia = token.bobSepolia.toLowerCase();
85
+ const lowerTokenBobSepolia = {
86
+ chainId: types_1.ChainId.BOB_SEPOLIA,
87
+ address: lowerAddressBobSepolia,
55
88
  name: token.name,
56
89
  symbol: token.symbol,
57
- bob: lowerBob,
58
- bobSepolia: lowerBobSepolia,
90
+ decimals: token.decimals,
91
+ logoURI: "",
59
92
  };
60
- exports.TOKENS_INFO[key] = lowercasedToken;
61
- exports.ADDRESS_LOOKUP[lowerBob] = lowercasedToken;
62
- exports.ADDRESS_LOOKUP[lowerBobSepolia] = lowercasedToken;
93
+ exports.SYMBOL_LOOKUP[types_1.ChainId.BOB][lowerTokenBob.symbol.toLowerCase()] = lowerTokenBob;
94
+ exports.SYMBOL_LOOKUP[types_1.ChainId.BOB_SEPOLIA][lowerTokenBobSepolia.symbol.toLowerCase()] = lowerTokenBobSepolia;
95
+ exports.ADDRESS_LOOKUP[lowerAddressBob] = lowerTokenBob;
96
+ exports.ADDRESS_LOOKUP[lowerAddressBobSepolia] = lowerTokenBobSepolia;
63
97
  }
64
98
  //# sourceMappingURL=tokens.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/gateway/tokens.ts"],"names":[],"mappings":";;;AAOA,MAAM,MAAM,GAA6B;IACrC,MAAM,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,4CAA4C;QACjD,UAAU,EAAE,4CAA4C;KAC3D;IACD,MAAM,EAAE;QACJ,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,4CAA4C;QACjD,UAAU,EAAE,4CAA4C;KAC3D;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,QAAQ;QAChB,GAAG,EAAE,4CAA4C;QACjD,UAAU,EAAE,EAAE;KACjB;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,QAAQ;QAChB,GAAG,EAAE,4CAA4C;QACjD,UAAU,EAAE,EAAE;KACjB;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,QAAQ;QAChB,GAAG,EAAE,4CAA4C;QACjD,UAAU,EAAE,EAAE;KACjB;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,QAAQ;QAChB,GAAG,EAAE,4CAA4C;QACjD,UAAU,EAAE,EAAE;KACjB;IACD,SAAS,EAAE;QACP,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,SAAS;QACjB,GAAG,EAAE,EAAE;QACP,UAAU,EAAE,4CAA4C;KAC3D;CACJ,CAAC;AAEW,QAAA,WAAW,GAA6B,EAAE,CAAC;AAC3C,QAAA,cAAc,GAAiC,EAAE,CAAC;AAE/D,KAAK,MAAM,GAAG,IAAI,mBAAW,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAE1B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IAEvD,MAAM,eAAe,GAAU;QAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,EAAE,QAAQ;QACb,UAAU,EAAE,eAAe;KAC9B,CAAC;IAEF,mBAAW,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;IACnC,sBAAc,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC;IAC3C,sBAAc,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/gateway/tokens.ts"],"names":[],"mappings":"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"}