@cfxjs/sirius-next-common 0.2.17 → 0.2.19
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/{chunk-SX6R4MHO.js → chunk-2WEBXRNL.js} +2 -2
- package/dist/{chunk-CNF26YY7.js → chunk-6L4ZEJQI.js} +2 -2
- package/dist/{chunk-2KXTTKRI.js → chunk-7AVQOIDM.js} +2 -2
- package/dist/{chunk-ZLNQICQZ.js → chunk-7VQL3G7K.js} +4 -4
- package/dist/{chunk-GSWIFV2B.js → chunk-AYCHKB2Y.js} +2 -2
- package/dist/{chunk-E3ZD2GGG.js → chunk-BEI5TWJL.js} +2 -2
- package/dist/{chunk-CKVDFS45.js → chunk-BHAXBHVC.js} +8 -13
- package/dist/chunk-BHAXBHVC.js.map +1 -0
- package/dist/{chunk-7OSADJ6H.js → chunk-C3E5EA6J.js} +23 -9
- package/dist/chunk-C3E5EA6J.js.map +1 -0
- package/dist/{chunk-LBWKTQYK.js → chunk-C6CGZ6KN.js} +2 -2
- package/dist/{chunk-P4EE3QGM.js → chunk-C7OIVXE3.js} +3 -3
- package/dist/{chunk-BUSBM33B.js → chunk-CMOP3BKX.js} +3 -3
- package/dist/{chunk-6H5A42YS.js → chunk-DCQANK66.js} +2 -2
- package/dist/{chunk-OZ4OJLIM.js → chunk-DYNSSHD5.js} +7 -7
- package/dist/{chunk-OCQIWTDC.js → chunk-ELF2EOGF.js} +2 -2
- package/dist/{chunk-YIZCD4WG.js → chunk-GHHUAWSG.js} +3 -3
- package/dist/{chunk-JRB53YY7.js → chunk-GPQN2P32.js} +22 -18
- package/dist/chunk-GPQN2P32.js.map +1 -0
- package/dist/{chunk-DF3PVTB5.js → chunk-GQRCW7WX.js} +2 -2
- package/dist/{chunk-YIXV7A4J.js → chunk-H5ZJBRIK.js} +4 -4
- package/dist/{chunk-3PXUIH3S.js → chunk-LCIBOT5P.js} +2 -2
- package/dist/chunk-MUW5KBWU.js +25 -0
- package/dist/chunk-MUW5KBWU.js.map +1 -0
- package/dist/{chunk-CPPQCJEV.js → chunk-NM3BMITL.js} +4 -5
- package/dist/chunk-NM3BMITL.js.map +1 -0
- package/dist/{chunk-L62OTV7F.js → chunk-OT7NZ4PK.js} +3 -3
- package/dist/{chunk-EMPFZFBS.js → chunk-RUU22F7R.js} +2 -2
- package/dist/{chunk-5M5ECKFB.js → chunk-S7M6UTND.js} +46 -41
- package/dist/chunk-S7M6UTND.js.map +1 -0
- package/dist/{chunk-5CDCNIBM.js → chunk-TC4445WV.js} +28 -24
- package/dist/chunk-TC4445WV.js.map +1 -0
- package/dist/{chunk-CPR4QZT6.js → chunk-UF5BN4QN.js} +2 -2
- package/dist/{chunk-TP67325Z.js → chunk-UZALXR3J.js} +4 -4
- package/dist/{chunk-5EDEEGZK.js → chunk-VGYNHJFT.js} +16 -3
- package/dist/chunk-VGYNHJFT.js.map +1 -0
- package/dist/{chunk-CL6QEKM6.js → chunk-W64AF7LA.js} +5 -5
- package/dist/chunk-WZIT54AU.js +51 -0
- package/dist/chunk-WZIT54AU.js.map +1 -0
- package/dist/{chunk-LUCBUM2Y.js → chunk-XZL5CZFT.js} +4 -4
- package/dist/{chunk-5Y7I6VYA.js → chunk-YEAWH772.js} +2 -2
- package/dist/{chunk-LVFMTP5H.js → chunk-YVV32ON3.js} +2 -2
- package/dist/components/AceEditor/index.js +4 -4
- package/dist/components/AddressContainer/CoreAddressContainer.d.ts +1 -0
- package/dist/components/AddressContainer/CoreAddressContainer.js +10 -10
- package/dist/components/AddressContainer/EVMAddressContainer.d.ts +1 -0
- package/dist/components/AddressContainer/EVMAddressContainer.js +9 -9
- package/dist/components/AddressContainer/addressSwitcher.d.ts +1 -0
- package/dist/components/AddressContainer/addressSwitcher.js +7 -7
- package/dist/components/AddressContainer/addressView.d.ts +2 -1
- package/dist/components/AddressContainer/addressView.js +6 -6
- package/dist/components/AddressContainer/label.js +45 -6
- package/dist/components/AddressContainer/label.js.map +1 -1
- package/dist/components/AddressContainer/types.d.ts +19 -23
- package/dist/components/AddressContainer/utils.d.ts +17 -2
- package/dist/components/AddressContainer/utils.js +6 -20
- package/dist/components/AddressContainer/utils.js.map +1 -1
- package/dist/components/Age/index.js +4 -4
- package/dist/components/AutoComplete/index.js +3 -3
- package/dist/components/Charts/PreviewChartTemplate.js +1 -1
- package/dist/components/Charts/StockChartTemplate.js +1 -1
- package/dist/components/CopyButton/index.js +3 -3
- package/dist/components/DecimalsSelect/index.js +3 -3
- package/dist/components/DownloadCSV/index.js +4 -4
- package/dist/components/GasPriceDropdown/index.js +2 -2
- package/dist/components/IncreasePercent/index.js +2 -2
- package/dist/components/InfoIconWithTooltip/index.js +4 -4
- package/dist/components/InputData/AddressLabel.js +8 -9
- package/dist/components/InputData/ContractDetail.js +3 -3
- package/dist/components/InputData/JsonDecode.js +5 -5
- package/dist/components/InputData/OptimizationDecode.js +10 -11
- package/dist/components/InputData/UTF8.js +3 -3
- package/dist/components/InputData/index.js +14 -15
- package/dist/components/Modal/index.js +3 -3
- package/dist/components/NetworkIcon/index.js +2 -2
- package/dist/components/OutputData/ErrorDecode.js +13 -14
- package/dist/components/OutputData/index.js +15 -16
- package/dist/components/PhishingAddressContainer/index.js +4 -4
- package/dist/components/Popover/index.js +3 -3
- package/dist/components/Price/index.js +3 -3
- package/dist/components/ProxyContractAddress/index.d.ts +1 -1
- package/dist/components/ProxyContractAddress/index.js +24 -15
- package/dist/components/ProxyContractAddress/index.js.map +1 -1
- package/dist/components/Radio/index.js +2 -2
- package/dist/components/SearchInput/index.js +4 -4
- package/dist/components/Select/index.js +4 -4
- package/dist/components/Select/select.js +3 -3
- package/dist/components/Text/index.js +4 -4
- package/dist/components/Tooltip/index.js +3 -3
- package/dist/components/TransactionAction/coreTransactionAction.js +13 -18
- package/dist/components/TransactionAction/coreTransactionAction.js.map +1 -1
- package/dist/components/TransactionAction/evmTransactionAction.js +12 -17
- package/dist/components/TransactionAction/evmTransactionAction.js.map +1 -1
- package/dist/components/TransactionTrace/TraceDetail.js +23 -24
- package/dist/components/TransactionTrace/TreeTraceTable.js +24 -25
- package/dist/components/TransactionTrace/index.js +24 -25
- package/dist/utils/address.js +2 -2
- package/dist/utils/contractManagerTool.js +2 -2
- package/dist/utils/hooks/useAddressLabel.js +3 -3
- package/dist/utils/hooks/useAddressNameMap.d.ts +6 -0
- package/dist/utils/hooks/useAddressNameMap.js +12 -0
- package/dist/utils/hooks/useAddressNameMap.js.map +1 -0
- package/dist/utils/hooks/useAge.js +1 -1
- package/dist/utils/hooks/useAge.js.map +1 -1
- package/dist/utils/hooks/useAutoSetHolderFilterParams.js +2 -2
- package/dist/utils/hooks/useContractDetail.js +2 -2
- package/dist/utils/hooks/useDecodeFunctionData.js +5 -5
- package/dist/utils/hooks/useDecodeFunctionError.js +3 -3
- package/dist/utils/hooks/useENS.js +3 -3
- package/dist/utils/hooks/useEnhanceDataWithNameMap.d.ts +30 -0
- package/dist/utils/hooks/useEnhanceDataWithNameMap.js +71 -0
- package/dist/utils/hooks/useEnhanceDataWithNameMap.js.map +1 -0
- package/dist/utils/hooks/useMethodAbi.js +2 -2
- package/dist/utils/hooks/useTableData.d.ts +34 -0
- package/dist/utils/hooks/useTableData.js +95 -0
- package/dist/utils/hooks/useTableData.js.map +1 -0
- package/dist/utils/hooks/useTxTrace.d.ts +3 -40
- package/dist/utils/hooks/useTxTrace.js +5 -15
- package/dist/utils/hooks/useTxTrace.js.map +1 -1
- package/dist/utils/index.js +2 -2
- package/dist/utils/request.d.ts +7 -2
- package/dist/utils/request.js +3 -1
- package/dist/utils/request.types.d.ts +35 -1
- package/package.json +10 -10
- package/dist/chunk-5CDCNIBM.js.map +0 -1
- package/dist/chunk-5EDEEGZK.js.map +0 -1
- package/dist/chunk-5M5ECKFB.js.map +0 -1
- package/dist/chunk-7OSADJ6H.js.map +0 -1
- package/dist/chunk-CKVDFS45.js.map +0 -1
- package/dist/chunk-CPPQCJEV.js.map +0 -1
- package/dist/chunk-JRB53YY7.js.map +0 -1
- package/dist/chunk-Q2DX6IDH.js +0 -49
- package/dist/chunk-Q2DX6IDH.js.map +0 -1
- /package/dist/{chunk-SX6R4MHO.js.map → chunk-2WEBXRNL.js.map} +0 -0
- /package/dist/{chunk-CNF26YY7.js.map → chunk-6L4ZEJQI.js.map} +0 -0
- /package/dist/{chunk-2KXTTKRI.js.map → chunk-7AVQOIDM.js.map} +0 -0
- /package/dist/{chunk-ZLNQICQZ.js.map → chunk-7VQL3G7K.js.map} +0 -0
- /package/dist/{chunk-GSWIFV2B.js.map → chunk-AYCHKB2Y.js.map} +0 -0
- /package/dist/{chunk-E3ZD2GGG.js.map → chunk-BEI5TWJL.js.map} +0 -0
- /package/dist/{chunk-LBWKTQYK.js.map → chunk-C6CGZ6KN.js.map} +0 -0
- /package/dist/{chunk-P4EE3QGM.js.map → chunk-C7OIVXE3.js.map} +0 -0
- /package/dist/{chunk-BUSBM33B.js.map → chunk-CMOP3BKX.js.map} +0 -0
- /package/dist/{chunk-6H5A42YS.js.map → chunk-DCQANK66.js.map} +0 -0
- /package/dist/{chunk-OZ4OJLIM.js.map → chunk-DYNSSHD5.js.map} +0 -0
- /package/dist/{chunk-OCQIWTDC.js.map → chunk-ELF2EOGF.js.map} +0 -0
- /package/dist/{chunk-YIZCD4WG.js.map → chunk-GHHUAWSG.js.map} +0 -0
- /package/dist/{chunk-DF3PVTB5.js.map → chunk-GQRCW7WX.js.map} +0 -0
- /package/dist/{chunk-YIXV7A4J.js.map → chunk-H5ZJBRIK.js.map} +0 -0
- /package/dist/{chunk-3PXUIH3S.js.map → chunk-LCIBOT5P.js.map} +0 -0
- /package/dist/{chunk-L62OTV7F.js.map → chunk-OT7NZ4PK.js.map} +0 -0
- /package/dist/{chunk-EMPFZFBS.js.map → chunk-RUU22F7R.js.map} +0 -0
- /package/dist/{chunk-CPR4QZT6.js.map → chunk-UF5BN4QN.js.map} +0 -0
- /package/dist/{chunk-TP67325Z.js.map → chunk-UZALXR3J.js.map} +0 -0
- /package/dist/{chunk-CL6QEKM6.js.map → chunk-W64AF7LA.js.map} +0 -0
- /package/dist/{chunk-LUCBUM2Y.js.map → chunk-XZL5CZFT.js.map} +0 -0
- /package/dist/{chunk-5Y7I6VYA.js.map → chunk-YEAWH772.js.map} +0 -0
- /package/dist/{chunk-LVFMTP5H.js.map → chunk-YVV32ON3.js.map} +0 -0
|
@@ -6,7 +6,7 @@ import "../../chunk-WQG2LZMB.js";
|
|
|
6
6
|
import { useEffect, useState } from "react";
|
|
7
7
|
var useAge = (format) => {
|
|
8
8
|
const [ageFormat, toggleAgeFormat] = useState(
|
|
9
|
-
format || localStorage.getItem("CONFLUX_SCAN_TABLE_AGE_FORMAT" /* ageFormat */) !== "datetime" ? "age" : "datetime"
|
|
9
|
+
format || (localStorage.getItem("CONFLUX_SCAN_TABLE_AGE_FORMAT" /* ageFormat */) !== "datetime" ? "age" : "datetime")
|
|
10
10
|
);
|
|
11
11
|
useEffect(() => {
|
|
12
12
|
if (localStorage.getItem("CONFLUX_SCAN_TABLE_AGE_FORMAT" /* ageFormat */) !== ageFormat) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/hooks/useAge.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { LOCALSTORAGE_KEYS_MAP } from '../constants';\n\nexport const useAge = (format?: string) => {\n const [ageFormat, toggleAgeFormat] = useState(\n format ||\n localStorage.getItem(LOCALSTORAGE_KEYS_MAP.ageFormat) !== 'datetime'\n
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/hooks/useAge.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { LOCALSTORAGE_KEYS_MAP } from '../constants';\n\nexport const useAge = (format?: string) => {\n const [ageFormat, toggleAgeFormat] = useState(\n format ||\n (localStorage.getItem(LOCALSTORAGE_KEYS_MAP.ageFormat) !== 'datetime'\n ? 'age'\n : 'datetime'),\n );\n useEffect(() => {\n if (localStorage.getItem(LOCALSTORAGE_KEYS_MAP.ageFormat) !== ageFormat) {\n localStorage.setItem(LOCALSTORAGE_KEYS_MAP.ageFormat, ageFormat);\n }\n }, [format, ageFormat]);\n return [ageFormat, toggleAgeFormat] as const;\n};\n"],"mappings":";;;;;AAAA,SAAS,WAAW,gBAAgB;AAG7B,IAAM,SAAS,CAAC,WAAoB;AACzC,QAAM,CAAC,WAAW,eAAe,IAAI;AAAA,IACnC,WACG,aAAa,uDAAuC,MAAM,aACvD,QACA;AAAA,EACR;AACA,YAAU,MAAM;AACd,QAAI,aAAa,uDAAuC,MAAM,WAAW;AACvE,mBAAa,yDAAyC,SAAS;AAAA,IACjE;AAAA,EACF,GAAG,CAAC,QAAQ,SAAS,CAAC;AACtB,SAAO,CAAC,WAAW,eAAe;AACpC;","names":[]}
|
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
} from "../../chunk-CPSXYQJ7.js";
|
|
4
4
|
import {
|
|
5
5
|
isAddressEqual
|
|
6
|
-
} from "../../chunk-
|
|
6
|
+
} from "../../chunk-6L4ZEJQI.js";
|
|
7
7
|
import "../../chunk-WIB76E7O.js";
|
|
8
|
-
import "../../chunk-
|
|
8
|
+
import "../../chunk-VGYNHJFT.js";
|
|
9
9
|
import "../../chunk-J2I22Q2M.js";
|
|
10
10
|
import "../../chunk-YEINMVAR.js";
|
|
11
11
|
import "../../chunk-DQGLZCIG.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useContractDetail
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-LCIBOT5P.js";
|
|
4
|
+
import "../../chunk-VGYNHJFT.js";
|
|
5
5
|
import "../../chunk-J2I22Q2M.js";
|
|
6
6
|
import "../../chunk-YEINMVAR.js";
|
|
7
7
|
import "../../chunk-DQGLZCIG.js";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useDecodeFunctionData
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-XZL5CZFT.js";
|
|
4
|
+
import "../../chunk-BEI5TWJL.js";
|
|
5
5
|
import "../../chunk-6SXAFSBF.js";
|
|
6
6
|
import "../../chunk-JIRLY7OG.js";
|
|
7
7
|
import "../../chunk-4B6ASBYQ.js";
|
|
8
|
-
import "../../chunk-
|
|
9
|
-
import "../../chunk-
|
|
8
|
+
import "../../chunk-LCIBOT5P.js";
|
|
9
|
+
import "../../chunk-NM3BMITL.js";
|
|
10
10
|
import "../../chunk-WIB76E7O.js";
|
|
11
|
-
import "../../chunk-
|
|
11
|
+
import "../../chunk-VGYNHJFT.js";
|
|
12
12
|
import "../../chunk-J2I22Q2M.js";
|
|
13
13
|
import "../../chunk-YEINMVAR.js";
|
|
14
14
|
import "../../chunk-DQGLZCIG.js";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useDecodeFunctionError
|
|
3
|
-
} from "../../chunk-
|
|
3
|
+
} from "../../chunk-7AVQOIDM.js";
|
|
4
4
|
import "../../chunk-6SXAFSBF.js";
|
|
5
5
|
import "../../chunk-JIRLY7OG.js";
|
|
6
6
|
import "../../chunk-4B6ASBYQ.js";
|
|
7
|
-
import "../../chunk-
|
|
7
|
+
import "../../chunk-LCIBOT5P.js";
|
|
8
8
|
import "../../chunk-5TGK2EA2.js";
|
|
9
9
|
import "../../chunk-ADNS57X5.js";
|
|
10
10
|
import "../../chunk-WIB76E7O.js";
|
|
11
|
-
import "../../chunk-
|
|
11
|
+
import "../../chunk-VGYNHJFT.js";
|
|
12
12
|
import "../../chunk-J2I22Q2M.js";
|
|
13
13
|
import "../../chunk-YEINMVAR.js";
|
|
14
14
|
import "../../chunk-DQGLZCIG.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useENS
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-CMOP3BKX.js";
|
|
4
|
+
import "../../chunk-6L4ZEJQI.js";
|
|
5
5
|
import "../../chunk-WIB76E7O.js";
|
|
6
|
-
import "../../chunk-
|
|
6
|
+
import "../../chunk-VGYNHJFT.js";
|
|
7
7
|
import "../../chunk-J2I22Q2M.js";
|
|
8
8
|
import "../../chunk-YEINMVAR.js";
|
|
9
9
|
import "../../chunk-DQGLZCIG.js";
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AddressNameMap } from '../request.types.js';
|
|
2
|
+
|
|
3
|
+
declare const transformNameMapKeysToLowerCase: (nameMap?: Record<string, AddressNameMap>) => {
|
|
4
|
+
[k: string]: AddressNameMap;
|
|
5
|
+
} | undefined;
|
|
6
|
+
declare const enhanceDataWithNameMap: (list?: Record<string, unknown>[], nameMap?: Record<string, AddressNameMap>) => Record<string, unknown>[] | {
|
|
7
|
+
nameMap: {
|
|
8
|
+
[k: string]: AddressNameMap;
|
|
9
|
+
} | undefined;
|
|
10
|
+
}[] | undefined;
|
|
11
|
+
declare const formatListResponseWithNameMap: <T extends Record<string, unknown>>(res: T) => T & {
|
|
12
|
+
list: Record<string, unknown>[] | {
|
|
13
|
+
nameMap: {
|
|
14
|
+
[k: string]: AddressNameMap;
|
|
15
|
+
} | undefined;
|
|
16
|
+
}[] | undefined;
|
|
17
|
+
};
|
|
18
|
+
declare const useEnhanceDataWithNameMap: (list?: Record<string, unknown>[], { addressKeys, nameMap, }?: {
|
|
19
|
+
addressKeys?: string[] | undefined;
|
|
20
|
+
nameMap?: Record<string, AddressNameMap> | undefined;
|
|
21
|
+
}) => {
|
|
22
|
+
data: Record<string, unknown>[] | {
|
|
23
|
+
nameMap: {
|
|
24
|
+
[k: string]: AddressNameMap;
|
|
25
|
+
} | undefined;
|
|
26
|
+
}[] | undefined;
|
|
27
|
+
isLoading: boolean;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export { enhanceDataWithNameMap, formatListResponseWithNameMap, transformNameMapKeysToLowerCase, useEnhanceDataWithNameMap };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useAddressNameMap
|
|
3
|
+
} from "../../chunk-MUW5KBWU.js";
|
|
4
|
+
import "../../chunk-VGYNHJFT.js";
|
|
5
|
+
import "../../chunk-J2I22Q2M.js";
|
|
6
|
+
import "../../chunk-YEINMVAR.js";
|
|
7
|
+
import "../../chunk-DQGLZCIG.js";
|
|
8
|
+
import "../../chunk-WQG2LZMB.js";
|
|
9
|
+
|
|
10
|
+
// src/utils/hooks/useEnhanceDataWithNameMap.ts
|
|
11
|
+
import { useMemo } from "react";
|
|
12
|
+
var transformNameMapKeysToLowerCase = (nameMap) => nameMap && Object.fromEntries(
|
|
13
|
+
Object.entries(nameMap).map(([k, v]) => [k.toLowerCase(), v])
|
|
14
|
+
);
|
|
15
|
+
var enhanceDataWithNameMap = (list, nameMap) => {
|
|
16
|
+
if (!nameMap || !list)
|
|
17
|
+
return list;
|
|
18
|
+
const normalizedNameMap = transformNameMapKeysToLowerCase(nameMap);
|
|
19
|
+
return list.map((item) => {
|
|
20
|
+
const newItem = {
|
|
21
|
+
...item,
|
|
22
|
+
nameMap: normalizedNameMap
|
|
23
|
+
};
|
|
24
|
+
return newItem;
|
|
25
|
+
}) || [];
|
|
26
|
+
};
|
|
27
|
+
var formatListResponseWithNameMap = (res) => {
|
|
28
|
+
return {
|
|
29
|
+
...res,
|
|
30
|
+
list: enhanceDataWithNameMap(
|
|
31
|
+
res.list,
|
|
32
|
+
res.nameMap
|
|
33
|
+
)
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
var useEnhanceDataWithNameMap = (list, {
|
|
37
|
+
addressKeys,
|
|
38
|
+
nameMap
|
|
39
|
+
} = {}) => {
|
|
40
|
+
const keys = useMemo(() => addressKeys?.join(",") || "", [addressKeys]);
|
|
41
|
+
const addresses = useMemo(() => {
|
|
42
|
+
const set = /* @__PURE__ */ new Set();
|
|
43
|
+
list?.forEach((item) => {
|
|
44
|
+
addressKeys?.forEach((key) => {
|
|
45
|
+
const address = item[key];
|
|
46
|
+
if (address && typeof address === "string") {
|
|
47
|
+
set.add(address);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
return Array.from(set);
|
|
52
|
+
}, [list, keys]);
|
|
53
|
+
const { data: fetchedNameMap, isLoading } = useAddressNameMap(
|
|
54
|
+
addresses,
|
|
55
|
+
!nameMap
|
|
56
|
+
);
|
|
57
|
+
const finalNameMap = nameMap || fetchedNameMap;
|
|
58
|
+
return useMemo(() => {
|
|
59
|
+
return {
|
|
60
|
+
data: enhanceDataWithNameMap(list, finalNameMap),
|
|
61
|
+
isLoading
|
|
62
|
+
};
|
|
63
|
+
}, [list, finalNameMap, isLoading]);
|
|
64
|
+
};
|
|
65
|
+
export {
|
|
66
|
+
enhanceDataWithNameMap,
|
|
67
|
+
formatListResponseWithNameMap,
|
|
68
|
+
transformNameMapKeysToLowerCase,
|
|
69
|
+
useEnhanceDataWithNameMap
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=useEnhanceDataWithNameMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/hooks/useEnhanceDataWithNameMap.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useAddressNameMap } from './useAddressNameMap';\nimport { AddressNameMap } from '../request.types';\n\nexport const transformNameMapKeysToLowerCase = (\n nameMap?: Record<string, AddressNameMap>,\n) =>\n nameMap &&\n Object.fromEntries(\n Object.entries(nameMap).map(([k, v]) => [k.toLowerCase(), v]),\n );\n\nexport const enhanceDataWithNameMap = (\n list?: Record<string, unknown>[],\n nameMap?: Record<string, AddressNameMap>,\n) => {\n if (!nameMap || !list) return list;\n const normalizedNameMap = transformNameMapKeysToLowerCase(nameMap);\n\n return (\n list.map(item => {\n const newItem = {\n ...item,\n nameMap: normalizedNameMap,\n };\n return newItem;\n }) || []\n );\n};\n\nexport const formatListResponseWithNameMap = <\n T extends Record<string, unknown>,\n>(\n res: T,\n) => {\n return {\n ...res,\n list: enhanceDataWithNameMap(\n res.list as Record<string, unknown>[],\n res.nameMap as Record<string, AddressNameMap>,\n ),\n };\n};\n\nexport const useEnhanceDataWithNameMap = (\n list?: Record<string, unknown>[],\n {\n addressKeys,\n nameMap,\n }: {\n addressKeys?: string[];\n nameMap?: Record<string, AddressNameMap>;\n } = {},\n) => {\n const keys = useMemo(() => addressKeys?.join(',') || '', [addressKeys]);\n const addresses = useMemo(() => {\n const set = new Set<string>();\n list?.forEach(item => {\n addressKeys?.forEach(key => {\n const address = item[key];\n if (address && typeof address === 'string') {\n set.add(address);\n }\n });\n });\n return Array.from(set);\n }, [list, keys]);\n const { data: fetchedNameMap, isLoading } = useAddressNameMap(\n addresses,\n !nameMap,\n );\n const finalNameMap = nameMap || fetchedNameMap;\n return useMemo(() => {\n return {\n data: enhanceDataWithNameMap(list, finalNameMap),\n isLoading,\n };\n }, [list, finalNameMap, isLoading]);\n};\n"],"mappings":";;;;;;;;;;AAAA,SAAS,eAAe;AAIjB,IAAM,kCAAkC,CAC7C,YAEA,WACA,OAAO;AAAA,EACL,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC;AAC9D;AAEK,IAAM,yBAAyB,CACpC,MACA,YACG;AACH,MAAI,CAAC,WAAW,CAAC;AAAM,WAAO;AAC9B,QAAM,oBAAoB,gCAAgC,OAAO;AAEjE,SACE,KAAK,IAAI,UAAQ;AACf,UAAM,UAAU;AAAA,MACd,GAAG;AAAA,MACH,SAAS;AAAA,IACX;AACA,WAAO;AAAA,EACT,CAAC,KAAK,CAAC;AAEX;AAEO,IAAM,gCAAgC,CAG3C,QACG;AACH,SAAO;AAAA,IACL,GAAG;AAAA,IACH,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,EACF;AACF;AAEO,IAAM,4BAA4B,CACvC,MACA;AAAA,EACE;AAAA,EACA;AACF,IAGI,CAAC,MACF;AACH,QAAM,OAAO,QAAQ,MAAM,aAAa,KAAK,GAAG,KAAK,IAAI,CAAC,WAAW,CAAC;AACtE,QAAM,YAAY,QAAQ,MAAM;AAC9B,UAAM,MAAM,oBAAI,IAAY;AAC5B,UAAM,QAAQ,UAAQ;AACpB,mBAAa,QAAQ,SAAO;AAC1B,cAAM,UAAU,KAAK,GAAG;AACxB,YAAI,WAAW,OAAO,YAAY,UAAU;AAC1C,cAAI,IAAI,OAAO;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,WAAO,MAAM,KAAK,GAAG;AAAA,EACvB,GAAG,CAAC,MAAM,IAAI,CAAC;AACf,QAAM,EAAE,MAAM,gBAAgB,UAAU,IAAI;AAAA,IAC1C;AAAA,IACA,CAAC;AAAA,EACH;AACA,QAAM,eAAe,WAAW;AAChC,SAAO,QAAQ,MAAM;AACnB,WAAO;AAAA,MACL,MAAM,uBAAuB,MAAM,YAAY;AAAA,MAC/C;AAAA,IACF;AAAA,EACF,GAAG,CAAC,MAAM,cAAc,SAAS,CAAC;AACpC;","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useMethodAbi
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-BEI5TWJL.js";
|
|
4
|
+
import "../../chunk-VGYNHJFT.js";
|
|
5
5
|
import "../../chunk-J2I22Q2M.js";
|
|
6
6
|
import "../../chunk-YEINMVAR.js";
|
|
7
7
|
import "../../chunk-DQGLZCIG.js";
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { SWRConfiguration, KeyedMutator } from 'swr';
|
|
2
|
+
|
|
3
|
+
interface UseTableDataOptions<T> {
|
|
4
|
+
url: string;
|
|
5
|
+
query?: Record<string, any>;
|
|
6
|
+
defaultSkip?: number;
|
|
7
|
+
defaultLimit?: number;
|
|
8
|
+
shouldFetch?: boolean;
|
|
9
|
+
swrConfig?: SWRConfiguration<T>;
|
|
10
|
+
}
|
|
11
|
+
interface TablePagination {
|
|
12
|
+
current: number;
|
|
13
|
+
pageSize: number;
|
|
14
|
+
total: number;
|
|
15
|
+
}
|
|
16
|
+
interface TableData {
|
|
17
|
+
list: Record<string, unknown>[];
|
|
18
|
+
total: number;
|
|
19
|
+
listLimit?: number;
|
|
20
|
+
}
|
|
21
|
+
interface UseTableDataResult<T extends TableData> {
|
|
22
|
+
data: T | undefined;
|
|
23
|
+
loading: boolean;
|
|
24
|
+
error: any;
|
|
25
|
+
mutate: KeyedMutator<T>;
|
|
26
|
+
pagination: TablePagination;
|
|
27
|
+
setPagination: (next: {
|
|
28
|
+
current?: number;
|
|
29
|
+
pageSize?: number;
|
|
30
|
+
}) => void;
|
|
31
|
+
}
|
|
32
|
+
declare const useTableData: <T extends TableData = TableData>({ url, query, defaultSkip, defaultLimit, shouldFetch, swrConfig, }: UseTableDataOptions<T>) => UseTableDataResult<T>;
|
|
33
|
+
|
|
34
|
+
export { TablePagination, UseTableDataOptions, UseTableDataResult, useTableData };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useSearchParams
|
|
3
|
+
} from "../../chunk-CPSXYQJ7.js";
|
|
4
|
+
import {
|
|
5
|
+
fetchWithPrefix
|
|
6
|
+
} from "../../chunk-VGYNHJFT.js";
|
|
7
|
+
import "../../chunk-J2I22Q2M.js";
|
|
8
|
+
import "../../chunk-YEINMVAR.js";
|
|
9
|
+
import "../../chunk-DQGLZCIG.js";
|
|
10
|
+
import "../../chunk-WQG2LZMB.js";
|
|
11
|
+
|
|
12
|
+
// src/utils/hooks/useTableData.ts
|
|
13
|
+
import { useCallback, useMemo } from "react";
|
|
14
|
+
import { useHistory } from "react-router-dom";
|
|
15
|
+
import qs from "query-string";
|
|
16
|
+
import useSWR from "swr";
|
|
17
|
+
var toPositiveInt = (value, fallback, { allowZero = false } = {}) => {
|
|
18
|
+
const raw = Array.isArray(value) ? value[0] : value;
|
|
19
|
+
const n = Number(raw);
|
|
20
|
+
if (!Number.isFinite(n))
|
|
21
|
+
return fallback;
|
|
22
|
+
if (!Number.isInteger(n))
|
|
23
|
+
return fallback;
|
|
24
|
+
if (allowZero ? n < 0 : n <= 0)
|
|
25
|
+
return fallback;
|
|
26
|
+
return n;
|
|
27
|
+
};
|
|
28
|
+
var useTableData = ({
|
|
29
|
+
url,
|
|
30
|
+
query,
|
|
31
|
+
defaultSkip = 0,
|
|
32
|
+
defaultLimit = 10,
|
|
33
|
+
shouldFetch = true,
|
|
34
|
+
swrConfig
|
|
35
|
+
}) => {
|
|
36
|
+
const history = useHistory();
|
|
37
|
+
const search = useSearchParams();
|
|
38
|
+
const skip = toPositiveInt(search.skip, defaultSkip, { allowZero: true });
|
|
39
|
+
const limit = toPositiveInt(search.limit, defaultLimit);
|
|
40
|
+
const pageSize = limit;
|
|
41
|
+
const current = Math.floor(skip / limit) + 1;
|
|
42
|
+
const requestUrl = useMemo(() => {
|
|
43
|
+
const { skip: _s, limit: _l, ...restSearch } = search;
|
|
44
|
+
return qs.stringifyUrl({
|
|
45
|
+
url,
|
|
46
|
+
query: {
|
|
47
|
+
...query || {},
|
|
48
|
+
...restSearch,
|
|
49
|
+
skip: String(skip),
|
|
50
|
+
limit: String(limit)
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}, [url, query, search, skip, limit]);
|
|
54
|
+
const key = shouldFetch ? requestUrl : null;
|
|
55
|
+
const { data, error, isLoading, mutate } = useSWR(
|
|
56
|
+
key,
|
|
57
|
+
() => fetchWithPrefix(requestUrl),
|
|
58
|
+
{
|
|
59
|
+
...swrConfig
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
const setPagination = useCallback(
|
|
63
|
+
(next) => {
|
|
64
|
+
const nextPageSize = next.pageSize ?? pageSize;
|
|
65
|
+
const nextCurrent = next.current ?? current;
|
|
66
|
+
const nextSkip = Math.max(0, (nextCurrent - 1) * nextPageSize);
|
|
67
|
+
const nextSearch = qs.stringify({
|
|
68
|
+
...search,
|
|
69
|
+
skip: String(nextSkip),
|
|
70
|
+
limit: String(nextPageSize)
|
|
71
|
+
});
|
|
72
|
+
history.push({
|
|
73
|
+
pathname: history.location.pathname,
|
|
74
|
+
search: nextSearch ? `?${nextSearch}` : ""
|
|
75
|
+
});
|
|
76
|
+
},
|
|
77
|
+
[history, search, current, pageSize]
|
|
78
|
+
);
|
|
79
|
+
return {
|
|
80
|
+
data,
|
|
81
|
+
loading: isLoading,
|
|
82
|
+
error,
|
|
83
|
+
mutate,
|
|
84
|
+
pagination: {
|
|
85
|
+
current,
|
|
86
|
+
pageSize,
|
|
87
|
+
total: data?.listLimit != null ? Math.min(data?.total ?? 0, data.listLimit) : data?.total ?? 0
|
|
88
|
+
},
|
|
89
|
+
setPagination
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
export {
|
|
93
|
+
useTableData
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=useTableData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/hooks/useTableData.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport qs from 'query-string';\nimport useSWR, { SWRConfiguration, KeyedMutator } from 'swr';\nimport { fetchWithPrefix } from '../request';\nimport { useSearchParams } from './useSearchParams';\n\nexport interface UseTableDataOptions<T> {\n url: string;\n query?: Record<string, any>;\n defaultSkip?: number;\n defaultLimit?: number;\n shouldFetch?: boolean;\n swrConfig?: SWRConfiguration<T>;\n}\n\nexport interface TablePagination {\n current: number;\n pageSize: number;\n total: number;\n}\n\ninterface TableData {\n list: Record<string, unknown>[];\n total: number;\n listLimit?: number;\n}\n\nexport interface UseTableDataResult<T extends TableData> {\n data: T | undefined;\n loading: boolean;\n error: any;\n mutate: KeyedMutator<T>;\n pagination: TablePagination;\n setPagination: (next: { current?: number; pageSize?: number }) => void;\n}\n\nconst toPositiveInt = (\n value: unknown,\n fallback: number,\n { allowZero = false }: { allowZero?: boolean } = {},\n) => {\n const raw = Array.isArray(value) ? value[0] : value;\n const n = Number(raw);\n if (!Number.isFinite(n)) return fallback;\n if (!Number.isInteger(n)) return fallback;\n if (allowZero ? n < 0 : n <= 0) return fallback;\n return n;\n};\n\nexport const useTableData = <T extends TableData = TableData>({\n url,\n query,\n defaultSkip = 0,\n defaultLimit = 10,\n shouldFetch = true,\n swrConfig,\n}: UseTableDataOptions<T>): UseTableDataResult<T> => {\n const history = useHistory();\n const search = useSearchParams();\n\n const skip = toPositiveInt(search.skip, defaultSkip, { allowZero: true });\n const limit = toPositiveInt(search.limit, defaultLimit);\n\n const pageSize = limit;\n const current = Math.floor(skip / limit) + 1;\n\n const requestUrl = useMemo(() => {\n const { skip: _s, limit: _l, ...restSearch } = search;\n return qs.stringifyUrl({\n url,\n query: {\n ...(query || {}),\n ...restSearch,\n skip: String(skip),\n limit: String(limit),\n },\n });\n }, [url, query, search, skip, limit]);\n\n const key = shouldFetch ? requestUrl : null;\n\n const { data, error, isLoading, mutate } = useSWR<T>(\n key,\n () => fetchWithPrefix<T>(requestUrl),\n {\n ...swrConfig,\n },\n );\n\n const setPagination = useCallback(\n (next: { current?: number; pageSize?: number }) => {\n const nextPageSize = next.pageSize ?? pageSize;\n const nextCurrent = next.current ?? current;\n const nextSkip = Math.max(0, (nextCurrent - 1) * nextPageSize);\n const nextSearch = qs.stringify({\n ...search,\n skip: String(nextSkip),\n limit: String(nextPageSize),\n });\n history.push({\n pathname: history.location.pathname,\n search: nextSearch ? `?${nextSearch}` : '',\n });\n },\n [history, search, current, pageSize],\n );\n\n return {\n data,\n loading: isLoading,\n error,\n mutate,\n pagination: {\n current,\n pageSize,\n total:\n data?.listLimit != null\n ? Math.min(data?.total ?? 0, data.listLimit)\n : data?.total ?? 0,\n },\n setPagination,\n };\n};\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,aAAa,eAAe;AACrC,SAAS,kBAAkB;AAC3B,OAAO,QAAQ;AACf,OAAO,YAAgD;AAkCvD,IAAM,gBAAgB,CACpB,OACA,UACA,EAAE,YAAY,MAAM,IAA6B,CAAC,MAC/C;AACH,QAAM,MAAM,MAAM,QAAQ,KAAK,IAAI,MAAM,CAAC,IAAI;AAC9C,QAAM,IAAI,OAAO,GAAG;AACpB,MAAI,CAAC,OAAO,SAAS,CAAC;AAAG,WAAO;AAChC,MAAI,CAAC,OAAO,UAAU,CAAC;AAAG,WAAO;AACjC,MAAI,YAAY,IAAI,IAAI,KAAK;AAAG,WAAO;AACvC,SAAO;AACT;AAEO,IAAM,eAAe,CAAkC;AAAA,EAC5D;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,eAAe;AAAA,EACf,cAAc;AAAA,EACd;AACF,MAAqD;AACnD,QAAM,UAAU,WAAW;AAC3B,QAAM,SAAS,gBAAgB;AAE/B,QAAM,OAAO,cAAc,OAAO,MAAM,aAAa,EAAE,WAAW,KAAK,CAAC;AACxE,QAAM,QAAQ,cAAc,OAAO,OAAO,YAAY;AAEtD,QAAM,WAAW;AACjB,QAAM,UAAU,KAAK,MAAM,OAAO,KAAK,IAAI;AAE3C,QAAM,aAAa,QAAQ,MAAM;AAC/B,UAAM,EAAE,MAAM,IAAI,OAAO,IAAI,GAAG,WAAW,IAAI;AAC/C,WAAO,GAAG,aAAa;AAAA,MACrB;AAAA,MACA,OAAO;AAAA,QACL,GAAI,SAAS,CAAC;AAAA,QACd,GAAG;AAAA,QACH,MAAM,OAAO,IAAI;AAAA,QACjB,OAAO,OAAO,KAAK;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,KAAK,OAAO,QAAQ,MAAM,KAAK,CAAC;AAEpC,QAAM,MAAM,cAAc,aAAa;AAEvC,QAAM,EAAE,MAAM,OAAO,WAAW,OAAO,IAAI;AAAA,IACzC;AAAA,IACA,MAAM,gBAAmB,UAAU;AAAA,IACnC;AAAA,MACE,GAAG;AAAA,IACL;AAAA,EACF;AAEA,QAAM,gBAAgB;AAAA,IACpB,CAAC,SAAkD;AACjD,YAAM,eAAe,KAAK,YAAY;AACtC,YAAM,cAAc,KAAK,WAAW;AACpC,YAAM,WAAW,KAAK,IAAI,IAAI,cAAc,KAAK,YAAY;AAC7D,YAAM,aAAa,GAAG,UAAU;AAAA,QAC9B,GAAG;AAAA,QACH,MAAM,OAAO,QAAQ;AAAA,QACrB,OAAO,OAAO,YAAY;AAAA,MAC5B,CAAC;AACD,cAAQ,KAAK;AAAA,QACX,UAAU,QAAQ,SAAS;AAAA,QAC3B,QAAQ,aAAa,IAAI,eAAe;AAAA,MAC1C,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,QAAQ,SAAS,QAAQ;AAAA,EACrC;AAEA,SAAO;AAAA,IACL;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,YAAY;AAAA,MACV;AAAA,MACA;AAAA,MACA,OACE,MAAM,aAAa,OACf,KAAK,IAAI,MAAM,SAAS,GAAG,KAAK,SAAS,IACzC,MAAM,SAAS;AAAA,IACvB;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as swr from 'swr';
|
|
2
2
|
import { AbiFunctionWithoutGas } from '../sdk.js';
|
|
3
|
-
import { Pocket } from '../request.types.js';
|
|
3
|
+
import { Pocket, AddressNameMap } from '../request.types.js';
|
|
4
4
|
import 'viem';
|
|
5
5
|
|
|
6
6
|
interface TraceAction {
|
|
@@ -23,27 +23,6 @@ interface TraceResult {
|
|
|
23
23
|
outcome: 'success' | 'fail' | 'reverted';
|
|
24
24
|
returnData: `0x${string}`;
|
|
25
25
|
}
|
|
26
|
-
interface ContractInfo {
|
|
27
|
-
address: string;
|
|
28
|
-
isVirtual: boolean;
|
|
29
|
-
verify: {
|
|
30
|
-
result: number;
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
interface TokenInfo {
|
|
34
|
-
address: string;
|
|
35
|
-
decimals: number;
|
|
36
|
-
symbol: string;
|
|
37
|
-
name: string;
|
|
38
|
-
tokenType: string;
|
|
39
|
-
}
|
|
40
|
-
interface NameTagInfo {
|
|
41
|
-
nameTag: string;
|
|
42
|
-
website?: string;
|
|
43
|
-
desc?: string;
|
|
44
|
-
labels?: string[];
|
|
45
|
-
caution?: number;
|
|
46
|
-
}
|
|
47
26
|
interface OriginTreeTrace {
|
|
48
27
|
calls: OriginTreeTrace[];
|
|
49
28
|
action: TraceAction;
|
|
@@ -60,14 +39,9 @@ interface OriginTreeTrace {
|
|
|
60
39
|
type ProxyType = 'BeaconProxy' | 'Proxy';
|
|
61
40
|
interface OriginTraceData {
|
|
62
41
|
addressArray: string[];
|
|
63
|
-
contractMap: Record<string, ContractInfo>;
|
|
64
|
-
tokenMap: Record<string, TokenInfo>;
|
|
65
42
|
proxyMap: Record<string, ProxyType>;
|
|
66
43
|
methodMap: Record<string, Record<string, string>>;
|
|
67
|
-
|
|
68
|
-
name?: string;
|
|
69
|
-
}>;
|
|
70
|
-
nameTagMap: Record<string, NameTagInfo>;
|
|
44
|
+
nameMap: Record<string, AddressNameMap>;
|
|
71
45
|
traceTree: OriginTreeTrace[];
|
|
72
46
|
}
|
|
73
47
|
interface ListTraceForUI {
|
|
@@ -83,18 +57,7 @@ interface ListTraceForUI {
|
|
|
83
57
|
method?: string;
|
|
84
58
|
contractCreated?: string;
|
|
85
59
|
abi?: AbiFunctionWithoutGas[];
|
|
86
|
-
|
|
87
|
-
toContractInfo: ContractInfo | {};
|
|
88
|
-
fromTokenInfo: TokenInfo | {};
|
|
89
|
-
toTokenInfo: TokenInfo | {};
|
|
90
|
-
fromNameTagInfo?: NameTagInfo;
|
|
91
|
-
toNameTagInfo?: NameTagInfo;
|
|
92
|
-
fromENSInfo?: {
|
|
93
|
-
name?: string;
|
|
94
|
-
};
|
|
95
|
-
toENSInfo?: {
|
|
96
|
-
name?: string;
|
|
97
|
-
};
|
|
60
|
+
nameMap: Record<string, AddressNameMap>;
|
|
98
61
|
proxy?: {
|
|
99
62
|
type: ProxyType;
|
|
100
63
|
beaconAddress?: string;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
formatAddress
|
|
3
|
-
} from "../../chunk-
|
|
3
|
+
} from "../../chunk-6L4ZEJQI.js";
|
|
4
4
|
import {
|
|
5
5
|
formatABI
|
|
6
|
-
} from "../../chunk-
|
|
6
|
+
} from "../../chunk-NM3BMITL.js";
|
|
7
7
|
import "../../chunk-WIB76E7O.js";
|
|
8
8
|
import {
|
|
9
9
|
fetchWithPrefix
|
|
10
|
-
} from "../../chunk-
|
|
10
|
+
} from "../../chunk-VGYNHJFT.js";
|
|
11
11
|
import {
|
|
12
12
|
publishRequestError
|
|
13
13
|
} from "../../chunk-J2I22Q2M.js";
|
|
@@ -19,12 +19,9 @@ import "../../chunk-WQG2LZMB.js";
|
|
|
19
19
|
import useSWRImmutable from "swr/immutable";
|
|
20
20
|
var formatTraceData = (data, space) => {
|
|
21
21
|
const addressType = space === "core" ? "base32" : "hex";
|
|
22
|
-
const contractInfo = data.contractMap || {};
|
|
23
|
-
const tokenInfo = data.tokenMap || {};
|
|
24
22
|
const proxyMap = data.proxyMap || {};
|
|
25
|
-
const nameTagMap = data.nameTagMap || {};
|
|
26
|
-
const ensMap = data.ensMap || {};
|
|
27
23
|
const methodMap = data.methodMap || {};
|
|
24
|
+
const nameMap = data.nameMap || {};
|
|
28
25
|
let total = 0;
|
|
29
26
|
const formatList = (t, parent) => {
|
|
30
27
|
total += t.length;
|
|
@@ -63,14 +60,7 @@ var formatTraceData = (data, space) => {
|
|
|
63
60
|
method,
|
|
64
61
|
abi,
|
|
65
62
|
contractCreated: isContractCreated ? t.result?.addr : void 0,
|
|
66
|
-
|
|
67
|
-
toContractInfo: contractInfo[to ?? ""] || {},
|
|
68
|
-
fromTokenInfo: tokenInfo[from] || {},
|
|
69
|
-
toTokenInfo: tokenInfo[to ?? ""] || {},
|
|
70
|
-
fromNameTagInfo: nameTagMap[from],
|
|
71
|
-
toNameTagInfo: nameTagMap[to ?? ""],
|
|
72
|
-
fromENSInfo: ensMap[from],
|
|
73
|
-
toENSInfo: ensMap[to ?? ""],
|
|
63
|
+
nameMap,
|
|
74
64
|
isCallImpl: t.isCallImpl,
|
|
75
65
|
fromPocket: t.action.fromPocket,
|
|
76
66
|
toPocket: t.action.toPocket
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/hooks/useTxTrace.ts"],"sourcesContent":["import useSWRImmutable from 'swr/immutable';\nimport { fetchWithPrefix } from 'src/utils/request';\nimport { publishRequestError } from '../pubsub';\nimport type { AbiFunctionWithoutGas } from 'src/utils/sdk';\nimport { formatABI } from '..';\nimport { formatAddress } from '../address';\nimport { Pocket } from '../request.types';\n\nexport interface TraceAction {\n createType: string;\n callType: string;\n from: string;\n to?: string;\n input?: `0x${string}`;\n value: string;\n gas?: string;\n space: string;\n\n // ↓↓↓↓↓↓↓↓ only for core space ↓↓↓↓↓↓↓↓\n fromPocket?: Pocket;\n toPocket?: Pocket;\n fromSpace?: 'evm' | 'none' | 'native';\n toSpace?: 'evm' | 'none' | 'native';\n}\nexport interface TraceResult {\n addr?: string;\n gasLeft: string;\n outcome: 'success' | 'fail' | 'reverted';\n returnData: `0x${string}`;\n}\n\ninterface ContractInfo {\n address: string;\n isVirtual: boolean;\n verify: {\n result: number;\n };\n}\ninterface TokenInfo {\n address: string;\n decimals: number;\n symbol: string;\n name: string;\n tokenType: string;\n}\n\ninterface NameTagInfo {\n nameTag: string;\n website?: string;\n desc?: string;\n labels?: string[];\n caution?: number;\n}\n\nexport interface OriginTreeTrace {\n calls: OriginTreeTrace[];\n action: TraceAction;\n result?: TraceResult;\n blockHash: string;\n epochHash: string;\n epochNumber: number;\n transactionHash: string;\n transactionPosition: number;\n type: string;\n valid: boolean;\n // added by frontend\n isCallImpl?: boolean;\n}\n\nexport type ProxyType = 'BeaconProxy' | 'Proxy';\n\nexport interface OriginTraceData {\n addressArray: string[];\n contractMap: Record<string, ContractInfo>;\n tokenMap: Record<string, TokenInfo>;\n proxyMap: Record<string, ProxyType>;\n methodMap: Record<string, Record<string, string>>;\n ensMap: Record<\n string,\n {\n name?: string;\n }\n >;\n nameTagMap: Record<string, NameTagInfo>;\n traceTree: OriginTreeTrace[];\n}\n\nexport interface ListTraceForUI {\n index: string;\n type: string;\n from: string;\n to?: string;\n value: string;\n input?: `0x${string}`;\n result?: TraceResult;\n gas?: string;\n isProxyCall?: boolean;\n method?: string;\n contractCreated?: string;\n abi?: AbiFunctionWithoutGas[];\n fromContractInfo: ContractInfo | {};\n toContractInfo: ContractInfo | {};\n fromTokenInfo: TokenInfo | {};\n toTokenInfo: TokenInfo | {};\n fromNameTagInfo?: NameTagInfo;\n toNameTagInfo?: NameTagInfo;\n fromENSInfo?: {\n name?: string;\n };\n toENSInfo?: {\n name?: string;\n };\n proxy?: {\n type: ProxyType;\n beaconAddress?: string;\n implAddress: string;\n };\n isCallBeacon?: boolean;\n isCallImpl?: boolean;\n // only for core space ↓↓↓↓↓↓↓↓\n toESpaceInfo?: {\n address?: string;\n };\n fromESpaceInfo?: {\n address?: string;\n };\n fromPocket?: Pocket;\n toPocket?: Pocket;\n}\n\nexport interface TreeTraceForUI extends ListTraceForUI {\n calls?: TreeTraceForUI[];\n}\n\nconst formatTraceData = (data: OriginTraceData, space: 'evm' | 'core') => {\n const addressType = space === 'core' ? 'base32' : 'hex';\n const contractInfo = data.contractMap || {};\n const tokenInfo = data.tokenMap || {};\n const proxyMap = data.proxyMap || {};\n const nameTagMap = data.nameTagMap || {};\n const ensMap = data.ensMap || {};\n const methodMap = data.methodMap || {};\n\n let total = 0;\n\n const formatList = (\n t: OriginTreeTrace[],\n parent?: TreeTraceForUI,\n ): TreeTraceForUI[] => {\n total += t.length;\n return t.map((item, index) => formatItem(item, index, parent, t));\n };\n const formatItem = (\n t: OriginTreeTrace,\n index: number,\n parent: TreeTraceForUI | undefined,\n list: OriginTreeTrace[],\n ): TreeTraceForUI => {\n const methodId = t.action.input?.slice(0, 10);\n const from = formatAddress(t.action.from, addressType);\n const to = formatAddress(t.action.to, addressType);\n let method = methodId;\n let abi: AbiFunctionWithoutGas[] | undefined = undefined;\n const methodABI = methodId && to ? methodMap[methodId]?.[to] : undefined;\n if (methodABI) {\n try {\n const result = formatABI(`[\"${methodABI}\"]`, {\n json: true,\n allowEmpty: true,\n });\n abi = JSON.parse(result) as AbiFunctionWithoutGas[];\n const jsonABI = abi[0];\n method = jsonABI?.name || methodId;\n } catch (error) {\n console.log('parse method abi error: ', methodABI, error);\n }\n }\n\n const isContractCreated = !!t.action.createType;\n\n const item: TreeTraceForUI = {\n index: `${parent?.index ? `${parent.index}_` : ''}${index}`,\n type: `${t.action.callType || t.type}`,\n from: from,\n to: to,\n input: t.action.input,\n value: t.action.value,\n result: t.result,\n gas: t.action.gas,\n method,\n abi,\n contractCreated: isContractCreated ? t.result?.addr : undefined,\n fromContractInfo: contractInfo[from] || {},\n toContractInfo: contractInfo[to ?? ''] || {},\n fromTokenInfo: tokenInfo[from] || {},\n toTokenInfo: tokenInfo[to ?? ''] || {},\n fromNameTagInfo: nameTagMap[from],\n toNameTagInfo: nameTagMap[to ?? ''],\n fromENSInfo: ensMap[from],\n toENSInfo: ensMap[to ?? ''],\n isCallImpl: t.isCallImpl,\n fromPocket: t.action.fromPocket,\n toPocket: t.action.toPocket,\n };\n if (t.action.fromSpace === 'evm') {\n item.fromESpaceInfo = {\n address: formatAddress(from, 'hex'),\n };\n }\n if (t.action.toSpace === 'evm') {\n item.toESpaceInfo = {\n address: formatAddress(to, 'hex'),\n };\n }\n if (\n parent &&\n parent.to &&\n proxyMap[parent.to] &&\n from === parent.to &&\n to\n ) {\n // proxy call\n if (\n index === 0 &&\n proxyMap[parent.to] === 'Proxy' &&\n t.action.callType === 'delegatecall'\n ) {\n parent.proxy = {\n type: 'Proxy',\n implAddress: to,\n };\n item.isCallImpl = true;\n }\n // beacon proxy call\n const second = list[1];\n if (\n index === 0 &&\n proxyMap[parent.to] === 'BeaconProxy' &&\n t.action.callType === 'staticcall' &&\n second &&\n second.action.to &&\n second.action.from === parent.to &&\n second.action.callType === 'delegatecall'\n ) {\n parent.proxy = {\n type: 'BeaconProxy',\n beaconAddress: to,\n implAddress: second.action.to,\n };\n item.isCallBeacon = true;\n second.isCallImpl = true;\n }\n }\n if (t.calls) {\n item.calls = formatList(t.calls, item);\n }\n return item;\n };\n const list = formatList(data.traceTree);\n return {\n total,\n list,\n };\n};\n\nexport const treeTraceToList = (\n data: TreeTraceForUI[],\n showProxyCall = false,\n) => {\n const result: ListTraceForUI[] = [];\n const handler = (list: TreeTraceForUI[]) => {\n list.forEach(item => {\n if (showProxyCall || (!item.isCallBeacon && !item.isCallImpl)) {\n result.push(item);\n }\n if (item.calls) {\n handler(item.calls);\n }\n });\n };\n handler(data);\n return result;\n};\n\nexport const hideProxyCallInTreeTrace = (data: TreeTraceForUI[]) => {\n const handler = (list: TreeTraceForUI[]) => {\n const result: TreeTraceForUI[] = [];\n list.forEach(item => {\n const newTrace = { ...item };\n if (!newTrace.isCallBeacon && !newTrace.isCallImpl) {\n result.push(newTrace);\n if (newTrace.calls) {\n newTrace.calls = handler(newTrace.calls);\n }\n } else if (newTrace.calls) {\n result.push(...handler(newTrace.calls));\n }\n });\n return result;\n };\n return handler(data);\n};\n\nexport const useTxTrace = (hash: string, space: 'evm' | 'core') => {\n const url = `/transferTree/${hash}`;\n\n return useSWRImmutable([url, space], () =>\n fetchWithPrefix(url)\n .then((resp: any) => {\n if (resp?.traceTree) {\n const { list, total } = formatTraceData(resp, space);\n return { list, total };\n }\n })\n .catch(e => {\n publishRequestError({ code: 60002, message: e.message }, 'code');\n }),\n );\n};\n"],"mappings":"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","names":["list"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/hooks/useTxTrace.ts"],"sourcesContent":["import useSWRImmutable from 'swr/immutable';\nimport { fetchWithPrefix } from 'src/utils/request';\nimport { publishRequestError } from '../pubsub';\nimport type { AbiFunctionWithoutGas } from 'src/utils/sdk';\nimport { formatABI } from '..';\nimport { formatAddress } from '../address';\nimport { AddressNameMap, Pocket } from '../request.types';\n\nexport interface TraceAction {\n createType: string;\n callType: string;\n from: string;\n to?: string;\n input?: `0x${string}`;\n value: string;\n gas?: string;\n space: string;\n\n // ↓↓↓↓↓↓↓↓ only for core space ↓↓↓↓↓↓↓↓\n fromPocket?: Pocket;\n toPocket?: Pocket;\n fromSpace?: 'evm' | 'none' | 'native';\n toSpace?: 'evm' | 'none' | 'native';\n}\nexport interface TraceResult {\n addr?: string;\n gasLeft: string;\n outcome: 'success' | 'fail' | 'reverted';\n returnData: `0x${string}`;\n}\n\nexport interface OriginTreeTrace {\n calls: OriginTreeTrace[];\n action: TraceAction;\n result?: TraceResult;\n blockHash: string;\n epochHash: string;\n epochNumber: number;\n transactionHash: string;\n transactionPosition: number;\n type: string;\n valid: boolean;\n // added by frontend\n isCallImpl?: boolean;\n}\n\nexport type ProxyType = 'BeaconProxy' | 'Proxy';\n\nexport interface OriginTraceData {\n addressArray: string[];\n proxyMap: Record<string, ProxyType>;\n methodMap: Record<string, Record<string, string>>;\n nameMap: Record<string, AddressNameMap>;\n traceTree: OriginTreeTrace[];\n}\n\nexport interface ListTraceForUI {\n index: string;\n type: string;\n from: string;\n to?: string;\n value: string;\n input?: `0x${string}`;\n result?: TraceResult;\n gas?: string;\n isProxyCall?: boolean;\n method?: string;\n contractCreated?: string;\n abi?: AbiFunctionWithoutGas[];\n nameMap: Record<string, AddressNameMap>;\n proxy?: {\n type: ProxyType;\n beaconAddress?: string;\n implAddress: string;\n };\n isCallBeacon?: boolean;\n isCallImpl?: boolean;\n // only for core space ↓↓↓↓↓↓↓↓\n toESpaceInfo?: {\n address?: string;\n };\n fromESpaceInfo?: {\n address?: string;\n };\n fromPocket?: Pocket;\n toPocket?: Pocket;\n}\n\nexport interface TreeTraceForUI extends ListTraceForUI {\n calls?: TreeTraceForUI[];\n}\n\nconst formatTraceData = (data: OriginTraceData, space: 'evm' | 'core') => {\n const addressType = space === 'core' ? 'base32' : 'hex';\n const proxyMap = data.proxyMap || {};\n const methodMap = data.methodMap || {};\n const nameMap = data.nameMap || {};\n\n let total = 0;\n\n const formatList = (\n t: OriginTreeTrace[],\n parent?: TreeTraceForUI,\n ): TreeTraceForUI[] => {\n total += t.length;\n return t.map((item, index) => formatItem(item, index, parent, t));\n };\n const formatItem = (\n t: OriginTreeTrace,\n index: number,\n parent: TreeTraceForUI | undefined,\n list: OriginTreeTrace[],\n ): TreeTraceForUI => {\n const methodId = t.action.input?.slice(0, 10);\n const from = formatAddress(t.action.from, addressType);\n const to = formatAddress(t.action.to, addressType);\n let method = methodId;\n let abi: AbiFunctionWithoutGas[] | undefined = undefined;\n const methodABI = methodId && to ? methodMap[methodId]?.[to] : undefined;\n if (methodABI) {\n try {\n const result = formatABI(`[\"${methodABI}\"]`, {\n json: true,\n allowEmpty: true,\n });\n abi = JSON.parse(result) as AbiFunctionWithoutGas[];\n const jsonABI = abi[0];\n method = jsonABI?.name || methodId;\n } catch (error) {\n console.log('parse method abi error: ', methodABI, error);\n }\n }\n\n const isContractCreated = !!t.action.createType;\n\n const item: TreeTraceForUI = {\n index: `${parent?.index ? `${parent.index}_` : ''}${index}`,\n type: `${t.action.callType || t.type}`,\n from: from,\n to: to,\n input: t.action.input,\n value: t.action.value,\n result: t.result,\n gas: t.action.gas,\n method,\n abi,\n contractCreated: isContractCreated ? t.result?.addr : undefined,\n nameMap,\n isCallImpl: t.isCallImpl,\n fromPocket: t.action.fromPocket,\n toPocket: t.action.toPocket,\n };\n if (t.action.fromSpace === 'evm') {\n // TODO\n item.fromESpaceInfo = {\n address: formatAddress(from, 'hex'),\n };\n }\n if (t.action.toSpace === 'evm') {\n // TODO\n item.toESpaceInfo = {\n address: formatAddress(to, 'hex'),\n };\n }\n if (\n parent &&\n parent.to &&\n proxyMap[parent.to] &&\n from === parent.to &&\n to\n ) {\n // proxy call\n if (\n index === 0 &&\n proxyMap[parent.to] === 'Proxy' &&\n t.action.callType === 'delegatecall'\n ) {\n parent.proxy = {\n type: 'Proxy',\n implAddress: to,\n };\n item.isCallImpl = true;\n }\n // beacon proxy call\n const second = list[1];\n if (\n index === 0 &&\n proxyMap[parent.to] === 'BeaconProxy' &&\n t.action.callType === 'staticcall' &&\n second &&\n second.action.to &&\n second.action.from === parent.to &&\n second.action.callType === 'delegatecall'\n ) {\n parent.proxy = {\n type: 'BeaconProxy',\n beaconAddress: to,\n implAddress: second.action.to,\n };\n item.isCallBeacon = true;\n second.isCallImpl = true;\n }\n }\n if (t.calls) {\n item.calls = formatList(t.calls, item);\n }\n return item;\n };\n const list = formatList(data.traceTree);\n return {\n total,\n list,\n };\n};\n\nexport const treeTraceToList = (\n data: TreeTraceForUI[],\n showProxyCall = false,\n) => {\n const result: ListTraceForUI[] = [];\n const handler = (list: TreeTraceForUI[]) => {\n list.forEach(item => {\n if (showProxyCall || (!item.isCallBeacon && !item.isCallImpl)) {\n result.push(item);\n }\n if (item.calls) {\n handler(item.calls);\n }\n });\n };\n handler(data);\n return result;\n};\n\nexport const hideProxyCallInTreeTrace = (data: TreeTraceForUI[]) => {\n const handler = (list: TreeTraceForUI[]) => {\n const result: TreeTraceForUI[] = [];\n list.forEach(item => {\n const newTrace = { ...item };\n if (!newTrace.isCallBeacon && !newTrace.isCallImpl) {\n result.push(newTrace);\n if (newTrace.calls) {\n newTrace.calls = handler(newTrace.calls);\n }\n } else if (newTrace.calls) {\n result.push(...handler(newTrace.calls));\n }\n });\n return result;\n };\n return handler(data);\n};\n\nexport const useTxTrace = (hash: string, space: 'evm' | 'core') => {\n const url = `/transferTree/${hash}`;\n\n return useSWRImmutable([url, space], () =>\n fetchWithPrefix(url)\n .then((resp: any) => {\n if (resp?.traceTree) {\n const { list, total } = formatTraceData(resp, space);\n return { list, total };\n }\n })\n .catch(e => {\n publishRequestError({ code: 60002, message: e.message }, 'code');\n }),\n );\n};\n"],"mappings":"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","names":["list"]}
|
package/dist/utils/index.js
CHANGED
|
@@ -52,9 +52,9 @@ import {
|
|
|
52
52
|
transferToLowerCase,
|
|
53
53
|
validURL,
|
|
54
54
|
viewJson
|
|
55
|
-
} from "../chunk-
|
|
55
|
+
} from "../chunk-NM3BMITL.js";
|
|
56
56
|
import "../chunk-WIB76E7O.js";
|
|
57
|
-
import "../chunk-
|
|
57
|
+
import "../chunk-VGYNHJFT.js";
|
|
58
58
|
import "../chunk-J2I22Q2M.js";
|
|
59
59
|
import "../chunk-YEINMVAR.js";
|
|
60
60
|
import "../chunk-DQGLZCIG.js";
|
package/dist/utils/request.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseContractInfo, DetectAccountTypeResponse, MethodAbiItemResponse } from './request.types.js';
|
|
1
|
+
import { BaseContractInfo, DetectAccountTypeResponse, MethodAbiItemResponse, AddressNameMap } from './request.types.js';
|
|
2
2
|
|
|
3
3
|
interface FetchOptions extends RequestInit {
|
|
4
4
|
timeout?: number;
|
|
@@ -30,5 +30,10 @@ declare const detectAccountType: (address: string) => Promise<DetectAccountTypeR
|
|
|
30
30
|
declare const reqAbiByMethodId: (methodId: string) => Promise<{
|
|
31
31
|
list: MethodAbiItemResponse[];
|
|
32
32
|
}>;
|
|
33
|
+
declare const fetchAddressNameMap: (addresses: string[], params?: {
|
|
34
|
+
withContractInfo?: 'true' | 'false';
|
|
35
|
+
withNameTagInfo?: 'true' | 'false';
|
|
36
|
+
withENSInfo?: 'true' | 'false';
|
|
37
|
+
}) => Promise<Record<string, AddressNameMap>>;
|
|
33
38
|
|
|
34
|
-
export { appendApiPrefix, detectAccountType, fetch, fetchWithOpenApi, fetchWithPrefix, getContractDetail, reqAbiByMethodId, reqContractAndToken, reqNametag, sendRequestChart, sendRequestENSInfo, sendRequestGasPrice, simpleGetFetcher };
|
|
39
|
+
export { appendApiPrefix, detectAccountType, fetch, fetchAddressNameMap, fetchWithOpenApi, fetchWithPrefix, getContractDetail, reqAbiByMethodId, reqContractAndToken, reqNametag, sendRequestChart, sendRequestENSInfo, sendRequestGasPrice, simpleGetFetcher };
|
package/dist/utils/request.js
CHANGED
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
appendApiPrefix,
|
|
3
3
|
detectAccountType,
|
|
4
4
|
fetch,
|
|
5
|
+
fetchAddressNameMap,
|
|
5
6
|
fetchWithOpenApi,
|
|
6
7
|
fetchWithPrefix,
|
|
7
8
|
getContractDetail,
|
|
@@ -12,7 +13,7 @@ import {
|
|
|
12
13
|
sendRequestENSInfo,
|
|
13
14
|
sendRequestGasPrice,
|
|
14
15
|
simpleGetFetcher
|
|
15
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-VGYNHJFT.js";
|
|
16
17
|
import "../chunk-J2I22Q2M.js";
|
|
17
18
|
import "../chunk-YEINMVAR.js";
|
|
18
19
|
import "../chunk-DQGLZCIG.js";
|
|
@@ -21,6 +22,7 @@ export {
|
|
|
21
22
|
appendApiPrefix,
|
|
22
23
|
detectAccountType,
|
|
23
24
|
fetch,
|
|
25
|
+
fetchAddressNameMap,
|
|
24
26
|
fetchWithOpenApi,
|
|
25
27
|
fetchWithPrefix,
|
|
26
28
|
getContractDetail,
|
|
@@ -61,10 +61,44 @@ interface DetectAccountTypeResponse {
|
|
|
61
61
|
delegatedTo: `0x${string}` | '' | null;
|
|
62
62
|
extraMessage: string;
|
|
63
63
|
}
|
|
64
|
+
interface AddressNameMap {
|
|
65
|
+
contract?: {
|
|
66
|
+
name?: string;
|
|
67
|
+
};
|
|
68
|
+
token?: {
|
|
69
|
+
name?: string;
|
|
70
|
+
symbol?: string;
|
|
71
|
+
decimals?: number;
|
|
72
|
+
iconUrl?: string;
|
|
73
|
+
website?: string;
|
|
74
|
+
tokenType?: string;
|
|
75
|
+
};
|
|
76
|
+
verification?: {
|
|
77
|
+
name?: string;
|
|
78
|
+
};
|
|
79
|
+
eSpace?: {
|
|
80
|
+
address?: string;
|
|
81
|
+
};
|
|
82
|
+
ens?: {
|
|
83
|
+
name?: string;
|
|
84
|
+
};
|
|
85
|
+
nameTag?: {
|
|
86
|
+
nameTag?: string;
|
|
87
|
+
website?: string;
|
|
88
|
+
desc?: string;
|
|
89
|
+
labels?: string[];
|
|
90
|
+
caution?: string;
|
|
91
|
+
};
|
|
92
|
+
implementation?: {
|
|
93
|
+
name?: string;
|
|
94
|
+
address?: string;
|
|
95
|
+
proxyPattern?: string;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
64
98
|
interface MethodAbiItemResponse {
|
|
65
99
|
fullName: string;
|
|
66
100
|
formatWithArg?: string;
|
|
67
101
|
}
|
|
68
102
|
type Pocket = 'balance' | 'staking_balance' | 'storage_collateral' | 'sponsor_balance_for_gas' | 'sponsor_balance_for_collateral' | 'mint_or_burn' | 'gas_payment';
|
|
69
103
|
|
|
70
|
-
export { BaseContractInfo, DetectAccountTypeResponse, MethodAbiItemResponse, Pocket };
|
|
104
|
+
export { AddressNameMap, BaseContractInfo, DetectAccountTypeResponse, MethodAbiItemResponse, Pocket };
|