@quicknode/sdk 1.1.5 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +3 -8
  2. package/cjs/index.js +15 -1093
  3. package/esm/{src/client → client}/client.js +0 -2
  4. package/esm/{src/index.js → index.js} +0 -2
  5. package/esm/lib/validation/ValidateInput.js +16 -0
  6. package/esm/lib/validation/validators.js +15 -0
  7. package/index.d.ts +6 -2767
  8. package/package.json +11 -29
  9. package/esm/package.json.js +0 -3
  10. package/esm/src/api/api.js +0 -94
  11. package/esm/src/api/controllers/contracts.js +0 -34
  12. package/esm/src/api/controllers/events.js +0 -113
  13. package/esm/src/api/controllers/nfts.js +0 -227
  14. package/esm/src/api/controllers/tokens.js +0 -93
  15. package/esm/src/api/controllers/transactions.js +0 -120
  16. package/esm/src/api/controllers/utils.js +0 -53
  17. package/esm/src/api/graphql/customUrqlClient.js +0 -23
  18. package/esm/src/api/graphql/generatedTypes.js +0 -22
  19. package/esm/src/api/graphql/modifyQueryForChain.js +0 -28
  20. package/esm/src/api/index.d.ts +0 -2690
  21. package/esm/src/api/index.js +0 -2
  22. package/esm/src/api/types/chains.js +0 -7
  23. package/esm/src/api/types/contracts/getContractDetails.js +0 -12
  24. package/esm/src/api/types/events/getAll.js +0 -7
  25. package/esm/src/api/types/events/getByContract.js +0 -12
  26. package/esm/src/api/types/nfts/getByContractAddress.js +0 -10
  27. package/esm/src/api/types/nfts/getByWalletAddress.js +0 -18
  28. package/esm/src/api/types/nfts/getCollectionDetails.js +0 -11
  29. package/esm/src/api/types/nfts/getCollectionEvents.js +0 -12
  30. package/esm/src/api/types/nfts/getNFTDetails.js +0 -9
  31. package/esm/src/api/types/nfts/getNFTEvents.js +0 -13
  32. package/esm/src/api/types/nfts/getTrendingCollections.js +0 -7
  33. package/esm/src/api/types/nfts/verifyOwnershipByAddress.js +0 -12
  34. package/esm/src/api/types/tokens/getBalancesByWalletAddress.js +0 -12
  35. package/esm/src/api/types/transactions/getByHash.js +0 -11
  36. package/esm/src/api/types/transactions/getBySearch.js +0 -7
  37. package/esm/src/api/types/utils/gasPrices.js +0 -12
  38. package/esm/src/api/utils/constants.js +0 -3
  39. package/esm/src/api/utils/helpers.js +0 -11
  40. package/esm/src/api/utils/isValidENSAddress.js +0 -21
  41. package/esm/src/api/utils/postQueryFormatter.js +0 -24
  42. package/esm/src/api/utils/removeNodesAndEdges.js +0 -51
  43. package/esm/src/lib/validation/ValidateInput.js +0 -35
  44. package/esm/src/lib/validation/codegenDerivedValidators.js +0 -28
  45. package/esm/src/lib/validation/validators.js +0 -105
  46. package/esm/{src/client → client}/index.js +0 -0
  47. package/esm/{src/core → core}/addOns/nftTokenV2/actions.js +0 -0
  48. package/esm/{src/core → core}/addOns/nftTokenV2/types/qn_fetchNFTCollectionDetails.js +0 -0
  49. package/esm/{src/core → core}/addOns/nftTokenV2/types/qn_fetchNFTs.js +0 -0
  50. package/esm/{src/core → core}/addOns/nftTokenV2/types/qn_fetchNFTsByCollection.js +0 -0
  51. package/esm/{src/core → core}/addOns/nftTokenV2/types/qn_getTokenMetadataByContractAddress.js +0 -0
  52. package/esm/{src/core → core}/addOns/nftTokenV2/types/qn_getTokenMetadataBySymbol.js +0 -0
  53. package/esm/{src/core → core}/addOns/nftTokenV2/types/qn_getTransactionsByAddress.js +0 -0
  54. package/esm/{src/core → core}/addOns/nftTokenV2/types/qn_getTransfersByNFT.js +0 -0
  55. package/esm/{src/core → core}/addOns/nftTokenV2/types/qn_getWalletTokenBalance.js +0 -0
  56. package/esm/{src/core → core}/addOns/nftTokenV2/types/qn_getWalletTokenTransactions.js +0 -0
  57. package/esm/{src/core → core}/addOns/nftTokenV2/types/qn_verifyNFTsOwner.js +0 -0
  58. package/esm/{src/core → core}/addOns/shared/helpers.js +0 -0
  59. package/esm/{src/core → core}/chains.js +0 -0
  60. package/esm/{src/core → core}/core.js +0 -0
  61. package/esm/{src/core → core}/index.d.ts +4 -4
  62. /package/esm/{src/core → core}/index.js +0 -0
  63. /package/esm/{src/lib → lib}/errors/QNChainNotSupported.js +0 -0
  64. /package/esm/{src/lib → lib}/errors/QNInputValidationError.js +0 -0
  65. /package/esm/{src/lib → lib}/errors/QNInvalidEnpointUrl.js +0 -0
  66. /package/esm/{src/lib → lib}/helpers/globalFetch.js +0 -0
