@defisaver/positions-sdk 2.1.169-custom-fetching-dev → 2.1.169-custom-fetching-2-dev
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/cjs/portfolio/customDeFiData.js +3 -2
- package/cjs/services/viem.d.ts +2 -0
- package/cjs/services/viem.js +27 -1
- package/cjs/types/portfolio.d.ts +2 -0
- package/esm/portfolio/customDeFiData.js +4 -3
- package/esm/services/viem.d.ts +2 -0
- package/esm/services/viem.js +25 -0
- package/esm/types/portfolio.d.ts +2 -0
- package/package.json +1 -1
- package/src/portfolio/customDeFiData.ts +4 -3
- package/src/services/viem.ts +14 -0
- package/src/types/portfolio.ts +2 -0
|
@@ -51,8 +51,9 @@ function getCustomDeFiData(provider_1, network_1, defaultProvider_1, addresses_1
|
|
|
51
51
|
const has = (protocol) => protocols.includes(protocol);
|
|
52
52
|
const isMainnet = network === common_1.NetworkNumber.Eth;
|
|
53
53
|
const isFluidSupported = [common_1.NetworkNumber.Eth, common_1.NetworkNumber.Arb, common_1.NetworkNumber.Base, common_1.NetworkNumber.Plasma].includes(network);
|
|
54
|
-
const
|
|
55
|
-
const
|
|
54
|
+
const pin = (p) => (options.blockNumber !== undefined ? (0, viem_1.pinProviderBlock)(p, options.blockNumber) : p);
|
|
55
|
+
const client = (0, viem_1.getViemProvider)(pin(provider), network, { batch: { multicall: { batchSize } } });
|
|
56
|
+
const defaultClient = (0, viem_1.getViemProvider)(pin(defaultProvider), network, { batch: { multicall: { batchSize } } });
|
|
56
57
|
const aaveV3Markets = has(types_1.PortfolioProtocol.AaveV3)
|
|
57
58
|
? [types_1.AaveVersions.AaveV3, types_1.AaveVersions.AaveV3Lido, types_1.AaveVersions.AaveV3Etherfi].map((v) => (0, markets_1.AaveMarkets)(network)[v]).filter((m) => m.chainIds.includes(network))
|
|
58
59
|
: [];
|
package/cjs/services/viem.d.ts
CHANGED
|
@@ -4403,6 +4403,8 @@ export declare const getViemProvider: (provider: EthereumProvider, network: Netw
|
|
|
4403
4403
|
uid?: undefined;
|
|
4404
4404
|
} & import("viem").ExactPartial<Pick<import("viem").PublicActions<import("viem").Transport, undefined, undefined>, "getBlockNumber" | "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getChainId" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "prepareTransactionRequest" | "readContract" | "sendRawTransaction" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions<undefined, undefined>, "sendTransaction" | "writeContract">>>(fn: (client: import("viem").Client<import("viem").Transport, undefined, undefined, import("viem").PublicRpcSchema, import("viem").PublicActions<import("viem").Transport, undefined>>) => client) => import("viem").Client<import("viem").Transport, undefined, undefined, import("viem").PublicRpcSchema, { [K in keyof client]: client[K]; } & import("viem").PublicActions<import("viem").Transport, undefined>>;
|
|
4405
4405
|
};
|
|
4406
|
+
/** Rewrites 'latest' reads so a client built on this provider sees a fixed block. */
|
|
4407
|
+
export declare const pinProviderBlock: (provider: EthereumProvider, blockNumber: number | bigint) => EthereumProvider;
|
|
4406
4408
|
export declare const setViemBlockNumber: (block: Blockish) => {
|
|
4407
4409
|
blockNumber?: undefined;
|
|
4408
4410
|
} | {
|
package/cjs/services/viem.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setViemBlockNumber = exports.getViemProvider = exports.getViemChain = void 0;
|
|
12
|
+
exports.setViemBlockNumber = exports.pinProviderBlock = exports.getViemProvider = exports.getViemChain = void 0;
|
|
4
13
|
exports.encodeCalldata = encodeCalldata;
|
|
5
14
|
const viem_1 = require("viem");
|
|
6
15
|
const chains_1 = require("viem/chains");
|
|
@@ -26,6 +35,23 @@ const getViemChain = (network) => {
|
|
|
26
35
|
exports.getViemChain = getViemChain;
|
|
27
36
|
const getViemProvider = (provider, network, options) => (0, viem_1.createPublicClient)(Object.assign({ transport: (0, viem_1.custom)(provider), chain: (0, exports.getViemChain)(network) }, options));
|
|
28
37
|
exports.getViemProvider = getViemProvider;
|
|
38
|
+
/** Rewrites 'latest' reads so a client built on this provider sees a fixed block. */
|
|
39
|
+
const pinProviderBlock = (provider, blockNumber) => {
|
|
40
|
+
const block = `0x${BigInt(blockNumber).toString(16)}`;
|
|
41
|
+
return {
|
|
42
|
+
request: (args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
43
|
+
const params = [...(args.params || [])];
|
|
44
|
+
if (args.method === 'eth_blockNumber')
|
|
45
|
+
return block;
|
|
46
|
+
if (['eth_call', 'eth_getCode', 'eth_getBalance', 'eth_getStorageAt'].includes(args.method) && (params[1] === undefined || params[1] === 'latest'))
|
|
47
|
+
params[1] = block;
|
|
48
|
+
if (args.method === 'eth_getBlockByNumber' && params[0] === 'latest')
|
|
49
|
+
params[0] = block;
|
|
50
|
+
return provider.request(Object.assign(Object.assign({}, args), { params }));
|
|
51
|
+
}),
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
exports.pinProviderBlock = pinProviderBlock;
|
|
29
55
|
const setViemBlockNumber = (block) => {
|
|
30
56
|
if (block === 'latest')
|
|
31
57
|
return {};
|
package/cjs/types/portfolio.d.ts
CHANGED
|
@@ -87,6 +87,8 @@ export interface CustomDeFiDataOptions {
|
|
|
87
87
|
isSim?: boolean;
|
|
88
88
|
/** viem multicall calldata cap in bytes; defaults to 250k (2k when isSim). */
|
|
89
89
|
batchSize?: number;
|
|
90
|
+
/** Pins every read to this block; defaults to latest. */
|
|
91
|
+
blockNumber?: number;
|
|
90
92
|
}
|
|
91
93
|
export interface CustomDeFiData {
|
|
92
94
|
positions: PortfolioPositionsData;
|
|
@@ -11,7 +11,7 @@ import Dec from 'decimal.js';
|
|
|
11
11
|
import { NetworkNumber } from '../types/common';
|
|
12
12
|
import { AaveMarkets, AaveV4Spokes, CompoundMarkets, CrvUsdMarkets, LiquityV2Markets, LlamaLendMarkets, MakerActiveIlks, MorphoBlueMarkets, MorphoMidnightMarkets, SparkMarkets, } from '../markets';
|
|
13
13
|
import { AaveVersions, CompoundVersions, PortfolioProtocol, } from '../types';
|
|
14
|
-
import { getViemProvider } from '../services/viem';
|
|
14
|
+
import { getViemProvider, pinProviderBlock } from '../services/viem';
|
|
15
15
|
import { ZERO_ADDRESS } from '../constants';
|
|
16
16
|
import { _getAaveV2AccountData, _getAaveV2MarketsData } from '../aaveV2';
|
|
17
17
|
import { _getAaveV3AccountData, _getAaveV3MarketData, getStakeAaveData } from '../aaveV3';
|
|
@@ -45,8 +45,9 @@ export function getCustomDeFiData(provider_1, network_1, defaultProvider_1, addr
|
|
|
45
45
|
const has = (protocol) => protocols.includes(protocol);
|
|
46
46
|
const isMainnet = network === NetworkNumber.Eth;
|
|
47
47
|
const isFluidSupported = [NetworkNumber.Eth, NetworkNumber.Arb, NetworkNumber.Base, NetworkNumber.Plasma].includes(network);
|
|
48
|
-
const
|
|
49
|
-
const
|
|
48
|
+
const pin = (p) => (options.blockNumber !== undefined ? pinProviderBlock(p, options.blockNumber) : p);
|
|
49
|
+
const client = getViemProvider(pin(provider), network, { batch: { multicall: { batchSize } } });
|
|
50
|
+
const defaultClient = getViemProvider(pin(defaultProvider), network, { batch: { multicall: { batchSize } } });
|
|
50
51
|
const aaveV3Markets = has(PortfolioProtocol.AaveV3)
|
|
51
52
|
? [AaveVersions.AaveV3, AaveVersions.AaveV3Lido, AaveVersions.AaveV3Etherfi].map((v) => AaveMarkets(network)[v]).filter((m) => m.chainIds.includes(network))
|
|
52
53
|
: [];
|
package/esm/services/viem.d.ts
CHANGED
|
@@ -4393,6 +4393,8 @@ export declare const getViemProvider: (provider: EthereumProvider, network: Netw
|
|
|
4393
4393
|
uid?: undefined;
|
|
4394
4394
|
} & import("viem").ExactPartial<Pick<import("viem").PublicActions<import("viem").Transport, undefined, undefined>, "getBlockNumber" | "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getChainId" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "prepareTransactionRequest" | "readContract" | "sendRawTransaction" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions<undefined, undefined>, "sendTransaction" | "writeContract">>>(fn: (client: import("viem").Client<import("viem").Transport, undefined, undefined, import("viem").PublicRpcSchema, import("viem").PublicActions<import("viem").Transport, undefined>>) => client) => import("viem").Client<import("viem").Transport, undefined, undefined, import("viem").PublicRpcSchema, { [K in keyof client]: client[K]; } & import("viem").PublicActions<import("viem").Transport, undefined>>;
|
|
4395
4395
|
};
|
|
4396
|
+
/** Rewrites 'latest' reads so a client built on this provider sees a fixed block. */
|
|
4397
|
+
export declare const pinProviderBlock: (provider: EthereumProvider, blockNumber: number | bigint) => EthereumProvider;
|
|
4396
4398
|
export declare const setViemBlockNumber: (block: Blockish) => {
|
|
4397
4399
|
blockNumber?: undefined;
|
|
4398
4400
|
} | {
|
package/esm/services/viem.js
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
1
10
|
import { createPublicClient, custom, encodeFunctionData, } from 'viem';
|
|
2
11
|
import { arbitrum, base, mainnet, optimism, linea, plasma, } from 'viem/chains';
|
|
3
12
|
import { NetworkNumber } from '../types/common';
|
|
@@ -20,6 +29,22 @@ export const getViemChain = (network) => {
|
|
|
20
29
|
}
|
|
21
30
|
};
|
|
22
31
|
export const getViemProvider = (provider, network, options) => createPublicClient(Object.assign({ transport: custom(provider), chain: getViemChain(network) }, options));
|
|
32
|
+
/** Rewrites 'latest' reads so a client built on this provider sees a fixed block. */
|
|
33
|
+
export const pinProviderBlock = (provider, blockNumber) => {
|
|
34
|
+
const block = `0x${BigInt(blockNumber).toString(16)}`;
|
|
35
|
+
return {
|
|
36
|
+
request: (args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
+
const params = [...(args.params || [])];
|
|
38
|
+
if (args.method === 'eth_blockNumber')
|
|
39
|
+
return block;
|
|
40
|
+
if (['eth_call', 'eth_getCode', 'eth_getBalance', 'eth_getStorageAt'].includes(args.method) && (params[1] === undefined || params[1] === 'latest'))
|
|
41
|
+
params[1] = block;
|
|
42
|
+
if (args.method === 'eth_getBlockByNumber' && params[0] === 'latest')
|
|
43
|
+
params[0] = block;
|
|
44
|
+
return provider.request(Object.assign(Object.assign({}, args), { params }));
|
|
45
|
+
}),
|
|
46
|
+
};
|
|
47
|
+
};
|
|
23
48
|
export const setViemBlockNumber = (block) => {
|
|
24
49
|
if (block === 'latest')
|
|
25
50
|
return {};
|
package/esm/types/portfolio.d.ts
CHANGED
|
@@ -87,6 +87,8 @@ export interface CustomDeFiDataOptions {
|
|
|
87
87
|
isSim?: boolean;
|
|
88
88
|
/** viem multicall calldata cap in bytes; defaults to 250k (2k when isSim). */
|
|
89
89
|
batchSize?: number;
|
|
90
|
+
/** Pins every read to this block; defaults to latest. */
|
|
91
|
+
blockNumber?: number;
|
|
90
92
|
}
|
|
91
93
|
export interface CustomDeFiData {
|
|
92
94
|
positions: PortfolioPositionsData;
|
package/package.json
CHANGED
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
PortfolioPositionsData,
|
|
23
23
|
PortfolioProtocol,
|
|
24
24
|
} from '../types';
|
|
25
|
-
import { getViemProvider } from '../services/viem';
|
|
25
|
+
import { getViemProvider, pinProviderBlock } from '../services/viem';
|
|
26
26
|
import { ZERO_ADDRESS } from '../constants';
|
|
27
27
|
import { _getAaveV2AccountData, _getAaveV2MarketsData } from '../aaveV2';
|
|
28
28
|
import { _getAaveV3AccountData, _getAaveV3MarketData, getStakeAaveData } from '../aaveV3';
|
|
@@ -74,8 +74,9 @@ export async function getCustomDeFiData(
|
|
|
74
74
|
const isMainnet = network === NetworkNumber.Eth;
|
|
75
75
|
const isFluidSupported = [NetworkNumber.Eth, NetworkNumber.Arb, NetworkNumber.Base, NetworkNumber.Plasma].includes(network);
|
|
76
76
|
|
|
77
|
-
const
|
|
78
|
-
const
|
|
77
|
+
const pin = (p: EthereumProvider) => (options.blockNumber !== undefined ? pinProviderBlock(p, options.blockNumber) : p);
|
|
78
|
+
const client = getViemProvider(pin(provider), network, { batch: { multicall: { batchSize } } });
|
|
79
|
+
const defaultClient = getViemProvider(pin(defaultProvider), network, { batch: { multicall: { batchSize } } });
|
|
79
80
|
|
|
80
81
|
const aaveV3Markets = has(PortfolioProtocol.AaveV3)
|
|
81
82
|
? [AaveVersions.AaveV3, AaveVersions.AaveV3Lido, AaveVersions.AaveV3Etherfi].map((v) => AaveMarkets(network)[v]).filter((m) => m.chainIds.includes(network))
|
package/src/services/viem.ts
CHANGED
|
@@ -34,6 +34,20 @@ export const getViemProvider = (provider: EthereumProvider, network: NetworkNumb
|
|
|
34
34
|
...options,
|
|
35
35
|
});
|
|
36
36
|
|
|
37
|
+
/** Rewrites 'latest' reads so a client built on this provider sees a fixed block. */
|
|
38
|
+
export const pinProviderBlock = (provider: EthereumProvider, blockNumber: number | bigint): EthereumProvider => {
|
|
39
|
+
const block = `0x${BigInt(blockNumber).toString(16)}`;
|
|
40
|
+
return {
|
|
41
|
+
request: async (args: any) => {
|
|
42
|
+
const params = [...(args.params || [])];
|
|
43
|
+
if (args.method === 'eth_blockNumber') return block;
|
|
44
|
+
if (['eth_call', 'eth_getCode', 'eth_getBalance', 'eth_getStorageAt'].includes(args.method) && (params[1] === undefined || params[1] === 'latest')) params[1] = block;
|
|
45
|
+
if (args.method === 'eth_getBlockByNumber' && params[0] === 'latest') params[0] = block;
|
|
46
|
+
return provider.request({ ...args, params });
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
|
|
37
51
|
export const setViemBlockNumber = (block: Blockish) => {
|
|
38
52
|
if (block === 'latest') return {};
|
|
39
53
|
return { blockNumber: BigInt(block) };
|
package/src/types/portfolio.ts
CHANGED
|
@@ -95,6 +95,8 @@ export interface CustomDeFiDataOptions {
|
|
|
95
95
|
isSim?: boolean;
|
|
96
96
|
/** viem multicall calldata cap in bytes; defaults to 250k (2k when isSim). */
|
|
97
97
|
batchSize?: number;
|
|
98
|
+
/** Pins every read to this block; defaults to latest. */
|
|
99
|
+
blockNumber?: number;
|
|
98
100
|
}
|
|
99
101
|
|
|
100
102
|
export interface CustomDeFiData {
|