@metamask/transaction-controller 41.1.0 → 42.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.
Files changed (86) hide show
  1. package/CHANGELOG.md +40 -1
  2. package/dist/TransactionController.cjs +57 -51
  3. package/dist/TransactionController.cjs.map +1 -1
  4. package/dist/TransactionController.d.cts +72 -13
  5. package/dist/TransactionController.d.cts.map +1 -1
  6. package/dist/TransactionController.d.mts +72 -13
  7. package/dist/TransactionController.d.mts.map +1 -1
  8. package/dist/TransactionController.mjs +57 -51
  9. package/dist/TransactionController.mjs.map +1 -1
  10. package/dist/api/accounts-api.cjs +48 -3
  11. package/dist/api/accounts-api.cjs.map +1 -1
  12. package/dist/api/accounts-api.d.cts +49 -0
  13. package/dist/api/accounts-api.d.cts.map +1 -1
  14. package/dist/api/accounts-api.d.mts +49 -0
  15. package/dist/api/accounts-api.d.mts.map +1 -1
  16. package/dist/api/accounts-api.mjs +46 -2
  17. package/dist/api/accounts-api.mjs.map +1 -1
  18. package/dist/constants.cjs +1 -85
  19. package/dist/constants.cjs.map +1 -1
  20. package/dist/constants.d.cts +0 -84
  21. package/dist/constants.d.cts.map +1 -1
  22. package/dist/constants.d.mts +0 -84
  23. package/dist/constants.d.mts.map +1 -1
  24. package/dist/constants.mjs +0 -84
  25. package/dist/constants.mjs.map +1 -1
  26. package/dist/helpers/AccountsApiRemoteTransactionSource.cjs +183 -0
  27. package/dist/helpers/AccountsApiRemoteTransactionSource.cjs.map +1 -0
  28. package/dist/helpers/AccountsApiRemoteTransactionSource.d.cts +12 -0
  29. package/dist/helpers/AccountsApiRemoteTransactionSource.d.cts.map +1 -0
  30. package/dist/helpers/AccountsApiRemoteTransactionSource.d.mts +12 -0
  31. package/dist/helpers/AccountsApiRemoteTransactionSource.d.mts.map +1 -0
  32. package/dist/helpers/AccountsApiRemoteTransactionSource.mjs +183 -0
  33. package/dist/helpers/AccountsApiRemoteTransactionSource.mjs.map +1 -0
  34. package/dist/helpers/IncomingTransactionHelper.cjs +90 -142
  35. package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -1
  36. package/dist/helpers/IncomingTransactionHelper.d.cts +10 -16
  37. package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -1
  38. package/dist/helpers/IncomingTransactionHelper.d.mts +10 -16
  39. package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -1
  40. package/dist/helpers/IncomingTransactionHelper.mjs +91 -143
  41. package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
  42. package/dist/helpers/MultichainTrackingHelper.cjs +23 -70
  43. package/dist/helpers/MultichainTrackingHelper.cjs.map +1 -1
  44. package/dist/helpers/MultichainTrackingHelper.d.cts +1 -14
  45. package/dist/helpers/MultichainTrackingHelper.d.cts.map +1 -1
  46. package/dist/helpers/MultichainTrackingHelper.d.mts +1 -14
  47. package/dist/helpers/MultichainTrackingHelper.d.mts.map +1 -1
  48. package/dist/helpers/MultichainTrackingHelper.mjs +23 -70
  49. package/dist/helpers/MultichainTrackingHelper.mjs.map +1 -1
  50. package/dist/index.cjs +3 -2
  51. package/dist/index.cjs.map +1 -1
  52. package/dist/index.d.cts +4 -4
  53. package/dist/index.d.cts.map +1 -1
  54. package/dist/index.d.mts +4 -4
  55. package/dist/index.d.mts.map +1 -1
  56. package/dist/index.mjs +2 -1
  57. package/dist/index.mjs.map +1 -1
  58. package/dist/types.cjs.map +1 -1
  59. package/dist/types.d.cts +21 -14
  60. package/dist/types.d.cts.map +1 -1
  61. package/dist/types.d.mts +21 -14
  62. package/dist/types.d.mts.map +1 -1
  63. package/dist/types.mjs.map +1 -1
  64. package/dist/utils/validation.cjs +6 -0
  65. package/dist/utils/validation.cjs.map +1 -1
  66. package/dist/utils/validation.d.cts.map +1 -1
  67. package/dist/utils/validation.d.mts.map +1 -1
  68. package/dist/utils/validation.mjs +6 -0
  69. package/dist/utils/validation.mjs.map +1 -1
  70. package/package.json +8 -8
  71. package/dist/helpers/EtherscanRemoteTransactionSource.cjs +0 -158
  72. package/dist/helpers/EtherscanRemoteTransactionSource.cjs.map +0 -1
  73. package/dist/helpers/EtherscanRemoteTransactionSource.d.cts +0 -16
  74. package/dist/helpers/EtherscanRemoteTransactionSource.d.cts.map +0 -1
  75. package/dist/helpers/EtherscanRemoteTransactionSource.d.mts +0 -16
  76. package/dist/helpers/EtherscanRemoteTransactionSource.d.mts.map +0 -1
  77. package/dist/helpers/EtherscanRemoteTransactionSource.mjs +0 -158
  78. package/dist/helpers/EtherscanRemoteTransactionSource.mjs.map +0 -1
  79. package/dist/utils/etherscan.cjs +0 -116
  80. package/dist/utils/etherscan.cjs.map +0 -1
  81. package/dist/utils/etherscan.d.cts +0 -74
  82. package/dist/utils/etherscan.d.cts.map +0 -1
  83. package/dist/utils/etherscan.d.mts +0 -74
  84. package/dist/utils/etherscan.d.mts.map +0 -1
  85. package/dist/utils/etherscan.mjs +0 -110
  86. package/dist/utils/etherscan.mjs.map +0 -1
@@ -1,9 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAccountAddressRelationship = void 0;
3
+ exports.getAccountTransactions = exports.getAccountAddressRelationship = void 0;
4
+ const controller_utils_1 = require("@metamask/controller-utils");
4
5
  const utils_1 = require("@metamask/utils");
5
6
  const errors_1 = require("../errors.cjs");
6
7
  const logger_1 = require("../logger.cjs");
