@0xsequence/hooks 5.0.9 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/contexts/ConfigContext.d.ts +3 -0
- package/dist/cjs/contexts/ConfigContext.d.ts.map +1 -1
- package/dist/cjs/contexts/ConfigContext.js +4 -1
- package/dist/cjs/contexts/ConfigContext.js.map +1 -1
- package/dist/cjs/hooks/API/useAPIClient.d.ts +37 -0
- package/dist/cjs/hooks/API/useAPIClient.d.ts.map +1 -1
- package/dist/cjs/hooks/API/useAPIClient.js +40 -4
- package/dist/cjs/hooks/API/useAPIClient.js.map +1 -1
- package/dist/cjs/hooks/API/useGetCoinPrices.d.ts +43 -1
- package/dist/cjs/hooks/API/useGetCoinPrices.d.ts.map +1 -1
- package/dist/cjs/hooks/API/useGetCoinPrices.js +51 -1
- package/dist/cjs/hooks/API/useGetCoinPrices.js.map +1 -1
- package/dist/cjs/hooks/API/useGetCollectiblePrices.d.ts +48 -1
- package/dist/cjs/hooks/API/useGetCollectiblePrices.d.ts.map +1 -1
- package/dist/cjs/hooks/API/useGetCollectiblePrices.js +56 -1
- package/dist/cjs/hooks/API/useGetCollectiblePrices.js.map +1 -1
- package/dist/cjs/hooks/API/useGetExchangeRate.d.ts +37 -1
- package/dist/cjs/hooks/API/useGetExchangeRate.d.ts.map +1 -1
- package/dist/cjs/hooks/API/useGetExchangeRate.js +37 -1
- package/dist/cjs/hooks/API/useGetExchangeRate.js.map +1 -1
- package/dist/cjs/hooks/Combination/useGetSwapPrices.d.ts +69 -1
- package/dist/cjs/hooks/Combination/useGetSwapPrices.d.ts.map +1 -1
- package/dist/cjs/hooks/Combination/useGetSwapPrices.js +53 -1
- package/dist/cjs/hooks/Combination/useGetSwapPrices.js.map +1 -1
- package/dist/cjs/hooks/Combination/useGetSwapQuote.d.ts +74 -3
- package/dist/cjs/hooks/Combination/useGetSwapQuote.d.ts.map +1 -1
- package/dist/cjs/hooks/Combination/useGetSwapQuote.js +76 -5
- package/dist/cjs/hooks/Combination/useGetSwapQuote.js.map +1 -1
- package/dist/cjs/hooks/Indexer/useGetTransactionHistory.d.ts +1 -1
- package/dist/cjs/hooks/Indexer/useGetTransactionHistory.js +1 -1
- package/dist/cjs/hooks/Indexer/useGetTransactionHistorySummary.d.ts +66 -1
- package/dist/cjs/hooks/Indexer/useGetTransactionHistorySummary.d.ts.map +1 -1
- package/dist/cjs/hooks/Indexer/useGetTransactionHistorySummary.js +66 -1
- package/dist/cjs/hooks/Indexer/useGetTransactionHistorySummary.js.map +1 -1
- package/dist/cjs/hooks/Indexer/useIndexerClient.d.ts +98 -0
- package/dist/cjs/hooks/Indexer/useIndexerClient.d.ts.map +1 -1
- package/dist/cjs/hooks/Indexer/useIndexerClient.js +104 -6
- package/dist/cjs/hooks/Indexer/useIndexerClient.js.map +1 -1
- package/dist/cjs/hooks/IndexerGateway/useIndexerGatewayClient.d.ts.map +1 -1
- package/dist/cjs/hooks/IndexerGateway/useIndexerGatewayClient.js +3 -4
- package/dist/cjs/hooks/IndexerGateway/useIndexerGatewayClient.js.map +1 -1
- package/dist/cjs/hooks/Metadata/useGetContractInfo.d.ts +61 -1
- package/dist/cjs/hooks/Metadata/useGetContractInfo.d.ts.map +1 -1
- package/dist/cjs/hooks/Metadata/useGetContractInfo.js +61 -1
- package/dist/cjs/hooks/Metadata/useGetContractInfo.js.map +1 -1
- package/dist/cjs/hooks/Metadata/useGetMultipleContractsInfo.d.ts +89 -1
- package/dist/cjs/hooks/Metadata/useGetMultipleContractsInfo.d.ts.map +1 -1
- package/dist/cjs/hooks/Metadata/useGetMultipleContractsInfo.js +89 -1
- package/dist/cjs/hooks/Metadata/useGetMultipleContractsInfo.js.map +1 -1
- package/dist/cjs/hooks/Metadata/useGetTokenMetadata.d.ts +83 -1
- package/dist/cjs/hooks/Metadata/useGetTokenMetadata.d.ts.map +1 -1
- package/dist/cjs/hooks/Metadata/useGetTokenMetadata.js +83 -1
- package/dist/cjs/hooks/Metadata/useGetTokenMetadata.js.map +1 -1
- package/dist/cjs/hooks/Metadata/useMetadataClient.d.ts +36 -0
- package/dist/cjs/hooks/Metadata/useMetadataClient.d.ts.map +1 -1
- package/dist/cjs/hooks/Metadata/useMetadataClient.js +39 -4
- package/dist/cjs/hooks/Metadata/useMetadataClient.js.map +1 -1
- package/dist/cjs/hooks/useConfig.d.ts +45 -0
- package/dist/cjs/hooks/useConfig.d.ts.map +1 -1
- package/dist/cjs/hooks/useConfig.js +45 -0
- package/dist/cjs/hooks/useConfig.js.map +1 -1
- package/dist/cjs/tests/Combination/useGetSwapQuote.test.js +3 -3
- package/dist/cjs/tests/Combination/useGetSwapQuote.test.js.map +1 -1
- package/dist/cjs/tests/handlers.d.ts.map +1 -1
- package/dist/cjs/tests/handlers.js +14 -0
- package/dist/cjs/tests/handlers.js.map +1 -1
- package/dist/esm/contexts/ConfigContext.d.ts +3 -0
- package/dist/esm/contexts/ConfigContext.d.ts.map +1 -1
- package/dist/esm/contexts/ConfigContext.js +5 -2
- package/dist/esm/contexts/ConfigContext.js.map +1 -1
- package/dist/esm/hooks/API/useAPIClient.d.ts +37 -0
- package/dist/esm/hooks/API/useAPIClient.d.ts.map +1 -1
- package/dist/esm/hooks/API/useAPIClient.js +40 -4
- package/dist/esm/hooks/API/useAPIClient.js.map +1 -1
- package/dist/esm/hooks/API/useGetCoinPrices.d.ts +43 -1
- package/dist/esm/hooks/API/useGetCoinPrices.d.ts.map +1 -1
- package/dist/esm/hooks/API/useGetCoinPrices.js +51 -1
- package/dist/esm/hooks/API/useGetCoinPrices.js.map +1 -1
- package/dist/esm/hooks/API/useGetCollectiblePrices.d.ts +48 -1
- package/dist/esm/hooks/API/useGetCollectiblePrices.d.ts.map +1 -1
- package/dist/esm/hooks/API/useGetCollectiblePrices.js +56 -1
- package/dist/esm/hooks/API/useGetCollectiblePrices.js.map +1 -1
- package/dist/esm/hooks/API/useGetExchangeRate.d.ts +37 -1
- package/dist/esm/hooks/API/useGetExchangeRate.d.ts.map +1 -1
- package/dist/esm/hooks/API/useGetExchangeRate.js +37 -1
- package/dist/esm/hooks/API/useGetExchangeRate.js.map +1 -1
- package/dist/esm/hooks/Combination/useGetSwapPrices.d.ts +69 -1
- package/dist/esm/hooks/Combination/useGetSwapPrices.d.ts.map +1 -1
- package/dist/esm/hooks/Combination/useGetSwapPrices.js +53 -1
- package/dist/esm/hooks/Combination/useGetSwapPrices.js.map +1 -1
- package/dist/esm/hooks/Combination/useGetSwapQuote.d.ts +74 -3
- package/dist/esm/hooks/Combination/useGetSwapQuote.d.ts.map +1 -1
- package/dist/esm/hooks/Combination/useGetSwapQuote.js +77 -6
- package/dist/esm/hooks/Combination/useGetSwapQuote.js.map +1 -1
- package/dist/esm/hooks/Indexer/useGetTransactionHistory.d.ts +1 -1
- package/dist/esm/hooks/Indexer/useGetTransactionHistory.js +1 -1
- package/dist/esm/hooks/Indexer/useGetTransactionHistorySummary.d.ts +66 -1
- package/dist/esm/hooks/Indexer/useGetTransactionHistorySummary.d.ts.map +1 -1
- package/dist/esm/hooks/Indexer/useGetTransactionHistorySummary.js +66 -1
- package/dist/esm/hooks/Indexer/useGetTransactionHistorySummary.js.map +1 -1
- package/dist/esm/hooks/Indexer/useIndexerClient.d.ts +98 -0
- package/dist/esm/hooks/Indexer/useIndexerClient.d.ts.map +1 -1
- package/dist/esm/hooks/Indexer/useIndexerClient.js +104 -6
- package/dist/esm/hooks/Indexer/useIndexerClient.js.map +1 -1
- package/dist/esm/hooks/IndexerGateway/useIndexerGatewayClient.d.ts.map +1 -1
- package/dist/esm/hooks/IndexerGateway/useIndexerGatewayClient.js +3 -4
- package/dist/esm/hooks/IndexerGateway/useIndexerGatewayClient.js.map +1 -1
- package/dist/esm/hooks/Metadata/useGetContractInfo.d.ts +61 -1
- package/dist/esm/hooks/Metadata/useGetContractInfo.d.ts.map +1 -1
- package/dist/esm/hooks/Metadata/useGetContractInfo.js +61 -1
- package/dist/esm/hooks/Metadata/useGetContractInfo.js.map +1 -1
- package/dist/esm/hooks/Metadata/useGetMultipleContractsInfo.d.ts +89 -1
- package/dist/esm/hooks/Metadata/useGetMultipleContractsInfo.d.ts.map +1 -1
- package/dist/esm/hooks/Metadata/useGetMultipleContractsInfo.js +89 -1
- package/dist/esm/hooks/Metadata/useGetMultipleContractsInfo.js.map +1 -1
- package/dist/esm/hooks/Metadata/useGetTokenMetadata.d.ts +83 -1
- package/dist/esm/hooks/Metadata/useGetTokenMetadata.d.ts.map +1 -1
- package/dist/esm/hooks/Metadata/useGetTokenMetadata.js +83 -1
- package/dist/esm/hooks/Metadata/useGetTokenMetadata.js.map +1 -1
- package/dist/esm/hooks/Metadata/useMetadataClient.d.ts +36 -0
- package/dist/esm/hooks/Metadata/useMetadataClient.d.ts.map +1 -1
- package/dist/esm/hooks/Metadata/useMetadataClient.js +39 -4
- package/dist/esm/hooks/Metadata/useMetadataClient.js.map +1 -1
- package/dist/esm/hooks/useConfig.d.ts +45 -0
- package/dist/esm/hooks/useConfig.d.ts.map +1 -1
- package/dist/esm/hooks/useConfig.js +45 -0
- package/dist/esm/hooks/useConfig.js.map +1 -1
- package/dist/esm/tests/Combination/useGetSwapQuote.test.js +4 -4
- package/dist/esm/tests/Combination/useGetSwapQuote.test.js.map +1 -1
- package/dist/esm/tests/handlers.d.ts.map +1 -1
- package/dist/esm/tests/handlers.js +14 -0
- package/dist/esm/tests/handlers.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetContractInfo.d.ts","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useGetContractInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAExE,OAAO,EAAE,cAAc,EAAY,MAAM,uBAAuB,CAAA;AAGhE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK1C
|
|
1
|
+
{"version":3,"file":"useGetContractInfo.d.ts","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useGetContractInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAExE,OAAO,EAAE,cAAc,EAAY,MAAM,uBAAuB,CAAA;AAGhE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,eAAO,MAAM,kBAAkB,GAC7B,qBAAqB,mBAAmB,EACxC,UAAU,YAAY,KACrB,cAAc,CAAC,YAAY,CAyB7B,CAAA"}
|
|
@@ -4,7 +4,67 @@ import { QUERY_KEYS, ZERO_ADDRESS, time } from '../../constants';
|
|
|
4
4
|
import { compareAddress } from '../../utils/helpers';
|
|
5
5
|
import { useMetadataClient } from './useMetadataClient';
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Hook to fetch contract information.
|
|
8
|
+
* Handles ERC20/ERC721/ERC1155 contracts and native tokens (using ZERO_ADDRESS).
|
|
9
|
+
*
|
|
10
|
+
* For native tokens (like ETH, POL), it enriches the response with network-specific
|
|
11
|
+
* information like the native token symbol and network logo.
|
|
12
|
+
*
|
|
13
|
+
* @see {@link https://docs.sequence.xyz/sdk/web/hooks/useGetContractInfo} for more detailed documentation.
|
|
14
|
+
*
|
|
15
|
+
* @param getContractInfoArgs - Arguments for fetching contract info
|
|
16
|
+
* @param getContractInfoArgs.chainID - Chain ID as string (e.g., "1" for Ethereum mainnet)
|
|
17
|
+
* @param getContractInfoArgs.contractAddress - Contract address or ZERO_ADDRESS for native token
|
|
18
|
+
* @param options - Optional configuration for the query behavior
|
|
19
|
+
* @param options.disabled - If true, disables the query from automatically running
|
|
20
|
+
* @param options.retry - If true (default), retries failed queries
|
|
21
|
+
*
|
|
22
|
+
* Query configuration:
|
|
23
|
+
* - Marks data as stale after 10 minutes
|
|
24
|
+
* - Retries failed requests by default
|
|
25
|
+
* - Only enabled when chainID and contractAddress are present and not explicitly disabled
|
|
26
|
+
*
|
|
27
|
+
* @returns Query result containing contract information:
|
|
28
|
+
* - `name`: Contract/token name
|
|
29
|
+
* - `symbol`: Token symbol
|
|
30
|
+
* - `decimals`: Token decimals (if applicable)
|
|
31
|
+
* - `logoURI`: URL of the contract/token logo
|
|
32
|
+
* - `type`: Contract type (e.g., "ERC721", "ERC20")
|
|
33
|
+
* - Additional metadata from the contract
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* // Fetch NFT collection info
|
|
38
|
+
* function CollectionDetails() {
|
|
39
|
+
* const { data: contractInfo } = useGetContractInfo({
|
|
40
|
+
* chainID: "1",
|
|
41
|
+
* contractAddress: "0x123..."
|
|
42
|
+
* })
|
|
43
|
+
*
|
|
44
|
+
* return (
|
|
45
|
+
* <div>
|
|
46
|
+
* <img src={contractInfo?.logoURI} />
|
|
47
|
+
* <h1>{contractInfo?.name}</h1>
|
|
48
|
+
* <span>Type: {contractInfo?.type}</span>
|
|
49
|
+
* </div>
|
|
50
|
+
* )
|
|
51
|
+
* }
|
|
52
|
+
*
|
|
53
|
+
* // Used in checkout for displaying collection info
|
|
54
|
+
* function OrderSummaryItem() {
|
|
55
|
+
* const { data: contractInfo } = useGetContractInfo({
|
|
56
|
+
* chainID: String(chainId),
|
|
57
|
+
* contractAddress
|
|
58
|
+
* })
|
|
59
|
+
*
|
|
60
|
+
* return (
|
|
61
|
+
* <div>
|
|
62
|
+
* <TokenImage src={contractInfo?.logoURI} />
|
|
63
|
+
* <Text>{contractInfo?.name || 'Unknown Collection'}</Text>
|
|
64
|
+
* </div>
|
|
65
|
+
* )
|
|
66
|
+
* }
|
|
67
|
+
* ```
|
|
8
68
|
*/
|
|
9
69
|
export const useGetContractInfo = (getContractInfoArgs, options) => {
|
|
10
70
|
const metadataClient = useMetadataClient();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetContractInfo.js","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useGetContractInfo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAkB,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD
|
|
1
|
+
{"version":3,"file":"useGetContractInfo.js","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useGetContractInfo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAkB,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,mBAAwC,EACxC,OAAsB,EACQ,EAAE;IAChC,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAA;IAE1C,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,UAAU,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,OAAO,CAAC;QACvE,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,aAAa,GAAG,cAAc,CAAC,YAAY,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAA;YAEvF,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAA;YACrE,MAAM,OAAO,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;YAEjE,OAAO;gBACL,GAAG,GAAG,CAAC,YAAY;gBACnB,GAAG,CAAC,aAAa,IAAI,OAAO;oBAC1B,CAAC,CAAC;wBACE,GAAG,OAAO,CAAC,WAAW;wBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;qBACzB;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAA;QACH,CAAC;QACD,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI;QAC7B,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE;QAC9B,OAAO,EAAE,CAAC,CAAC,mBAAmB,CAAC,OAAO,IAAI,CAAC,CAAC,mBAAmB,CAAC,eAAe,IAAI,CAAC,OAAO,EAAE,QAAQ;KACtG,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1,7 +1,95 @@
|
|
|
1
1
|
import { ContractInfo, GetContractInfoArgs } from '@0xsequence/metadata';
|
|
2
2
|
import { HooksOptions } from '../../types';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Hook to fetch contract information for multiple contracts in parallel.
|
|
5
|
+
* This is a batch version of {@link useGetContractInfo} that optimizes fetching metadata
|
|
6
|
+
* for multiple contracts in a single hook.
|
|
7
|
+
*
|
|
8
|
+
* Supports fetching contracts from different chains in a single query, making it ideal
|
|
9
|
+
* for cross-chain applications. Can fetch any combination of NFTs (ERC721/ERC1155) and
|
|
10
|
+
* tokens (ERC20) across different chains simultaneously.
|
|
11
|
+
*
|
|
12
|
+
* @see {@link https://docs.sequence.xyz/sdk/web/hooks/useGetMultipleContractsInfo} for more detailed documentation.
|
|
13
|
+
*
|
|
14
|
+
* @param useGetMultipleContractsInfoArgs - Array of contract info arguments
|
|
15
|
+
* @param useGetMultipleContractsInfoArgs[].chainID - Chain ID as string (e.g., "1" for Ethereum mainnet)
|
|
16
|
+
* @param useGetMultipleContractsInfoArgs[].contractAddress - Contract address to fetch info for
|
|
17
|
+
* @param options - Optional configuration for the query behavior
|
|
18
|
+
* @param options.disabled - If true, disables the query from automatically running
|
|
19
|
+
* @param options.retry - If true (default), retries failed queries
|
|
20
|
+
*
|
|
21
|
+
* Query configuration:
|
|
22
|
+
* - Uses a 1 hour stale time (compared to 10 minutes for single contract info)
|
|
23
|
+
* - Retries failed requests by default
|
|
24
|
+
* - Enabled by default unless explicitly disabled
|
|
25
|
+
* - Fetches all contracts in parallel regardless of chain
|
|
26
|
+
*
|
|
27
|
+
* @returns Query result containing an array of contract information objects, each containing:
|
|
28
|
+
* - `name`: Contract/token name
|
|
29
|
+
* - `symbol`: Token symbol
|
|
30
|
+
* - `decimals`: Token decimals (if applicable)
|
|
31
|
+
* - `logoURI`: URL of the contract/token logo
|
|
32
|
+
* - `type`: Contract type (e.g., "ERC721", "ERC20", "ERC1155")
|
|
33
|
+
* - Additional metadata from each contract
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* // Cross-chain NFT and Token Portfolio
|
|
38
|
+
* function CrossChainPortfolio() {
|
|
39
|
+
* const { data: contractsInfo, isLoading } = useGetMultipleContractsInfo([
|
|
40
|
+
* // NFTs
|
|
41
|
+
* { chainID: "1", contractAddress: "0xbc4ca0..." },
|
|
42
|
+
* { chainID: "1", contractAddress: "0x60e4d7..." },
|
|
43
|
+
* { chainID: "137", contractAddress: "0x631998..." },
|
|
44
|
+
* // Tokens
|
|
45
|
+
* { chainID: "1", contractAddress: "0xa0b86991..." },
|
|
46
|
+
* { chainID: "137", contractAddress: "0x2791bca..." }
|
|
47
|
+
* ])
|
|
48
|
+
*
|
|
49
|
+
* if (isLoading) return <div>Loading portfolio...</div>
|
|
50
|
+
*
|
|
51
|
+
* const nfts = contractsInfo?.filter(info =>
|
|
52
|
+
* info.type === 'ERC721' || info.type === 'ERC1155'
|
|
53
|
+
* ) || []
|
|
54
|
+
*
|
|
55
|
+
* const tokens = contractsInfo?.filter(info =>
|
|
56
|
+
* info.type === 'ERC20'
|
|
57
|
+
* ) || []
|
|
58
|
+
*
|
|
59
|
+
* return (
|
|
60
|
+
* <div className="portfolio">
|
|
61
|
+
* <div className="nft-section">
|
|
62
|
+
* <h2>NFT Collections</h2>
|
|
63
|
+
* {nfts.map((nft, index) => (
|
|
64
|
+
* <div key={index} className="nft-card">
|
|
65
|
+
* <img src={nft.logoURI} alt={nft.name} />
|
|
66
|
+
* <div className="nft-info">
|
|
67
|
+
* <Text variant="title">{nft.name}</Text>
|
|
68
|
+
* <Text>Collection Type: {nft.type}</Text>
|
|
69
|
+
* <Text>Chain: {nft.chainID}</Text>
|
|
70
|
+
* </div>
|
|
71
|
+
* </div>
|
|
72
|
+
* ))}
|
|
73
|
+
* </div>
|
|
74
|
+
*
|
|
75
|
+
* <div className="token-section">
|
|
76
|
+
* <h2>Tokens</h2>
|
|
77
|
+
* {tokens.map((token, index) => (
|
|
78
|
+
* <div key={index} className="token-card">
|
|
79
|
+
* <TokenImage src={token.logoURI} />
|
|
80
|
+
* <div className="token-info">
|
|
81
|
+
* <Text>{token.name}</Text>
|
|
82
|
+
* <Text>Symbol: {token.symbol}</Text>
|
|
83
|
+
* <Text>Chain: {token.chainID}</Text>
|
|
84
|
+
* <Text>Decimals: {token.decimals}</Text>
|
|
85
|
+
* </div>
|
|
86
|
+
* </div>
|
|
87
|
+
* ))}
|
|
88
|
+
* </div>
|
|
89
|
+
* </div>
|
|
90
|
+
* )
|
|
91
|
+
* }
|
|
92
|
+
* ```
|
|
5
93
|
*/
|
|
6
94
|
export declare const useGetMultipleContractsInfo: (useGetMultipleContractsInfoArgs: GetContractInfoArgs[], options?: HooksOptions) => import("@tanstack/react-query").UseQueryResult<ContractInfo[], Error>;
|
|
7
95
|
//# sourceMappingURL=useGetMultipleContractsInfo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetMultipleContractsInfo.d.ts","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useGetMultipleContractsInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAI1F,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAiB1C
|
|
1
|
+
{"version":3,"file":"useGetMultipleContractsInfo.d.ts","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useGetMultipleContractsInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAI1F,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAiB1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0FG;AACH,eAAO,MAAM,2BAA2B,GAAI,iCAAiC,mBAAmB,EAAE,EAAE,UAAU,YAAY,0EAUzH,CAAA"}
|
|
@@ -11,7 +11,95 @@ const getMultipleContractsInfo = async (metadataClient, arg) => {
|
|
|
11
11
|
}
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* Hook to fetch contract information for multiple contracts in parallel.
|
|
15
|
+
* This is a batch version of {@link useGetContractInfo} that optimizes fetching metadata
|
|
16
|
+
* for multiple contracts in a single hook.
|
|
17
|
+
*
|
|
18
|
+
* Supports fetching contracts from different chains in a single query, making it ideal
|
|
19
|
+
* for cross-chain applications. Can fetch any combination of NFTs (ERC721/ERC1155) and
|
|
20
|
+
* tokens (ERC20) across different chains simultaneously.
|
|
21
|
+
*
|
|
22
|
+
* @see {@link https://docs.sequence.xyz/sdk/web/hooks/useGetMultipleContractsInfo} for more detailed documentation.
|
|
23
|
+
*
|
|
24
|
+
* @param useGetMultipleContractsInfoArgs - Array of contract info arguments
|
|
25
|
+
* @param useGetMultipleContractsInfoArgs[].chainID - Chain ID as string (e.g., "1" for Ethereum mainnet)
|
|
26
|
+
* @param useGetMultipleContractsInfoArgs[].contractAddress - Contract address to fetch info for
|
|
27
|
+
* @param options - Optional configuration for the query behavior
|
|
28
|
+
* @param options.disabled - If true, disables the query from automatically running
|
|
29
|
+
* @param options.retry - If true (default), retries failed queries
|
|
30
|
+
*
|
|
31
|
+
* Query configuration:
|
|
32
|
+
* - Uses a 1 hour stale time (compared to 10 minutes for single contract info)
|
|
33
|
+
* - Retries failed requests by default
|
|
34
|
+
* - Enabled by default unless explicitly disabled
|
|
35
|
+
* - Fetches all contracts in parallel regardless of chain
|
|
36
|
+
*
|
|
37
|
+
* @returns Query result containing an array of contract information objects, each containing:
|
|
38
|
+
* - `name`: Contract/token name
|
|
39
|
+
* - `symbol`: Token symbol
|
|
40
|
+
* - `decimals`: Token decimals (if applicable)
|
|
41
|
+
* - `logoURI`: URL of the contract/token logo
|
|
42
|
+
* - `type`: Contract type (e.g., "ERC721", "ERC20", "ERC1155")
|
|
43
|
+
* - Additional metadata from each contract
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```tsx
|
|
47
|
+
* // Cross-chain NFT and Token Portfolio
|
|
48
|
+
* function CrossChainPortfolio() {
|
|
49
|
+
* const { data: contractsInfo, isLoading } = useGetMultipleContractsInfo([
|
|
50
|
+
* // NFTs
|
|
51
|
+
* { chainID: "1", contractAddress: "0xbc4ca0..." },
|
|
52
|
+
* { chainID: "1", contractAddress: "0x60e4d7..." },
|
|
53
|
+
* { chainID: "137", contractAddress: "0x631998..." },
|
|
54
|
+
* // Tokens
|
|
55
|
+
* { chainID: "1", contractAddress: "0xa0b86991..." },
|
|
56
|
+
* { chainID: "137", contractAddress: "0x2791bca..." }
|
|
57
|
+
* ])
|
|
58
|
+
*
|
|
59
|
+
* if (isLoading) return <div>Loading portfolio...</div>
|
|
60
|
+
*
|
|
61
|
+
* const nfts = contractsInfo?.filter(info =>
|
|
62
|
+
* info.type === 'ERC721' || info.type === 'ERC1155'
|
|
63
|
+
* ) || []
|
|
64
|
+
*
|
|
65
|
+
* const tokens = contractsInfo?.filter(info =>
|
|
66
|
+
* info.type === 'ERC20'
|
|
67
|
+
* ) || []
|
|
68
|
+
*
|
|
69
|
+
* return (
|
|
70
|
+
* <div className="portfolio">
|
|
71
|
+
* <div className="nft-section">
|
|
72
|
+
* <h2>NFT Collections</h2>
|
|
73
|
+
* {nfts.map((nft, index) => (
|
|
74
|
+
* <div key={index} className="nft-card">
|
|
75
|
+
* <img src={nft.logoURI} alt={nft.name} />
|
|
76
|
+
* <div className="nft-info">
|
|
77
|
+
* <Text variant="title">{nft.name}</Text>
|
|
78
|
+
* <Text>Collection Type: {nft.type}</Text>
|
|
79
|
+
* <Text>Chain: {nft.chainID}</Text>
|
|
80
|
+
* </div>
|
|
81
|
+
* </div>
|
|
82
|
+
* ))}
|
|
83
|
+
* </div>
|
|
84
|
+
*
|
|
85
|
+
* <div className="token-section">
|
|
86
|
+
* <h2>Tokens</h2>
|
|
87
|
+
* {tokens.map((token, index) => (
|
|
88
|
+
* <div key={index} className="token-card">
|
|
89
|
+
* <TokenImage src={token.logoURI} />
|
|
90
|
+
* <div className="token-info">
|
|
91
|
+
* <Text>{token.name}</Text>
|
|
92
|
+
* <Text>Symbol: {token.symbol}</Text>
|
|
93
|
+
* <Text>Chain: {token.chainID}</Text>
|
|
94
|
+
* <Text>Decimals: {token.decimals}</Text>
|
|
95
|
+
* </div>
|
|
96
|
+
* </div>
|
|
97
|
+
* ))}
|
|
98
|
+
* </div>
|
|
99
|
+
* </div>
|
|
100
|
+
* )
|
|
101
|
+
* }
|
|
102
|
+
* ```
|
|
15
103
|
*/
|
|
16
104
|
export const useGetMultipleContractsInfo = (useGetMultipleContractsInfoArgs, options) => {
|
|
17
105
|
const metadataClient = useMetadataClient();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetMultipleContractsInfo.js","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useGetMultipleContractsInfo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAGlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,wBAAwB,GAAG,KAAK,EACpC,cAAgC,EAChC,GAA0B,EACD,EAAE;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE9E,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IACrC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,CAAA;IACT,CAAC;AACH,CAAC,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"useGetMultipleContractsInfo.js","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useGetMultipleContractsInfo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAGlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,wBAAwB,GAAG,KAAK,EACpC,cAAgC,EAChC,GAA0B,EACD,EAAE;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE9E,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IACrC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,CAAA;IACT,CAAC;AACH,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0FG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,+BAAsD,EAAE,OAAsB,EAAE,EAAE;IAC5H,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAA;IAE1C,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,UAAU,CAAC,0BAA0B,EAAE,+BAA+B,EAAE,OAAO,CAAC;QAC3F,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,wBAAwB,CAAC,cAAc,EAAE,+BAA+B,CAAC;QACpG,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI;QAC7B,SAAS,EAAE,IAAI,CAAC,OAAO;QACvB,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ;KAC5B,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1,7 +1,89 @@
|
|
|
1
1
|
import { GetTokenMetadataArgs } from '@0xsequence/metadata';
|
|
2
2
|
import { HooksOptions } from '../../types';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Hook to fetch token-specific metadata for individual tokens within a contract.
|
|
5
|
+
* This differs from {@link useGetContractInfo} which returns contract-level information.
|
|
6
|
+
* This hook is specifically for getting metadata about individual token IDs (like NFT attributes,
|
|
7
|
+
* images, etc).
|
|
8
|
+
*
|
|
9
|
+
* Optimized for batch fetching with automatic chunking of token IDs to respect
|
|
10
|
+
* rate limits (50 tokens per request).
|
|
11
|
+
*
|
|
12
|
+
* @see {@link https://docs.sequence.xyz/sdk/web/hooks/useGetTokenMetadata} for more detailed documentation.
|
|
13
|
+
*
|
|
14
|
+
* @param getTokenMetadataArgs - Arguments for fetching token metadata
|
|
15
|
+
* @param getTokenMetadataArgs.chainID - Chain ID as string (e.g., "1" for Ethereum mainnet)
|
|
16
|
+
* @param getTokenMetadataArgs.contractAddress - Contract address of the token/NFT
|
|
17
|
+
* @param getTokenMetadataArgs.tokenIDs - Array of token IDs to fetch metadata for. Each ID represents a specific token
|
|
18
|
+
* @param options - Optional configuration for the query behavior
|
|
19
|
+
* @param options.disabled - If true, disables the query from automatically running
|
|
20
|
+
* @param options.retry - If true (default), retries failed queries
|
|
21
|
+
*
|
|
22
|
+
* Query configuration:
|
|
23
|
+
* - Marks data as stale after 1 hour
|
|
24
|
+
* - Retries failed requests by default
|
|
25
|
+
* - Only enabled when chainID and contractAddress are present and not explicitly disabled
|
|
26
|
+
* - Automatically chunks requests into batches of 50 tokens to respect API limits
|
|
27
|
+
*
|
|
28
|
+
* @returns Query result containing an array of token metadata objects, each containing:
|
|
29
|
+
* - `name`: Name of the specific token (e.g., "Bored Ape #1234")
|
|
30
|
+
* - `description`: Description of the specific token
|
|
31
|
+
* - `image`: Token-specific image URL (proxied through image service)
|
|
32
|
+
* - `attributes`: Token-specific attributes/traits (for NFTs)
|
|
33
|
+
* - `decimals`: Token decimals (for ERC1155 tokens)
|
|
34
|
+
* - Additional token-specific metadata
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* // Fetch metadata for a specific NFT
|
|
39
|
+
* function NFTDetails() {
|
|
40
|
+
* const { data: tokensMetadata } = useGetTokenMetadata({
|
|
41
|
+
* chainID: "1",
|
|
42
|
+
* contractAddress: "0xbc4ca0...",
|
|
43
|
+
* tokenIDs: ["1234"]
|
|
44
|
+
* })
|
|
45
|
+
*
|
|
46
|
+
* const nft = tokensMetadata?.[0]
|
|
47
|
+
*
|
|
48
|
+
* return (
|
|
49
|
+
* <div>
|
|
50
|
+
* <img src={nft?.image} alt={nft?.name} />
|
|
51
|
+
* <h2>{nft?.name}</h2>
|
|
52
|
+
* <p>{nft?.description}</p>
|
|
53
|
+
* {nft?.attributes?.map(attr => (
|
|
54
|
+
* <div key={attr.trait_type}>
|
|
55
|
+
* {attr.trait_type}: {attr.value}
|
|
56
|
+
* </div>
|
|
57
|
+
* ))}
|
|
58
|
+
* </div>
|
|
59
|
+
* )
|
|
60
|
+
* }
|
|
61
|
+
*
|
|
62
|
+
* // Fetch metadata for multiple tokens in a transaction
|
|
63
|
+
* function TransactionDetails() {
|
|
64
|
+
* const { data: tokenMetadata } = useGetTokenMetadata({
|
|
65
|
+
* chainID: String(chainId),
|
|
66
|
+
* contractAddress,
|
|
67
|
+
* tokenIDs: transferProps.tokenIds // Array of transferred token IDs
|
|
68
|
+
* })
|
|
69
|
+
*
|
|
70
|
+
* return (
|
|
71
|
+
* <div>
|
|
72
|
+
* {tokenMetadata?.map(token => (
|
|
73
|
+
* <div key={token.id} className="token-transfer">
|
|
74
|
+
* <CollectibleTileImage imageUrl={token.image} />
|
|
75
|
+
* <Text>{token.name}</Text>
|
|
76
|
+
* {token.attributes && (
|
|
77
|
+
* <div className="attributes">
|
|
78
|
+
* Token attributes here
|
|
79
|
+
* </div>
|
|
80
|
+
* )}
|
|
81
|
+
* </div>
|
|
82
|
+
* ))}
|
|
83
|
+
* </div>
|
|
84
|
+
* )
|
|
85
|
+
* }
|
|
86
|
+
* ```
|
|
5
87
|
*/
|
|
6
88
|
export declare const useGetTokenMetadata: (getTokenMetadataArgs: GetTokenMetadataArgs, options?: HooksOptions) => import("@tanstack/react-query").UseQueryResult<import("@0xsequence/metadata").TokenMetadata[], Error>;
|
|
7
89
|
//# sourceMappingURL=useGetTokenMetadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetTokenMetadata.d.ts","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useGetTokenMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAoB,MAAM,sBAAsB,CAAA;AAI7E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAiC1C
|
|
1
|
+
{"version":3,"file":"useGetTokenMetadata.d.ts","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useGetTokenMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAoB,MAAM,sBAAsB,CAAA;AAI7E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAiC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AACH,eAAO,MAAM,mBAAmB,GAAI,sBAAsB,oBAAoB,EAAE,UAAU,YAAY,0GAWrG,CAAA"}
|
|
@@ -21,7 +21,89 @@ const getTokenMetadata = async (metadataClient, args, imageProxyUrl) => {
|
|
|
21
21
|
return data;
|
|
22
22
|
};
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* Hook to fetch token-specific metadata for individual tokens within a contract.
|
|
25
|
+
* This differs from {@link useGetContractInfo} which returns contract-level information.
|
|
26
|
+
* This hook is specifically for getting metadata about individual token IDs (like NFT attributes,
|
|
27
|
+
* images, etc).
|
|
28
|
+
*
|
|
29
|
+
* Optimized for batch fetching with automatic chunking of token IDs to respect
|
|
30
|
+
* rate limits (50 tokens per request).
|
|
31
|
+
*
|
|
32
|
+
* @see {@link https://docs.sequence.xyz/sdk/web/hooks/useGetTokenMetadata} for more detailed documentation.
|
|
33
|
+
*
|
|
34
|
+
* @param getTokenMetadataArgs - Arguments for fetching token metadata
|
|
35
|
+
* @param getTokenMetadataArgs.chainID - Chain ID as string (e.g., "1" for Ethereum mainnet)
|
|
36
|
+
* @param getTokenMetadataArgs.contractAddress - Contract address of the token/NFT
|
|
37
|
+
* @param getTokenMetadataArgs.tokenIDs - Array of token IDs to fetch metadata for. Each ID represents a specific token
|
|
38
|
+
* @param options - Optional configuration for the query behavior
|
|
39
|
+
* @param options.disabled - If true, disables the query from automatically running
|
|
40
|
+
* @param options.retry - If true (default), retries failed queries
|
|
41
|
+
*
|
|
42
|
+
* Query configuration:
|
|
43
|
+
* - Marks data as stale after 1 hour
|
|
44
|
+
* - Retries failed requests by default
|
|
45
|
+
* - Only enabled when chainID and contractAddress are present and not explicitly disabled
|
|
46
|
+
* - Automatically chunks requests into batches of 50 tokens to respect API limits
|
|
47
|
+
*
|
|
48
|
+
* @returns Query result containing an array of token metadata objects, each containing:
|
|
49
|
+
* - `name`: Name of the specific token (e.g., "Bored Ape #1234")
|
|
50
|
+
* - `description`: Description of the specific token
|
|
51
|
+
* - `image`: Token-specific image URL (proxied through image service)
|
|
52
|
+
* - `attributes`: Token-specific attributes/traits (for NFTs)
|
|
53
|
+
* - `decimals`: Token decimals (for ERC1155 tokens)
|
|
54
|
+
* - Additional token-specific metadata
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```tsx
|
|
58
|
+
* // Fetch metadata for a specific NFT
|
|
59
|
+
* function NFTDetails() {
|
|
60
|
+
* const { data: tokensMetadata } = useGetTokenMetadata({
|
|
61
|
+
* chainID: "1",
|
|
62
|
+
* contractAddress: "0xbc4ca0...",
|
|
63
|
+
* tokenIDs: ["1234"]
|
|
64
|
+
* })
|
|
65
|
+
*
|
|
66
|
+
* const nft = tokensMetadata?.[0]
|
|
67
|
+
*
|
|
68
|
+
* return (
|
|
69
|
+
* <div>
|
|
70
|
+
* <img src={nft?.image} alt={nft?.name} />
|
|
71
|
+
* <h2>{nft?.name}</h2>
|
|
72
|
+
* <p>{nft?.description}</p>
|
|
73
|
+
* {nft?.attributes?.map(attr => (
|
|
74
|
+
* <div key={attr.trait_type}>
|
|
75
|
+
* {attr.trait_type}: {attr.value}
|
|
76
|
+
* </div>
|
|
77
|
+
* ))}
|
|
78
|
+
* </div>
|
|
79
|
+
* )
|
|
80
|
+
* }
|
|
81
|
+
*
|
|
82
|
+
* // Fetch metadata for multiple tokens in a transaction
|
|
83
|
+
* function TransactionDetails() {
|
|
84
|
+
* const { data: tokenMetadata } = useGetTokenMetadata({
|
|
85
|
+
* chainID: String(chainId),
|
|
86
|
+
* contractAddress,
|
|
87
|
+
* tokenIDs: transferProps.tokenIds // Array of transferred token IDs
|
|
88
|
+
* })
|
|
89
|
+
*
|
|
90
|
+
* return (
|
|
91
|
+
* <div>
|
|
92
|
+
* {tokenMetadata?.map(token => (
|
|
93
|
+
* <div key={token.id} className="token-transfer">
|
|
94
|
+
* <CollectibleTileImage imageUrl={token.image} />
|
|
95
|
+
* <Text>{token.name}</Text>
|
|
96
|
+
* {token.attributes && (
|
|
97
|
+
* <div className="attributes">
|
|
98
|
+
* Token attributes here
|
|
99
|
+
* </div>
|
|
100
|
+
* )}
|
|
101
|
+
* </div>
|
|
102
|
+
* ))}
|
|
103
|
+
* </div>
|
|
104
|
+
* )
|
|
105
|
+
* }
|
|
106
|
+
* ```
|
|
25
107
|
*/
|
|
26
108
|
export const useGetTokenMetadata = (getTokenMetadataArgs, options) => {
|
|
27
109
|
const { env } = useConfig();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetTokenMetadata.js","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useGetTokenMetadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,gBAAgB,GAAG,KAAK,EAAE,cAAgC,EAAE,IAA0B,EAAE,aAAqB,EAAE,EAAE;IACrH,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;IAEnD,wEAAwE;IACxE,MAAM,aAAa,GAAG,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;IAE9C,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAC3B,cAAc,CAAC,gBAAgB,CAAC;QAC9B,OAAO,EAAE,OAAO;QAChB,eAAe,EAAE,eAAe;QAChC,QAAQ,EAAE,QAAQ;KACnB,CAAC,CACH,CACF,CAAA;IAED,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAA;IAE/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACf,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;YACb,CAAC,CAAC,KAAK,GAAG,GAAG,aAAa,GAAG,CAAC,CAAC,KAAK,EAAE,CAAA;QACxC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"useGetTokenMetadata.js","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useGetTokenMetadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,gBAAgB,GAAG,KAAK,EAAE,cAAgC,EAAE,IAA0B,EAAE,aAAqB,EAAE,EAAE;IACrH,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;IAEnD,wEAAwE;IACxE,MAAM,aAAa,GAAG,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;IAE9C,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAC3B,cAAc,CAAC,gBAAgB,CAAC;QAC9B,OAAO,EAAE,OAAO;QAChB,eAAe,EAAE,eAAe;QAChC,QAAQ,EAAE,QAAQ;KACnB,CAAC,CACH,CACF,CAAA;IAED,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAA;IAE/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACf,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;YACb,CAAC,CAAC,KAAK,GAAG,GAAG,aAAa,GAAG,CAAC,CAAC,KAAK,EAAE,CAAA;QACxC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,oBAA0C,EAAE,OAAsB,EAAE,EAAE;IACxG,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,CAAA;IAC3B,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAA;IAE1C,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,UAAU,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,OAAO,CAAC;QACzE,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,cAAc,EAAE,oBAAoB,EAAE,GAAG,CAAC,aAAa,CAAC;QACxF,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI;QAC7B,SAAS,EAAE,IAAI,CAAC,OAAO;QACvB,OAAO,EAAE,CAAC,CAAC,oBAAoB,CAAC,OAAO,IAAI,CAAC,CAAC,oBAAoB,CAAC,eAAe,IAAI,CAAC,OAAO,EAAE,QAAQ;KACxG,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1,3 +1,39 @@
|
|
|
1
1
|
import { SequenceMetadata } from '@0xsequence/metadata';
|
|
2
|
+
/**
|
|
3
|
+
* Hook that provides a memoized instance of the Sequence Metadata client.
|
|
4
|
+
* This client is used to fetch token and contract metadata
|
|
5
|
+
* from Sequence's metadata service.
|
|
6
|
+
*
|
|
7
|
+
* Provides access to many other methods in the Sequence Metadata API.
|
|
8
|
+
*
|
|
9
|
+
* The client is configured using the project's environment settings and access key.
|
|
10
|
+
* It's memoized to prevent unnecessary re-instantiation when dependencies haven't changed.
|
|
11
|
+
*
|
|
12
|
+
* Used internally in {@link @0xsequence/hooks} by hooks such as:
|
|
13
|
+
* - {@link useGetTokenMetadata} for fetching token-specific metadata
|
|
14
|
+
* - {@link useGetContractInfo} for fetching contract information
|
|
15
|
+
* - {@link useGetMultipleContractsInfo} for batch fetching contract information
|
|
16
|
+
*
|
|
17
|
+
* @see {@link https://docs.sequence.xyz/sdk/web/hooks/useMetadataClient} for more detailed documentation.
|
|
18
|
+
*
|
|
19
|
+
* @returns A configured instance of SequenceMetadata client
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```tsx
|
|
23
|
+
* function CustomMetadataFetch() {
|
|
24
|
+
* const metadataClient = useMetadataClient()
|
|
25
|
+
*
|
|
26
|
+
* const fetchCustomMetadata = async () => {
|
|
27
|
+
* const response = await metadataClient.getContractInfo({
|
|
28
|
+
* chainID: "1",
|
|
29
|
+
* contractAddress: "0x123..."
|
|
30
|
+
* })
|
|
31
|
+
* // Handle response
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* return <button onClick={fetchCustomMetadata}>Fetch Metadata</button>
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
2
38
|
export declare const useMetadataClient: () => SequenceMetadata;
|
|
3
39
|
//# sourceMappingURL=useMetadataClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMetadataClient.d.ts","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useMetadataClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAKvD,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"useMetadataClient.d.ts","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useMetadataClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAKvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,iBAAiB,wBAQ7B,CAAA"}
|
|
@@ -1,12 +1,47 @@
|
|
|
1
1
|
import { SequenceMetadata } from '@0xsequence/metadata';
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
import { useConfig } from '../useConfig';
|
|
4
|
+
/**
|
|
5
|
+
* Hook that provides a memoized instance of the Sequence Metadata client.
|
|
6
|
+
* This client is used to fetch token and contract metadata
|
|
7
|
+
* from Sequence's metadata service.
|
|
8
|
+
*
|
|
9
|
+
* Provides access to many other methods in the Sequence Metadata API.
|
|
10
|
+
*
|
|
11
|
+
* The client is configured using the project's environment settings and access key.
|
|
12
|
+
* It's memoized to prevent unnecessary re-instantiation when dependencies haven't changed.
|
|
13
|
+
*
|
|
14
|
+
* Used internally in {@link @0xsequence/hooks} by hooks such as:
|
|
15
|
+
* - {@link useGetTokenMetadata} for fetching token-specific metadata
|
|
16
|
+
* - {@link useGetContractInfo} for fetching contract information
|
|
17
|
+
* - {@link useGetMultipleContractsInfo} for batch fetching contract information
|
|
18
|
+
*
|
|
19
|
+
* @see {@link https://docs.sequence.xyz/sdk/web/hooks/useMetadataClient} for more detailed documentation.
|
|
20
|
+
*
|
|
21
|
+
* @returns A configured instance of SequenceMetadata client
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* function CustomMetadataFetch() {
|
|
26
|
+
* const metadataClient = useMetadataClient()
|
|
27
|
+
*
|
|
28
|
+
* const fetchCustomMetadata = async () => {
|
|
29
|
+
* const response = await metadataClient.getContractInfo({
|
|
30
|
+
* chainID: "1",
|
|
31
|
+
* contractAddress: "0x123..."
|
|
32
|
+
* })
|
|
33
|
+
* // Handle response
|
|
34
|
+
* }
|
|
35
|
+
*
|
|
36
|
+
* return <button onClick={fetchCustomMetadata}>Fetch Metadata</button>
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
4
40
|
export const useMetadataClient = () => {
|
|
5
|
-
const { projectAccessKey,
|
|
41
|
+
const { env, projectAccessKey, jwt } = useConfig();
|
|
6
42
|
const metadataClient = useMemo(() => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}, [projectAccessKey]);
|
|
43
|
+
return new SequenceMetadata(env.metadataUrl, projectAccessKey);
|
|
44
|
+
}, [projectAccessKey, jwt]);
|
|
10
45
|
return metadataClient;
|
|
11
46
|
};
|
|
12
47
|
//# sourceMappingURL=useMetadataClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMetadataClient.js","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useMetadataClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"useMetadataClient.js","sourceRoot":"","sources":["../../../../src/hooks/Metadata/useMetadataClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,CAAA;IAElD,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,OAAO,IAAI,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAA;IAChE,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAA;IAE3B,OAAO,cAAc,CAAA;AACvB,CAAC,CAAA"}
|
|
@@ -1,2 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook to access the Sequence configuration context.
|
|
3
|
+
* Must be used within a {@link SequenceHooksProvider} component.
|
|
4
|
+
*
|
|
5
|
+
* Provides access to global configuration values used across Sequence hooks, including:
|
|
6
|
+
* - `env`: Environment configuration (API URLs, metadata URLs, etc.)
|
|
7
|
+
* - `projectAccessKey`: Project-specific access key
|
|
8
|
+
* - `jwt`: JSON Web Token for authentication
|
|
9
|
+
*
|
|
10
|
+
* @see {@link https://docs.sequence.xyz/sdk/web/hooks/useConfig} for more detailed documentation.
|
|
11
|
+
*
|
|
12
|
+
* @throws {Error} If used outside of a SequenceHooksProvider
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* function MyComponent() {
|
|
17
|
+
* const { env, projectAccessKey } = useConfig()
|
|
18
|
+
*
|
|
19
|
+
* return (
|
|
20
|
+
* <div>
|
|
21
|
+
* <div>API URL: {env.apiUrl}</div>
|
|
22
|
+
* <div>Project Key: {projectAccessKey}</div>
|
|
23
|
+
* </div>
|
|
24
|
+
* )
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```tsx
|
|
30
|
+
* // Usage with provider
|
|
31
|
+
* function App() {
|
|
32
|
+
* return (
|
|
33
|
+
* <SequenceHooksProvider config={{
|
|
34
|
+
* env: {
|
|
35
|
+
* apiUrl: '...',
|
|
36
|
+
* metadataUrl: '...',
|
|
37
|
+
* imageProxyUrl: '...'
|
|
38
|
+
* },
|
|
39
|
+
* projectAccessKey: 'your-project-key'
|
|
40
|
+
* }}>
|
|
41
|
+
* <MyComponent />
|
|
42
|
+
* </SequenceHooksProvider>
|
|
43
|
+
* )
|
|
44
|
+
* }
|
|
45
|
+
*/
|
|
1
46
|
export declare const useConfig: () => import("../contexts/ConfigContext").SequenceHooksConfig;
|
|
2
47
|
//# sourceMappingURL=useConfig.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useConfig.d.ts","sourceRoot":"","sources":["../../../src/hooks/useConfig.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS,+DAQrB,CAAA"}
|
|
1
|
+
{"version":3,"file":"useConfig.d.ts","sourceRoot":"","sources":["../../../src/hooks/useConfig.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAO,MAAM,SAAS,+DAQrB,CAAA"}
|