@curvefi/llamalend-api 1.0.21 → 1.0.22-beta.1

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.
@@ -4,6 +4,7 @@ on:
4
4
  push:
5
5
  branches:
6
6
  - main
7
+ - feat/init
7
8
 
8
9
  jobs:
9
10
  release:
@@ -1,6 +1,7 @@
1
1
  import memoize from "memoizee";
2
+ import type { Llamalend } from "./llamalend.js";
2
3
  import { IDict, IMarketData, INetworkName, IQuoteOdos } from "./interfaces";
3
- export declare const _getUsdPricesFromApi: () => Promise<IDict<number>>;
4
+ export declare function _getUsdPricesFromApi(this: Llamalend): Promise<IDict<number>>;
4
5
  type UserCollateral = {
5
6
  total_deposit_precise: string;
6
7
  total_deposit_from_user: number;
@@ -12,7 +13,7 @@ type UserCollateral = {
12
13
  export declare const _getUserCollateral: ((network: INetworkName, controller: string, user: string) => Promise<UserCollateral>) & memoize.Memoized<(network: INetworkName, controller: string, user: string) => Promise<UserCollateral>>;
13
14
  export declare const _getUserCollateralCrvUsd: ((network: INetworkName, controller: string, user: string) => Promise<string>) & memoize.Memoized<(network: INetworkName, controller: string, user: string) => Promise<string>>;
14
15
  export declare const _getMarketsData: ((network: INetworkName) => Promise<IMarketData>) & memoize.Memoized<(network: INetworkName) => Promise<IMarketData>>;
15
- export declare const _getQuoteOdos: (fromToken: string, toToken: string, _amount: bigint, blacklist: string, pathVizImage: boolean, slippage?: number) => Promise<IQuoteOdos>;
16
- export declare const _getExpectedOdos: (fromToken: string, toToken: string, _amount: bigint, blacklist: string) => Promise<string>;
17
- export declare const _assembleTxOdos: ((pathId: string) => Promise<string>) & memoize.Memoized<(pathId: string) => Promise<string>>;
16
+ export declare function _getQuoteOdos(this: Llamalend, fromToken: string, toToken: string, _amount: bigint, blacklist: string, pathVizImage: boolean, slippage?: number): Promise<IQuoteOdos>;
17
+ export declare function _getExpectedOdos(this: Llamalend, fromToken: string, toToken: string, _amount: bigint, blacklist: string): Promise<string>;
18
+ export declare function _assembleTxOdos(this: Llamalend, pathId: string): Promise<string>;
18
19
  export {};
@@ -9,7 +9,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { ethers } from "ethers";
11
11
  import memoize from "memoizee";
12
- import { llamalend } from "./llamalend.js";
13
12
  const _getPoolsFromApi = memoize((network, poolFactory) => __awaiter(void 0, void 0, void 0, function* () {
14
13
  const response = yield fetch(`https://api.curve.finance/api/getPools/${network}/${poolFactory}`);
15
14
  const { data } = yield response.json();
@@ -30,83 +29,85 @@ const _getAllPoolsFromApi = (network) => __awaiter(void 0, void 0, void 0, funct
30
29
  _getPoolsFromApi(network, "factory-stable-ng"),
31
30
  ]);
32
31
  });
33
- export const _getUsdPricesFromApi = () => __awaiter(void 0, void 0, void 0, function* () {
34
- var _a, _b;
35
- const network = llamalend.constants.NETWORK_NAME;
36
- const allTypesExtendedPoolData = yield _getAllPoolsFromApi(network);
37
- const priceDict = {};
38
- const priceDictByMaxTvl = {};
39
- for (const extendedPoolData of allTypesExtendedPoolData) {
40
- for (const pool of extendedPoolData.poolData) {
41
- const lpTokenAddress = (_a = pool.lpTokenAddress) !== null && _a !== void 0 ? _a : pool.address;
42
- const totalSupply = pool.totalSupply / (Math.pow(10, 18));
43
- if (lpTokenAddress.toLowerCase() in priceDict) {
44
- priceDict[lpTokenAddress.toLowerCase()].push({
45
- price: pool.usdTotal && totalSupply ? pool.usdTotal / totalSupply : 0,
46
- tvl: pool.usdTotal,
47
- });
48
- }
49
- else {
50
- priceDict[lpTokenAddress.toLowerCase()] = [];
51
- priceDict[lpTokenAddress.toLowerCase()].push({
52
- price: pool.usdTotal && totalSupply ? pool.usdTotal / totalSupply : 0,
53
- tvl: pool.usdTotal,
54
- });
55
- }
56
- for (const coin of pool.coins) {
57
- if (typeof coin.usdPrice === "number") {
58
- if (coin.address.toLowerCase() in priceDict) {
59
- priceDict[coin.address.toLowerCase()].push({
60
- price: coin.usdPrice,
61
- tvl: pool.usdTotal,
62
- });
32
+ export function _getUsdPricesFromApi() {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ var _a, _b;
35
+ const network = this.constants.NETWORK_NAME;
36
+ const allTypesExtendedPoolData = yield _getAllPoolsFromApi(network);
37
+ const priceDict = {};
38
+ const priceDictByMaxTvl = {};
39
+ for (const extendedPoolData of allTypesExtendedPoolData) {
40
+ for (const pool of extendedPoolData.poolData) {
41
+ const lpTokenAddress = (_a = pool.lpTokenAddress) !== null && _a !== void 0 ? _a : pool.address;
42
+ const totalSupply = pool.totalSupply / (Math.pow(10, 18));
43
+ if (lpTokenAddress.toLowerCase() in priceDict) {
44
+ priceDict[lpTokenAddress.toLowerCase()].push({
45
+ price: pool.usdTotal && totalSupply ? pool.usdTotal / totalSupply : 0,
46
+ tvl: pool.usdTotal,
47
+ });
48
+ }
49
+ else {
50
+ priceDict[lpTokenAddress.toLowerCase()] = [];
51
+ priceDict[lpTokenAddress.toLowerCase()].push({
52
+ price: pool.usdTotal && totalSupply ? pool.usdTotal / totalSupply : 0,
53
+ tvl: pool.usdTotal,
54
+ });
55
+ }
56
+ for (const coin of pool.coins) {
57
+ if (typeof coin.usdPrice === "number") {
58
+ if (coin.address.toLowerCase() in priceDict) {
59
+ priceDict[coin.address.toLowerCase()].push({
60
+ price: coin.usdPrice,
61
+ tvl: pool.usdTotal,
62
+ });
63
+ }
64
+ else {
65
+ priceDict[coin.address.toLowerCase()] = [];
66
+ priceDict[coin.address.toLowerCase()].push({
67
+ price: coin.usdPrice,
68
+ tvl: pool.usdTotal,
69
+ });
70
+ }
63
71
  }
64
- else {
65
- priceDict[coin.address.toLowerCase()] = [];
66
- priceDict[coin.address.toLowerCase()].push({
67
- price: coin.usdPrice,
68
- tvl: pool.usdTotal,
69
- });
72
+ }
73
+ for (const coin of (_b = pool.gaugeRewards) !== null && _b !== void 0 ? _b : []) {
74
+ if (typeof coin.tokenPrice === "number") {
75
+ if (coin.tokenAddress.toLowerCase() in priceDict) {
76
+ priceDict[coin.tokenAddress.toLowerCase()].push({
77
+ price: coin.tokenPrice,
78
+ tvl: pool.usdTotal,
79
+ });
80
+ }
81
+ else {
82
+ priceDict[coin.tokenAddress.toLowerCase()] = [];
83
+ priceDict[coin.tokenAddress.toLowerCase()].push({
84
+ price: coin.tokenPrice,
85
+ tvl: pool.usdTotal,
86
+ });
87
+ }
70
88
  }
71
89
  }
72
90
  }
73
- for (const coin of (_b = pool.gaugeRewards) !== null && _b !== void 0 ? _b : []) {
74
- if (typeof coin.tokenPrice === "number") {
75
- if (coin.tokenAddress.toLowerCase() in priceDict) {
76
- priceDict[coin.tokenAddress.toLowerCase()].push({
77
- price: coin.tokenPrice,
78
- tvl: pool.usdTotal,
79
- });
91
+ }
92
+ for (const address in priceDict) {
93
+ if (priceDict[address].length > 0) {
94
+ const maxTvlItem = priceDict[address].reduce((prev, current) => {
95
+ if (+current.tvl > +prev.tvl) {
96
+ return current;
80
97
  }
81
98
  else {
82
- priceDict[coin.tokenAddress.toLowerCase()] = [];
83
- priceDict[coin.tokenAddress.toLowerCase()].push({
84
- price: coin.tokenPrice,
85
- tvl: pool.usdTotal,
86
- });
99
+ return prev;
87
100
  }
88
- }
101
+ });
102
+ priceDictByMaxTvl[address] = maxTvlItem.price;
103
+ }
104
+ else {
105
+ priceDictByMaxTvl[address] = 0;
89
106
  }
90
107
  }
91
- }
92
- for (const address in priceDict) {
93
- if (priceDict[address].length > 0) {
94
- const maxTvlItem = priceDict[address].reduce((prev, current) => {
95
- if (+current.tvl > +prev.tvl) {
96
- return current;
97
- }
98
- else {
99
- return prev;
100
- }
101
- });
102
- priceDictByMaxTvl[address] = maxTvlItem.price;
103
- }
104
- else {
105
- priceDictByMaxTvl[address] = 0;
106
- }
107
- }
108
- return priceDictByMaxTvl;
109
- });
108
+ return priceDictByMaxTvl;
109
+ });
110
+ }
110
111
  export const _getUserCollateral = memoize((network, controller, user) => __awaiter(void 0, void 0, void 0, function* () {
111
112
  const url = `https://prices.curve.finance/v1/lending/collateral_events/${network}/${controller}/${user}`;
112
113
  const response = yield fetch(url);
@@ -144,35 +145,46 @@ export const _getMarketsData = memoize((network) => __awaiter(void 0, void 0, vo
144
145
  maxAge: 10 * 1000, // 10s
145
146
  });
146
147
  // --- ODOS ---
147
- export const _getQuoteOdos = (fromToken_1, toToken_1, _amount_1, blacklist_1, pathVizImage_1, ...args_1) => __awaiter(void 0, [fromToken_1, toToken_1, _amount_1, blacklist_1, pathVizImage_1, ...args_1], void 0, function* (fromToken, toToken, _amount, blacklist, pathVizImage, slippage = 0.5) {
148
- if (_amount === BigInt(0))
149
- return { outAmounts: ["0.0"], pathId: '', pathVizImage: '', priceImpact: 0, slippage };
150
- if (ethers.getAddress(fromToken) == "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE")
151
- fromToken = "0x0000000000000000000000000000000000000000";
152
- if (ethers.getAddress(toToken) == "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE")
153
- toToken = "0x0000000000000000000000000000000000000000";
154
- const url = `https://prices.curve.finance/odos/quote?chain_id=${llamalend.chainId}&from_address=${ethers.getAddress(fromToken)}` +
155
- `&to_address=${ethers.getAddress(toToken)}&amount=${_amount.toString()}&slippage=${slippage}&pathVizImage=${pathVizImage}` +
156
- `&caller_address=${ethers.getAddress(llamalend.constants.ALIASES.leverage_zap)}&blacklist=${ethers.getAddress(blacklist)}`;
157
- const response = yield fetch(url, { headers: { "accept": "application/json" } });
158
- if (response.status !== 200) {
159
- throw Error(`Odos quote error - ${response.status} ${response.statusText}`);
160
- }
161
- const data = yield response.json();
162
- return Object.assign(Object.assign({}, data), { slippage });
163
- });
164
- export const _getExpectedOdos = (fromToken, toToken, _amount, blacklist) => __awaiter(void 0, void 0, void 0, function* () {
165
- return (yield _getQuoteOdos(fromToken, toToken, _amount, blacklist, false)).outAmounts[0];
166
- });
167
- export const _assembleTxOdos = memoize((pathId) => __awaiter(void 0, void 0, void 0, function* () {
168
- const url = `https://prices.curve.finance/odos/assemble?user=${ethers.getAddress(llamalend.constants.ALIASES.leverage_zap)}&path_id=${pathId}`;
169
- const response = yield fetch(url, { headers: { 'Content-Type': 'application/json' } });
170
- if (response.status !== 200) {
171
- throw Error(`Odos assemble error - ${response.status} ${response.statusText}`);
172
- }
173
- const { transaction } = yield response.json();
174
- return transaction.data;
175
- }), {
148
+ export function _getQuoteOdos(fromToken_1, toToken_1, _amount_1, blacklist_1, pathVizImage_1) {
149
+ return __awaiter(this, arguments, void 0, function* (fromToken, toToken, _amount, blacklist, pathVizImage, slippage = 0.5) {
150
+ if (_amount === BigInt(0))
151
+ return { outAmounts: ["0.0"], pathId: '', pathVizImage: '', priceImpact: 0, slippage };
152
+ if (ethers.getAddress(fromToken) == "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE")
153
+ fromToken = "0x0000000000000000000000000000000000000000";
154
+ if (ethers.getAddress(toToken) == "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE")
155
+ toToken = "0x0000000000000000000000000000000000000000";
156
+ const url = `https://prices.curve.finance/odos/quote?chain_id=${this.chainId}&from_address=${ethers.getAddress(fromToken)}` +
157
+ `&to_address=${ethers.getAddress(toToken)}&amount=${_amount.toString()}&slippage=${slippage}&pathVizImage=${pathVizImage}` +
158
+ `&caller_address=${ethers.getAddress(this.constants.ALIASES.leverage_zap)}&blacklist=${ethers.getAddress(blacklist)}`;
159
+ const response = yield fetch(url, { headers: { "accept": "application/json" } });
160
+ if (response.status !== 200) {
161
+ throw Error(`Odos quote error - ${response.status} ${response.statusText}`);
162
+ }
163
+ const data = yield response.json();
164
+ return Object.assign(Object.assign({}, data), { slippage });
165
+ });
166
+ }
167
+ export function _getExpectedOdos(fromToken, toToken, _amount, blacklist) {
168
+ return __awaiter(this, void 0, void 0, function* () {
169
+ return (yield _getQuoteOdos.call(this, fromToken, toToken, _amount, blacklist, false)).outAmounts[0];
170
+ });
171
+ }
172
+ const _assembleTxOdosMemoized = memoize(function (leverageZapAddress, pathId) {
173
+ return __awaiter(this, void 0, void 0, function* () {
174
+ const url = `https://prices.curve.finance/odos/assemble?user=${ethers.getAddress(leverageZapAddress)}&path_id=${pathId}`;
175
+ const response = yield fetch(url, { headers: { 'Content-Type': 'application/json' } });
176
+ if (response.status !== 200) {
177
+ throw Error(`Odos assemble error - ${response.status} ${response.statusText}`);
178
+ }
179
+ const { transaction } = yield response.json();
180
+ return transaction.data;
181
+ });
182
+ }, {
176
183
  promise: true,
177
184
  maxAge: 10 * 1000, // 10s
178
185
  });
186
+ export function _assembleTxOdos(pathId) {
187
+ return __awaiter(this, void 0, void 0, function* () {
188
+ return _assembleTxOdosMemoized(this.constants.ALIASES.leverage_zap, pathId);
189
+ });
190
+ }
package/lib/index.d.ts CHANGED
@@ -1,33 +1,131 @@
1
1
  import { ethers, Networkish } from "ethers";
2
2
  import { LendMarketTemplate } from "./lendMarkets/index.js";
3
3
  import { MintMarketTemplate } from "./mintMarkets/index.js";
4
- declare function init(providerType: 'JsonRpc' | 'Web3' | 'Infura' | 'Alchemy', providerSettings: {
5
- url?: string;
6
- privateKey?: string;
7
- batchMaxCount?: number;
8
- } | {
9
- externalProvider: ethers.Eip1193Provider;
10
- } | {
11
- network?: Networkish;
12
- apiKey?: string;
13
- }, options?: {
14
- gasPrice?: number;
15
- maxFeePerGas?: number;
16
- maxPriorityFeePerGas?: number;
17
- chainId?: number;
18
- }): Promise<void>;
19
- declare function setCustomFeeData(customFeeData: {
20
- gasPrice?: number;
21
- maxFeePerGas?: number;
22
- maxPriorityFeePerGas?: number;
23
- }): void;
24
- declare const llamalend: {
25
- init: typeof init;
26
- chainId: number;
27
- signerAddress: string;
4
+ export declare function createLlamalend(): {
5
+ init(providerType: "JsonRpc" | "Web3" | "Infura" | "Alchemy", providerSettings: {
6
+ url?: string;
7
+ privateKey?: string;
8
+ batchMaxCount?: number;
9
+ } | {
10
+ externalProvider: ethers.Eip1193Provider;
11
+ } | {
12
+ network?: Networkish;
13
+ apiKey?: string;
14
+ }, options?: {
15
+ gasPrice?: number;
16
+ maxFeePerGas?: number;
17
+ maxPriorityFeePerGas?: number;
18
+ chainId?: number;
19
+ }): Promise<void>;
20
+ setCustomFeeData(customFeeData: {
21
+ gasPrice?: number;
22
+ maxFeePerGas?: number;
23
+ maxPriorityFeePerGas?: number;
24
+ }): void;
25
+ readonly chainId: number;
26
+ readonly signerAddress: string;
28
27
  LendMarketTemplate: typeof LendMarketTemplate;
28
+ MintMarketTemplate: typeof MintMarketTemplate;
29
29
  getLendMarket: (lendMarketId: string) => LendMarketTemplate;
30
+ getMintMarket: (mintMarketId: string) => MintMarketTemplate;
31
+ totalSupply: () => Promise<{
32
+ total: string;
33
+ minted: string;
34
+ pegKeepersDebt: string;
35
+ }>;
36
+ getLsdApy: ((name: "wstETH" | "sfrxETH") => Promise<{
37
+ apy: number;
38
+ baseApy: number;
39
+ apyMean30d: number;
40
+ }>) & import("memoizee").Memoized<(name: "wstETH" | "sfrxETH") => Promise<{
41
+ apy: number;
42
+ baseApy: number;
43
+ apyMean30d: number;
44
+ }>>;
45
+ getBalances: (coins: string[], address?: string | undefined) => Promise<string[]>;
46
+ getAllowance: (coins: string[], address: string, spender: string) => Promise<string[]>;
47
+ hasAllowance: (coins: string[], amounts: (string | number)[], address: string, spender: string) => Promise<boolean>;
48
+ ensureAllowance: (coins: string[], amounts: (string | number)[], spender: string, isMax?: boolean | undefined) => Promise<string[]>;
49
+ getUsdRate: (coin: string) => Promise<number>;
50
+ getGasPriceFromL1: () => Promise<number>;
51
+ getGasPriceFromL2: () => Promise<number>;
52
+ getGasInfoForL2: () => Promise<Record<string, number>>;
53
+ fetchStats: (amms: string[], controllers: string[], vaults: string[], borrowed_tokens: string[], collateral_tokens: string[]) => Promise<void>;
54
+ mintMarkets: {
55
+ getMarketList: () => string[];
56
+ };
57
+ lendMarkets: {
58
+ fetchMarkets: (useAPI?: boolean) => Promise<void>;
59
+ getMarketList: () => string[];
60
+ };
61
+ estimateGas: {
62
+ ensureAllowance: (coins: string[], amounts: (string | number)[], spender: string, isMax?: boolean | undefined) => Promise<import("./interfaces.js").TGas>;
63
+ };
64
+ st_crvUSD: {
65
+ convertToAssets: (shares: import("./interfaces.js").TAmount) => Promise<string>;
66
+ convertToShares: (assets: import("./interfaces.js").TAmount) => Promise<string>;
67
+ userBalances: (address?: string | undefined) => Promise<{
68
+ crvUSD: string;
69
+ st_crvUSD: string;
70
+ }>;
71
+ totalSupplyAndCrvUSDLocked: () => Promise<{
72
+ crvUSD: string;
73
+ st_crvUSD: string;
74
+ }>;
75
+ maxDeposit: (address?: string | undefined) => Promise<string>;
76
+ previewDeposit: (assets: import("./interfaces.js").TAmount) => Promise<string>;
77
+ depositIsApproved: (assets: import("./interfaces.js").TAmount) => Promise<boolean>;
78
+ depositAllowance: () => Promise<string[]>;
79
+ depositApprove: (assets: import("./interfaces.js").TAmount, isMax?: boolean | undefined) => Promise<string[]>;
80
+ deposit: (assets: import("./interfaces.js").TAmount) => Promise<string>;
81
+ maxMint: (address?: string | undefined) => Promise<string>;
82
+ previewMint: (shares: import("./interfaces.js").TAmount) => Promise<string>;
83
+ mintIsApproved: (shares: import("./interfaces.js").TAmount) => Promise<boolean>;
84
+ mintAllowance: () => Promise<string[]>;
85
+ mintApprove: (shares: import("./interfaces.js").TAmount, isMax?: boolean | undefined) => Promise<string[]>;
86
+ mint: (shares: import("./interfaces.js").TAmount) => Promise<string>;
87
+ maxWithdraw: (address?: string | undefined) => Promise<string>;
88
+ previewWithdraw: (assets: import("./interfaces.js").TAmount) => Promise<string>;
89
+ withdraw: (assets: import("./interfaces.js").TAmount) => Promise<string>;
90
+ maxRedeem: (address?: string | undefined) => Promise<string>;
91
+ previewRedeem: (shares: import("./interfaces.js").TAmount) => Promise<string>;
92
+ redeem: (shares: import("./interfaces.js").TAmount) => Promise<string>;
93
+ estimateGas: {
94
+ depositApprove: (assets: import("./interfaces.js").TAmount) => Promise<import("./interfaces.js").TGas>;
95
+ deposit: (assets: import("./interfaces.js").TAmount) => Promise<import("./interfaces.js").TGas>;
96
+ mintApprove: (shares: import("./interfaces.js").TAmount) => Promise<import("./interfaces.js").TGas>;
97
+ mint: (shares: import("./interfaces.js").TAmount) => Promise<import("./interfaces.js").TGas>;
98
+ withdraw: (assets: import("./interfaces.js").TAmount) => Promise<import("./interfaces.js").TGas>;
99
+ redeem: (shares: import("./interfaces.js").TAmount) => Promise<import("./interfaces.js").TGas>;
100
+ };
101
+ };
102
+ };
103
+ declare const _default: {
104
+ init(providerType: "JsonRpc" | "Web3" | "Infura" | "Alchemy", providerSettings: {
105
+ url?: string;
106
+ privateKey?: string;
107
+ batchMaxCount?: number;
108
+ } | {
109
+ externalProvider: ethers.Eip1193Provider;
110
+ } | {
111
+ network?: Networkish;
112
+ apiKey?: string;
113
+ }, options?: {
114
+ gasPrice?: number;
115
+ maxFeePerGas?: number;
116
+ maxPriorityFeePerGas?: number;
117
+ chainId?: number;
118
+ }): Promise<void>;
119
+ setCustomFeeData(customFeeData: {
120
+ gasPrice?: number;
121
+ maxFeePerGas?: number;
122
+ maxPriorityFeePerGas?: number;
123
+ }): void;
124
+ readonly chainId: number;
125
+ readonly signerAddress: string;
126
+ LendMarketTemplate: typeof LendMarketTemplate;
30
127
  MintMarketTemplate: typeof MintMarketTemplate;
128
+ getLendMarket: (lendMarketId: string) => LendMarketTemplate;
31
129
  getMintMarket: (mintMarketId: string) => MintMarketTemplate;
32
130
  totalSupply: () => Promise<{
33
131
  total: string;
@@ -43,11 +141,10 @@ declare const llamalend: {
43
141
  baseApy: number;
44
142
  apyMean30d: number;
45
143
  }>>;
46
- setCustomFeeData: typeof setCustomFeeData;
47
- getBalances: (coins: string[], address?: string) => Promise<string[]>;
144
+ getBalances: (coins: string[], address?: string | undefined) => Promise<string[]>;
48
145
  getAllowance: (coins: string[], address: string, spender: string) => Promise<string[]>;
49
- hasAllowance: (coins: string[], amounts: (number | string)[], address: string, spender: string) => Promise<boolean>;
50
- ensureAllowance: (coins: string[], amounts: (number | string)[], spender: string, isMax?: boolean) => Promise<string[]>;
146
+ hasAllowance: (coins: string[], amounts: (string | number)[], address: string, spender: string) => Promise<boolean>;
147
+ ensureAllowance: (coins: string[], amounts: (string | number)[], spender: string, isMax?: boolean | undefined) => Promise<string[]>;
51
148
  getUsdRate: (coin: string) => Promise<number>;
52
149
  getGasPriceFromL1: () => Promise<number>;
53
150
  getGasPriceFromL2: () => Promise<number>;
@@ -61,35 +158,35 @@ declare const llamalend: {
61
158
  getMarketList: () => string[];
62
159
  };
63
160
  estimateGas: {
64
- ensureAllowance: (coins: string[], amounts: (number | string)[], spender: string, isMax?: boolean) => Promise<import("./interfaces.js").TGas>;
161
+ ensureAllowance: (coins: string[], amounts: (string | number)[], spender: string, isMax?: boolean | undefined) => Promise<import("./interfaces.js").TGas>;
65
162
  };
66
163
  st_crvUSD: {
67
164
  convertToAssets: (shares: import("./interfaces.js").TAmount) => Promise<string>;
68
165
  convertToShares: (assets: import("./interfaces.js").TAmount) => Promise<string>;
69
- userBalances: (address?: string) => Promise<{
70
- "crvUSD": string;
71
- "st_crvUSD": string;
166
+ userBalances: (address?: string | undefined) => Promise<{
167
+ crvUSD: string;
168
+ st_crvUSD: string;
72
169
  }>;
73
170
  totalSupplyAndCrvUSDLocked: () => Promise<{
74
- "crvUSD": string;
75
- "st_crvUSD": string;
171
+ crvUSD: string;
172
+ st_crvUSD: string;
76
173
  }>;
77
- maxDeposit: (address?: string) => Promise<string>;
174
+ maxDeposit: (address?: string | undefined) => Promise<string>;
78
175
  previewDeposit: (assets: import("./interfaces.js").TAmount) => Promise<string>;
79
176
  depositIsApproved: (assets: import("./interfaces.js").TAmount) => Promise<boolean>;
80
177
  depositAllowance: () => Promise<string[]>;
81
- depositApprove: (assets: import("./interfaces.js").TAmount, isMax?: boolean) => Promise<string[]>;
178
+ depositApprove: (assets: import("./interfaces.js").TAmount, isMax?: boolean | undefined) => Promise<string[]>;
82
179
  deposit: (assets: import("./interfaces.js").TAmount) => Promise<string>;
83
- maxMint: (address?: string) => Promise<string>;
180
+ maxMint: (address?: string | undefined) => Promise<string>;
84
181
  previewMint: (shares: import("./interfaces.js").TAmount) => Promise<string>;
85
182
  mintIsApproved: (shares: import("./interfaces.js").TAmount) => Promise<boolean>;
86
183
  mintAllowance: () => Promise<string[]>;
87
- mintApprove: (shares: import("./interfaces.js").TAmount, isMax?: boolean) => Promise<string[]>;
184
+ mintApprove: (shares: import("./interfaces.js").TAmount, isMax?: boolean | undefined) => Promise<string[]>;
88
185
  mint: (shares: import("./interfaces.js").TAmount) => Promise<string>;
89
- maxWithdraw: (address?: string) => Promise<string>;
186
+ maxWithdraw: (address?: string | undefined) => Promise<string>;
90
187
  previewWithdraw: (assets: import("./interfaces.js").TAmount) => Promise<string>;
91
188
  withdraw: (assets: import("./interfaces.js").TAmount) => Promise<string>;
92
- maxRedeem: (address?: string) => Promise<string>;
189
+ maxRedeem: (address?: string | undefined) => Promise<string>;
93
190
  previewRedeem: (shares: import("./interfaces.js").TAmount) => Promise<string>;
94
191
  redeem: (shares: import("./interfaces.js").TAmount) => Promise<string>;
95
192
  estimateGas: {
@@ -102,4 +199,4 @@ declare const llamalend: {
102
199
  };
103
200
  };
104
201
  };
105
- export default llamalend;
202
+ export default _default;