8
+ const BASE_URL = `https://accounts.api.cx.metamask.io`;
9
+ const BASE_URL_ACCOUNTS = `${BASE_URL}/v1/accounts/`;
10
+ const CLIENT_HEADER = 'x-metamask-clientproduct';
11
+ const CLIENT_ID = 'metamask-transaction-controller';
7
12
  const SUPPORTED_CHAIN_IDS_FOR_RELATIONSHIP_API = [
8
13
  1,
9
14
  10,
@@ -14,7 +19,6 @@ const SUPPORTED_CHAIN_IDS_FOR_RELATIONSHIP_API = [
14
19
  59144,
15
20
  534352, // Scroll
16
21
  ];
17
- const BASE_URL = `https://accounts.api.cx.metamask.io`;
18
22
  const log = (0, utils_1.createModuleLogger)(logger_1.projectLogger, 'accounts-api');
19
23
  /**
20
24
  * Fetch account address relationship from the accounts API.
@@ -29,7 +33,10 @@ async function getAccountAddressRelationship(request) {
29
33
  }
30
34
  const url = `${BASE_URL}/v1/networks/${chainId}/accounts/${from}/relationships/${to}`;
31
35
  log('Getting account address relationship', { request, url });
32
- const response = await fetch(url);
36
+ const headers = {
37
+ [CLIENT_HEADER]: CLIENT_ID,
38
+ };
39
+ const response = await (0, controller_utils_1.successfulFetch)(url, { headers });
33
40
  if (response.status === 204) {
34
41
  // The accounts API returns a 204 status code when there are no transactions with empty body
35
42
  // imitating a count of 0
@@ -44,4 +51,42 @@ async function getAccountAddressRelationship(request) {
44
51
  return responseJson;
45
52
  }
46
53
  exports.getAccountAddressRelationship = getAccountAddressRelationship;
54
+ /**
55
+ * Fetch account transactions from the accounts API.
56
+ * @param request - The request object.
57
+ * @returns The response object.
58
+ */
59
+ async function getAccountTransactions(request) {
60
+ const { address, chainIds, cursor, endTimestamp, sortDirection, startTimestamp, } = request;
61
+ let url = `${BASE_URL_ACCOUNTS}${address}/transactions`;
62
+ const params = [];
63
+ if (chainIds) {
64
+ const network = chainIds.join(',');
65
+ params.push(`networks=${network}`);
66
+ }
67
+ if (startTimestamp) {
68
+ params.push(`startTimestamp=${startTimestamp}`);
69
+ }
70
+ if (endTimestamp) {
71
+ params.push(`endTimestamp=${endTimestamp}`);
72
+ }
73
+ if (cursor) {
74
+ params.push(`cursor=${cursor}`);
75
+ }
76
+ if (sortDirection) {
77
+ params.push(`sortDirection=${sortDirection}`);
78
+ }
79
+ if (params.length) {
80
+ url += `?${params.join('&')}`;
81
+ }
82
+ log('Getting account transactions', { request, url });
83
+ const headers = {
84
+ [CLIENT_HEADER]: CLIENT_ID,
85
+ };
86
+ const response = await (0, controller_utils_1.successfulFetch)(url, { headers });
87
+ const responseJson = await response.json();
88
+ log('Retrieved account transactions', responseJson);
89
+ return responseJson;
90
+ }
91
+ exports.getAccountTransactions = getAccountTransactions;
47
92
  //# sourceMappingURL=accounts-api.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"accounts-api.cjs","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":";;;AAAA,2CAAqD;AAErD,0CAAsD;AACtD,0CAA0C;AAE1C,MAAM,wCAAwC,GAAG;IAC/C,CAAC;IACD,EAAE;IACF,EAAE;IACF,GAAG;IACH,IAAI;IACJ,KAAK;IACL,KAAK;IACL,MAAM,EAAE,SAAS;CAClB,CAAC;AA4CF,MAAM,QAAQ,GAAG,qCAAqC,CAAC;AAEvD,MAAM,GAAG,GAAG,IAAA,0BAAkB,EAAC,sBAAa,EAAE,cAAc,CAAC,CAAC;AAE9D;;;;GAIG;AACI,KAAK,UAAU,6BAA6B,CACjD,OAA6C;IAE7C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IAEtC,IAAI,CAAC,wCAAwC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC/D,GAAG,CAAC,mDAAmD,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,IAAI,kCAAyB,CAAC,sBAAsB,CAAC,CAAC;KAC7D;IAED,MAAM,GAAG,GAAG,GAAG,QAAQ,gBAAgB,OAAO,aAAa,IAAI,kBAAkB,EAAE,EAAE,CAAC;IAEtF,GAAG,CAAC,sCAAsC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE9D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;QAC3B,4FAA4F;QAC5F,yBAAyB;QACzB,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACrB;IAED,MAAM,YAAY,GAAqC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAE7E,GAAG,CAAC,wCAAwC,EAAE,YAAY,CAAC,CAAC;IAE5D,IAAI,YAAY,CAAC,KAAK,EAAE;QACtB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;QAC7C,MAAM,IAAI,kCAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KACpD;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAhCD,sEAgCC","sourcesContent":["import { createModuleLogger } from '@metamask/utils';\n\nimport { FirstTimeInteractionError } from '../errors';\nimport { projectLogger } from '../logger';\n\nconst SUPPORTED_CHAIN_IDS_FOR_RELATIONSHIP_API = [\n 1, // Ethereum Mainnet\n 10, // Optimism\n 56, // BSC\n 137, // Polygon\n 8453, // Base\n 42161, // Arbitrum\n 59144, // Linea\n 534352, // Scroll\n];\n\nexport type AccountAddressRelationshipResponse = {\n chainId?: number;\n count?: number;\n data?: {\n hash: string;\n timestamp: string;\n chainId: number;\n blockNumber: string;\n blockHash: string;\n gas: number;\n gasUsed: number;\n gasPrice: string;\n effectiveGasPrice: number;\n nonce: number;\n cumulativeGasUsed: number;\n methodId: string;\n value: string;\n to: string;\n from: string;\n };\n txHash?: string;\n};\n\nexport type AccountAddressRelationshipResult =\n AccountAddressRelationshipResponse & {\n error?: {\n code: string;\n message: string;\n };\n };\n\nexport type GetAccountAddressRelationshipRequest = {\n /** Chain ID of account relationship to check. */\n chainId: number;\n\n /** Recipient of the transaction. */\n to: string;\n\n /** Sender of the transaction. */\n from: string;\n};\n\nconst BASE_URL = `https://accounts.api.cx.metamask.io`;\n\nconst log = createModuleLogger(projectLogger, 'accounts-api');\n\n/**\n * Fetch account address relationship from the accounts API.\n * @param request - The request object.\n * @returns The raw response object from the API.\n */\nexport async function getAccountAddressRelationship(\n request: GetAccountAddressRelationshipRequest,\n): Promise<AccountAddressRelationshipResult> {\n const { chainId, from, to } = request;\n\n if (!SUPPORTED_CHAIN_IDS_FOR_RELATIONSHIP_API.includes(chainId)) {\n log('Unsupported chain ID for account relationship API', chainId);\n throw new FirstTimeInteractionError('Unsupported chain ID');\n }\n\n const url = `${BASE_URL}/v1/networks/${chainId}/accounts/${from}/relationships/${to}`;\n\n log('Getting account address relationship', { request, url });\n\n const response = await fetch(url);\n\n if (response.status === 204) {\n // The accounts API returns a 204 status code when there are no transactions with empty body\n // imitating a count of 0\n return { count: 0 };\n }\n\n const responseJson: AccountAddressRelationshipResult = await response.json();\n\n log('Retrieved account address relationship', responseJson);\n\n if (responseJson.error) {\n const { code, message } = responseJson.error;\n throw new FirstTimeInteractionError(message, code);\n }\n\n return responseJson;\n}\n"]}
1
+ {"version":3,"file":"accounts-api.cjs","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { successfulFetch } from '@metamask/controller-utils';\nimport type { Hex } from '@metamask/utils';\nimport { createModuleLogger } from '@metamask/utils';\n\nimport { FirstTimeInteractionError } from '../errors';\nimport { projectLogger } from '../logger';\n\nexport type AccountAddressRelationshipResponse = {\n chainId?: number;\n count?: number;\n data?: {\n hash: string;\n timestamp: string;\n chainId: number;\n blockNumber: string;\n blockHash: string;\n gas: number;\n gasUsed: number;\n gasPrice: string;\n effectiveGasPrice: number;\n nonce: number;\n cumulativeGasUsed: number;\n methodId: string;\n value: string;\n to: string;\n from: string;\n };\n txHash?: string;\n};\n\nexport type AccountAddressRelationshipResult =\n AccountAddressRelationshipResponse & {\n error?: {\n code: string;\n message: string;\n };\n };\n\nexport type GetAccountAddressRelationshipRequest = {\n /** Chain ID of account relationship to check. */\n chainId: number;\n\n /** Recipient of the transaction. */\n to: string;\n\n /** Sender of the transaction. */\n from: string;\n};\n\nexport type TransactionResponse = {\n hash: Hex;\n timestamp: string;\n chainId: number;\n blockNumber: number;\n blockHash: Hex;\n gas: number;\n gasUsed: number;\n gasPrice: string;\n effectiveGasPrice: string;\n nonce: number;\n cumulativeGasUsed: number;\n methodId: null;\n value: string;\n to: string;\n from: string;\n isError: boolean;\n valueTransfers: {\n contractAddress: string;\n decimal: number;\n symbol: string;\n from: string;\n to: string;\n amount: string;\n }[];\n};\n\nexport type GetAccountTransactionsRequest = {\n address: Hex;\n chainIds?: Hex[];\n cursor?: string;\n endTimestamp?: number;\n sortDirection?: 'ASC' | 'DESC';\n startTimestamp?: number;\n};\n\nexport type GetAccountTransactionsResponse = {\n data: TransactionResponse[];\n pageInfo: {\n count: number;\n hasNextPage: boolean;\n cursor?: string;\n };\n};\n\nconst BASE_URL = `https://accounts.api.cx.metamask.io`;\nconst BASE_URL_ACCOUNTS = `${BASE_URL}/v1/accounts/`;\nconst CLIENT_HEADER = 'x-metamask-clientproduct';\nconst CLIENT_ID = 'metamask-transaction-controller';\n\nconst SUPPORTED_CHAIN_IDS_FOR_RELATIONSHIP_API = [\n 1, // Ethereum Mainnet\n 10, // Optimism\n 56, // BSC\n 137, // Polygon\n 8453, // Base\n 42161, // Arbitrum\n 59144, // Linea\n 534352, // Scroll\n];\n\nconst log = createModuleLogger(projectLogger, 'accounts-api');\n\n/**\n * Fetch account address relationship from the accounts API.\n * @param request - The request object.\n * @returns The raw response object from the API.\n */\nexport async function getAccountAddressRelationship(\n request: GetAccountAddressRelationshipRequest,\n): Promise<AccountAddressRelationshipResult> {\n const { chainId, from, to } = request;\n\n if (!SUPPORTED_CHAIN_IDS_FOR_RELATIONSHIP_API.includes(chainId)) {\n log('Unsupported chain ID for account relationship API', chainId);\n throw new FirstTimeInteractionError('Unsupported chain ID');\n }\n\n const url = `${BASE_URL}/v1/networks/${chainId}/accounts/${from}/relationships/${to}`;\n\n log('Getting account address relationship', { request, url });\n\n const headers = {\n [CLIENT_HEADER]: CLIENT_ID,\n };\n\n const response = await successfulFetch(url, { headers });\n\n if (response.status === 204) {\n // The accounts API returns a 204 status code when there are no transactions with empty body\n // imitating a count of 0\n return { count: 0 };\n }\n\n const responseJson: AccountAddressRelationshipResult = await response.json();\n\n log('Retrieved account address relationship', responseJson);\n\n if (responseJson.error) {\n const { code, message } = responseJson.error;\n throw new FirstTimeInteractionError(message, code);\n }\n\n return responseJson;\n}\n\n/**\n * Fetch account transactions from the accounts API.\n * @param request - The request object.\n * @returns The response object.\n */\nexport async function getAccountTransactions(\n request: GetAccountTransactionsRequest,\n): Promise<GetAccountTransactionsResponse> {\n const {\n address,\n chainIds,\n cursor,\n endTimestamp,\n sortDirection,\n startTimestamp,\n } = request;\n\n let url = `${BASE_URL_ACCOUNTS}${address}/transactions`;\n const params = [];\n\n if (chainIds) {\n const network = chainIds.join(',');\n params.push(`networks=${network}`);\n }\n\n if (startTimestamp) {\n params.push(`startTimestamp=${startTimestamp}`);\n }\n\n if (endTimestamp) {\n params.push(`endTimestamp=${endTimestamp}`);\n }\n\n if (cursor) {\n params.push(`cursor=${cursor}`);\n }\n\n if (sortDirection) {\n params.push(`sortDirection=${sortDirection}`);\n }\n\n if (params.length) {\n url += `?${params.join('&')}`;\n }\n\n log('Getting account transactions', { request, url });\n\n const headers = {\n [CLIENT_HEADER]: CLIENT_ID,\n };\n\n const response = await successfulFetch(url, { headers });\n const responseJson = await response.json();\n\n log('Retrieved account transactions', responseJson);\n\n return responseJson;\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import type { Hex } from "@metamask/utils";
1
2
  export type AccountAddressRelationshipResponse = {
2
3
  chainId?: number;
3
4
  count?: number;
@@ -34,10 +35,58 @@ export type GetAccountAddressRelationshipRequest = {
34
35
  /** Sender of the transaction. */
35
36
  from: string;
36
37
  };
38
+ export type TransactionResponse = {
39
+ hash: Hex;
40
+ timestamp: string;
41
+ chainId: number;
42
+ blockNumber: number;
43
+ blockHash: Hex;
44
+ gas: number;
45
+ gasUsed: number;
46
+ gasPrice: string;
47
+ effectiveGasPrice: string;
48
+ nonce: number;
49
+ cumulativeGasUsed: number;
50
+ methodId: null;
51
+ value: string;
52
+ to: string;
53
+ from: string;
54
+ isError: boolean;
55
+ valueTransfers: {
56
+ contractAddress: string;
57
+ decimal: number;
58
+ symbol: string;
59
+ from: string;
60
+ to: string;
61
+ amount: string;
62
+ }[];
63
+ };
64
+ export type GetAccountTransactionsRequest = {
65
+ address: Hex;
66
+ chainIds?: Hex[];
67
+ cursor?: string;
68
+ endTimestamp?: number;
69
+ sortDirection?: 'ASC' | 'DESC';
70
+ startTimestamp?: number;
71
+ };
72
+ export type GetAccountTransactionsResponse = {
73
+ data: TransactionResponse[];
74
+ pageInfo: {
75
+ count: number;
76
+ hasNextPage: boolean;
77
+ cursor?: string;
78
+ };
79
+ };
37
80
  /**
38
81
  * Fetch account address relationship from the accounts API.
39
82
  * @param request - The request object.
40
83
  * @returns The raw response object from the API.
41
84
  */
42
85
  export declare function getAccountAddressRelationship(request: GetAccountAddressRelationshipRequest): Promise<AccountAddressRelationshipResult>;
86
+ /**
87
+ * Fetch account transactions from the accounts API.
88
+ * @param request - The request object.
89
+ * @returns The response object.
90
+ */
91
+ export declare function getAccountTransactions(request: GetAccountTransactionsRequest): Promise<GetAccountTransactionsResponse>;
43
92
  //# sourceMappingURL=accounts-api.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accounts-api.d.cts","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,kCAAkC,GAAG;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC;QACd,iBAAiB,EAAE,MAAM,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAC1C,kCAAkC,GAAG;IACnC,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEJ,MAAM,MAAM,oCAAoC,GAAG;IACjD,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAEhB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IAEX,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAMF;;;;GAIG;AACH,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,gCAAgC,CAAC,CA8B3C"}
1
+ {"version":3,"file":"accounts-api.d.cts","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { Hex } from "@metamask/utils";
1
2
  export type AccountAddressRelationshipResponse = {
2
3
  chainId?: number;
3
4
  count?: number;
@@ -34,10 +35,58 @@ export type GetAccountAddressRelationshipRequest = {
34
35
  /** Sender of the transaction. */
35
36
  from: string;
36
37
  };
38
+ export type TransactionResponse = {
39
+ hash: Hex;
40
+ timestamp: string;
41
+ chainId: number;
42
+ blockNumber: number;
43
+ blockHash: Hex;
44
+ gas: number;
45
+ gasUsed: number;
46
+ gasPrice: string;
47
+ effectiveGasPrice: string;
48
+ nonce: number;
49
+ cumulativeGasUsed: number;
50
+ methodId: null;
51
+ value: string;
52
+ to: string;
53
+ from: string;
54
+ isError: boolean;
55
+ valueTransfers: {
56
+ contractAddress: string;
57
+ decimal: number;
58
+ symbol: string;
59
+ from: string;
60
+ to: string;
61
+ amount: string;
62
+ }[];
63
+ };
64
+ export type GetAccountTransactionsRequest = {
65
+ address: Hex;
66
+ chainIds?: Hex[];
67
+ cursor?: string;
68
+ endTimestamp?: number;
69
+ sortDirection?: 'ASC' | 'DESC';
70
+ startTimestamp?: number;
71
+ };
72
+ export type GetAccountTransactionsResponse = {
73
+ data: TransactionResponse[];
74
+ pageInfo: {
75
+ count: number;
76
+ hasNextPage: boolean;
77
+ cursor?: string;
78
+ };
79
+ };
37
80
  /**
38
81
  * Fetch account address relationship from the accounts API.
39
82
  * @param request - The request object.
40
83
  * @returns The raw response object from the API.
41
84
  */
42
85
  export declare function getAccountAddressRelationship(request: GetAccountAddressRelationshipRequest): Promise<AccountAddressRelationshipResult>;
86
+ /**
87
+ * Fetch account transactions from the accounts API.
88
+ * @param request - The request object.
89
+ * @returns The response object.
90
+ */
91
+ export declare function getAccountTransactions(request: GetAccountTransactionsRequest): Promise<GetAccountTransactionsResponse>;
43
92
  //# sourceMappingURL=accounts-api.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accounts-api.d.mts","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,kCAAkC,GAAG;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC;QACd,iBAAiB,EAAE,MAAM,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAC1C,kCAAkC,GAAG;IACnC,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEJ,MAAM,MAAM,oCAAoC,GAAG;IACjD,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAEhB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IAEX,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAMF;;;;GAIG;AACH,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,gCAAgC,CAAC,CA8B3C"}
1
+ {"version":3,"file":"accounts-api.d.mts","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
1
+ import { successfulFetch } from "@metamask/controller-utils";
1
2
  import { createModuleLogger } from "@metamask/utils";
2
3
  import { FirstTimeInteractionError } from "../errors.mjs";
3
4
  import { projectLogger } from "../logger.mjs";
5
+ const BASE_URL = `https://accounts.api.cx.metamask.io`;
6
+ const BASE_URL_ACCOUNTS = `${BASE_URL}/v1/accounts/`;
7
+ const CLIENT_HEADER = 'x-metamask-clientproduct';
8
+ const CLIENT_ID = 'metamask-transaction-controller';
4
9
  const SUPPORTED_CHAIN_IDS_FOR_RELATIONSHIP_API = [
5
10
  1,
6
11
  10,
@@ -11,7 +16,6 @@ const SUPPORTED_CHAIN_IDS_FOR_RELATIONSHIP_API = [
11
16
  59144,
12
17
  534352, // Scroll
13
18
  ];
14
- const BASE_URL = `https://accounts.api.cx.metamask.io`;
15
19
  const log = createModuleLogger(projectLogger, 'accounts-api');
16
20
  /**
17
21
  * Fetch account address relationship from the accounts API.
@@ -26,7 +30,10 @@ export async function getAccountAddressRelationship(request) {
26
30
  }
27
31
  const url = `${BASE_URL}/v1/networks/${chainId}/accounts/${from}/relationships/${to}`;
28
32
  log('Getting account address relationship', { request, url });
29
- const response = await fetch(url);
33
+ const headers = {
34
+ [CLIENT_HEADER]: CLIENT_ID,
35
+ };
36
+ const response = await successfulFetch(url, { headers });
30
37
  if (response.status === 204) {
31
38
  // The accounts API returns a 204 status code when there are no transactions with empty body
32
39
  // imitating a count of 0
@@ -40,4 +47,41 @@ export async function getAccountAddressRelationship(request) {
40
47
  }
41
48
  return responseJson;
42
49
  }
50
+ /**
51
+ * Fetch account transactions from the accounts API.
52
+ * @param request - The request object.
53
+ * @returns The response object.
54
+ */
55
+ export async function getAccountTransactions(request) {
56
+ const { address, chainIds, cursor, endTimestamp, sortDirection, startTimestamp, } = request;
57
+ let url = `${BASE_URL_ACCOUNTS}${address}/transactions`;
58
+ const params = [];
59
+ if (chainIds) {
60
+ const network = chainIds.join(',');
61
+ params.push(`networks=${network}`);
62
+ }
63
+ if (startTimestamp) {
64
+ params.push(`startTimestamp=${startTimestamp}`);
65
+ }
66
+ if (endTimestamp) {
67
+ params.push(`endTimestamp=${endTimestamp}`);
68
+ }
69
+ if (cursor) {
70
+ params.push(`cursor=${cursor}`);
71
+ }
72
+ if (sortDirection) {
73
+ params.push(`sortDirection=${sortDirection}`);
74
+ }
75
+ if (params.length) {
76
+ url += `?${params.join('&')}`;
77
+ }
78
+ log('Getting account transactions', { request, url });
79
+ const headers = {
80
+ [CLIENT_HEADER]: CLIENT_ID,
81
+ };
82
+ const response = await successfulFetch(url, { headers });
83
+ const responseJson = await response.json();
84
+ log('Retrieved account transactions', responseJson);
85
+ return responseJson;
86
+ }
43
87
  //# sourceMappingURL=accounts-api.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"accounts-api.mjs","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB;AAErD,OAAO,EAAE,yBAAyB,EAAE,sBAAkB;AACtD,OAAO,EAAE,aAAa,EAAE,sBAAkB;AAE1C,MAAM,wCAAwC,GAAG;IAC/C,CAAC;IACD,EAAE;IACF,EAAE;IACF,GAAG;IACH,IAAI;IACJ,KAAK;IACL,KAAK;IACL,MAAM,EAAE,SAAS;CAClB,CAAC;AA4CF,MAAM,QAAQ,GAAG,qCAAqC,CAAC;AAEvD,MAAM,GAAG,GAAG,kBAAkB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAA6C;IAE7C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IAEtC,IAAI,CAAC,wCAAwC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC/D,GAAG,CAAC,mDAAmD,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,IAAI,yBAAyB,CAAC,sBAAsB,CAAC,CAAC;KAC7D;IAED,MAAM,GAAG,GAAG,GAAG,QAAQ,gBAAgB,OAAO,aAAa,IAAI,kBAAkB,EAAE,EAAE,CAAC;IAEtF,GAAG,CAAC,sCAAsC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE9D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;QAC3B,4FAA4F;QAC5F,yBAAyB;QACzB,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACrB;IAED,MAAM,YAAY,GAAqC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAE7E,GAAG,CAAC,wCAAwC,EAAE,YAAY,CAAC,CAAC;IAE5D,IAAI,YAAY,CAAC,KAAK,EAAE;QACtB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;QAC7C,MAAM,IAAI,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KACpD;IAED,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["import { createModuleLogger } from '@metamask/utils';\n\nimport { FirstTimeInteractionError } from '../errors';\nimport { projectLogger } from '../logger';\n\nconst SUPPORTED_CHAIN_IDS_FOR_RELATIONSHIP_API = [\n 1, // Ethereum Mainnet\n 10, // Optimism\n 56, // BSC\n 137, // Polygon\n 8453, // Base\n 42161, // Arbitrum\n 59144, // Linea\n 534352, // Scroll\n];\n\nexport type AccountAddressRelationshipResponse = {\n chainId?: number;\n count?: number;\n data?: {\n hash: string;\n timestamp: string;\n chainId: number;\n blockNumber: string;\n blockHash: string;\n gas: number;\n gasUsed: number;\n gasPrice: string;\n effectiveGasPrice: number;\n nonce: number;\n cumulativeGasUsed: number;\n methodId: string;\n value: string;\n to: string;\n from: string;\n };\n txHash?: string;\n};\n\nexport type AccountAddressRelationshipResult =\n AccountAddressRelationshipResponse & {\n error?: {\n code: string;\n message: string;\n };\n };\n\nexport type GetAccountAddressRelationshipRequest = {\n /** Chain ID of account relationship to check. */\n chainId: number;\n\n /** Recipient of the transaction. */\n to: string;\n\n /** Sender of the transaction. */\n from: string;\n};\n\nconst BASE_URL = `https://accounts.api.cx.metamask.io`;\n\nconst log = createModuleLogger(projectLogger, 'accounts-api');\n\n/**\n * Fetch account address relationship from the accounts API.\n * @param request - The request object.\n * @returns The raw response object from the API.\n */\nexport async function getAccountAddressRelationship(\n request: GetAccountAddressRelationshipRequest,\n): Promise<AccountAddressRelationshipResult> {\n const { chainId, from, to } = request;\n\n if (!SUPPORTED_CHAIN_IDS_FOR_RELATIONSHIP_API.includes(chainId)) {\n log('Unsupported chain ID for account relationship API', chainId);\n throw new FirstTimeInteractionError('Unsupported chain ID');\n }\n\n const url = `${BASE_URL}/v1/networks/${chainId}/accounts/${from}/relationships/${to}`;\n\n log('Getting account address relationship', { request, url });\n\n const response = await fetch(url);\n\n if (response.status === 204) {\n // The accounts API returns a 204 status code when there are no transactions with empty body\n // imitating a count of 0\n return { count: 0 };\n }\n\n const responseJson: AccountAddressRelationshipResult = await response.json();\n\n log('Retrieved account address relationship', responseJson);\n\n if (responseJson.error) {\n const { code, message } = responseJson.error;\n throw new FirstTimeInteractionError(message, code);\n }\n\n return responseJson;\n}\n"]}
1
+ {"version":3,"file":"accounts-api.mjs","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { successfulFetch } from '@metamask/controller-utils';\nimport type { Hex } from '@metamask/utils';\nimport { createModuleLogger } from '@metamask/utils';\n\nimport { FirstTimeInteractionError } from '../errors';\nimport { projectLogger } from '../logger';\n\nexport type AccountAddressRelationshipResponse = {\n chainId?: number;\n count?: number;\n data?: {\n hash: string;\n timestamp: string;\n chainId: number;\n blockNumber: string;\n blockHash: string;\n gas: number;\n gasUsed: number;\n gasPrice: string;\n effectiveGasPrice: number;\n nonce: number;\n cumulativeGasUsed: number;\n methodId: string;\n value: string;\n to: string;\n from: string;\n };\n txHash?: string;\n};\n\nexport type AccountAddressRelationshipResult =\n AccountAddressRelationshipResponse & {\n error?: {\n code: string;\n message: string;\n };\n };\n\nexport type GetAccountAddressRelationshipRequest = {\n /** Chain ID of account relationship to check. */\n chainId: number;\n\n /** Recipient of the transaction. */\n to: string;\n\n /** Sender of the transaction. */\n from: string;\n};\n\nexport type TransactionResponse = {\n hash: Hex;\n timestamp: string;\n chainId: number;\n blockNumber: number;\n blockHash: Hex;\n gas: number;\n gasUsed: number;\n gasPrice: string;\n effectiveGasPrice: string;\n nonce: number;\n cumulativeGasUsed: number;\n methodId: null;\n value: string;\n to: string;\n from: string;\n isError: boolean;\n valueTransfers: {\n contractAddress: string;\n decimal: number;\n symbol: string;\n from: string;\n to: string;\n amount: string;\n }[];\n};\n\nexport type GetAccountTransactionsRequest = {\n address: Hex;\n chainIds?: Hex[];\n cursor?: string;\n endTimestamp?: number;\n sortDirection?: 'ASC' | 'DESC';\n startTimestamp?: number;\n};\n\nexport type GetAccountTransactionsResponse = {\n data: TransactionResponse[];\n pageInfo: {\n count: number;\n hasNextPage: boolean;\n cursor?: string;\n };\n};\n\nconst BASE_URL = `https://accounts.api.cx.metamask.io`;\nconst BASE_URL_ACCOUNTS = `${BASE_URL}/v1/accounts/`;\nconst CLIENT_HEADER = 'x-metamask-clientproduct';\nconst CLIENT_ID = 'metamask-transaction-controller';\n\nconst SUPPORTED_CHAIN_IDS_FOR_RELATIONSHIP_API = [\n 1, // Ethereum Mainnet\n 10, // Optimism\n 56, // BSC\n 137, // Polygon\n 8453, // Base\n 42161, // Arbitrum\n 59144, // Linea\n 534352, // Scroll\n];\n\nconst log = createModuleLogger(projectLogger, 'accounts-api');\n\n/**\n * Fetch account address relationship from the accounts API.\n * @param request - The request object.\n * @returns The raw response object from the API.\n */\nexport async function getAccountAddressRelationship(\n request: GetAccountAddressRelationshipRequest,\n): Promise<AccountAddressRelationshipResult> {\n const { chainId, from, to } = request;\n\n if (!SUPPORTED_CHAIN_IDS_FOR_RELATIONSHIP_API.includes(chainId)) {\n log('Unsupported chain ID for account relationship API', chainId);\n throw new FirstTimeInteractionError('Unsupported chain ID');\n }\n\n const url = `${BASE_URL}/v1/networks/${chainId}/accounts/${from}/relationships/${to}`;\n\n log('Getting account address relationship', { request, url });\n\n const headers = {\n [CLIENT_HEADER]: CLIENT_ID,\n };\n\n const response = await successfulFetch(url, { headers });\n\n if (response.status === 204) {\n // The accounts API returns a 204 status code when there are no transactions with empty body\n // imitating a count of 0\n return { count: 0 };\n }\n\n const responseJson: AccountAddressRelationshipResult = await response.json();\n\n log('Retrieved account address relationship', responseJson);\n\n if (responseJson.error) {\n const { code, message } = responseJson.error;\n throw new FirstTimeInteractionError(message, code);\n }\n\n return responseJson;\n}\n\n/**\n * Fetch account transactions from the accounts API.\n * @param request - The request object.\n * @returns The response object.\n */\nexport async function getAccountTransactions(\n request: GetAccountTransactionsRequest,\n): Promise<GetAccountTransactionsResponse> {\n const {\n address,\n chainIds,\n cursor,\n endTimestamp,\n sortDirection,\n startTimestamp,\n } = request;\n\n let url = `${BASE_URL_ACCOUNTS}${address}/transactions`;\n const params = [];\n\n if (chainIds) {\n const network = chainIds.join(',');\n params.push(`networks=${network}`);\n }\n\n if (startTimestamp) {\n params.push(`startTimestamp=${startTimestamp}`);\n }\n\n if (endTimestamp) {\n params.push(`endTimestamp=${endTimestamp}`);\n }\n\n if (cursor) {\n params.push(`cursor=${cursor}`);\n }\n\n if (sortDirection) {\n params.push(`sortDirection=${sortDirection}`);\n }\n\n if (params.length) {\n url += `?${params.join('&')}`;\n }\n\n log('Getting account transactions', { request, url });\n\n const headers = {\n [CLIENT_HEADER]: CLIENT_ID,\n };\n\n const response = await successfulFetch(url, { headers });\n const responseJson = await response.json();\n\n log('Retrieved account transactions', responseJson);\n\n return responseJson;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ABI_SIMULATION_ERC721_LEGACY = exports.ABI_SIMULATION_ERC20_WRAPPED = exports.GAS_BUFFER_CHAIN_OVERRIDES = exports.ETHERSCAN_SUPPORTED_NETWORKS = exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX = exports.DEFAULT_ETHERSCAN_DOMAIN = exports.CHAIN_IDS = void 0;
3
+ exports.ABI_SIMULATION_ERC721_LEGACY = exports.ABI_SIMULATION_ERC20_WRAPPED = exports.GAS_BUFFER_CHAIN_OVERRIDES = exports.CHAIN_IDS = void 0;
4
4
  exports.CHAIN_IDS = {
5
5
  MAINNET: '0x1',
6
6
  GOERLI: '0x5',
@@ -33,90 +33,6 @@ exports.CHAIN_IDS = {
33
33
  SCROLL: '0x82750',
34
34
  SCROLL_SEPOLIA: '0x8274f',
35
35
  };
36
- exports.DEFAULT_ETHERSCAN_DOMAIN = 'etherscan.io';
37
- exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX = 'api';
38
- exports.ETHERSCAN_SUPPORTED_NETWORKS = {
39
- [exports.CHAIN_IDS.GOERLI]: {
40
- domain: exports.DEFAULT_ETHERSCAN_DOMAIN,
41
- subdomain: `${exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-goerli`,
42
- },
43
- [exports.CHAIN_IDS.MAINNET]: {
44
- domain: exports.DEFAULT_ETHERSCAN_DOMAIN,
45
- subdomain: exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,
46
- },
47
- [exports.CHAIN_IDS.SEPOLIA]: {
48
- domain: exports.DEFAULT_ETHERSCAN_DOMAIN,
49
- subdomain: `${exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-sepolia`,
50
- },
51
- [exports.CHAIN_IDS.LINEA_GOERLI]: {
52
- domain: 'lineascan.build',
53
- subdomain: `${exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-goerli`,
54
- },
55
- [exports.CHAIN_IDS.LINEA_SEPOLIA]: {
56
- domain: 'lineascan.build',
57
- subdomain: `${exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-sepolia`,
58
- },
59
- [exports.CHAIN_IDS.LINEA_MAINNET]: {
60
- domain: 'lineascan.build',
61
- subdomain: exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,
62
- },
63
- [exports.CHAIN_IDS.BSC]: {
64
- domain: 'bscscan.com',
65
- subdomain: exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,
66
- },
67
- [exports.CHAIN_IDS.BSC_TESTNET]: {
68
- domain: 'bscscan.com',
69
- subdomain: `${exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,
70
- },
71
- [exports.CHAIN_IDS.OPTIMISM]: {
72
- domain: exports.DEFAULT_ETHERSCAN_DOMAIN,
73
- subdomain: `${exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-optimistic`,
74
- },
75
- [exports.CHAIN_IDS.OPTIMISM_SEPOLIA]: {
76
- domain: exports.DEFAULT_ETHERSCAN_DOMAIN,
77
- subdomain: `${exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-sepolia-optimistic`,
78
- },
79
- [exports.CHAIN_IDS.POLYGON]: {
80
- domain: 'polygonscan.com',
81
- subdomain: exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,
82
- },
83
- [exports.CHAIN_IDS.POLYGON_TESTNET]: {
84
- domain: 'polygonscan.com',
85
- subdomain: `${exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-mumbai`,
86
- },
87
- [exports.CHAIN_IDS.AVALANCHE]: {
88
- domain: 'snowtrace.io',
89
- subdomain: exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,
90
- },
91
- [exports.CHAIN_IDS.AVALANCHE_TESTNET]: {
92
- domain: 'snowtrace.io',
93
- subdomain: `${exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,
94
- },
95
- [exports.CHAIN_IDS.FANTOM]: {
96
- domain: 'ftmscan.com',
97
- subdomain: exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,
98
- },
99
- [exports.CHAIN_IDS.FANTOM_TESTNET]: {
100
- domain: 'ftmscan.com',
101
- subdomain: `${exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,
102
- },
103
- [exports.CHAIN_IDS.MOONBEAM]: {
104
- domain: 'moonscan.io',
105
- subdomain: `${exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonbeam`,
106
- },
107
- [exports.CHAIN_IDS.MOONBEAM_TESTNET]: {
108
- domain: 'moonscan.io',
109
- subdomain: `${exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonbase`,
110
- },
111
- [exports.CHAIN_IDS.MOONRIVER]: {
112
- domain: 'moonscan.io',
113
- subdomain: `${exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonriver`,
114
- },
115
- [exports.CHAIN_IDS.GNOSIS]: {
116
- domain: 'gnosisscan.io',
117
- subdomain: `${exports.DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-gnosis`,
118
- },
119
- };
120
36
  exports.GAS_BUFFER_CHAIN_OVERRIDES = {
121
37
  [exports.CHAIN_IDS.OPTIMISM]: 1,
122
38
  [exports.CHAIN_IDS.OPTIMISM_SEPOLIA]: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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","sourcesContent":["export const CHAIN_IDS = {\n MAINNET: '0x1',\n GOERLI: '0x5',\n BASE: '0x2105',\n BASE_TESTNET: '0x14a33',\n BSC: '0x38',\n BSC_TESTNET: '0x61',\n OPTIMISM: '0xa',\n OPTIMISM_TESTNET: '0x1a4',\n OPBNB: '0xcc',\n OPBNB_TESTNET: '0x15eb',\n OPTIMISM_SEPOLIA: '0xaa37dc',\n POLYGON: '0x89',\n POLYGON_TESTNET: '0x13881',\n AVALANCHE: '0xa86a',\n AVALANCHE_TESTNET: '0xa869',\n FANTOM: '0xfa',\n FANTOM_TESTNET: '0xfa2',\n SEPOLIA: '0xaa36a7',\n LINEA_GOERLI: '0xe704',\n LINEA_SEPOLIA: '0xe705',\n LINEA_MAINNET: '0xe708',\n MOONBEAM: '0x504',\n MOONBEAM_TESTNET: '0x507',\n MOONRIVER: '0x505',\n GNOSIS: '0x64',\n ARBITRUM: '0xa4b1',\n ZKSYNC_ERA: '0x144',\n ZORA: '0x76adf1',\n SCROLL: '0x82750',\n SCROLL_SEPOLIA: '0x8274f',\n} as const;\n\nexport const DEFAULT_ETHERSCAN_DOMAIN = 'etherscan.io';\nexport const DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX = 'api';\n\nexport const ETHERSCAN_SUPPORTED_NETWORKS = {\n [CHAIN_IDS.GOERLI]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-goerli`,\n },\n [CHAIN_IDS.MAINNET]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.SEPOLIA]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-sepolia`,\n },\n [CHAIN_IDS.LINEA_GOERLI]: {\n domain: 'lineascan.build',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-goerli`,\n },\n [CHAIN_IDS.LINEA_SEPOLIA]: {\n domain: 'lineascan.build',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-sepolia`,\n },\n [CHAIN_IDS.LINEA_MAINNET]: {\n domain: 'lineascan.build',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.BSC]: {\n domain: 'bscscan.com',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.BSC_TESTNET]: {\n domain: 'bscscan.com',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,\n },\n [CHAIN_IDS.OPTIMISM]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-optimistic`,\n },\n [CHAIN_IDS.OPTIMISM_SEPOLIA]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-sepolia-optimistic`,\n },\n [CHAIN_IDS.POLYGON]: {\n domain: 'polygonscan.com',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.POLYGON_TESTNET]: {\n domain: 'polygonscan.com',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-mumbai`,\n },\n [CHAIN_IDS.AVALANCHE]: {\n domain: 'snowtrace.io',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.AVALANCHE_TESTNET]: {\n domain: 'snowtrace.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,\n },\n [CHAIN_IDS.FANTOM]: {\n domain: 'ftmscan.com',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.FANTOM_TESTNET]: {\n domain: 'ftmscan.com',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,\n },\n [CHAIN_IDS.MOONBEAM]: {\n domain: 'moonscan.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonbeam`,\n },\n [CHAIN_IDS.MOONBEAM_TESTNET]: {\n domain: 'moonscan.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonbase`,\n },\n [CHAIN_IDS.MOONRIVER]: {\n domain: 'moonscan.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonriver`,\n },\n [CHAIN_IDS.GNOSIS]: {\n domain: 'gnosisscan.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-gnosis`,\n },\n};\n\nexport const GAS_BUFFER_CHAIN_OVERRIDES = {\n [CHAIN_IDS.OPTIMISM]: 1,\n [CHAIN_IDS.OPTIMISM_SEPOLIA]: 1,\n};\n\n/** Extract of the Wrapped ERC-20 ABI required for simulation. */\nexport const ABI_SIMULATION_ERC20_WRAPPED = [\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'to', type: 'address' },\n { indexed: false, name: 'wad', type: 'uint256' },\n ],\n name: 'Deposit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'from', type: 'address' },\n { indexed: false, name: 'wad', type: 'uint256' },\n ],\n name: 'Withdrawal',\n type: 'event',\n },\n];\n\n/** Extract of the legacy ERC-721 ABI required for simulation. */\nexport const ABI_SIMULATION_ERC721_LEGACY = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n name: '_from',\n type: 'address',\n },\n {\n indexed: false,\n name: '_to',\n type: 'address',\n },\n {\n indexed: false,\n name: '_tokenId',\n type: 'uint256',\n },\n ],\n name: 'Transfer',\n type: 'event',\n },\n];\n"]}
1
+ {"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG;IACvB,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,SAAS;IACvB,GAAG,EAAE,MAAM;IACX,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,KAAK;IACf,gBAAgB,EAAE,OAAO;IACzB,KAAK,EAAE,MAAM;IACb,aAAa,EAAE,QAAQ;IACvB,gBAAgB,EAAE,UAAU;IAC5B,OAAO,EAAE,MAAM;IACf,eAAe,EAAE,SAAS;IAC1B,SAAS,EAAE,QAAQ;IACnB,iBAAiB,EAAE,QAAQ;IAC3B,MAAM,EAAE,MAAM;IACd,cAAc,EAAE,OAAO;IACvB,OAAO,EAAE,UAAU;IACnB,YAAY,EAAE,QAAQ;IACtB,aAAa,EAAE,QAAQ;IACvB,aAAa,EAAE,QAAQ;IACvB,QAAQ,EAAE,OAAO;IACjB,gBAAgB,EAAE,OAAO;IACzB,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,OAAO;IACnB,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE,SAAS;CACjB,CAAC;AAEE,QAAA,0BAA0B,GAAG;IACxC,CAAC,iBAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvB,CAAC,iBAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC;CAChC,CAAC;AAEF,iEAAiE;AACpD,QAAA,4BAA4B,GAAG;IAC1C;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YAC9C,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;SACjD;QACD,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YAChD,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;SACjD;QACD,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,OAAO;KACd;CACF,CAAC;AAEF,iEAAiE;AACpD,QAAA,4BAA4B,GAAG;IAC1C;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,OAAO;KACd;CACF,CAAC","sourcesContent":["export const CHAIN_IDS = {\n MAINNET: '0x1',\n GOERLI: '0x5',\n BASE: '0x2105',\n BASE_TESTNET: '0x14a33',\n BSC: '0x38',\n BSC_TESTNET: '0x61',\n OPTIMISM: '0xa',\n OPTIMISM_TESTNET: '0x1a4',\n OPBNB: '0xcc',\n OPBNB_TESTNET: '0x15eb',\n OPTIMISM_SEPOLIA: '0xaa37dc',\n POLYGON: '0x89',\n POLYGON_TESTNET: '0x13881',\n AVALANCHE: '0xa86a',\n AVALANCHE_TESTNET: '0xa869',\n FANTOM: '0xfa',\n FANTOM_TESTNET: '0xfa2',\n SEPOLIA: '0xaa36a7',\n LINEA_GOERLI: '0xe704',\n LINEA_SEPOLIA: '0xe705',\n LINEA_MAINNET: '0xe708',\n MOONBEAM: '0x504',\n MOONBEAM_TESTNET: '0x507',\n MOONRIVER: '0x505',\n GNOSIS: '0x64',\n ARBITRUM: '0xa4b1',\n ZKSYNC_ERA: '0x144',\n ZORA: '0x76adf1',\n SCROLL: '0x82750',\n SCROLL_SEPOLIA: '0x8274f',\n} as const;\n\nexport const GAS_BUFFER_CHAIN_OVERRIDES = {\n [CHAIN_IDS.OPTIMISM]: 1,\n [CHAIN_IDS.OPTIMISM_SEPOLIA]: 1,\n};\n\n/** Extract of the Wrapped ERC-20 ABI required for simulation. */\nexport const ABI_SIMULATION_ERC20_WRAPPED = [\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'to', type: 'address' },\n { indexed: false, name: 'wad', type: 'uint256' },\n ],\n name: 'Deposit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'from', type: 'address' },\n { indexed: false, name: 'wad', type: 'uint256' },\n ],\n name: 'Withdrawal',\n type: 'event',\n },\n];\n\n/** Extract of the legacy ERC-721 ABI required for simulation. */\nexport const ABI_SIMULATION_ERC721_LEGACY = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n name: '_from',\n type: 'address',\n },\n {\n indexed: false,\n name: '_to',\n type: 'address',\n },\n {\n indexed: false,\n name: '_tokenId',\n type: 'uint256',\n },\n ],\n name: 'Transfer',\n type: 'event',\n },\n];\n"]}
@@ -30,90 +30,6 @@ export declare const CHAIN_IDS: {
30
30
  readonly SCROLL: "0x82750";
31
31
  readonly SCROLL_SEPOLIA: "0x8274f";
32
32
  };
33
- export declare const DEFAULT_ETHERSCAN_DOMAIN = "etherscan.io";
34
- export declare const DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX = "api";
35
- export declare const ETHERSCAN_SUPPORTED_NETWORKS: {
36
- "0x5": {
37
- domain: string;
38
- subdomain: string;
39
- };
40
- "0x1": {
41
- domain: string;
42
- subdomain: string;
43
- };
44
- "0xaa36a7": {
45
- domain: string;
46
- subdomain: string;
47
- };
48
- "0xe704": {
49
- domain: string;
50
- subdomain: string;
51
- };
52
- "0xe705": {
53
- domain: string;
54
- subdomain: string;
55
- };
56
- "0xe708": {
57
- domain: string;
58
- subdomain: string;
59
- };
60
- "0x38": {
61
- domain: string;
62
- subdomain: string;
63
- };
64
- "0x61": {
65
- domain: string;
66
- subdomain: string;
67
- };
68
- "0xa": {
69
- domain: string;
70
- subdomain: string;
71
- };
72
- "0xaa37dc": {
73
- domain: string;
74
- subdomain: string;
75
- };
76
- "0x89": {
77
- domain: string;
78
- subdomain: string;
79
- };
80
- "0x13881": {
81
- domain: string;
82
- subdomain: string;
83
- };
84
- "0xa86a": {
85
- domain: string;
86
- subdomain: string;
87
- };
88
- "0xa869": {
89
- domain: string;
90
- subdomain: string;
91
- };
92
- "0xfa": {
93
- domain: string;
94
- subdomain: string;
95
- };
96
- "0xfa2": {
97
- domain: string;
98
- subdomain: string;
99
- };
100
- "0x504": {
101
- domain: string;
102
- subdomain: string;
103
- };
104
- "0x507": {
105
- domain: string;
106
- subdomain: string;
107
- };
108
- "0x505": {
109
- domain: string;
110
- subdomain: string;
111
- };
112
- "0x64": {
113
- domain: string;
114
- subdomain: string;
115
- };
116
- };
117
33
  export declare const GAS_BUFFER_CHAIN_OVERRIDES: {
118
34
  "0xa": number;
119
35
  "0xaa37dc": number;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BZ,CAAC;AAEX,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AACvD,eAAO,MAAM,kCAAkC,QAAQ,CAAC;AAExD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiFxC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;CAGtC,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,4BAA4B;;;;;;;;;GAmBxC,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,4BAA4B;;;;;;;;;GAuBxC,CAAC"}
1
+ {"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BZ,CAAC;AAEX,eAAO,MAAM,0BAA0B;;;CAGtC,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,4BAA4B;;;;;;;;;GAmBxC,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,4BAA4B;;;;;;;;;GAuBxC,CAAC"}