thirdweb 5.95.0-nightly-4c1f384a635054a8cfaaa487e3ba7ada63b221ec-20250415110008 → 5.95.0-nightly-e7b01108037ebef07fba95f888be1905c8fab5df-20250417000348
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/chains/utils.js +41 -2
- package/dist/cjs/chains/utils.js.map +1 -1
- package/dist/cjs/event/actions/get-events.js +56 -8
- package/dist/cjs/event/actions/get-events.js.map +1 -1
- package/dist/cjs/extensions/erc1155/read/getNFT.js +2 -0
- package/dist/cjs/extensions/erc1155/read/getNFT.js.map +1 -1
- package/dist/cjs/extensions/erc20/read/getBalance.js +2 -0
- package/dist/cjs/extensions/erc20/read/getBalance.js.map +1 -1
- package/dist/cjs/extensions/erc721/read/getNFT.js +42 -0
- package/dist/cjs/extensions/erc721/read/getNFT.js.map +1 -1
- package/dist/cjs/extensions/erc721/read/getNFTs.js +44 -17
- package/dist/cjs/extensions/erc721/read/getNFTs.js.map +1 -1
- package/dist/cjs/extensions/erc721/read/getOwnedNFTs.js +46 -0
- package/dist/cjs/extensions/erc721/read/getOwnedNFTs.js.map +1 -1
- package/dist/cjs/extensions/marketplace/direct-listings/utils.js +7 -4
- package/dist/cjs/extensions/marketplace/direct-listings/utils.js.map +1 -1
- package/dist/cjs/extensions/marketplace/english-auctions/utils.js +9 -4
- package/dist/cjs/extensions/marketplace/english-auctions/utils.js.map +1 -1
- package/dist/cjs/extensions/marketplace/offers/utils.js +7 -4
- package/dist/cjs/extensions/marketplace/offers/utils.js.map +1 -1
- package/dist/cjs/insight/common.js +18 -0
- package/dist/cjs/insight/common.js.map +1 -0
- package/dist/cjs/insight/get-events.js +57 -0
- package/dist/cjs/insight/get-events.js.map +1 -0
- package/dist/cjs/insight/get-nfts.js +159 -17
- package/dist/cjs/insight/get-nfts.js.map +1 -1
- package/dist/cjs/insight/get-tokens.js +35 -15
- package/dist/cjs/insight/get-tokens.js.map +1 -1
- package/dist/cjs/insight/get-transactions.js +17 -11
- package/dist/cjs/insight/get-transactions.js.map +1 -1
- package/dist/cjs/insight/index.js +5 -1
- package/dist/cjs/insight/index.js.map +1 -1
- package/dist/cjs/pay/buyWithCrypto/getHistory.js +2 -2
- package/dist/cjs/pay/buyWithCrypto/getHistory.js.map +1 -1
- package/dist/cjs/pay/buyWithCrypto/getStatus.js +2 -2
- package/dist/cjs/pay/buyWithCrypto/getStatus.js.map +1 -1
- package/dist/cjs/pay/buyWithFiat/getHistory.js +2 -2
- package/dist/cjs/pay/buyWithFiat/getHistory.js.map +1 -1
- package/dist/cjs/pay/buyWithFiat/getStatus.js +2 -2
- package/dist/cjs/pay/buyWithFiat/getStatus.js.map +1 -1
- package/dist/cjs/pay/getBuyHistory.js +2 -2
- package/dist/cjs/pay/getBuyHistory.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +6 -2
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js +3 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/SendFunds.js +3 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/SendFunds.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/ViewNFTs.js +6 -43
- package/dist/cjs/react/web/ui/ConnectWallet/screens/ViewNFTs.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/ViewTokens.js +3 -9
- package/dist/cjs/react/web/ui/ConnectWallet/screens/ViewTokens.js.map +1 -1
- package/dist/cjs/react/web/ui/components/TokenIcon.js +3 -1
- package/dist/cjs/react/web/ui/components/TokenIcon.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/NFT/utils.js +7 -2
- package/dist/cjs/react/web/ui/prebuilt/NFT/utils.js.map +1 -1
- package/dist/cjs/rpc/fetch-rpc.js +4 -4
- package/dist/cjs/rpc/fetch-rpc.js.map +1 -1
- package/dist/cjs/social/profiles.js +3 -8
- package/dist/cjs/social/profiles.js.map +1 -1
- package/dist/cjs/storage/download.js +2 -2
- package/dist/cjs/storage/download.js.map +1 -1
- package/dist/cjs/storage/unpin.js +2 -2
- package/dist/cjs/storage/unpin.js.map +1 -1
- package/dist/cjs/storage/upload/web-node.js +0 -1
- package/dist/cjs/storage/upload/web-node.js.map +1 -1
- package/dist/cjs/transaction/actions/gasless/providers/biconomy.js +0 -1
- package/dist/cjs/transaction/actions/gasless/providers/biconomy.js.map +1 -1
- package/dist/cjs/transaction/actions/gasless/providers/openzeppelin.js +0 -1
- package/dist/cjs/transaction/actions/gasless/providers/openzeppelin.js.map +1 -1
- package/dist/cjs/utils/nft/parseNft.js +4 -0
- package/dist/cjs/utils/nft/parseNft.js.map +1 -1
- package/dist/cjs/utils/signatures/resolve-signature.js +0 -2
- package/dist/cjs/utils/signatures/resolve-signature.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wallets/smart/lib/calls.js +2 -2
- package/dist/cjs/wallets/smart/lib/calls.js.map +1 -1
- package/dist/cjs/wallets/utils/getWalletBalance.js +3 -0
- package/dist/cjs/wallets/utils/getWalletBalance.js.map +1 -1
- package/dist/esm/chains/utils.js +40 -2
- package/dist/esm/chains/utils.js.map +1 -1
- package/dist/esm/event/actions/get-events.js +56 -8
- package/dist/esm/event/actions/get-events.js.map +1 -1
- package/dist/esm/extensions/erc1155/read/getNFT.js +2 -0
- package/dist/esm/extensions/erc1155/read/getNFT.js.map +1 -1
- package/dist/esm/extensions/erc20/read/getBalance.js +2 -0
- package/dist/esm/extensions/erc20/read/getBalance.js.map +1 -1
- package/dist/esm/extensions/erc721/read/getNFT.js +42 -0
- package/dist/esm/extensions/erc721/read/getNFT.js.map +1 -1
- package/dist/esm/extensions/erc721/read/getNFTs.js +44 -17
- package/dist/esm/extensions/erc721/read/getNFTs.js.map +1 -1
- package/dist/esm/extensions/erc721/read/getOwnedNFTs.js +46 -0
- package/dist/esm/extensions/erc721/read/getOwnedNFTs.js.map +1 -1
- package/dist/esm/extensions/marketplace/direct-listings/utils.js +7 -4
- package/dist/esm/extensions/marketplace/direct-listings/utils.js.map +1 -1
- package/dist/esm/extensions/marketplace/english-auctions/utils.js +9 -4
- package/dist/esm/extensions/marketplace/english-auctions/utils.js.map +1 -1
- package/dist/esm/extensions/marketplace/offers/utils.js +7 -4
- package/dist/esm/extensions/marketplace/offers/utils.js.map +1 -1
- package/dist/esm/insight/common.js +15 -0
- package/dist/esm/insight/common.js.map +1 -0
- package/dist/esm/insight/get-events.js +54 -0
- package/dist/esm/insight/get-events.js.map +1 -0
- package/dist/esm/insight/get-nfts.js +155 -15
- package/dist/esm/insight/get-nfts.js.map +1 -1
- package/dist/esm/insight/get-tokens.js +32 -12
- package/dist/esm/insight/get-tokens.js.map +1 -1
- package/dist/esm/insight/get-transactions.js +14 -8
- package/dist/esm/insight/get-transactions.js.map +1 -1
- package/dist/esm/insight/index.js +2 -1
- package/dist/esm/insight/index.js.map +1 -1
- package/dist/esm/pay/buyWithCrypto/getHistory.js +2 -2
- package/dist/esm/pay/buyWithCrypto/getHistory.js.map +1 -1
- package/dist/esm/pay/buyWithCrypto/getStatus.js +2 -2
- package/dist/esm/pay/buyWithCrypto/getStatus.js.map +1 -1
- package/dist/esm/pay/buyWithFiat/getHistory.js +2 -2
- package/dist/esm/pay/buyWithFiat/getHistory.js.map +1 -1
- package/dist/esm/pay/buyWithFiat/getStatus.js +2 -2
- package/dist/esm/pay/buyWithFiat/getStatus.js.map +1 -1
- package/dist/esm/pay/getBuyHistory.js +2 -2
- package/dist/esm/pay/getBuyHistory.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +6 -2
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js +3 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/SendFunds.js +3 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/SendFunds.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/ViewNFTs.js +6 -43
- package/dist/esm/react/web/ui/ConnectWallet/screens/ViewNFTs.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/ViewTokens.js +3 -9
- package/dist/esm/react/web/ui/ConnectWallet/screens/ViewTokens.js.map +1 -1
- package/dist/esm/react/web/ui/components/TokenIcon.js +3 -1
- package/dist/esm/react/web/ui/components/TokenIcon.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/utils.js +7 -2
- package/dist/esm/react/web/ui/prebuilt/NFT/utils.js.map +1 -1
- package/dist/esm/rpc/fetch-rpc.js +4 -4
- package/dist/esm/rpc/fetch-rpc.js.map +1 -1
- package/dist/esm/social/profiles.js +3 -8
- package/dist/esm/social/profiles.js.map +1 -1
- package/dist/esm/storage/download.js +2 -2
- package/dist/esm/storage/download.js.map +1 -1
- package/dist/esm/storage/unpin.js +2 -2
- package/dist/esm/storage/unpin.js.map +1 -1
- package/dist/esm/storage/upload/web-node.js +0 -1
- package/dist/esm/storage/upload/web-node.js.map +1 -1
- package/dist/esm/transaction/actions/gasless/providers/biconomy.js +0 -1
- package/dist/esm/transaction/actions/gasless/providers/biconomy.js.map +1 -1
- package/dist/esm/transaction/actions/gasless/providers/openzeppelin.js +0 -1
- package/dist/esm/transaction/actions/gasless/providers/openzeppelin.js.map +1 -1
- package/dist/esm/utils/nft/parseNft.js +4 -0
- package/dist/esm/utils/nft/parseNft.js.map +1 -1
- package/dist/esm/utils/signatures/resolve-signature.js +0 -2
- package/dist/esm/utils/signatures/resolve-signature.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/wallets/smart/lib/calls.js +2 -2
- package/dist/esm/wallets/smart/lib/calls.js.map +1 -1
- package/dist/esm/wallets/utils/getWalletBalance.js +3 -0
- package/dist/esm/wallets/utils/getWalletBalance.js.map +1 -1
- package/dist/types/chains/types.d.ts +7 -0
- package/dist/types/chains/types.d.ts.map +1 -1
- package/dist/types/chains/utils.d.ts +15 -1
- package/dist/types/chains/utils.d.ts.map +1 -1
- package/dist/types/event/actions/get-events.d.ts +1 -6
- package/dist/types/event/actions/get-events.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/read/getNFT.d.ts.map +1 -1
- package/dist/types/extensions/erc20/read/getBalance.d.ts +2 -0
- package/dist/types/extensions/erc20/read/getBalance.d.ts.map +1 -1
- package/dist/types/extensions/erc721/read/getNFT.d.ts +5 -0
- package/dist/types/extensions/erc721/read/getNFT.d.ts.map +1 -1
- package/dist/types/extensions/erc721/read/getNFTs.d.ts +5 -0
- package/dist/types/extensions/erc721/read/getNFTs.d.ts.map +1 -1
- package/dist/types/extensions/erc721/read/getOwnedNFTs.d.ts +3 -1
- package/dist/types/extensions/erc721/read/getOwnedNFTs.d.ts.map +1 -1
- package/dist/types/extensions/marketplace/direct-listings/utils.d.ts.map +1 -1
- package/dist/types/extensions/marketplace/english-auctions/utils.d.ts.map +1 -1
- package/dist/types/extensions/marketplace/offers/utils.d.ts.map +1 -1
- package/dist/types/insight/common.d.ts +3 -0
- package/dist/types/insight/common.d.ts.map +1 -0
- package/dist/types/insight/get-events.d.ts +31 -0
- package/dist/types/insight/get-events.d.ts.map +1 -0
- package/dist/types/insight/get-nfts.d.ts +52 -4
- package/dist/types/insight/get-nfts.d.ts.map +1 -1
- package/dist/types/insight/get-tokens.d.ts +4 -4
- package/dist/types/insight/get-tokens.d.ts.map +1 -1
- package/dist/types/insight/get-transactions.d.ts +2 -2
- package/dist/types/insight/get-transactions.d.ts.map +1 -1
- package/dist/types/insight/index.d.ts +3 -2
- package/dist/types/insight/index.d.ts.map +1 -1
- package/dist/types/pay/buyWithCrypto/getHistory.d.ts.map +1 -1
- package/dist/types/pay/buyWithCrypto/getStatus.d.ts.map +1 -1
- package/dist/types/pay/buyWithFiat/getHistory.d.ts.map +1 -1
- package/dist/types/pay/buyWithFiat/getStatus.d.ts.map +1 -1
- package/dist/types/pay/getBuyHistory.d.ts.map +1 -1
- package/dist/types/react/core/utils/wallet.d.ts +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.d.ts +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/SendFunds.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/ViewNFTs.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/ViewTokens.d.ts.map +1 -1
- package/dist/types/react/web/ui/components/TokenIcon.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/NFT/utils.d.ts.map +1 -1
- package/dist/types/rpc/fetch-rpc.d.ts.map +1 -1
- package/dist/types/social/profiles.d.ts.map +1 -1
- package/dist/types/storage/download.d.ts.map +1 -1
- package/dist/types/storage/unpin.d.ts.map +1 -1
- package/dist/types/storage/upload/web-node.d.ts.map +1 -1
- package/dist/types/transaction/actions/gasless/providers/biconomy.d.ts.map +1 -1
- package/dist/types/transaction/actions/gasless/providers/openzeppelin.d.ts.map +1 -1
- package/dist/types/utils/nft/parseNft.d.ts +8 -0
- package/dist/types/utils/nft/parseNft.d.ts.map +1 -1
- package/dist/types/utils/signatures/resolve-signature.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/wallets/utils/getWalletBalance.d.ts +2 -7
- package/dist/types/wallets/utils/getWalletBalance.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/chains/types.ts +8 -0
- package/src/chains/utils.ts +65 -2
- package/src/event/actions/get-events.test.ts +96 -0
- package/src/event/actions/get-events.ts +87 -12
- package/src/extensions/erc1155/read/getNFT.test.ts +2 -0
- package/src/extensions/erc1155/read/getNFT.ts +2 -0
- package/src/extensions/erc20/drop20.test.ts +48 -132
- package/src/extensions/erc20/read/getBalance.test.ts +5 -9
- package/src/extensions/erc20/read/getBalance.ts +4 -0
- package/src/extensions/erc721/read/getNFT.test.ts +108 -0
- package/src/extensions/erc721/read/getNFT.ts +55 -1
- package/src/extensions/erc721/read/getNFTs.test.ts +219 -13
- package/src/extensions/erc721/read/getNFTs.ts +59 -20
- package/src/extensions/erc721/read/getOwnedNFTs.test.ts +27 -2
- package/src/extensions/erc721/read/getOwnedNFTs.ts +61 -1
- package/src/extensions/erc721/token721.test.ts +2 -0
- package/src/extensions/marketplace/direct-listings/direct-listings.test.ts +2 -18
- package/src/extensions/marketplace/direct-listings/utils.ts +7 -4
- package/src/extensions/marketplace/english-auctions/utils.ts +9 -4
- package/src/extensions/marketplace/offers/utils.ts +7 -4
- package/src/insight/common.ts +24 -0
- package/src/insight/get-events.ts +92 -0
- package/src/insight/get-nfts.ts +256 -22
- package/src/insight/get-tokens.ts +57 -26
- package/src/insight/get-transactions.ts +30 -20
- package/src/insight/index.ts +7 -2
- package/src/pay/buyWithCrypto/getHistory.ts +4 -2
- package/src/pay/buyWithCrypto/getStatus.ts +4 -2
- package/src/pay/buyWithFiat/getHistory.ts +4 -2
- package/src/pay/buyWithFiat/getStatus.ts +4 -2
- package/src/pay/getBuyHistory.ts +4 -2
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.tsx +10 -2
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.tsx +5 -1
- package/src/react/web/ui/ConnectWallet/screens/SendFunds.tsx +5 -1
- package/src/react/web/ui/ConnectWallet/screens/ViewNFTs.tsx +43 -68
- package/src/react/web/ui/ConnectWallet/screens/ViewTokens.tsx +4 -14
- package/src/react/web/ui/components/TokenIcon.tsx +12 -3
- package/src/react/web/ui/prebuilt/NFT/utils.test.ts +2 -64
- package/src/react/web/ui/prebuilt/NFT/utils.ts +7 -2
- package/src/rpc/fetch-rpc.ts +6 -4
- package/src/social/profiles.ts +5 -9
- package/src/storage/download.ts +4 -2
- package/src/storage/unpin.ts +4 -2
- package/src/storage/upload/web-node.ts +0 -1
- package/src/transaction/actions/gasless/providers/biconomy.ts +0 -1
- package/src/transaction/actions/gasless/providers/openzeppelin.ts +0 -1
- package/src/utils/nft/parseNft.test.ts +8 -0
- package/src/utils/nft/parseNft.ts +12 -0
- package/src/utils/signatures/resolve-signature.ts +0 -2
- package/src/version.ts +1 -1
- package/src/wallets/smart/lib/calls.ts +2 -2
- package/src/wallets/utils/getWalletBalance.ts +5 -7
@@ -1,18 +1,13 @@
|
|
1
|
-
/**
|
2
|
-
* 1. blockTime + contract (with abi) + no events -> logs with types and parsing *if* contract has abi defined
|
3
|
-
* 2. blockTime + contract (no abi) + no events -> logs with NO types but *with* parsing
|
4
|
-
* 3. blockTime + no contract + events -> logs with types and parsing (across all "addresses") (no contract filter)
|
5
|
-
* 4. blockTime + contract + events -> logs with types and parsing (filtered by contract address + event topics)
|
6
|
-
*/
|
7
|
-
|
8
1
|
import type {
|
9
2
|
Abi,
|
10
3
|
AbiEvent,
|
11
4
|
ExtractAbiEvent,
|
12
5
|
ExtractAbiEventNames,
|
13
6
|
} from "abitype";
|
7
|
+
import { type Log, formatLog } from "viem";
|
14
8
|
import { resolveContractAbi } from "../../contract/actions/resolve-abi.js";
|
15
9
|
import type { ThirdwebContract } from "../../contract/contract.js";
|
10
|
+
import { getContractEvents as getContractEventsInsight } from "../../insight/get-events.js";
|
16
11
|
import { eth_blockNumber } from "../../rpc/actions/eth_blockNumber.js";
|
17
12
|
import {
|
18
13
|
type GetLogsBlockParams,
|
@@ -21,6 +16,7 @@ import {
|
|
21
16
|
} from "../../rpc/actions/eth_getLogs.js";
|
22
17
|
import { getRpcClient } from "../../rpc/rpc.js";
|
23
18
|
import { getAddress } from "../../utils/address.js";
|
19
|
+
import { type Hex, numberToHex } from "../../utils/encoding/hex.js";
|
24
20
|
import type { Prettify } from "../../utils/type-utils.js";
|
25
21
|
import { type PreparedEvent, prepareEvent } from "../prepare-event.js";
|
26
22
|
import { isAbiEvent } from "../utils.js";
|
@@ -34,6 +30,7 @@ export type GetContractEventsOptionsDirect<
|
|
34
30
|
contract: ThirdwebContract<abi>;
|
35
31
|
events?: abiEvents;
|
36
32
|
strict?: TStrict;
|
33
|
+
useIndexer?: boolean;
|
37
34
|
};
|
38
35
|
|
39
36
|
export type GetContractEventsOptions<
|
@@ -49,6 +46,10 @@ export type GetContractEventsResult<
|
|
49
46
|
TStrict extends boolean,
|
50
47
|
> = ParseEventLogsResult<abiEvents, TStrict>;
|
51
48
|
|
49
|
+
type GetLogsParamsExtra = {
|
50
|
+
signature?: string;
|
51
|
+
} & GetLogsParams;
|
52
|
+
|
52
53
|
/**
|
53
54
|
* Retrieves events from a contract based on the provided options.
|
54
55
|
* @param options - The options for retrieving events.
|
@@ -106,7 +107,13 @@ export async function getContractEvents<
|
|
106
107
|
>(
|
107
108
|
options: GetContractEventsOptions<abi, abiEvents, TStrict>,
|
108
109
|
): Promise<GetContractEventsResult<abiEvents, TStrict>> {
|
109
|
-
const {
|
110
|
+
const {
|
111
|
+
contract,
|
112
|
+
events,
|
113
|
+
blockRange,
|
114
|
+
useIndexer = true,
|
115
|
+
...restParams
|
116
|
+
} = options;
|
110
117
|
|
111
118
|
const rpcRequest = getRpcClient(contract);
|
112
119
|
|
@@ -164,7 +171,7 @@ export async function getContractEvents<
|
|
164
171
|
}
|
165
172
|
}
|
166
173
|
|
167
|
-
const logsParams:
|
174
|
+
const logsParams: GetLogsParamsExtra[] =
|
168
175
|
events && events.length > 0
|
169
176
|
? // if we have events passed in then we use those
|
170
177
|
events.map((e) => ({
|
@@ -175,9 +182,33 @@ export async function getContractEvents<
|
|
175
182
|
: // otherwise we want "all" events (aka not pass any topics at all)
|
176
183
|
[{ ...restParams, address: getAddress(contract.address) }];
|
177
184
|
|
178
|
-
|
179
|
-
|
180
|
-
|
185
|
+
let logs: Log[][] = [];
|
186
|
+
|
187
|
+
// try fetching from insight if available
|
188
|
+
if (useIndexer) {
|
189
|
+
try {
|
190
|
+
logs = await Promise.all(
|
191
|
+
logsParams.map((p) =>
|
192
|
+
getLogsFromInsight({
|
193
|
+
params: p,
|
194
|
+
contract,
|
195
|
+
}),
|
196
|
+
),
|
197
|
+
);
|
198
|
+
} catch (e) {
|
199
|
+
console.warn("Error fetching from insight, falling back to rpc", e);
|
200
|
+
// fetch from rpc
|
201
|
+
logs = await Promise.all(
|
202
|
+
logsParams.map((ethLogParams) => eth_getLogs(rpcRequest, ethLogParams)),
|
203
|
+
);
|
204
|
+
}
|
205
|
+
} else {
|
206
|
+
// fetch from rpc
|
207
|
+
logs = await Promise.all(
|
208
|
+
logsParams.map((ethLogParams) => eth_getLogs(rpcRequest, ethLogParams)),
|
209
|
+
);
|
210
|
+
}
|
211
|
+
|
181
212
|
const flattenLogs = logs
|
182
213
|
.flat()
|
183
214
|
.sort((a, b) => Number((a.blockNumber ?? 0n) - (b.blockNumber ?? 0n)));
|
@@ -186,3 +217,47 @@ export async function getContractEvents<
|
|
186
217
|
events: resolvedEvents,
|
187
218
|
});
|
188
219
|
}
|
220
|
+
|
221
|
+
async function getLogsFromInsight(options: {
|
222
|
+
params: GetLogsParamsExtra;
|
223
|
+
contract: ThirdwebContract<Abi>;
|
224
|
+
}): Promise<Log[]> {
|
225
|
+
const { params, contract } = options;
|
226
|
+
|
227
|
+
const fromBlock =
|
228
|
+
typeof params.fromBlock === "bigint" ? Number(params.fromBlock) : undefined;
|
229
|
+
|
230
|
+
const toBlock =
|
231
|
+
typeof params.toBlock === "bigint" ? Number(params.toBlock) : undefined;
|
232
|
+
|
233
|
+
const r = await getContractEventsInsight({
|
234
|
+
client: contract.client,
|
235
|
+
chains: [contract.chain],
|
236
|
+
contractAddress: contract.address,
|
237
|
+
queryOptions: {
|
238
|
+
limit: 500,
|
239
|
+
filter_block_hash: params.blockHash,
|
240
|
+
filter_block_number_gte: fromBlock,
|
241
|
+
filter_block_number_lte: toBlock,
|
242
|
+
filter_topic_0: params.topics?.[0] as Hex | undefined,
|
243
|
+
filter_topic_1: params.topics?.[1] as Hex | undefined,
|
244
|
+
filter_topic_2: params.topics?.[2] as Hex | undefined,
|
245
|
+
filter_topic_3: params.topics?.[3] as Hex | undefined,
|
246
|
+
},
|
247
|
+
});
|
248
|
+
|
249
|
+
const cleanedEventData = r.map((tx) => ({
|
250
|
+
chainId: tx.chain_id,
|
251
|
+
blockNumber: numberToHex(Number(tx.block_number)),
|
252
|
+
blockHash: tx.block_hash as Hex,
|
253
|
+
blockTimestamp: tx.block_timestamp,
|
254
|
+
transactionHash: tx.transaction_hash as Hex,
|
255
|
+
transactionIndex: numberToHex(tx.transaction_index),
|
256
|
+
logIndex: numberToHex(tx.log_index),
|
257
|
+
address: tx.address,
|
258
|
+
data: tx.data as Hex,
|
259
|
+
topics: tx.topics as [`0x${string}`, ...`0x${string}`[]] | [] | undefined,
|
260
|
+
}));
|
261
|
+
|
262
|
+
return cleanedEventData.map((e) => formatLog(e));
|
263
|
+
}
|
@@ -11,6 +11,7 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc1155.getNFT", () => {
|
|
11
11
|
});
|
12
12
|
expect(nft).toMatchInlineSnapshot(`
|
13
13
|
{
|
14
|
+
"chainId": 1,
|
14
15
|
"id": 2n,
|
15
16
|
"metadata": {
|
16
17
|
"animation_url": "ipfs://QmYoM63qaumQznBRx38tQjkY4ewbymeFb2KWBhkfMqNHax/3.mp4",
|
@@ -36,6 +37,7 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc1155.getNFT", () => {
|
|
36
37
|
},
|
37
38
|
"owner": null,
|
38
39
|
"supply": 2519n,
|
40
|
+
"tokenAddress": "0x42d3641255C946CC451474295d29D3505173F22A",
|
39
41
|
"tokenURI": "ipfs://QmbMXdbnNUAuGRoY6c6G792c6T9utfaBGqRUaMaRUf52Cb/2",
|
40
42
|
"type": "ERC1155",
|
41
43
|
}
|
@@ -59,17 +59,10 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
|
59
59
|
}, 60_000);
|
60
60
|
|
61
61
|
it("should allow to claim tokens", async () => {
|
62
|
-
|
63
|
-
getBalance({ contract, address: TEST_ACCOUNT_A.address })
|
64
|
-
|
65
|
-
|
66
|
-
"decimals": 18,
|
67
|
-
"displayValue": "0",
|
68
|
-
"name": "Test DropERC20",
|
69
|
-
"symbol": "",
|
70
|
-
"value": 0n,
|
71
|
-
}
|
72
|
-
`);
|
62
|
+
expect(
|
63
|
+
(await getBalance({ contract, address: TEST_ACCOUNT_A.address }))
|
64
|
+
.displayValue,
|
65
|
+
).toBe("0");
|
73
66
|
await sendAndConfirmTransaction({
|
74
67
|
transaction: setClaimConditions({
|
75
68
|
contract,
|
@@ -98,31 +91,17 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
|
98
91
|
transaction: claimTx,
|
99
92
|
account: TEST_ACCOUNT_A,
|
100
93
|
});
|
101
|
-
|
102
|
-
getBalance({ contract, address: TEST_ACCOUNT_A.address })
|
103
|
-
|
104
|
-
|
105
|
-
"decimals": 18,
|
106
|
-
"displayValue": "1",
|
107
|
-
"name": "Test DropERC20",
|
108
|
-
"symbol": "",
|
109
|
-
"value": 1000000000000000000n,
|
110
|
-
}
|
111
|
-
`);
|
94
|
+
expect(
|
95
|
+
(await getBalance({ contract, address: TEST_ACCOUNT_A.address }))
|
96
|
+
.displayValue,
|
97
|
+
).toBe("1");
|
112
98
|
});
|
113
99
|
|
114
100
|
it("should allow to claim tokens with value", async () => {
|
115
|
-
|
116
|
-
getBalance({ contract, address: TEST_ACCOUNT_C.address })
|
117
|
-
|
118
|
-
|
119
|
-
"decimals": 18,
|
120
|
-
"displayValue": "0",
|
121
|
-
"name": "Test DropERC20",
|
122
|
-
"symbol": "",
|
123
|
-
"value": 0n,
|
124
|
-
}
|
125
|
-
`);
|
101
|
+
expect(
|
102
|
+
(await getBalance({ contract, address: TEST_ACCOUNT_C.address }))
|
103
|
+
.displayValue,
|
104
|
+
).toBe("0");
|
126
105
|
// set cc with price
|
127
106
|
await sendAndConfirmTransaction({
|
128
107
|
transaction: setClaimConditions({
|
@@ -150,17 +129,10 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
|
150
129
|
transaction: claimTx,
|
151
130
|
account: TEST_ACCOUNT_C,
|
152
131
|
});
|
153
|
-
|
154
|
-
getBalance({ contract, address: TEST_ACCOUNT_C.address })
|
155
|
-
|
156
|
-
|
157
|
-
"decimals": 18,
|
158
|
-
"displayValue": "2",
|
159
|
-
"name": "Test DropERC20",
|
160
|
-
"symbol": "",
|
161
|
-
"value": 2000000000000000000n,
|
162
|
-
}
|
163
|
-
`);
|
132
|
+
expect(
|
133
|
+
(await getBalance({ contract, address: TEST_ACCOUNT_C.address }))
|
134
|
+
.displayValue,
|
135
|
+
).toBe("2");
|
164
136
|
});
|
165
137
|
|
166
138
|
describe("Allowlists", () => {
|
@@ -181,17 +153,10 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
|
181
153
|
account: TEST_ACCOUNT_A,
|
182
154
|
});
|
183
155
|
|
184
|
-
|
185
|
-
getBalance({ contract, address: TEST_ACCOUNT_B.address })
|
186
|
-
|
187
|
-
|
188
|
-
"decimals": 18,
|
189
|
-
"displayValue": "0",
|
190
|
-
"name": "Test DropERC20",
|
191
|
-
"symbol": "",
|
192
|
-
"value": 0n,
|
193
|
-
}
|
194
|
-
`);
|
156
|
+
expect(
|
157
|
+
(await getBalance({ contract, address: TEST_ACCOUNT_B.address }))
|
158
|
+
.displayValue,
|
159
|
+
).toBe("0");
|
195
160
|
|
196
161
|
expect(
|
197
162
|
await canClaim({
|
@@ -228,17 +193,10 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
|
228
193
|
}),
|
229
194
|
});
|
230
195
|
|
231
|
-
|
232
|
-
getBalance({ contract, address: TEST_ACCOUNT_B.address })
|
233
|
-
|
234
|
-
|
235
|
-
"decimals": 18,
|
236
|
-
"displayValue": "1",
|
237
|
-
"name": "Test DropERC20",
|
238
|
-
"symbol": "",
|
239
|
-
"value": 1000000000000000000n,
|
240
|
-
}
|
241
|
-
`);
|
196
|
+
expect(
|
197
|
+
(await getBalance({ contract, address: TEST_ACCOUNT_B.address }))
|
198
|
+
.displayValue,
|
199
|
+
).toBe("1");
|
242
200
|
|
243
201
|
await expect(
|
244
202
|
sendAndConfirmTransaction({
|
@@ -274,17 +232,10 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
|
274
232
|
account: TEST_ACCOUNT_A,
|
275
233
|
});
|
276
234
|
|
277
|
-
|
278
|
-
getBalance({ contract, address: TEST_ACCOUNT_A.address })
|
279
|
-
|
280
|
-
|
281
|
-
"decimals": 18,
|
282
|
-
"displayValue": "1",
|
283
|
-
"name": "Test DropERC20",
|
284
|
-
"symbol": "",
|
285
|
-
"value": 1000000000000000000n,
|
286
|
-
}
|
287
|
-
`);
|
235
|
+
expect(
|
236
|
+
(await getBalance({ contract, address: TEST_ACCOUNT_A.address }))
|
237
|
+
.displayValue,
|
238
|
+
).toBe("1");
|
288
239
|
|
289
240
|
// we try to claim an extra `2` tokens
|
290
241
|
// this should faile bcause the max claimable is `3` and we have previously already claimed 2 tokens (one for ourselves, one for the other wallet)
|
@@ -318,17 +269,10 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
|
318
269
|
}),
|
319
270
|
});
|
320
271
|
|
321
|
-
|
322
|
-
getBalance({ contract, address: TEST_ACCOUNT_A.address })
|
323
|
-
|
324
|
-
|
325
|
-
"decimals": 18,
|
326
|
-
"displayValue": "2",
|
327
|
-
"name": "Test DropERC20",
|
328
|
-
"symbol": "",
|
329
|
-
"value": 2000000000000000000n,
|
330
|
-
}
|
331
|
-
`);
|
272
|
+
expect(
|
273
|
+
(await getBalance({ contract, address: TEST_ACCOUNT_A.address }))
|
274
|
+
.displayValue,
|
275
|
+
).toBe("2");
|
332
276
|
});
|
333
277
|
});
|
334
278
|
|
@@ -353,17 +297,10 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
|
353
297
|
account: TEST_ACCOUNT_A,
|
354
298
|
});
|
355
299
|
|
356
|
-
|
357
|
-
getBalance({ contract, address: TEST_ACCOUNT_A.address })
|
358
|
-
|
359
|
-
|
360
|
-
"decimals": 18,
|
361
|
-
"displayValue": "2",
|
362
|
-
"name": "Test DropERC20",
|
363
|
-
"symbol": "",
|
364
|
-
"value": 2000000000000000000n,
|
365
|
-
}
|
366
|
-
`);
|
300
|
+
expect(
|
301
|
+
(await getBalance({ contract, address: TEST_ACCOUNT_A.address }))
|
302
|
+
.displayValue,
|
303
|
+
).toBe("2");
|
367
304
|
|
368
305
|
await sendAndConfirmTransaction({
|
369
306
|
account: TEST_ACCOUNT_A,
|
@@ -374,17 +311,10 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
|
374
311
|
}),
|
375
312
|
});
|
376
313
|
|
377
|
-
|
378
|
-
getBalance({ contract, address: TEST_ACCOUNT_A.address })
|
379
|
-
|
380
|
-
|
381
|
-
"decimals": 18,
|
382
|
-
"displayValue": "3",
|
383
|
-
"name": "Test DropERC20",
|
384
|
-
"symbol": "",
|
385
|
-
"value": 3000000000000000000n,
|
386
|
-
}
|
387
|
-
`);
|
314
|
+
expect(
|
315
|
+
(await getBalance({ contract, address: TEST_ACCOUNT_A.address }))
|
316
|
+
.displayValue,
|
317
|
+
).toBe("3");
|
388
318
|
});
|
389
319
|
|
390
320
|
it("should be able to retrieve multiple phases", async () => {
|
@@ -436,17 +366,10 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
|
436
366
|
account: TEST_ACCOUNT_D,
|
437
367
|
});
|
438
368
|
// check that the account has claimed one token
|
439
|
-
|
440
|
-
getBalance({ contract, address: TEST_ACCOUNT_D.address })
|
441
|
-
|
442
|
-
|
443
|
-
"decimals": 18,
|
444
|
-
"displayValue": "0.000000000000000001",
|
445
|
-
"name": "Test DropERC20",
|
446
|
-
"symbol": "",
|
447
|
-
"value": 1n,
|
448
|
-
}
|
449
|
-
`);
|
369
|
+
expect(
|
370
|
+
(await getBalance({ contract, address: TEST_ACCOUNT_D.address }))
|
371
|
+
.displayValue,
|
372
|
+
).toBe("0.000000000000000001");
|
450
373
|
|
451
374
|
// attempt to claim another token (this should fail)
|
452
375
|
await expect(
|
@@ -482,17 +405,10 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
|
482
405
|
account: TEST_ACCOUNT_D,
|
483
406
|
});
|
484
407
|
// check that the account has claimed two tokens
|
485
|
-
|
486
|
-
getBalance({ contract, address: TEST_ACCOUNT_D.address })
|
487
|
-
|
488
|
-
|
489
|
-
"decimals": 18,
|
490
|
-
"displayValue": "0.000000000000000002",
|
491
|
-
"name": "Test DropERC20",
|
492
|
-
"symbol": "",
|
493
|
-
"value": 2n,
|
494
|
-
}
|
495
|
-
`);
|
408
|
+
expect(
|
409
|
+
(await getBalance({ contract, address: TEST_ACCOUNT_D.address }))
|
410
|
+
.displayValue,
|
411
|
+
).toBe("0.000000000000000002");
|
496
412
|
});
|
497
413
|
},
|
498
414
|
);
|
@@ -10,14 +10,10 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc20.getBalance", () => {
|
|
10
10
|
contract: USDT_CONTRACT,
|
11
11
|
address: VITALIK_WALLET,
|
12
12
|
});
|
13
|
-
expect(balance).
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
"symbol": "USDT",
|
19
|
-
"value": 1544900798n,
|
20
|
-
}
|
21
|
-
`);
|
13
|
+
expect(balance.displayValue).toBe("1544.900798");
|
14
|
+
expect(balance.name).toBe("Tether USD");
|
15
|
+
expect(balance.symbol).toBe("USDT");
|
16
|
+
expect(balance.value).toBe(1544900798n);
|
17
|
+
expect(balance.decimals).toBe(6);
|
22
18
|
});
|
23
19
|
});
|
@@ -23,6 +23,8 @@ export type GetBalanceResult = {
|
|
23
23
|
displayValue: string;
|
24
24
|
symbol: string;
|
25
25
|
name: string;
|
26
|
+
tokenAddress: string;
|
27
|
+
chainId: number;
|
26
28
|
};
|
27
29
|
|
28
30
|
/**
|
@@ -48,5 +50,7 @@ export async function getBalance(
|
|
48
50
|
...currencyMetadata,
|
49
51
|
value: balanceWei,
|
50
52
|
displayValue: toTokens(balanceWei, currencyMetadata.decimals),
|
53
|
+
tokenAddress: options.contract.address,
|
54
|
+
chainId: options.contract.chain.id,
|
51
55
|
};
|
52
56
|
}
|
@@ -3,14 +3,118 @@ import { DOODLES_CONTRACT } from "~test/test-contracts.js";
|
|
3
3
|
import { getNFT } from "./getNFT.js";
|
4
4
|
|
5
5
|
describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFT", () => {
|
6
|
+
it("without owner using indexer", async () => {
|
7
|
+
const nft = await getNFT({
|
8
|
+
contract: DOODLES_CONTRACT,
|
9
|
+
tokenId: 1n,
|
10
|
+
includeOwner: false,
|
11
|
+
});
|
12
|
+
expect(nft.metadata.name).toBe("Doodle #1");
|
13
|
+
// TODO (insight): re-enable once insight fixes the client id caching issue
|
14
|
+
// expect(nft).toMatchInlineSnapshot(`
|
15
|
+
// {
|
16
|
+
// "chainId": 1,
|
17
|
+
// "id": 1n,
|
18
|
+
// "metadata": {
|
19
|
+
// "attributes": [
|
20
|
+
// {
|
21
|
+
// "trait_type": "face",
|
22
|
+
// "value": "holographic beard",
|
23
|
+
// },
|
24
|
+
// {
|
25
|
+
// "trait_type": "hair",
|
26
|
+
// "value": "white bucket cap",
|
27
|
+
// },
|
28
|
+
// {
|
29
|
+
// "trait_type": "body",
|
30
|
+
// "value": "purple sweater with satchel",
|
31
|
+
// },
|
32
|
+
// {
|
33
|
+
// "trait_type": "background",
|
34
|
+
// "value": "grey",
|
35
|
+
// },
|
36
|
+
// {
|
37
|
+
// "trait_type": "head",
|
38
|
+
// "value": "gradient 2",
|
39
|
+
// },
|
40
|
+
// ],
|
41
|
+
// "description": "A community-driven collectibles project featuring art by Burnt Toast. Doodles come in a joyful range of colors, traits and sizes with a collection size of 10,000. Each Doodle allows its owner to vote for experiences and activations paid for by the Doodles Community Treasury. Burnt Toast is the working alias for Scott Martin, a Canadian–based illustrator, designer, animator and muralist.",
|
42
|
+
// "image": "https://${clientId}.ipfscdn.io/ipfs/QmTDxnzcvj2p3xBrKcGv1wxoyhAn2yzCQnZZ9LmFjReuH9",
|
43
|
+
// "image_url": "https://${clientId}.ipfscdn.io/ipfs/QmTDxnzcvj2p3xBrKcGv1wxoyhAn2yzCQnZZ9LmFjReuH9",
|
44
|
+
// "name": "Doodle #1",
|
45
|
+
// "uri": "https://${clientId}.ipfscdn.io/ipfs/QmPMc4tcBsMqLRuCQtPmPe84bpSjrC3Ky7t3JWuHXYB4aS/1",
|
46
|
+
// },
|
47
|
+
// "owner": null,
|
48
|
+
// "tokenAddress": "0x8a90cab2b38dba80c64b7734e58ee1db38b8992e",
|
49
|
+
// "tokenURI": "https://${clientId}.ipfscdn.io/ipfs/QmPMc4tcBsMqLRuCQtPmPe84bpSjrC3Ky7t3JWuHXYB4aS/1",
|
50
|
+
// "type": "ERC721",
|
51
|
+
// }
|
52
|
+
// `);
|
53
|
+
});
|
54
|
+
|
55
|
+
it("with owner using indexer", async () => {
|
56
|
+
const nft = await getNFT({
|
57
|
+
contract: { ...DOODLES_CONTRACT },
|
58
|
+
tokenId: 1n,
|
59
|
+
includeOwner: true,
|
60
|
+
});
|
61
|
+
expect(nft.metadata.name).toBe("Doodle #1");
|
62
|
+
expect(nft.owner).toBe("0xbe9936fcfc50666f5425fde4a9decc59cef73b24");
|
63
|
+
// TODO (insight): re-enable once insight fixes the client id caching issue
|
64
|
+
// expect(nft).toMatchInlineSnapshot(`
|
65
|
+
// {
|
66
|
+
// "chainId": 1,
|
67
|
+
// "id": 1n,
|
68
|
+
// "metadata": {
|
69
|
+
// "attributes": [
|
70
|
+
// {
|
71
|
+
// "trait_type": "face",
|
72
|
+
// "value": "holographic beard",
|
73
|
+
// },
|
74
|
+
// {
|
75
|
+
// "trait_type": "hair",
|
76
|
+
// "value": "white bucket cap",
|
77
|
+
// },
|
78
|
+
// {
|
79
|
+
// "trait_type": "body",
|
80
|
+
// "value": "purple sweater with satchel",
|
81
|
+
// },
|
82
|
+
// {
|
83
|
+
// "trait_type": "background",
|
84
|
+
// "value": "grey",
|
85
|
+
// },
|
86
|
+
// {
|
87
|
+
// "trait_type": "head",
|
88
|
+
// "value": "gradient 2",
|
89
|
+
// },
|
90
|
+
// ],
|
91
|
+
// "description": "A community-driven collectibles project featuring art by Burnt Toast. Doodles come in a joyful range of colors, traits and sizes with a collection size of 10,000. Each Doodle allows its owner to vote for experiences and activations paid for by the Doodles Community Treasury. Burnt Toast is the working alias for Scott Martin, a Canadian–based illustrator, designer, animator and muralist.",
|
92
|
+
// "image": "https://${clientId}.ipfscdn.io/ipfs/QmTDxnzcvj2p3xBrKcGv1wxoyhAn2yzCQnZZ9LmFjReuH9",
|
93
|
+
// "image_url": "https://${clientId}.ipfscdn.io/ipfs/QmTDxnzcvj2p3xBrKcGv1wxoyhAn2yzCQnZZ9LmFjReuH9",
|
94
|
+
// "name": "Doodle #1",
|
95
|
+
// "owner_addresses": [
|
96
|
+
// "0xbe9936fcfc50666f5425fde4a9decc59cef73b24",
|
97
|
+
// ],
|
98
|
+
// "uri": "https://${clientId}.ipfscdn.io/ipfs/QmPMc4tcBsMqLRuCQtPmPe84bpSjrC3Ky7t3JWuHXYB4aS/1",
|
99
|
+
// },
|
100
|
+
// "owner": "0xbe9936fcfc50666f5425fde4a9decc59cef73b24",
|
101
|
+
// "tokenAddress": "0x8a90cab2b38dba80c64b7734e58ee1db38b8992e",
|
102
|
+
// "tokenURI": "https://${clientId}.ipfscdn.io/ipfs/QmPMc4tcBsMqLRuCQtPmPe84bpSjrC3Ky7t3JWuHXYB4aS/1",
|
103
|
+
// "type": "ERC721",
|
104
|
+
// }
|
105
|
+
// `);
|
106
|
+
});
|
107
|
+
|
6
108
|
it("without owner", async () => {
|
7
109
|
const nft = await getNFT({
|
8
110
|
contract: { ...DOODLES_CONTRACT },
|
9
111
|
tokenId: 1n,
|
10
112
|
includeOwner: false,
|
113
|
+
useIndexer: false,
|
11
114
|
});
|
12
115
|
expect(nft).toMatchInlineSnapshot(`
|
13
116
|
{
|
117
|
+
"chainId": 1,
|
14
118
|
"id": 1n,
|
15
119
|
"metadata": {
|
16
120
|
"attributes": [
|
@@ -40,6 +144,7 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFT", () => {
|
|
40
144
|
"name": "Doodle #1",
|
41
145
|
},
|
42
146
|
"owner": null,
|
147
|
+
"tokenAddress": "0x8a90cab2b38dba80c64b7734e58ee1db38b8992e",
|
43
148
|
"tokenURI": "ipfs://QmPMc4tcBsMqLRuCQtPmPe84bpSjrC3Ky7t3JWuHXYB4aS/1",
|
44
149
|
"type": "ERC721",
|
45
150
|
}
|
@@ -51,9 +156,11 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFT", () => {
|
|
51
156
|
contract: { ...DOODLES_CONTRACT },
|
52
157
|
tokenId: 1n,
|
53
158
|
includeOwner: true,
|
159
|
+
useIndexer: false,
|
54
160
|
});
|
55
161
|
expect(nft).toMatchInlineSnapshot(`
|
56
162
|
{
|
163
|
+
"chainId": 1,
|
57
164
|
"id": 1n,
|
58
165
|
"metadata": {
|
59
166
|
"attributes": [
|
@@ -83,6 +190,7 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFT", () => {
|
|
83
190
|
"name": "Doodle #1",
|
84
191
|
},
|
85
192
|
"owner": "0xbE9936FCFC50666f5425FDE4A9decC59cEF73b24",
|
193
|
+
"tokenAddress": "0x8a90cab2b38dba80c64b7734e58ee1db38b8992e",
|
86
194
|
"tokenURI": "ipfs://QmPMc4tcBsMqLRuCQtPmPe84bpSjrC3Ky7t3JWuHXYB4aS/1",
|
87
195
|
"type": "ERC721",
|
88
196
|
}
|