@@ -1,2 +0,0 @@
1
- import { API } from './api.js';
2
- export { API as default } from './api.js';
@@ -1,7 +0,0 @@
1
- const supportedChains = [
2
- 'ethereum',
3
- 'polygon',
4
- 'ethereumSepolia',
5
- ];
6
-
7
- export { supportedChains };
@@ -1,12 +0,0 @@
1
- import { isEvmAddress, supportedChainInput } from '../../../lib/validation/validators.js';
2
- import { z } from 'zod';
3
-
4
- // Using zod for runtime validation
5
- const contractDetailsValidator = z
6
- .object({
7
- contractAddress: isEvmAddress,
8
- })
9
- .merge(supportedChainInput)
10
- .strict();
11
-
12
- export { contractDetailsValidator };
@@ -1,7 +0,0 @@
1
- import { baseEventsInput, supportedChainInput } from '../../../lib/validation/validators.js';
2
-
3
- const allEventsValidator = baseEventsInput
4
- .merge(supportedChainInput)
5
- .strict();
6
-
7
- export { allEventsValidator };
@@ -1,12 +0,0 @@
1
- import { isEvmAddress, baseEventsInput, supportedChainInput } from '../../../lib/validation/validators.js';
2
- import { z } from 'zod';
3
-
4
- const contractEventsValidator = z
5
- .object({
6
- contractAddress: isEvmAddress,
7
- })
8
- .merge(baseEventsInput)
9
- .merge(supportedChainInput)
10
- .strict();
11
-
12
- export { contractEventsValidator };
@@ -1,10 +0,0 @@
1
- import { isEvmAddress, paginationParams, supportedChainInput } from '../../../lib/validation/validators.js';
2
- import { z } from 'zod';
3
-
4
- const nftsByContractAddressValidator = z
5
- .object({ contractAddress: isEvmAddress })
6
- .merge(paginationParams)
7
- .merge(supportedChainInput)
8
- .strict();
9
-
10
- export { nftsByContractAddressValidator };
@@ -1,18 +0,0 @@
1
- import { isENSAddress, isEvmAddress, contractTokensFilter, paginationParams, supportedChainInput } from '../../../lib/validation/validators.js';
2
- import { z } from 'zod';
3
-
4
- const walletByAddressValidator = z
5
- .object({
6
- address: z.union([isENSAddress, isEvmAddress]),
7
- filter: z
8
- .object({
9
- contractTokens: contractTokensFilter,
10
- })
11
- .strict()
12
- .optional(),
13
- })
14
- .merge(paginationParams)
15
- .merge(supportedChainInput)
16
- .strict();
17
-
18
- export { walletByAddressValidator };
@@ -1,11 +0,0 @@
1
- import { isEvmAddress, supportedChainInput } from '../../../lib/validation/validators.js';
2
- import { z } from 'zod';
3
-
4
- const nftCollectionDetailsValidator = z
5
- .object({
6
- contractAddress: isEvmAddress,
7
- })
8
- .merge(supportedChainInput)
9
- .strict();
10
-
11
- export { nftCollectionDetailsValidator };
@@ -1,12 +0,0 @@
1
- import { isEvmAddress, baseEventsInput, supportedChainInput } from '../../../lib/validation/validators.js';
2
- import { z } from 'zod';
3
-
4
- const collectionEventsValidator = z
5
- .object({
6
- contractAddress: isEvmAddress,
7
- })
8
- .merge(baseEventsInput)
9
- .merge(supportedChainInput)
10
- .strict();
11
-
12
- export { collectionEventsValidator };
@@ -1,9 +0,0 @@
1
- import { isEvmAddress, supportedChainInput } from '../../../lib/validation/validators.js';
2
- import { z } from 'zod';
3
-
4
- const nftDetailsValidator = z
5
- .object({ contractAddress: isEvmAddress, tokenId: z.string() })
6
- .merge(supportedChainInput)
7
- .strict();
8
-
9
- export { nftDetailsValidator };
@@ -1,13 +0,0 @@
1
- import { isEvmAddress, baseEventsInput, supportedChainInput } from '../../../lib/validation/validators.js';
2
- import { z } from 'zod';
3
-
4
- const nftEventsValidator = z
5
- .object({
6
- contractAddress: isEvmAddress,
7
- tokenId: z.string(),
8
- })
9
- .merge(baseEventsInput)
10
- .merge(supportedChainInput)
11
- .strict();
12
-
13
- export { nftEventsValidator };
@@ -1,7 +0,0 @@
1
- import { paginationParams, supportedChainInput } from '../../../lib/validation/validators.js';
2
-
3
- const nftTrendingCollectionsValidator = paginationParams
4
- .merge(supportedChainInput)
5
- .strict();
6
-
7
- export { nftTrendingCollectionsValidator };
@@ -1,12 +0,0 @@
1
- import { isENSAddress, isEvmAddress, contractTokensFilter, supportedChainInput } from '../../../lib/validation/validators.js';
2
- import { z } from 'zod';
3
-
4
- const verifyOwnershipValidator = z
5
- .object({
6
- address: z.union([isENSAddress, isEvmAddress]),
7
- nfts: contractTokensFilter,
8
- })
9
- .merge(supportedChainInput)
10
- .strict();
11
-
12
- export { verifyOwnershipValidator };
@@ -1,12 +0,0 @@
1
- import { isENSAddress, isEvmAddress, paginationParams, supportedChainInput } from '../../../lib/validation/validators.js';
2
- import { z } from 'zod';
3
-
4
- const balancesByWalletAddressValidator = z
5
- .object({
6
- address: z.union([isENSAddress, isEvmAddress]),
7
- })
8
- .merge(paginationParams)
9
- .merge(supportedChainInput)
10
- .strict();
11
-
12
- export { balancesByWalletAddressValidator };
@@ -1,11 +0,0 @@
1
- import { isEvmTransactionHash, supportedChainInput } from '../../../lib/validation/validators.js';
2
- import { z } from 'zod';
3
-
4
- const transactionsByHashValidator = z
5
- .object({
6
- hash: isEvmTransactionHash,
7
- })
8
- .merge(supportedChainInput)
9
- .strict();
10
-
11
- export { transactionsByHashValidator };
@@ -1,7 +0,0 @@
1
- import { baseTransactionsInput, supportedChainInput } from '../../../lib/validation/validators.js';
2
-
3
- const transactionsBySearchValidator = baseTransactionsInput
4
- .merge(supportedChainInput)
5
- .strict();
6
-
7
- export { transactionsBySearchValidator };
@@ -1,12 +0,0 @@
1
- import { gasPriceFilters, supportedChainInput } from '../../../lib/validation/validators.js';
2
- import { z } from 'zod';
3
-
4
- const gasPricesValidator = z
5
- .object({
6
- returnInGwei: z.boolean().nullish(),
7
- filter: gasPriceFilters.nullish(),
8
- })
9
- .merge(supportedChainInput)
10
- .strict();
11
-
12
- export { gasPricesValidator };
@@ -1,3 +0,0 @@
1
- const DEFAULT_CHAIN = 'ethereum';
2
-
3
- export { DEFAULT_CHAIN };
@@ -1,11 +0,0 @@
1
- const emptyPageInfo = {
2
- endCursor: null,
3
- hasNextPage: false,
4
- hasPreviousPage: false,
5
- startCursor: null,
6
- };
7
- function weiToGwei(wei) {
8
- return +(wei / 1e9).toFixed(2);
9
- }
10
-
11
- export { emptyPageInfo, weiToGwei };
@@ -1,21 +0,0 @@
1
- /**
2
- * https://eips.ethereum.org/EIPS/eip-137#name-syntax
3
- *
4
- * explanation of the regex pattern:
5
- * ^ Matches the start of the string
6
- * (?=.{3,255}$) Lookahead assertion for the length of the string (3 to 255 characters)
7
- * [\p{L}\p{N}\p{Pd}\p{M}\p{S}\u{1F300}-\u{1F6FF}]+ Matches one or more Unicode letter, number, punctuation, symbol, or character in the specified emoji range
8
- * (\.[\p{L}\p{N}\p{Pd}\p{M}\p{S}\u{1F300}-\u{1F6FF}]+)* Matches zero or more occurrences of a dot followed by one or more Unicode characters
9
- * \.(?:eth|xyz|art) Matches a dot followed by either 'eth', 'xyz', or 'art'
10
- * $ Matches the end of the string
11
- *
12
- */
13
- function isValidENSAddress(ensAddress) {
14
- const allowedTLDs = ['eth', 'xyz', 'art'];
15
- const unicodeAndEmojis = '[\\p{L}\\p{N}\\p{Pd}\\p{M}\\p{S}\\u{1F300}-\\u{1F6FF}]';
16
- const regexPattern = `^(?=.{3,255}$)${unicodeAndEmojis}+(\\.${unicodeAndEmojis}+)*\\.(?:${allowedTLDs.join('|')})$`;
17
- const regex = new RegExp(regexPattern, 'mu');
18
- return regex.test(ensAddress);
19
- }
20
-
21
- export { isValidENSAddress };
@@ -1,24 +0,0 @@
1
- // Formats the query result with the edges and nodes removed into what we want to return to the user
2
- function formatQueryResult(queryResult, resultsKey, // Key that the actual results are in
3
- paginationKey, // Key that the pagination info is in
4
- resultsKeyToRemove, // Key that the results are nested under to remove for each entry
5
- additionalModification) {
6
- const additionaProperties = Object.fromEntries(Object.entries(queryResult).filter(([key]) => key !== resultsKey && key !== paginationKey));
7
- let trimmedResults = queryResult[resultsKey];
8
- if (resultsKeyToRemove) {
9
- trimmedResults = trimmedResults.map((result) => result[resultsKeyToRemove] || {});
10
- }
11
- const formattedResultBase = {
12
- results: trimmedResults,
13
- pageInfo: queryResult[paginationKey],
14
- };
15
- let result = {
16
- ...formattedResultBase,
17
- ...additionaProperties,
18
- };
19
- if (additionalModification)
20
- result = additionalModification(result);
21
- return result;
22
- }
23
-
24
- export { formatQueryResult };
@@ -1,51 +0,0 @@
1
- function isConnection(object) {
2
- return (typeof object === 'object' &&
3
- !!object &&
4
- ('edges' in object ||
5
- 'total' in object ||
6
- 'pageInfo' in object ||
7
- 'breadcrumbs' in object));
8
- }
9
- function removeNodesAndEdges(data) {
10
- const keys = Object.keys(data);
11
- const output = {};
12
- keys.forEach((key) => {
13
- const value = data[key];
14
- if (typeof value === 'string' ||
15
- typeof value === 'boolean' ||
16
- typeof value === 'number' ||
17
- value === null ||
18
- value === undefined) {
19
- return (output[key] = value);
20
- }
21
- if (Array.isArray(value)) {
22
- // An array can just be an array of strings and not edges and nodes
23
- if (value.every((val) => typeof val === 'string')) {
24
- return (output[key] = value);
25
- }
26
- return (output[key] = value.map((item) => removeNodesAndEdges(item)));
27
- }
28
- if (isConnection(value)) {
29
- if (value.breadcrumbs)
30
- output[`${key}Breadcrumbs`] = value.breadcrumbs;
31
- if (value.total)
32
- output[`${key}Total`] = value.total;
33
- if (value.viewport)
34
- output[`${key}Viewport`] = value.viewport;
35
- if (value.pageInfo) {
36
- const { ...pageInfoRest } = value.pageInfo;
37
- output[`${key}PageInfo`] = pageInfoRest;
38
- }
39
- return (output[key] = value.edges?.map((item) => {
40
- if (item.node) {
41
- return removeNodesAndEdges(item.node);
42
- }
43
- return item;
44
- }));
45
- }
46
- return (output[key] = removeNodesAndEdges(value));
47
- });
48
- return output;
49
- }
50
-
51
- export { removeNodesAndEdges };
@@ -1,35 +0,0 @@
1
- import { QNInputValidationError } from '../errors/QNInputValidationError.js';
2
-
3
- function formatErrors(baseError) {
4
- const errorMessages = [];
5
- baseError.errors.forEach((error) => {
6
- errorMessages.push(`${error.path.length > 0 ? error.path + ': ' : ''}${error.message}`);
7
- });
8
- return errorMessages.length > 0
9
- ? new QNInputValidationError({
10
- messages: errorMessages,
11
- zodError: baseError,
12
- })
13
- : null;
14
- }
15
- // Decorator for runtime validation to handle input that is unknown at compile time
16
- function ValidateInput(schema) {
17
- return function (target, propertyName, descriptor) {
18
- const method = descriptor.value;
19
- if (!method)
20
- return;
21
- descriptor.value = async function (...args) {
22
- const [input] = args;
23
- const validation = schema.safeParse(input);
24
- if (!validation.success) {
25
- const formattedErrors = formatErrors(validation.error);
26
- if (formattedErrors) {
27
- throw formattedErrors;
28
- }
29
- }
30
- return method.apply(this, args);
31
- };
32
- };
33
- }
34
-
35
- export { ValidateInput, formatErrors };
@@ -1,28 +0,0 @@
1
- import { z } from 'zod';
2
-
3
- // Below are zod enums used a validators that should be the same as the string unions generated by codegen.
4
- // There are compile-time checks to ensure that they are the same and in sync. If you are getting a
5
- // type error here, you need to update the the validator array to match the codegen type.
6
- const CONTRACT_STANDARDS = ['ERC20', 'ERC721', 'ERC1155'];
7
- const isContractStandard = z.enum(CONTRACT_STANDARDS);
8
- const MARKETPLACES = [
9
- 'BLUR',
10
- 'CRYPTOPUNKS',
11
- 'LOOKSRARE',
12
- 'NIFTY_GATEWAY',
13
- 'OPENSEA',
14
- 'SEAPORT',
15
- 'X2Y2',
16
- 'ZEROX',
17
- ];
18
- const isMarketplace = z.enum(MARKETPLACES);
19
- const TOKEN_TRANSFER_TYPES = [
20
- 'TRANSFER',
21
- 'MINT',
22
- 'SALE',
23
- 'SWAP',
24
- 'BURN',
25
- ];
26
- const isTokenTransferType = z.enum(TOKEN_TRANSFER_TYPES);
27
-
28
- export { isContractStandard, isMarketplace, isTokenTransferType };
@@ -1,105 +0,0 @@
1
- import { z } from 'zod';
2
- import { isContractStandard, isMarketplace, isTokenTransferType } from './codegenDerivedValidators.js';
3
- import { supportedChains } from '../../api/types/chains.js';
4
- import { isValidENSAddress } from '../../api/utils/isValidENSAddress.js';
5
-
6
- const isEvmAddress = z
7
- .string()
8
- .length(42) // Using built-in function for better error messages
9
- .startsWith('0x') // Using built-in function for better error messages
10
- .regex(/^0x[a-fA-F0-9]{40}$/, 'Not a valid address');
11
- const isENSAddress = z.string().refine((val) => isValidENSAddress(val));
12
- const isEvmTransactionHash = z
13
- .string()
14
- .length(66) // Using built-in function for better error messages
15
- .startsWith('0x') // Using built-in function for better error messages
16
- .regex(/^0x[a-fA-F0-9]{64}$/, 'Not a valid transaction hash');
17
- const supportedChainInput = z
18
- .object({
19
- chain: z.enum(supportedChains).nullish(),
20
- })
21
- .strict();
22
- function fullFilters(baseType) {
23
- return z
24
- .object({
25
- eq: baseType.nullish(),
26
- gt: baseType.nullish(),
27
- gte: baseType.nullish(),
28
- in: z.array(baseType).nullish(),
29
- lt: baseType.nullish(),
30
- lte: baseType.nullish(),
31
- notIn: z.array(baseType).nullish(),
32
- })
33
- .strict();
34
- }
35
- function limitedFilters(baseType) {
36
- return z
37
- .object({
38
- eq: baseType.nullish(),
39
- in: z.array(baseType).nullish(),
40
- notIn: z.array(baseType).nullish(),
41
- })
42
- .strict();
43
- }
44
- const tokenEventFilters = z
45
- .object({
46
- blockNumber: fullFilters(z.number().positive()).nullish(),
47
- contractAddress: limitedFilters(isEvmAddress).nullish(),
48
- contractStandard: limitedFilters(isContractStandard).nullish(),
49
- fromAddress: limitedFilters(isEvmAddress).nullish(),
50
- marketplace: limitedFilters(isMarketplace).nullish(),
51
- timestamp: fullFilters(z.string().datetime({ offset: true })).nullish(),
52
- toAddress: limitedFilters(isEvmAddress).nullish(),
53
- transactionHash: limitedFilters(isEvmTransactionHash).nullish(),
54
- type: limitedFilters(isTokenTransferType).nullish(),
55
- walletAddress: limitedFilters(isEvmAddress).nullish(),
56
- })
57
- .strict();
58
- const transactionFilters = z
59
- .object({
60
- blockNumber: fullFilters(z.number().positive()).nullish(),
61
- fromAddress: isEvmAddress.nullish(),
62
- timestamp: fullFilters(z.string().datetime({ offset: true })).nullish(),
63
- toAddress: isEvmAddress.nullish(),
64
- })
65
- .strict();
66
- const gasPriceFilters = z
67
- .object({
68
- blockNumber: fullFilters(z.number().positive()).nullish(),
69
- })
70
- .strict();
71
- const paginationParams = z
72
- .object({
73
- before: z.string().nullish(),
74
- after: z.string().nullish(),
75
- first: z.number().positive().nullish(),
76
- })
77
- .strict();
78
- const baseEventsInput = z
79
- .object({
80
- filter: tokenEventFilters.nullish(),
81
- })
82
- .merge(paginationParams)
83
- .strict();
84
- const baseTransactionsInput = z
85
- .object({
86
- filter: transactionFilters.optional(),
87
- })
88
- .merge(paginationParams)
89
- .strict();
90
- const contractTokensFilter = z
91
- .array(z
92
- .object({
93
- contractAddress: isEvmAddress,
94
- tokenId: z.string().optional(),
95
- })
96
- .strict())
97
- .nonempty();
98
- const rpcPaginationParams = z
99
- .object({
100
- perPage: z.number().positive().nullish(),
101
- page: z.number().positive().nullish(),
102
- })
103
- .strict();
104
-
105
- export { baseEventsInput, baseTransactionsInput, contractTokensFilter, gasPriceFilters, isENSAddress, isEvmAddress, isEvmTransactionHash, paginationParams, rpcPaginationParams, supportedChainInput, tokenEventFilters, transactionFilters };
File without changes
File without changes
File without changes
File without changes
@@ -79,8 +79,8 @@ type RPCNftCollectionDetails = {
79
79
  type QNFetchNFTCollectionDetailsResult = RPCNftCollectionDetails[];
80
80
 
81
81
  declare const qnFetchNFTsByCollectionInputSchema: z.ZodObject<{
82
- collection: z.ZodString;
83
82
  omitFields: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>;
83
+ collection: z.ZodString;
84
84
  tokens: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>;
85
85
  perPage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
86
86
  page: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
@@ -262,22 +262,22 @@ type QNGetWalletTokenBalanceResult = {
262
262
  };
263
263
 
264
264
  declare const qnGetWalletTokenTransactionsInputSchema: z.ZodObject<{
265
- address: z.ZodString;
266
265
  contract: z.ZodString;
266
+ address: z.ZodString;
267
267
  fromBlock: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
268
268
  toBlock: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
269
269
  perPage: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
270
270
  page: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
271
271
  }, "strict", z.ZodTypeAny, {
272
- address: string;
273
272
  contract: string;
273
+ address: string;
274
274
  fromBlock?: number | null | undefined;
275
275
  toBlock?: number | null | undefined;
276
276
  perPage?: number | null | undefined;
277
277
  page?: number | null | undefined;
278
278
  }, {
279
- address: string;
280
279
  contract: string;
280
+ address: string;
281
281
  fromBlock?: number | null | undefined;
282
282
  toBlock?: number | null | undefined;
283
283
  perPage?: number | null | undefined;
File without changes
File without changes