🚨 Latest Research:Tanstack npm Packages Compromised in Ongoing Mini Shai-Hulud Supply-Chain Attack.Learn More
Socket
Book a DemoSign in
Socket

@metamask/phishing-controller

Package Overview
Dependencies
Maintainers
3
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@metamask/phishing-controller - npm Package Compare versions

Comparing version
15.0.1
to
16.0.0
+15
-5
CHANGELOG.md

@@ -10,13 +10,22 @@ # Changelog

## [15.0.1]
## [16.0.0]
### Added
- Add address scanning to detect malicious addresses ([#7118](https://github.com/MetaMask/core/pull/7118))
- Add `scanAddress` method to scan addresses for security alerts
- Add `AddressScanResult` type
- Add `addressScanCache` to `PhishingControllerState`
- Add action registration for `scanAddress` method as `PhishingControllerScanAddressAction`
### Changed
- Bump `typescript` to v5.3 ([#7081](https://github.com/MetaMask/core/pull/7081))
- **BREAKING:** Bump `@metamask/transaction-controller` from `^61.0.0` to `^62.0.0` ([#7202](https://github.com/MetaMask/core/pull/7202))
- Bump `@metamask/controller-utils` from `^11.15.0` to `^11.16.0` ([#7202](https://github.com/MetaMask/core/pull/7202))
## [15.0.1]
### Fixed
- Fixed the Transaction Controller listener to correctly pick up state changes for mobile ([#7139](https://github.com/MetaMask/core/pull/7139))
- Fixed auto-fixable ESLint warnings ([#7105](https://github.com/MetaMask/core/pull/7105))
- Fixed build script not working because of missing `@ts-bridge/cli` dependency ([#7040](https://github.com/MetaMask/core/pull/7040))

@@ -482,3 +491,4 @@ ## [15.0.0]

[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/phishing-controller@15.0.1...HEAD
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/phishing-controller@16.0.0...HEAD
[16.0.0]: https://github.com/MetaMask/core/compare/@metamask/phishing-controller@15.0.1...@metamask/phishing-controller@16.0.0
[15.0.1]: https://github.com/MetaMask/core/compare/@metamask/phishing-controller@15.0.0...@metamask/phishing-controller@15.0.1

@@ -485,0 +495,0 @@ [15.0.0]: https://github.com/MetaMask/core/compare/@metamask/phishing-controller@14.1.3...@metamask/phishing-controller@15.0.0

@@ -17,3 +17,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.RecommendedAction = exports.PhishingDetectorResultType = exports.PhishingDetector = void 0;
exports.AddressScanResultType = exports.RecommendedAction = exports.PhishingDetectorResultType = exports.PhishingDetector = void 0;
__exportStar(require("./PhishingController.cjs"), exports);

@@ -25,2 +25,3 @@ var PhishingDetector_1 = require("./PhishingDetector.cjs");

Object.defineProperty(exports, "RecommendedAction", { enumerable: true, get: function () { return types_1.RecommendedAction; } });
Object.defineProperty(exports, "AddressScanResultType", { enumerable: true, get: function () { return types_1.AddressScanResultType; } });
//# sourceMappingURL=index.cjs.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2DAAqC;AAQrC,2DAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAEzB,qCAAwE;AAA/D,mHAAA,0BAA0B,OAAA;AAAE,0GAAA,iBAAiB,OAAA","sourcesContent":["export * from './PhishingController';\nexport type {\n LegacyPhishingDetectorList,\n PhishingDetectorList,\n FuzzyTolerance,\n PhishingDetectorOptions,\n PhishingDetectorConfiguration,\n} from './PhishingDetector';\nexport { PhishingDetector } from './PhishingDetector';\nexport type { PhishingDetectionScanResult } from './types';\nexport { PhishingDetectorResultType, RecommendedAction } from './types';\nexport type { CacheEntry } from './CacheManager';\n"]}
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2DAAqC;AAQrC,2DAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAEzB,qCAIiB;AAHf,mHAAA,0BAA0B,OAAA;AAC1B,0GAAA,iBAAiB,OAAA;AACjB,8GAAA,qBAAqB,OAAA","sourcesContent":["export * from './PhishingController';\nexport type {\n LegacyPhishingDetectorList,\n PhishingDetectorList,\n FuzzyTolerance,\n PhishingDetectorOptions,\n PhishingDetectorConfiguration,\n} from './PhishingDetector';\nexport { PhishingDetector } from './PhishingDetector';\nexport type { PhishingDetectionScanResult, AddressScanResult } from './types';\nexport {\n PhishingDetectorResultType,\n RecommendedAction,\n AddressScanResultType,\n} from './types';\nexport type { CacheEntry } from './CacheManager';\n"]}
export * from "./PhishingController.cjs";
export type { LegacyPhishingDetectorList, PhishingDetectorList, FuzzyTolerance, PhishingDetectorOptions, PhishingDetectorConfiguration, } from "./PhishingDetector.cjs";
export { PhishingDetector } from "./PhishingDetector.cjs";
export type { PhishingDetectionScanResult } from "./types.cjs";
export { PhishingDetectorResultType, RecommendedAction } from "./types.cjs";
export type { PhishingDetectionScanResult, AddressScanResult } from "./types.cjs";
export { PhishingDetectorResultType, RecommendedAction, AddressScanResultType, } from "./types.cjs";
export type { CacheEntry } from "./CacheManager.cjs";
//# sourceMappingURL=index.d.cts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAqC;AACrC,YAAY,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,6BAA6B,GAC9B,+BAA2B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,YAAY,EAAE,2BAA2B,EAAE,oBAAgB;AAC3D,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,oBAAgB;AACxE,YAAY,EAAE,UAAU,EAAE,2BAAuB"}
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAqC;AACrC,YAAY,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,6BAA6B,GAC9B,+BAA2B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,YAAY,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,oBAAgB;AAC9E,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,qBAAqB,GACtB,oBAAgB;AACjB,YAAY,EAAE,UAAU,EAAE,2BAAuB"}
export * from "./PhishingController.mjs";
export type { LegacyPhishingDetectorList, PhishingDetectorList, FuzzyTolerance, PhishingDetectorOptions, PhishingDetectorConfiguration, } from "./PhishingDetector.mjs";
export { PhishingDetector } from "./PhishingDetector.mjs";
export type { PhishingDetectionScanResult } from "./types.mjs";
export { PhishingDetectorResultType, RecommendedAction } from "./types.mjs";
export type { PhishingDetectionScanResult, AddressScanResult } from "./types.mjs";
export { PhishingDetectorResultType, RecommendedAction, AddressScanResultType, } from "./types.mjs";
export type { CacheEntry } from "./CacheManager.mjs";
//# sourceMappingURL=index.d.mts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAqC;AACrC,YAAY,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,6BAA6B,GAC9B,+BAA2B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,YAAY,EAAE,2BAA2B,EAAE,oBAAgB;AAC3D,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,oBAAgB;AACxE,YAAY,EAAE,UAAU,EAAE,2BAAuB"}
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAqC;AACrC,YAAY,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,6BAA6B,GAC9B,+BAA2B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,YAAY,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,oBAAgB;AAC9E,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,qBAAqB,GACtB,oBAAgB;AACjB,YAAY,EAAE,UAAU,EAAE,2BAAuB"}
export * from "./PhishingController.mjs";
export { PhishingDetector } from "./PhishingDetector.mjs";
export { PhishingDetectorResultType, RecommendedAction } from "./types.mjs";
export { PhishingDetectorResultType, RecommendedAction, AddressScanResultType } from "./types.mjs";
//# sourceMappingURL=index.mjs.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAqC;AAQrC,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AAEtD,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,oBAAgB","sourcesContent":["export * from './PhishingController';\nexport type {\n LegacyPhishingDetectorList,\n PhishingDetectorList,\n FuzzyTolerance,\n PhishingDetectorOptions,\n PhishingDetectorConfiguration,\n} from './PhishingDetector';\nexport { PhishingDetector } from './PhishingDetector';\nexport type { PhishingDetectionScanResult } from './types';\nexport { PhishingDetectorResultType, RecommendedAction } from './types';\nexport type { CacheEntry } from './CacheManager';\n"]}
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAqC;AAQrC,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AAEtD,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,qBAAqB,EACtB,oBAAgB","sourcesContent":["export * from './PhishingController';\nexport type {\n LegacyPhishingDetectorList,\n PhishingDetectorList,\n FuzzyTolerance,\n PhishingDetectorOptions,\n PhishingDetectorConfiguration,\n} from './PhishingDetector';\nexport { PhishingDetector } from './PhishingDetector';\nexport type { PhishingDetectionScanResult, AddressScanResult } from './types';\nexport {\n PhishingDetectorResultType,\n RecommendedAction,\n AddressScanResultType,\n} from './types';\nexport type { CacheEntry } from './CacheManager';\n"]}

@@ -13,5 +13,5 @@ "use strict";

};
var _PhishingController_instances, _PhishingController_detector, _PhishingController_stalelistRefreshInterval, _PhishingController_hotlistRefreshInterval, _PhishingController_c2DomainBlocklistRefreshInterval, _PhishingController_urlScanCache, _PhishingController_tokenScanCache, _PhishingController_inProgressHotlistUpdate, _PhishingController_inProgressStalelistUpdate, _PhishingController_isProgressC2DomainBlocklistUpdate, _PhishingController_transactionControllerStateChangeHandler, _PhishingController_subscribeToTransactionControllerStateChange, _PhishingController_registerMessageHandlers, _PhishingController_isTransactionPatch, _PhishingController_isSimulationDataPatch, _PhishingController_onTransactionControllerStateChange, _PhishingController_getTokensFromTransaction, _PhishingController_scanTokensByChain, _PhishingController_fetchTokenScanBulkResults, _PhishingController_processBatch, _PhishingController_updateStalelist, _PhishingController_updateHotlist, _PhishingController_updateC2DomainBlocklist, _PhishingController_queryConfig;
var _PhishingController_instances, _PhishingController_detector, _PhishingController_stalelistRefreshInterval, _PhishingController_hotlistRefreshInterval, _PhishingController_c2DomainBlocklistRefreshInterval, _PhishingController_urlScanCache, _PhishingController_tokenScanCache, _PhishingController_addressScanCache, _PhishingController_inProgressHotlistUpdate, _PhishingController_inProgressStalelistUpdate, _PhishingController_isProgressC2DomainBlocklistUpdate, _PhishingController_transactionControllerStateChangeHandler, _PhishingController_subscribeToTransactionControllerStateChange, _PhishingController_registerMessageHandlers, _PhishingController_isTransactionPatch, _PhishingController_isSimulationDataPatch, _PhishingController_onTransactionControllerStateChange, _PhishingController_getTokensFromTransaction, _PhishingController_scanTokensByChain, _PhishingController_fetchTokenScanBulkResults, _PhishingController_processBatch, _PhishingController_updateStalelist, _PhishingController_updateHotlist, _PhishingController_updateC2DomainBlocklist, _PhishingController_queryConfig;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PhishingController = exports.phishingListKeyNameMap = exports.ListNames = exports.ListKeys = exports.C2_DOMAIN_BLOCKLIST_URL = exports.METAMASK_HOTLIST_DIFF_URL = exports.METAMASK_STALELIST_URL = exports.STALELIST_REFRESH_INTERVAL = exports.HOTLIST_REFRESH_INTERVAL = exports.C2_DOMAIN_BLOCKLIST_REFRESH_INTERVAL = exports.DEFAULT_TOKEN_SCAN_CACHE_MAX_SIZE = exports.DEFAULT_TOKEN_SCAN_CACHE_TTL = exports.DEFAULT_URL_SCAN_CACHE_MAX_SIZE = exports.DEFAULT_URL_SCAN_CACHE_TTL = exports.TOKEN_BULK_SCANNING_ENDPOINT = exports.SECURITY_ALERTS_BASE_URL = exports.PHISHING_DETECTION_BULK_SCAN_ENDPOINT = exports.PHISHING_DETECTION_SCAN_ENDPOINT = exports.PHISHING_DETECTION_BASE_URL = exports.C2_DOMAIN_BLOCKLIST_ENDPOINT = exports.CLIENT_SIDE_DETECION_BASE_URL = exports.METAMASK_HOTLIST_DIFF_FILE = exports.METAMASK_STALELIST_FILE = exports.PHISHING_CONFIG_BASE_URL = void 0;
exports.PhishingController = exports.phishingListKeyNameMap = exports.ListNames = exports.ListKeys = exports.C2_DOMAIN_BLOCKLIST_URL = exports.METAMASK_HOTLIST_DIFF_URL = exports.METAMASK_STALELIST_URL = exports.STALELIST_REFRESH_INTERVAL = exports.HOTLIST_REFRESH_INTERVAL = exports.C2_DOMAIN_BLOCKLIST_REFRESH_INTERVAL = exports.DEFAULT_ADDRESS_SCAN_CACHE_MAX_SIZE = exports.DEFAULT_ADDRESS_SCAN_CACHE_TTL = exports.DEFAULT_TOKEN_SCAN_CACHE_MAX_SIZE = exports.DEFAULT_TOKEN_SCAN_CACHE_TTL = exports.DEFAULT_URL_SCAN_CACHE_MAX_SIZE = exports.DEFAULT_URL_SCAN_CACHE_TTL = exports.ADDRESS_SCAN_ENDPOINT = exports.TOKEN_BULK_SCANNING_ENDPOINT = exports.SECURITY_ALERTS_BASE_URL = exports.PHISHING_DETECTION_BULK_SCAN_ENDPOINT = exports.PHISHING_DETECTION_SCAN_ENDPOINT = exports.PHISHING_DETECTION_BASE_URL = exports.C2_DOMAIN_BLOCKLIST_ENDPOINT = exports.CLIENT_SIDE_DETECION_BASE_URL = exports.METAMASK_HOTLIST_DIFF_FILE = exports.METAMASK_STALELIST_FILE = exports.PHISHING_CONFIG_BASE_URL = void 0;
const base_controller_1 = require("@metamask/base-controller");

@@ -35,2 +35,3 @@ const controller_utils_1 = require("@metamask/controller-utils");

exports.TOKEN_BULK_SCANNING_ENDPOINT = '/token/scan-bulk';
exports.ADDRESS_SCAN_ENDPOINT = '/address/evm/scan';
// Cache configuration defaults

@@ -41,2 +42,4 @@ exports.DEFAULT_URL_SCAN_CACHE_TTL = 15 * 60; // 15 minutes in seconds

exports.DEFAULT_TOKEN_SCAN_CACHE_MAX_SIZE = 1000;
exports.DEFAULT_ADDRESS_SCAN_CACHE_TTL = 15 * 60; // 15 minutes in seconds
exports.DEFAULT_ADDRESS_SCAN_CACHE_MAX_SIZE = 1000;
exports.C2_DOMAIN_BLOCKLIST_REFRESH_INTERVAL = 5 * 60; // 5 mins in seconds

@@ -127,2 +130,8 @@ exports.HOTLIST_REFRESH_INTERVAL = 5 * 60; // 5 mins in seconds

},
addressScanCache: {
includeInStateLogs: false,
persist: true,
includeInDebugSnapshot: false,
usedInUi: true,
},
};

@@ -144,2 +153,3 @@ /**

tokenScanCache: {},
addressScanCache: {},
};

@@ -162,6 +172,8 @@ };

* @param config.tokenScanCacheMaxSize - Maximum number of entries in the token scan cache.
* @param config.addressScanCacheTTL - Time to live in seconds for cached address scan results.
* @param config.addressScanCacheMaxSize - Maximum number of entries in the address scan cache.
* @param config.messenger - The controller restricted messenger.
* @param config.state - Initial state to set on this controller.
*/
constructor({ stalelistRefreshInterval = exports.STALELIST_REFRESH_INTERVAL, hotlistRefreshInterval = exports.HOTLIST_REFRESH_INTERVAL, c2DomainBlocklistRefreshInterval = exports.C2_DOMAIN_BLOCKLIST_REFRESH_INTERVAL, urlScanCacheTTL = exports.DEFAULT_URL_SCAN_CACHE_TTL, urlScanCacheMaxSize = exports.DEFAULT_URL_SCAN_CACHE_MAX_SIZE, tokenScanCacheTTL = exports.DEFAULT_TOKEN_SCAN_CACHE_TTL, tokenScanCacheMaxSize = exports.DEFAULT_TOKEN_SCAN_CACHE_MAX_SIZE, messenger, state = {}, }) {
constructor({ stalelistRefreshInterval = exports.STALELIST_REFRESH_INTERVAL, hotlistRefreshInterval = exports.HOTLIST_REFRESH_INTERVAL, c2DomainBlocklistRefreshInterval = exports.C2_DOMAIN_BLOCKLIST_REFRESH_INTERVAL, urlScanCacheTTL = exports.DEFAULT_URL_SCAN_CACHE_TTL, urlScanCacheMaxSize = exports.DEFAULT_URL_SCAN_CACHE_MAX_SIZE, tokenScanCacheTTL = exports.DEFAULT_TOKEN_SCAN_CACHE_TTL, tokenScanCacheMaxSize = exports.DEFAULT_TOKEN_SCAN_CACHE_MAX_SIZE, addressScanCacheTTL = exports.DEFAULT_ADDRESS_SCAN_CACHE_TTL, addressScanCacheMaxSize = exports.DEFAULT_ADDRESS_SCAN_CACHE_MAX_SIZE, messenger, state = {}, }) {
super({

@@ -185,2 +197,3 @@ name: controllerName,

_PhishingController_tokenScanCache.set(this, void 0);
_PhishingController_addressScanCache.set(this, void 0);
_PhishingController_inProgressHotlistUpdate.set(this, void 0);

@@ -380,2 +393,75 @@ _PhishingController_inProgressStalelistUpdate.set(this, void 0);

/**
* Scan an address for security alerts.
*
* @param chainId - The chain ID in hex format (e.g., '0x1' for Ethereum).
* @param address - The address to scan.
* @returns The address scan result.
*/
this.scanAddress = async (chainId, address) => {
if (!address || !chainId) {
return {
result_type: types_1.AddressScanResultType.ErrorResult,
label: '',
};
}
const normalizedChainId = chainId.toLowerCase();
const normalizedAddress = address.toLowerCase();
const chain = (0, utils_1.resolveChainName)(normalizedChainId);
if (!chain) {
return {
result_type: types_1.AddressScanResultType.ErrorResult,
label: '',
};
}
const cacheKey = (0, utils_1.buildCacheKey)(normalizedChainId, normalizedAddress);
const cachedResult = __classPrivateFieldGet(this, _PhishingController_addressScanCache, "f").get(cacheKey);
if (cachedResult) {
return {
result_type: cachedResult.result_type,
label: cachedResult.label,
};
}
const apiResponse = await (0, controller_utils_1.safelyExecuteWithTimeout)(async () => {
const res = await fetch(`${exports.SECURITY_ALERTS_BASE_URL}${exports.ADDRESS_SCAN_ENDPOINT}`, {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
chain,
address: normalizedAddress,
}),
});
if (!res.ok) {
return {
error: `${res.status} ${res.statusText}`,
};
}
const data = await res.json();
return data;
}, true, 5000);
if (!apiResponse) {
return {
result_type: types_1.AddressScanResultType.ErrorResult,
label: '',
};
}
else if ('error' in apiResponse) {
return {
result_type: types_1.AddressScanResultType.ErrorResult,
label: '',
};
}
const result = {
result_type: apiResponse.result_type,
label: apiResponse.label,
};
__classPrivateFieldGet(this, _PhishingController_addressScanCache, "f").set(cacheKey, result);
return {
result_type: apiResponse.result_type,
label: apiResponse.label,
};
};
/**
* Scan multiple tokens for malicious activity in bulk.

@@ -505,2 +591,12 @@ *

}), "f");
__classPrivateFieldSet(this, _PhishingController_addressScanCache, new CacheManager_1.CacheManager({
cacheTTL: addressScanCacheTTL,
maxCacheSize: addressScanCacheMaxSize,
initialCache: this.state.addressScanCache,
updateState: (cache) => {
this.update((draftState) => {
draftState.addressScanCache = cache;
});
},
}), "f");
__classPrivateFieldGet(this, _PhishingController_instances, "m", _PhishingController_registerMessageHandlers).call(this);

@@ -744,3 +840,3 @@ this.updatePhishingDetector();

exports.PhishingController = PhishingController;
_PhishingController_detector = new WeakMap(), _PhishingController_stalelistRefreshInterval = new WeakMap(), _PhishingController_hotlistRefreshInterval = new WeakMap(), _PhishingController_c2DomainBlocklistRefreshInterval = new WeakMap(), _PhishingController_urlScanCache = new WeakMap(), _PhishingController_tokenScanCache = new WeakMap(), _PhishingController_inProgressHotlistUpdate = new WeakMap(), _PhishingController_inProgressStalelistUpdate = new WeakMap(), _PhishingController_isProgressC2DomainBlocklistUpdate = new WeakMap(), _PhishingController_transactionControllerStateChangeHandler = new WeakMap(), _PhishingController_fetchTokenScanBulkResults = new WeakMap(), _PhishingController_processBatch = new WeakMap(), _PhishingController_instances = new WeakSet(), _PhishingController_subscribeToTransactionControllerStateChange = function _PhishingController_subscribeToTransactionControllerStateChange() {
_PhishingController_detector = new WeakMap(), _PhishingController_stalelistRefreshInterval = new WeakMap(), _PhishingController_hotlistRefreshInterval = new WeakMap(), _PhishingController_c2DomainBlocklistRefreshInterval = new WeakMap(), _PhishingController_urlScanCache = new WeakMap(), _PhishingController_tokenScanCache = new WeakMap(), _PhishingController_addressScanCache = new WeakMap(), _PhishingController_inProgressHotlistUpdate = new WeakMap(), _PhishingController_inProgressStalelistUpdate = new WeakMap(), _PhishingController_isProgressC2DomainBlocklistUpdate = new WeakMap(), _PhishingController_transactionControllerStateChangeHandler = new WeakMap(), _PhishingController_fetchTokenScanBulkResults = new WeakMap(), _PhishingController_processBatch = new WeakMap(), _PhishingController_instances = new WeakSet(), _PhishingController_subscribeToTransactionControllerStateChange = function _PhishingController_subscribeToTransactionControllerStateChange() {
this.messenger.subscribe('TransactionController:stateChange', __classPrivateFieldGet(this, _PhishingController_transactionControllerStateChangeHandler, "f"));

@@ -752,2 +848,3 @@ }, _PhishingController_registerMessageHandlers = function _PhishingController_registerMessageHandlers() {

this.messenger.registerActionHandler(`${controllerName}:bulkScanTokens`, this.bulkScanTokens.bind(this));
this.messenger.registerActionHandler(`${controllerName}:scanAddress`, this.scanAddress.bind(this));
}, _PhishingController_isTransactionPatch = function _PhishingController_isTransactionPatch(patch) {

@@ -754,0 +851,0 @@ const { path } = patch;

@@ -6,3 +6,3 @@ import { BaseController, type ControllerGetStateAction, type ControllerStateChangeEvent } from "@metamask/base-controller";

import { type PathTrie } from "./PathTrie.cjs";
import { type PhishingDetectorResult, type PhishingDetectionScanResult, type TokenScanCacheData, type BulkTokenScanResponse, type BulkTokenScanRequest } from "./types.cjs";
import { type PhishingDetectorResult, type PhishingDetectionScanResult, type TokenScanCacheData, type BulkTokenScanResponse, type BulkTokenScanRequest, type AddressScanCacheData, type AddressScanResult } from "./types.cjs";
export declare const PHISHING_CONFIG_BASE_URL = "https://phishing-detection.api.cx.metamask.io";

@@ -18,2 +18,3 @@ export declare const METAMASK_STALELIST_FILE = "/v1/stalelist";

export declare const TOKEN_BULK_SCANNING_ENDPOINT = "/token/scan-bulk";
export declare const ADDRESS_SCAN_ENDPOINT = "/address/evm/scan";
export declare const DEFAULT_URL_SCAN_CACHE_TTL: number;

@@ -23,2 +24,4 @@ export declare const DEFAULT_URL_SCAN_CACHE_MAX_SIZE = 250;

export declare const DEFAULT_TOKEN_SCAN_CACHE_MAX_SIZE = 1000;
export declare const DEFAULT_ADDRESS_SCAN_CACHE_TTL: number;
export declare const DEFAULT_ADDRESS_SCAN_CACHE_MAX_SIZE = 1000;
export declare const C2_DOMAIN_BLOCKLIST_REFRESH_INTERVAL: number;

@@ -176,3 +179,5 @@ export declare const HOTLIST_REFRESH_INTERVAL: number;

* c2DomainBlocklistLastFetched - timestamp of the last c2 domain blocklist fetch
* urlScanCache - cache of scan results
* urlScanCache - cache of URL scan results
* tokenScanCache - cache of token scan results
* addressScanCache - cache of address scan results
*/

@@ -188,2 +193,3 @@ export type PhishingControllerState = {

tokenScanCache: Record<string, CacheEntry<TokenScanCacheData>>;
addressScanCache: Record<string, CacheEntry<AddressScanCacheData>>;
};

@@ -201,2 +207,4 @@ /**

* tokenScanCacheMaxSize - Maximum number of entries in the token scan cache.
* addressScanCacheTTL - Time to live in seconds for cached address scan results.
* addressScanCacheMaxSize - Maximum number of entries in the address scan cache.
*/

@@ -211,2 +219,4 @@ export type PhishingControllerOptions = {

tokenScanCacheMaxSize?: number;
addressScanCacheTTL?: number;
addressScanCacheMaxSize?: number;
messenger: PhishingControllerMessenger;

@@ -231,4 +241,8 @@ state?: Partial<PhishingControllerState>;

};
export type PhishingControllerScanAddressAction = {
type: `${typeof controllerName}:scanAddress`;
handler: PhishingController['scanAddress'];
};
export type PhishingControllerGetStateAction = ControllerGetStateAction<typeof controllerName, PhishingControllerState>;
export type PhishingControllerActions = PhishingControllerGetStateAction | MaybeUpdateState | TestOrigin | PhishingControllerBulkScanUrlsAction | PhishingControllerBulkScanTokensAction;
export type PhishingControllerActions = PhishingControllerGetStateAction | MaybeUpdateState | TestOrigin | PhishingControllerBulkScanUrlsAction | PhishingControllerBulkScanTokensAction | PhishingControllerScanAddressAction;
export type PhishingControllerStateChangeEvent = ControllerStateChangeEvent<typeof controllerName, PhishingControllerState>;

@@ -273,6 +287,8 @@ export type PhishingControllerEvents = PhishingControllerStateChangeEvent;

* @param config.tokenScanCacheMaxSize - Maximum number of entries in the token scan cache.
* @param config.addressScanCacheTTL - Time to live in seconds for cached address scan results.
* @param config.addressScanCacheMaxSize - Maximum number of entries in the address scan cache.
* @param config.messenger - The controller restricted messenger.
* @param config.state - Initial state to set on this controller.
*/
constructor({ stalelistRefreshInterval, hotlistRefreshInterval, c2DomainBlocklistRefreshInterval, urlScanCacheTTL, urlScanCacheMaxSize, tokenScanCacheTTL, tokenScanCacheMaxSize, messenger, state, }: PhishingControllerOptions);
constructor({ stalelistRefreshInterval, hotlistRefreshInterval, c2DomainBlocklistRefreshInterval, urlScanCacheTTL, urlScanCacheMaxSize, tokenScanCacheTTL, tokenScanCacheMaxSize, addressScanCacheTTL, addressScanCacheMaxSize, messenger, state, }: PhishingControllerOptions);
/**

@@ -415,2 +431,10 @@ * Updates this.detector with an instance of PhishingDetector using the current state.

/**
* Scan an address for security alerts.
*
* @param chainId - The chain ID in hex format (e.g., '0x1' for Ethereum).
* @param address - The address to scan.
* @returns The address scan result.
*/
scanAddress: (chainId: string, address: string) => Promise<AddressScanResult>;
/**
* Scan multiple tokens for malicious activity in bulk.

@@ -417,0 +441,0 @@ *

@@ -1,1 +0,1 @@

{"version":3,"file":"PhishingController.d.cts","sourceRoot":"","sources":["../src/PhishingController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAChC,kCAAkC;AAKnC,OAAO,EAAE,KAAK,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EACV,qCAAqC,EAEtC,yCAAyC;AAI1C,OAAO,EAAgB,KAAK,UAAU,EAAE,2BAAuB;AAC/D,OAAO,EACL,KAAK,QAAQ,EAId,uBAAmB;AAEpB,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAEhC,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,oBAAgB;AAajB,eAAO,MAAM,wBAAwB,kDACY,CAAC;AAClD,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AACvD,eAAO,MAAM,0BAA0B,mBAAmB,CAAC;AAE3D,eAAO,MAAM,6BAA6B,qDACU,CAAC;AACrD,eAAO,MAAM,4BAA4B,0BAA0B,CAAC;AAEpE,eAAO,MAAM,2BAA2B,6CACI,CAAC;AAC7C,eAAO,MAAM,gCAAgC,YAAY,CAAC;AAC1D,eAAO,MAAM,qCAAqC,cAAc,CAAC;AAEjE,eAAO,MAAM,wBAAwB,+CACS,CAAC;AAC/C,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAG/D,eAAO,MAAM,0BAA0B,QAAU,CAAC;AAClD,eAAO,MAAM,+BAA+B,MAAM,CAAC;AACnD,eAAO,MAAM,4BAA4B,QAAU,CAAC;AACpD,eAAO,MAAM,iCAAiC,OAAO,CAAC;AAEtD,eAAO,MAAM,oCAAoC,QAAS,CAAC;AAC3D,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,eAAO,MAAM,0BAA0B,QAAoB,CAAC;AAE5D,eAAO,MAAM,sBAAsB,+DAA0D,CAAC;AAC9F,eAAO,MAAM,yBAAyB,gEAA6D,CAAC;AACpG,eAAO,MAAM,uBAAuB,0EAAoE,CAAC;AAEzG;;;;GAIG;AACH,MAAM,MAAM,SAAS,GACjB,WAAW,GACX,WAAW,GACX,gBAAgB,GAChB,WAAW,GACX,mBAAmB,CAAC;AAExB;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,QAAQ,CAAC;IACzB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC,IAAI,EAAE,CAAC,CAAC;CACT,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;AAEpC;;;GAGG;AACH,oBAAY,QAAQ;IAClB,uBAAuB,+BAA+B;CACvD;AAED;;GAEG;AACH,oBAAY,SAAS;IACnB,QAAQ,aAAa;CACtB;AAUD;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;CAElC,CAAC;AAEF,QAAA,MAAM,cAAc,uBAAuB,CAAC;AAuE5C;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,QAAQ,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4BAA4B,EAAE,MAAM,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACtE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC;CAChE,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,EAAE,2BAA2B,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,GAAG,OAAO,cAAc,mBAAmB,CAAC;IAClD,OAAO,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,GAAG,OAAO,cAAc,aAAa,CAAC;IAC5C,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG;IACjD,IAAI,EAAE,GAAG,OAAO,cAAc,eAAe,CAAC;IAC9C,OAAO,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG;IACnD,IAAI,EAAE,GAAG,OAAO,cAAc,iBAAiB,CAAC;IAChD,OAAO,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG,wBAAwB,CACrE,OAAO,cAAc,EACrB,uBAAuB,CACxB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GACjC,gCAAgC,GAChC,gBAAgB,GAChB,UAAU,GACV,oCAAoC,GACpC,sCAAsC,CAAC;AAE3C,MAAM,MAAM,kCAAkC,GAAG,0BAA0B,CACzE,OAAO,cAAc,EACrB,uBAAuB,CACxB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,kCAAkC,CAAC;AAE1E;;GAEG;AACH,KAAK,cAAc,GAAG,KAAK,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,qCAAqC,CAAC;AAElE,MAAM,MAAM,2BAA2B,GAAG,SAAS,CACjD,OAAO,cAAc,EACrB,yBAAyB,GAAG,cAAc,EAC1C,wBAAwB,GAAG,aAAa,CACzC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,iCAAiC,GAAG;IAC9C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IACrD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,cAAc,CACpD,OAAO,cAAc,EACrB,uBAAuB,EACvB,2BAA2B,CAC5B;;IA0BC;;;;;;;;;;;;;OAaG;gBACS,EACV,wBAAqD,EACrD,sBAAiD,EACjD,gCAAuE,EACvE,eAA4C,EAC5C,mBAAqD,EACrD,iBAAgD,EAChD,qBAAyD,EACzD,SAAS,EACT,KAAU,GACX,EAAE,yBAAyB;IAmM5B;;OAEG;IACH,sBAAsB;IAItB;;;;;;OAMG;IACH,2BAA2B,CAAC,QAAQ,EAAE,MAAM;IAI5C;;;;;;OAMG;IACH,yBAAyB,CAAC,QAAQ,EAAE,MAAM;IAI1C;;;;;;OAMG;IACH,mCAAmC,CAAC,QAAQ,EAAE,MAAM;IAIpD;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM;IAI9B;;;;OAIG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM;IAItC;;OAEG;IACH,iBAAiB;IAIjB;;;;OAIG;IACH,oBAAoB;IAOpB;;;;OAIG;IACH,kBAAkB;IAOlB;;;;OAIG;IACH,4BAA4B;IAO5B;;;;;;;OAOG;IACG,gBAAgB;IAgBtB;;;;;;;;;OASG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB;IAe5C;;;;;;;;;OASG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB;IASxD;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM;IA0BrB;;;;;OAKG;IACG,uBAAuB;IAc7B;;;;;OAKG;IACG,aAAa;IAcnB;;;;;OAKG;IACG,eAAe;IAcrB;;;;;;OAMG;IACH,OAAO,QAAe,MAAM,KAAG,QAAQ,2BAA2B,CAAC,CA6DjE;IAEF;;;;;;OAMG;IACH,YAAY,SACJ,MAAM,EAAE,KACb,QAAQ,iCAAiC,CAAC,CA6F3C;IAiEF;;;;;;;OAOG;IACH,cAAc,YACH,oBAAoB,KAC5B,QAAQ,qBAAqB,CAAC,CAoE/B;CA+PH;AAED,eAAe,kBAAkB,CAAC;AAElC,YAAY,EAAE,sBAAsB,EAAE,CAAC"}
{"version":3,"file":"PhishingController.d.cts","sourceRoot":"","sources":["../src/PhishingController.ts"],"names":[],"mappings":"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"}

@@ -6,3 +6,3 @@ import { BaseController, type ControllerGetStateAction, type ControllerStateChangeEvent } from "@metamask/base-controller";

import { type PathTrie } from "./PathTrie.mjs";
import { type PhishingDetectorResult, type PhishingDetectionScanResult, type TokenScanCacheData, type BulkTokenScanResponse, type BulkTokenScanRequest } from "./types.mjs";
import { type PhishingDetectorResult, type PhishingDetectionScanResult, type TokenScanCacheData, type BulkTokenScanResponse, type BulkTokenScanRequest, type AddressScanCacheData, type AddressScanResult } from "./types.mjs";
export declare const PHISHING_CONFIG_BASE_URL = "https://phishing-detection.api.cx.metamask.io";

@@ -18,2 +18,3 @@ export declare const METAMASK_STALELIST_FILE = "/v1/stalelist";

export declare const TOKEN_BULK_SCANNING_ENDPOINT = "/token/scan-bulk";
export declare const ADDRESS_SCAN_ENDPOINT = "/address/evm/scan";
export declare const DEFAULT_URL_SCAN_CACHE_TTL: number;

@@ -23,2 +24,4 @@ export declare const DEFAULT_URL_SCAN_CACHE_MAX_SIZE = 250;

export declare const DEFAULT_TOKEN_SCAN_CACHE_MAX_SIZE = 1000;
export declare const DEFAULT_ADDRESS_SCAN_CACHE_TTL: number;
export declare const DEFAULT_ADDRESS_SCAN_CACHE_MAX_SIZE = 1000;
export declare const C2_DOMAIN_BLOCKLIST_REFRESH_INTERVAL: number;

@@ -176,3 +179,5 @@ export declare const HOTLIST_REFRESH_INTERVAL: number;

* c2DomainBlocklistLastFetched - timestamp of the last c2 domain blocklist fetch
* urlScanCache - cache of scan results
* urlScanCache - cache of URL scan results
* tokenScanCache - cache of token scan results
* addressScanCache - cache of address scan results
*/

@@ -188,2 +193,3 @@ export type PhishingControllerState = {

tokenScanCache: Record<string, CacheEntry<TokenScanCacheData>>;
addressScanCache: Record<string, CacheEntry<AddressScanCacheData>>;
};

@@ -201,2 +207,4 @@ /**

* tokenScanCacheMaxSize - Maximum number of entries in the token scan cache.
* addressScanCacheTTL - Time to live in seconds for cached address scan results.
* addressScanCacheMaxSize - Maximum number of entries in the address scan cache.
*/

@@ -211,2 +219,4 @@ export type PhishingControllerOptions = {

tokenScanCacheMaxSize?: number;
addressScanCacheTTL?: number;
addressScanCacheMaxSize?: number;
messenger: PhishingControllerMessenger;

@@ -231,4 +241,8 @@ state?: Partial<PhishingControllerState>;

};
export type PhishingControllerScanAddressAction = {
type: `${typeof controllerName}:scanAddress`;
handler: PhishingController['scanAddress'];
};
export type PhishingControllerGetStateAction = ControllerGetStateAction<typeof controllerName, PhishingControllerState>;
export type PhishingControllerActions = PhishingControllerGetStateAction | MaybeUpdateState | TestOrigin | PhishingControllerBulkScanUrlsAction | PhishingControllerBulkScanTokensAction;
export type PhishingControllerActions = PhishingControllerGetStateAction | MaybeUpdateState | TestOrigin | PhishingControllerBulkScanUrlsAction | PhishingControllerBulkScanTokensAction | PhishingControllerScanAddressAction;
export type PhishingControllerStateChangeEvent = ControllerStateChangeEvent<typeof controllerName, PhishingControllerState>;

@@ -273,6 +287,8 @@ export type PhishingControllerEvents = PhishingControllerStateChangeEvent;

* @param config.tokenScanCacheMaxSize - Maximum number of entries in the token scan cache.
* @param config.addressScanCacheTTL - Time to live in seconds for cached address scan results.
* @param config.addressScanCacheMaxSize - Maximum number of entries in the address scan cache.
* @param config.messenger - The controller restricted messenger.
* @param config.state - Initial state to set on this controller.
*/
constructor({ stalelistRefreshInterval, hotlistRefreshInterval, c2DomainBlocklistRefreshInterval, urlScanCacheTTL, urlScanCacheMaxSize, tokenScanCacheTTL, tokenScanCacheMaxSize, messenger, state, }: PhishingControllerOptions);
constructor({ stalelistRefreshInterval, hotlistRefreshInterval, c2DomainBlocklistRefreshInterval, urlScanCacheTTL, urlScanCacheMaxSize, tokenScanCacheTTL, tokenScanCacheMaxSize, addressScanCacheTTL, addressScanCacheMaxSize, messenger, state, }: PhishingControllerOptions);
/**

@@ -415,2 +431,10 @@ * Updates this.detector with an instance of PhishingDetector using the current state.

/**
* Scan an address for security alerts.
*
* @param chainId - The chain ID in hex format (e.g., '0x1' for Ethereum).
* @param address - The address to scan.
* @returns The address scan result.
*/
scanAddress: (chainId: string, address: string) => Promise<AddressScanResult>;
/**
* Scan multiple tokens for malicious activity in bulk.

@@ -417,0 +441,0 @@ *

@@ -1,1 +0,1 @@

{"version":3,"file":"PhishingController.d.mts","sourceRoot":"","sources":["../src/PhishingController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAChC,kCAAkC;AAKnC,OAAO,EAAE,KAAK,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EACV,qCAAqC,EAEtC,yCAAyC;AAI1C,OAAO,EAAgB,KAAK,UAAU,EAAE,2BAAuB;AAC/D,OAAO,EACL,KAAK,QAAQ,EAId,uBAAmB;AAEpB,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAEhC,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,oBAAgB;AAajB,eAAO,MAAM,wBAAwB,kDACY,CAAC;AAClD,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AACvD,eAAO,MAAM,0BAA0B,mBAAmB,CAAC;AAE3D,eAAO,MAAM,6BAA6B,qDACU,CAAC;AACrD,eAAO,MAAM,4BAA4B,0BAA0B,CAAC;AAEpE,eAAO,MAAM,2BAA2B,6CACI,CAAC;AAC7C,eAAO,MAAM,gCAAgC,YAAY,CAAC;AAC1D,eAAO,MAAM,qCAAqC,cAAc,CAAC;AAEjE,eAAO,MAAM,wBAAwB,+CACS,CAAC;AAC/C,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAG/D,eAAO,MAAM,0BAA0B,QAAU,CAAC;AAClD,eAAO,MAAM,+BAA+B,MAAM,CAAC;AACnD,eAAO,MAAM,4BAA4B,QAAU,CAAC;AACpD,eAAO,MAAM,iCAAiC,OAAO,CAAC;AAEtD,eAAO,MAAM,oCAAoC,QAAS,CAAC;AAC3D,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,eAAO,MAAM,0BAA0B,QAAoB,CAAC;AAE5D,eAAO,MAAM,sBAAsB,+DAA0D,CAAC;AAC9F,eAAO,MAAM,yBAAyB,gEAA6D,CAAC;AACpG,eAAO,MAAM,uBAAuB,0EAAoE,CAAC;AAEzG;;;;GAIG;AACH,MAAM,MAAM,SAAS,GACjB,WAAW,GACX,WAAW,GACX,gBAAgB,GAChB,WAAW,GACX,mBAAmB,CAAC;AAExB;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,QAAQ,CAAC;IACzB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC,IAAI,EAAE,CAAC,CAAC;CACT,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;AAEpC;;;GAGG;AACH,oBAAY,QAAQ;IAClB,uBAAuB,+BAA+B;CACvD;AAED;;GAEG;AACH,oBAAY,SAAS;IACnB,QAAQ,aAAa;CACtB;AAUD;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;CAElC,CAAC;AAEF,QAAA,MAAM,cAAc,uBAAuB,CAAC;AAuE5C;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,QAAQ,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4BAA4B,EAAE,MAAM,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACtE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC;CAChE,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,EAAE,2BAA2B,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,GAAG,OAAO,cAAc,mBAAmB,CAAC;IAClD,OAAO,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,GAAG,OAAO,cAAc,aAAa,CAAC;IAC5C,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG;IACjD,IAAI,EAAE,GAAG,OAAO,cAAc,eAAe,CAAC;IAC9C,OAAO,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG;IACnD,IAAI,EAAE,GAAG,OAAO,cAAc,iBAAiB,CAAC;IAChD,OAAO,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG,wBAAwB,CACrE,OAAO,cAAc,EACrB,uBAAuB,CACxB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GACjC,gCAAgC,GAChC,gBAAgB,GAChB,UAAU,GACV,oCAAoC,GACpC,sCAAsC,CAAC;AAE3C,MAAM,MAAM,kCAAkC,GAAG,0BAA0B,CACzE,OAAO,cAAc,EACrB,uBAAuB,CACxB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,kCAAkC,CAAC;AAE1E;;GAEG;AACH,KAAK,cAAc,GAAG,KAAK,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,qCAAqC,CAAC;AAElE,MAAM,MAAM,2BAA2B,GAAG,SAAS,CACjD,OAAO,cAAc,EACrB,yBAAyB,GAAG,cAAc,EAC1C,wBAAwB,GAAG,aAAa,CACzC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,iCAAiC,GAAG;IAC9C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IACrD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,cAAc,CACpD,OAAO,cAAc,EACrB,uBAAuB,EACvB,2BAA2B,CAC5B;;IA0BC;;;;;;;;;;;;;OAaG;gBACS,EACV,wBAAqD,EACrD,sBAAiD,EACjD,gCAAuE,EACvE,eAA4C,EAC5C,mBAAqD,EACrD,iBAAgD,EAChD,qBAAyD,EACzD,SAAS,EACT,KAAU,GACX,EAAE,yBAAyB;IAmM5B;;OAEG;IACH,sBAAsB;IAItB;;;;;;OAMG;IACH,2BAA2B,CAAC,QAAQ,EAAE,MAAM;IAI5C;;;;;;OAMG;IACH,yBAAyB,CAAC,QAAQ,EAAE,MAAM;IAI1C;;;;;;OAMG;IACH,mCAAmC,CAAC,QAAQ,EAAE,MAAM;IAIpD;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM;IAI9B;;;;OAIG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM;IAItC;;OAEG;IACH,iBAAiB;IAIjB;;;;OAIG;IACH,oBAAoB;IAOpB;;;;OAIG;IACH,kBAAkB;IAOlB;;;;OAIG;IACH,4BAA4B;IAO5B;;;;;;;OAOG;IACG,gBAAgB;IAgBtB;;;;;;;;;OASG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB;IAe5C;;;;;;;;;OASG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB;IASxD;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM;IA0BrB;;;;;OAKG;IACG,uBAAuB;IAc7B;;;;;OAKG;IACG,aAAa;IAcnB;;;;;OAKG;IACG,eAAe;IAcrB;;;;;;OAMG;IACH,OAAO,QAAe,MAAM,KAAG,QAAQ,2BAA2B,CAAC,CA6DjE;IAEF;;;;;;OAMG;IACH,YAAY,SACJ,MAAM,EAAE,KACb,QAAQ,iCAAiC,CAAC,CA6F3C;IAiEF;;;;;;;OAOG;IACH,cAAc,YACH,oBAAoB,KAC5B,QAAQ,qBAAqB,CAAC,CAoE/B;CA+PH;AAED,eAAe,kBAAkB,CAAC;AAElC,YAAY,EAAE,sBAAsB,EAAE,CAAC"}
{"version":3,"file":"PhishingController.d.mts","sourceRoot":"","sources":["../src/PhishingController.ts"],"names":[],"mappings":"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"}

@@ -12,3 +12,3 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {

};
var _PhishingController_instances, _PhishingController_detector, _PhishingController_stalelistRefreshInterval, _PhishingController_hotlistRefreshInterval, _PhishingController_c2DomainBlocklistRefreshInterval, _PhishingController_urlScanCache, _PhishingController_tokenScanCache, _PhishingController_inProgressHotlistUpdate, _PhishingController_inProgressStalelistUpdate, _PhishingController_isProgressC2DomainBlocklistUpdate, _PhishingController_transactionControllerStateChangeHandler, _PhishingController_subscribeToTransactionControllerStateChange, _PhishingController_registerMessageHandlers, _PhishingController_isTransactionPatch, _PhishingController_isSimulationDataPatch, _PhishingController_onTransactionControllerStateChange, _PhishingController_getTokensFromTransaction, _PhishingController_scanTokensByChain, _PhishingController_fetchTokenScanBulkResults, _PhishingController_processBatch, _PhishingController_updateStalelist, _PhishingController_updateHotlist, _PhishingController_updateC2DomainBlocklist, _PhishingController_queryConfig;
var _PhishingController_instances, _PhishingController_detector, _PhishingController_stalelistRefreshInterval, _PhishingController_hotlistRefreshInterval, _PhishingController_c2DomainBlocklistRefreshInterval, _PhishingController_urlScanCache, _PhishingController_tokenScanCache, _PhishingController_addressScanCache, _PhishingController_inProgressHotlistUpdate, _PhishingController_inProgressStalelistUpdate, _PhishingController_isProgressC2DomainBlocklistUpdate, _PhishingController_transactionControllerStateChangeHandler, _PhishingController_subscribeToTransactionControllerStateChange, _PhishingController_registerMessageHandlers, _PhishingController_isTransactionPatch, _PhishingController_isSimulationDataPatch, _PhishingController_onTransactionControllerStateChange, _PhishingController_getTokensFromTransaction, _PhishingController_scanTokensByChain, _PhishingController_fetchTokenScanBulkResults, _PhishingController_processBatch, _PhishingController_updateStalelist, _PhishingController_updateHotlist, _PhishingController_updateC2DomainBlocklist, _PhishingController_queryConfig;
import { BaseController } from "@metamask/base-controller";

@@ -21,3 +21,3 @@ import { safelyExecute, safelyExecuteWithTimeout } from "@metamask/controller-utils";

import { PhishingDetector } from "./PhishingDetector.mjs";
import { PhishingDetectorResultType, RecommendedAction } from "./types.mjs";
import { PhishingDetectorResultType, RecommendedAction, AddressScanResultType } from "./types.mjs";
import { applyDiffs, fetchTimeNow, getHostnameFromUrl, roundToNearestMinute, getHostnameFromWebUrl, buildCacheKey, splitCacheHits, resolveChainName, getPathnameFromUrl } from "./utils.mjs";

@@ -34,2 +34,3 @@ export const PHISHING_CONFIG_BASE_URL = 'https://phishing-detection.api.cx.metamask.io';

export const TOKEN_BULK_SCANNING_ENDPOINT = '/token/scan-bulk';
export const ADDRESS_SCAN_ENDPOINT = '/address/evm/scan';
// Cache configuration defaults

@@ -40,2 +41,4 @@ export const DEFAULT_URL_SCAN_CACHE_TTL = 15 * 60; // 15 minutes in seconds

export const DEFAULT_TOKEN_SCAN_CACHE_MAX_SIZE = 1000;
export const DEFAULT_ADDRESS_SCAN_CACHE_TTL = 15 * 60; // 15 minutes in seconds
export const DEFAULT_ADDRESS_SCAN_CACHE_MAX_SIZE = 1000;
export const C2_DOMAIN_BLOCKLIST_REFRESH_INTERVAL = 5 * 60; // 5 mins in seconds

@@ -126,2 +129,8 @@ export const HOTLIST_REFRESH_INTERVAL = 5 * 60; // 5 mins in seconds

},
addressScanCache: {
includeInStateLogs: false,
persist: true,
includeInDebugSnapshot: false,
usedInUi: true,
},
};

@@ -143,2 +152,3 @@ /**

tokenScanCache: {},
addressScanCache: {},
};

@@ -161,6 +171,8 @@ };

* @param config.tokenScanCacheMaxSize - Maximum number of entries in the token scan cache.
* @param config.addressScanCacheTTL - Time to live in seconds for cached address scan results.
* @param config.addressScanCacheMaxSize - Maximum number of entries in the address scan cache.
* @param config.messenger - The controller restricted messenger.
* @param config.state - Initial state to set on this controller.
*/
constructor({ stalelistRefreshInterval = STALELIST_REFRESH_INTERVAL, hotlistRefreshInterval = HOTLIST_REFRESH_INTERVAL, c2DomainBlocklistRefreshInterval = C2_DOMAIN_BLOCKLIST_REFRESH_INTERVAL, urlScanCacheTTL = DEFAULT_URL_SCAN_CACHE_TTL, urlScanCacheMaxSize = DEFAULT_URL_SCAN_CACHE_MAX_SIZE, tokenScanCacheTTL = DEFAULT_TOKEN_SCAN_CACHE_TTL, tokenScanCacheMaxSize = DEFAULT_TOKEN_SCAN_CACHE_MAX_SIZE, messenger, state = {}, }) {
constructor({ stalelistRefreshInterval = STALELIST_REFRESH_INTERVAL, hotlistRefreshInterval = HOTLIST_REFRESH_INTERVAL, c2DomainBlocklistRefreshInterval = C2_DOMAIN_BLOCKLIST_REFRESH_INTERVAL, urlScanCacheTTL = DEFAULT_URL_SCAN_CACHE_TTL, urlScanCacheMaxSize = DEFAULT_URL_SCAN_CACHE_MAX_SIZE, tokenScanCacheTTL = DEFAULT_TOKEN_SCAN_CACHE_TTL, tokenScanCacheMaxSize = DEFAULT_TOKEN_SCAN_CACHE_MAX_SIZE, addressScanCacheTTL = DEFAULT_ADDRESS_SCAN_CACHE_TTL, addressScanCacheMaxSize = DEFAULT_ADDRESS_SCAN_CACHE_MAX_SIZE, messenger, state = {}, }) {
super({

@@ -184,2 +196,3 @@ name: controllerName,

_PhishingController_tokenScanCache.set(this, void 0);
_PhishingController_addressScanCache.set(this, void 0);
_PhishingController_inProgressHotlistUpdate.set(this, void 0);

@@ -379,2 +392,75 @@ _PhishingController_inProgressStalelistUpdate.set(this, void 0);

/**
* Scan an address for security alerts.
*
* @param chainId - The chain ID in hex format (e.g., '0x1' for Ethereum).
* @param address - The address to scan.
* @returns The address scan result.
*/
this.scanAddress = async (chainId, address) => {
if (!address || !chainId) {
return {
result_type: AddressScanResultType.ErrorResult,
label: '',
};
}
const normalizedChainId = chainId.toLowerCase();
const normalizedAddress = address.toLowerCase();
const chain = resolveChainName(normalizedChainId);
if (!chain) {
return {
result_type: AddressScanResultType.ErrorResult,
label: '',
};
}
const cacheKey = buildCacheKey(normalizedChainId, normalizedAddress);
const cachedResult = __classPrivateFieldGet(this, _PhishingController_addressScanCache, "f").get(cacheKey);
if (cachedResult) {
return {
result_type: cachedResult.result_type,
label: cachedResult.label,
};
}
const apiResponse = await safelyExecuteWithTimeout(async () => {
const res = await fetch(`${SECURITY_ALERTS_BASE_URL}${ADDRESS_SCAN_ENDPOINT}`, {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
chain,
address: normalizedAddress,
}),
});
if (!res.ok) {
return {
error: `${res.status} ${res.statusText}`,
};
}
const data = await res.json();
return data;
}, true, 5000);
if (!apiResponse) {
return {
result_type: AddressScanResultType.ErrorResult,
label: '',
};
}
else if ('error' in apiResponse) {
return {
result_type: AddressScanResultType.ErrorResult,
label: '',
};
}
const result = {
result_type: apiResponse.result_type,
label: apiResponse.label,
};
__classPrivateFieldGet(this, _PhishingController_addressScanCache, "f").set(cacheKey, result);
return {
result_type: apiResponse.result_type,
label: apiResponse.label,
};
};
/**
* Scan multiple tokens for malicious activity in bulk.

@@ -504,2 +590,12 @@ *

}), "f");
__classPrivateFieldSet(this, _PhishingController_addressScanCache, new CacheManager({
cacheTTL: addressScanCacheTTL,
maxCacheSize: addressScanCacheMaxSize,
initialCache: this.state.addressScanCache,
updateState: (cache) => {
this.update((draftState) => {
draftState.addressScanCache = cache;
});
},
}), "f");
__classPrivateFieldGet(this, _PhishingController_instances, "m", _PhishingController_registerMessageHandlers).call(this);

@@ -742,3 +838,3 @@ this.updatePhishingDetector();

}
_PhishingController_detector = new WeakMap(), _PhishingController_stalelistRefreshInterval = new WeakMap(), _PhishingController_hotlistRefreshInterval = new WeakMap(), _PhishingController_c2DomainBlocklistRefreshInterval = new WeakMap(), _PhishingController_urlScanCache = new WeakMap(), _PhishingController_tokenScanCache = new WeakMap(), _PhishingController_inProgressHotlistUpdate = new WeakMap(), _PhishingController_inProgressStalelistUpdate = new WeakMap(), _PhishingController_isProgressC2DomainBlocklistUpdate = new WeakMap(), _PhishingController_transactionControllerStateChangeHandler = new WeakMap(), _PhishingController_fetchTokenScanBulkResults = new WeakMap(), _PhishingController_processBatch = new WeakMap(), _PhishingController_instances = new WeakSet(), _PhishingController_subscribeToTransactionControllerStateChange = function _PhishingController_subscribeToTransactionControllerStateChange() {
_PhishingController_detector = new WeakMap(), _PhishingController_stalelistRefreshInterval = new WeakMap(), _PhishingController_hotlistRefreshInterval = new WeakMap(), _PhishingController_c2DomainBlocklistRefreshInterval = new WeakMap(), _PhishingController_urlScanCache = new WeakMap(), _PhishingController_tokenScanCache = new WeakMap(), _PhishingController_addressScanCache = new WeakMap(), _PhishingController_inProgressHotlistUpdate = new WeakMap(), _PhishingController_inProgressStalelistUpdate = new WeakMap(), _PhishingController_isProgressC2DomainBlocklistUpdate = new WeakMap(), _PhishingController_transactionControllerStateChangeHandler = new WeakMap(), _PhishingController_fetchTokenScanBulkResults = new WeakMap(), _PhishingController_processBatch = new WeakMap(), _PhishingController_instances = new WeakSet(), _PhishingController_subscribeToTransactionControllerStateChange = function _PhishingController_subscribeToTransactionControllerStateChange() {
this.messenger.subscribe('TransactionController:stateChange', __classPrivateFieldGet(this, _PhishingController_transactionControllerStateChangeHandler, "f"));

@@ -750,2 +846,3 @@ }, _PhishingController_registerMessageHandlers = function _PhishingController_registerMessageHandlers() {

this.messenger.registerActionHandler(`${controllerName}:bulkScanTokens`, this.bulkScanTokens.bind(this));
this.messenger.registerActionHandler(`${controllerName}:scanAddress`, this.scanAddress.bind(this));
}, _PhishingController_isTransactionPatch = function _PhishingController_isTransactionPatch(patch) {

@@ -752,0 +849,0 @@ const { path } = patch;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DEFAULT_CHAIN_ID_TO_NAME = exports.TokenScanResultType = exports.RecommendedAction = exports.PhishingDetectorResultType = void 0;
exports.AddressScanResultType = exports.DEFAULT_CHAIN_ID_TO_NAME = exports.TokenScanResultType = exports.RecommendedAction = exports.PhishingDetectorResultType = void 0;
/**

@@ -96,3 +96,39 @@ * The type of list in which the domain was found.

'0x127': 'hedera',
'0x12c': 'zksync-sepolia',
'0xaa36a7': 'ethereum-sepolia',
'0xa869': 'avalanche-fuji',
'0x343b': 'immutable-zkevm',
'0x34a1': 'immutable-zkevm-testnet',
'0x64': 'gnosis',
'0x1e0': 'worldchain',
'0x8173': 'apechain',
'0x138c5': 'berachain-bartio',
'0xdef1': 'ink',
'0xba5ed': 'ink-sepolia',
'0x2b74': 'abstract-testnet',
'0x531': 'sei',
'0x2eb': 'flow-evm',
};
/**
* Result type of an address scan
*/
var AddressScanResultType;
(function (AddressScanResultType) {
/**
* Address is benign/safe
*/
AddressScanResultType["Benign"] = "Benign";
/**
* Address has warning indicators
*/
AddressScanResultType["Warning"] = "Warning";
/**
* Address is malicious
*/
AddressScanResultType["Malicious"] = "Malicious";
/**
* Error occurred during scan
*/
AddressScanResultType["ErrorResult"] = "ErrorResult";
})(AddressScanResultType || (exports.AddressScanResultType = AddressScanResultType = {}));
//# sourceMappingURL=types.cjs.map

@@ -1,1 +0,1 @@

{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAsCA;;GAEG;AACH,IAAY,0BA+BX;AA/BD,WAAY,0BAA0B;IACpC;;OAEG;IACH,yCAAW,CAAA;IACX;;OAEG;IACH,6CAAe,CAAA;IACf;;OAEG;IACH,qDAAuB,CAAA;IACvB;;OAEG;IACH,qDAAuB,CAAA;IACvB;;;OAGG;IACH,qDAAuB,CAAA;IACvB;;;OAGG;IACH,qDAAuB,CAAA;IACvB;;OAEG;IACH,qEAAuC,CAAA;AACzC,CAAC,EA/BW,0BAA0B,0CAA1B,0BAA0B,QA+BrC;AA8BD;;GAEG;AACH,IAAY,iBAkBX;AAlBD,WAAY,iBAAiB;IAC3B;;OAEG;IACH,kCAAa,CAAA;IACb;;OAEG;IACH,kCAAa,CAAA;IACb;;OAEG;IACH,oCAAe,CAAA;IACf;;;OAGG;IACH,0CAAqB,CAAA;AACvB,CAAC,EAlBW,iBAAiB,iCAAjB,iBAAiB,QAkB5B;AAUD;;GAEG;AACH,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,0CAAmB,CAAA;IACnB,8CAAuB,CAAA;IACvB,oCAAa,CAAA;AACf,CAAC,EALW,mBAAmB,mCAAnB,mBAAmB,QAK9B;AAoCY,QAAA,wBAAwB,GAAG;IACtC,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,UAAU;IACjB,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,OAAO;IACjB,YAAY,EAAE,OAAO;IACrB,OAAO,EAAE,QAAQ;IACjB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,OAAO;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,gBAAgB;IACzB,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,QAAQ;CACT,CAAC","sourcesContent":["/**\n * Represents the result of checking a domain.\n */\nexport type PhishingDetectorResult = {\n /**\n * The name of the configuration object in which the domain was found within\n * an allowlist, blocklist, or fuzzylist.\n */\n name?: string;\n /**\n * The version associated with the configuration object in which the domain\n * was found within an allowlist, blocklist, or fuzzylist.\n */\n version?: string;\n /**\n * Whether the domain is regarded as allowed (true) or not (false).\n */\n result: boolean;\n /**\n * A normalized version of the domain, which is only constructed if the domain\n * is found within a list.\n */\n match?: string;\n /**\n * Which type of list in which the domain was found.\n *\n * - \"allowlist\" means that the domain was found in the allowlist.\n * - \"blocklist\" means that the domain was found in the blocklist.\n * - \"fuzzy\" means that the domain was found in the fuzzylist.\n * - \"blacklist\" means that the domain was found in a blacklist of a legacy\n * configuration object.\n * - \"whitelist\" means that the domain was found in a whitelist of a legacy\n * configuration object.\n * - \"all\" means that the domain was not found in any list.\n */\n type: PhishingDetectorResultType;\n};\n\n/**\n * The type of list in which the domain was found.\n */\nexport enum PhishingDetectorResultType {\n /*\n * \"all\" means that the domain was not found in any list.\n */\n All = 'all',\n /*\n * \"fuzzy\" means that the domain was found in the fuzzylist.\n */\n Fuzzy = 'fuzzy',\n /*\n * \"blocklist\" means that the domain was found in the blocklist.\n */\n Blocklist = 'blocklist',\n /*\n * \"allowlist\" means that the domain was found in the allowlist.\n */\n Allowlist = 'allowlist',\n /*\n * \"blacklist\" means that the domain was found in a blacklist of a legacy\n * configuration object.\n */\n Blacklist = 'blacklist',\n /*\n * \"whitelist\" means that the domain was found in a whitelist of a legacy\n * configuration object.\n */\n Whitelist = 'whitelist',\n /*\n * \"c2DomainBlocklist\" means that the domain was found in the C2 domain blocklist.\n */\n C2DomainBlocklist = 'c2DomainBlocklist',\n}\n\n/**\n * PhishingDetectionScanResult represents the result of a phishing detection scan.\n */\nexport type PhishingDetectionScanResult = {\n /**\n * The hostname that was scanned.\n */\n hostname: string;\n /**\n * Indicates the warning level based on risk factors.\n *\n * - \"NONE\" means it is most likely safe.\n * - \"WARN\" means there is some risk.\n * - \"BLOCK\" means it is highly likely to be malicious.\n * - \"VERIFIED\" means it has been associated as an official domain of a\n * company or organization and/or a top Web3 domain.\n */\n recommendedAction: RecommendedAction;\n /**\n * An optional error message that exists if:\n * - The link requested is not a valid web URL.\n * - Failed to fetch the result from the phishing detector.\n *\n * Consumers can use the existence of this field to retry.\n */\n fetchError?: string;\n};\n\n/**\n * Indicates the warning level based on risk factors\n */\nexport enum RecommendedAction {\n /**\n * None means it is most likely safe\n */\n None = 'NONE',\n /**\n * Warn means there is some risk\n */\n Warn = 'WARN',\n /**\n * Block means it is highly likely to be malicious\n */\n Block = 'BLOCK',\n /**\n * Verified means it has been associated as an official domain of a\n * company or organization and/or a top Web3 domain.\n */\n Verified = 'VERIFIED',\n}\n\n/**\n * Request for bulk token scan\n */\nexport type BulkTokenScanRequest = {\n chainId: string;\n tokens: string[];\n};\n\n/**\n * Result type of a token scan\n */\nexport enum TokenScanResultType {\n Benign = 'Benign',\n Warning = 'Warning',\n Malicious = 'Malicious',\n Spam = 'Spam',\n}\n\n/**\n * Result of a token scan\n */\nexport type TokenScanResult = {\n result_type: TokenScanResultType;\n chain: string;\n address: string;\n};\n\n/**\n * Response for bulk token scan requests\n */\nexport type BulkTokenScanResponse = Record<string, TokenScanResult>;\n\n/**\n * Token data stored in cache (excludes chain and address which are in the key)\n * For now, we only cache the result type, but we could add more data if needed in the future\n */\nexport type TokenScanCacheData = Omit<TokenScanResult, 'chain' | 'address'>;\n\n/**\n * API response from the bulk token scanning endpoint\n */\nexport type TokenScanApiResponse = {\n results: Record<\n string,\n {\n result_type: TokenScanResultType;\n chain?: string;\n address?: string;\n }\n >;\n};\n\nexport const DEFAULT_CHAIN_ID_TO_NAME = {\n '0x1': 'ethereum',\n '0x89': 'polygon',\n '0x38': 'bsc',\n '0xa4b1': 'arbitrum',\n '0xa86a': 'avalanche',\n '0x2105': 'base',\n '0xa': 'optimism',\n '0x76adf1': 'zora',\n '0xe708': 'linea',\n '0x27bc86aa': 'degen',\n '0x144': 'zksync',\n '0x82750': 'scroll',\n '0x13e31': 'blast',\n '0x74c': 'soneium',\n '0x79a': 'soneium-minato',\n '0x14a34': 'base-sepolia',\n '0xab5': 'abstract',\n '0x849ea': 'zero-network',\n '0x138de': 'berachain',\n '0x82': 'unichain',\n '0x7e4': 'ronin',\n '0x127': 'hedera',\n} as const;\n\nexport type ChainIdToNameMap = typeof DEFAULT_CHAIN_ID_TO_NAME;\n"]}
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAsCA;;GAEG;AACH,IAAY,0BA+BX;AA/BD,WAAY,0BAA0B;IACpC;;OAEG;IACH,yCAAW,CAAA;IACX;;OAEG;IACH,6CAAe,CAAA;IACf;;OAEG;IACH,qDAAuB,CAAA;IACvB;;OAEG;IACH,qDAAuB,CAAA;IACvB;;;OAGG;IACH,qDAAuB,CAAA;IACvB;;;OAGG;IACH,qDAAuB,CAAA;IACvB;;OAEG;IACH,qEAAuC,CAAA;AACzC,CAAC,EA/BW,0BAA0B,0CAA1B,0BAA0B,QA+BrC;AA8BD;;GAEG;AACH,IAAY,iBAkBX;AAlBD,WAAY,iBAAiB;IAC3B;;OAEG;IACH,kCAAa,CAAA;IACb;;OAEG;IACH,kCAAa,CAAA;IACb;;OAEG;IACH,oCAAe,CAAA;IACf;;;OAGG;IACH,0CAAqB,CAAA;AACvB,CAAC,EAlBW,iBAAiB,iCAAjB,iBAAiB,QAkB5B;AAUD;;GAEG;AACH,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,0CAAmB,CAAA;IACnB,8CAAuB,CAAA;IACvB,oCAAa,CAAA;AACf,CAAC,EALW,mBAAmB,mCAAnB,mBAAmB,QAK9B;AAoCY,QAAA,wBAAwB,GAAG;IACtC,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,UAAU;IACjB,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,OAAO;IACjB,YAAY,EAAE,OAAO;IACrB,OAAO,EAAE,QAAQ;IACjB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,OAAO;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,gBAAgB;IACzB,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,gBAAgB;IACzB,UAAU,EAAE,kBAAkB;IAC9B,QAAQ,EAAE,gBAAgB;IAC1B,QAAQ,EAAE,iBAAiB;IAC3B,QAAQ,EAAE,yBAAyB;IACnC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,kBAAkB;IAC7B,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,aAAa;IACxB,QAAQ,EAAE,kBAAkB;IAC5B,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,UAAU;CACX,CAAC;AAIX;;GAEG;AACH,IAAY,qBAiBX;AAjBD,WAAY,qBAAqB;IAC/B;;OAEG;IACH,0CAAiB,CAAA;IACjB;;OAEG;IACH,4CAAmB,CAAA;IACnB;;OAEG;IACH,gDAAuB,CAAA;IACvB;;OAEG;IACH,oDAA2B,CAAA;AAC7B,CAAC,EAjBW,qBAAqB,qCAArB,qBAAqB,QAiBhC","sourcesContent":["/**\n * Represents the result of checking a domain.\n */\nexport type PhishingDetectorResult = {\n /**\n * The name of the configuration object in which the domain was found within\n * an allowlist, blocklist, or fuzzylist.\n */\n name?: string;\n /**\n * The version associated with the configuration object in which the domain\n * was found within an allowlist, blocklist, or fuzzylist.\n */\n version?: string;\n /**\n * Whether the domain is regarded as allowed (true) or not (false).\n */\n result: boolean;\n /**\n * A normalized version of the domain, which is only constructed if the domain\n * is found within a list.\n */\n match?: string;\n /**\n * Which type of list in which the domain was found.\n *\n * - \"allowlist\" means that the domain was found in the allowlist.\n * - \"blocklist\" means that the domain was found in the blocklist.\n * - \"fuzzy\" means that the domain was found in the fuzzylist.\n * - \"blacklist\" means that the domain was found in a blacklist of a legacy\n * configuration object.\n * - \"whitelist\" means that the domain was found in a whitelist of a legacy\n * configuration object.\n * - \"all\" means that the domain was not found in any list.\n */\n type: PhishingDetectorResultType;\n};\n\n/**\n * The type of list in which the domain was found.\n */\nexport enum PhishingDetectorResultType {\n /*\n * \"all\" means that the domain was not found in any list.\n */\n All = 'all',\n /*\n * \"fuzzy\" means that the domain was found in the fuzzylist.\n */\n Fuzzy = 'fuzzy',\n /*\n * \"blocklist\" means that the domain was found in the blocklist.\n */\n Blocklist = 'blocklist',\n /*\n * \"allowlist\" means that the domain was found in the allowlist.\n */\n Allowlist = 'allowlist',\n /*\n * \"blacklist\" means that the domain was found in a blacklist of a legacy\n * configuration object.\n */\n Blacklist = 'blacklist',\n /*\n * \"whitelist\" means that the domain was found in a whitelist of a legacy\n * configuration object.\n */\n Whitelist = 'whitelist',\n /*\n * \"c2DomainBlocklist\" means that the domain was found in the C2 domain blocklist.\n */\n C2DomainBlocklist = 'c2DomainBlocklist',\n}\n\n/**\n * PhishingDetectionScanResult represents the result of a phishing detection scan.\n */\nexport type PhishingDetectionScanResult = {\n /**\n * The hostname that was scanned.\n */\n hostname: string;\n /**\n * Indicates the warning level based on risk factors.\n *\n * - \"NONE\" means it is most likely safe.\n * - \"WARN\" means there is some risk.\n * - \"BLOCK\" means it is highly likely to be malicious.\n * - \"VERIFIED\" means it has been associated as an official domain of a\n * company or organization and/or a top Web3 domain.\n */\n recommendedAction: RecommendedAction;\n /**\n * An optional error message that exists if:\n * - The link requested is not a valid web URL.\n * - Failed to fetch the result from the phishing detector.\n *\n * Consumers can use the existence of this field to retry.\n */\n fetchError?: string;\n};\n\n/**\n * Indicates the warning level based on risk factors\n */\nexport enum RecommendedAction {\n /**\n * None means it is most likely safe\n */\n None = 'NONE',\n /**\n * Warn means there is some risk\n */\n Warn = 'WARN',\n /**\n * Block means it is highly likely to be malicious\n */\n Block = 'BLOCK',\n /**\n * Verified means it has been associated as an official domain of a\n * company or organization and/or a top Web3 domain.\n */\n Verified = 'VERIFIED',\n}\n\n/**\n * Request for bulk token scan\n */\nexport type BulkTokenScanRequest = {\n chainId: string;\n tokens: string[];\n};\n\n/**\n * Result type of a token scan\n */\nexport enum TokenScanResultType {\n Benign = 'Benign',\n Warning = 'Warning',\n Malicious = 'Malicious',\n Spam = 'Spam',\n}\n\n/**\n * Result of a token scan\n */\nexport type TokenScanResult = {\n result_type: TokenScanResultType;\n chain: string;\n address: string;\n};\n\n/**\n * Response for bulk token scan requests\n */\nexport type BulkTokenScanResponse = Record<string, TokenScanResult>;\n\n/**\n * Token data stored in cache (excludes chain and address which are in the key)\n * For now, we only cache the result type, but we could add more data if needed in the future\n */\nexport type TokenScanCacheData = Omit<TokenScanResult, 'chain' | 'address'>;\n\n/**\n * API response from the bulk token scanning endpoint\n */\nexport type TokenScanApiResponse = {\n results: Record<\n string,\n {\n result_type: TokenScanResultType;\n chain?: string;\n address?: string;\n }\n >;\n};\n\nexport const DEFAULT_CHAIN_ID_TO_NAME = {\n '0x1': 'ethereum',\n '0x89': 'polygon',\n '0x38': 'bsc',\n '0xa4b1': 'arbitrum',\n '0xa86a': 'avalanche',\n '0x2105': 'base',\n '0xa': 'optimism',\n '0x76adf1': 'zora',\n '0xe708': 'linea',\n '0x27bc86aa': 'degen',\n '0x144': 'zksync',\n '0x82750': 'scroll',\n '0x13e31': 'blast',\n '0x74c': 'soneium',\n '0x79a': 'soneium-minato',\n '0x14a34': 'base-sepolia',\n '0xab5': 'abstract',\n '0x849ea': 'zero-network',\n '0x138de': 'berachain',\n '0x82': 'unichain',\n '0x7e4': 'ronin',\n '0x127': 'hedera',\n '0x12c': 'zksync-sepolia',\n '0xaa36a7': 'ethereum-sepolia',\n '0xa869': 'avalanche-fuji',\n '0x343b': 'immutable-zkevm',\n '0x34a1': 'immutable-zkevm-testnet',\n '0x64': 'gnosis',\n '0x1e0': 'worldchain',\n '0x8173': 'apechain',\n '0x138c5': 'berachain-bartio',\n '0xdef1': 'ink',\n '0xba5ed': 'ink-sepolia',\n '0x2b74': 'abstract-testnet',\n '0x531': 'sei',\n '0x2eb': 'flow-evm',\n} as const;\n\nexport type ChainIdToNameMap = typeof DEFAULT_CHAIN_ID_TO_NAME;\n\n/**\n * Result type of an address scan\n */\nexport enum AddressScanResultType {\n /**\n * Address is benign/safe\n */\n Benign = 'Benign',\n /**\n * Address has warning indicators\n */\n Warning = 'Warning',\n /**\n * Address is malicious\n */\n Malicious = 'Malicious',\n /**\n * Error occurred during scan\n */\n ErrorResult = 'ErrorResult',\n}\n\n/**\n * Result of an address security scan\n */\nexport type AddressScanResult = {\n /**\n * The result type indicating the security assessment\n */\n result_type: AddressScanResultType;\n /**\n * Additional label or description for the result\n */\n label: string;\n};\n\n/**\n * Address data stored in cache (minimal data needed)\n */\nexport type AddressScanCacheData = {\n result_type: AddressScanResultType;\n label: string;\n};\n"]}

@@ -165,4 +165,59 @@ /**

readonly '0x127': "hedera";
readonly '0x12c': "zksync-sepolia";
readonly '0xaa36a7': "ethereum-sepolia";
readonly '0xa869': "avalanche-fuji";
readonly '0x343b': "immutable-zkevm";
readonly '0x34a1': "immutable-zkevm-testnet";
readonly '0x64': "gnosis";
readonly '0x1e0': "worldchain";
readonly '0x8173': "apechain";
readonly '0x138c5': "berachain-bartio";
readonly '0xdef1': "ink";
readonly '0xba5ed': "ink-sepolia";
readonly '0x2b74': "abstract-testnet";
readonly '0x531': "sei";
readonly '0x2eb': "flow-evm";
};
export type ChainIdToNameMap = typeof DEFAULT_CHAIN_ID_TO_NAME;
/**
* Result type of an address scan
*/
export declare enum AddressScanResultType {
/**
* Address is benign/safe
*/
Benign = "Benign",
/**
* Address has warning indicators
*/
Warning = "Warning",
/**
* Address is malicious
*/
Malicious = "Malicious",
/**
* Error occurred during scan
*/
ErrorResult = "ErrorResult"
}
/**
* Result of an address security scan
*/
export type AddressScanResult = {
/**
* The result type indicating the security assessment
*/
result_type: AddressScanResultType;
/**
* Additional label or description for the result
*/
label: string;
};
/**
* Address data stored in cache (minimal data needed)
*/
export type AddressScanCacheData = {
result_type: AddressScanResultType;
label: string;
};
//# sourceMappingURL=types.d.cts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;OAWG;IACH,IAAI,EAAE,0BAA0B,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,oBAAY,0BAA0B;IAIpC,GAAG,QAAQ;IAIX,KAAK,UAAU;IAIf,SAAS,cAAc;IAIvB,SAAS,cAAc;IAKvB,SAAS,cAAc;IAKvB,SAAS,cAAc;IAIvB,iBAAiB,sBAAsB;CACxC;AAED;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,iBAAiB,EAAE,iBAAiB,CAAC;IACrC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,KAAK,UAAU;IACf;;;OAGG;IACH,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,oBAAY,mBAAmB;IAC7B,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,IAAI,SAAS;CACd;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,mBAAmB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAEpE;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CACb,MAAM,EACN;QACE,WAAW,EAAE,mBAAmB,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CACF,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;CAuB3B,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,OAAO,wBAAwB,CAAC"}
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;OAWG;IACH,IAAI,EAAE,0BAA0B,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,oBAAY,0BAA0B;IAIpC,GAAG,QAAQ;IAIX,KAAK,UAAU;IAIf,SAAS,cAAc;IAIvB,SAAS,cAAc;IAKvB,SAAS,cAAc;IAKvB,SAAS,cAAc;IAIvB,iBAAiB,sBAAsB;CACxC;AAED;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,iBAAiB,EAAE,iBAAiB,CAAC;IACrC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,KAAK,UAAU;IACf;;;OAGG;IACH,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,oBAAY,mBAAmB;IAC7B,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,IAAI,SAAS;CACd;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,mBAAmB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAEpE;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CACb,MAAM,EACN;QACE,WAAW,EAAE,mBAAmB,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CACF,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC3B,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,OAAO,wBAAwB,CAAC;AAE/D;;GAEG;AACH,oBAAY,qBAAqB;IAC/B;;OAEG;IACH,MAAM,WAAW;IACjB;;OAEG;IACH,OAAO,YAAY;IACnB;;OAEG;IACH,SAAS,cAAc;IACvB;;OAEG;IACH,WAAW,gBAAgB;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,WAAW,EAAE,qBAAqB,CAAC;IACnC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,qBAAqB,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}

@@ -165,4 +165,59 @@ /**

readonly '0x127': "hedera";
readonly '0x12c': "zksync-sepolia";
readonly '0xaa36a7': "ethereum-sepolia";
readonly '0xa869': "avalanche-fuji";
readonly '0x343b': "immutable-zkevm";
readonly '0x34a1': "immutable-zkevm-testnet";
readonly '0x64': "gnosis";
readonly '0x1e0': "worldchain";
readonly '0x8173': "apechain";
readonly '0x138c5': "berachain-bartio";
readonly '0xdef1': "ink";
readonly '0xba5ed': "ink-sepolia";
readonly '0x2b74': "abstract-testnet";
readonly '0x531': "sei";
readonly '0x2eb': "flow-evm";
};
export type ChainIdToNameMap = typeof DEFAULT_CHAIN_ID_TO_NAME;
/**
* Result type of an address scan
*/
export declare enum AddressScanResultType {
/**
* Address is benign/safe
*/
Benign = "Benign",
/**
* Address has warning indicators
*/
Warning = "Warning",
/**
* Address is malicious
*/
Malicious = "Malicious",
/**
* Error occurred during scan
*/
ErrorResult = "ErrorResult"
}
/**
* Result of an address security scan
*/
export type AddressScanResult = {
/**
* The result type indicating the security assessment
*/
result_type: AddressScanResultType;
/**
* Additional label or description for the result
*/
label: string;
};
/**
* Address data stored in cache (minimal data needed)
*/
export type AddressScanCacheData = {
result_type: AddressScanResultType;
label: string;
};
//# sourceMappingURL=types.d.mts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;OAWG;IACH,IAAI,EAAE,0BAA0B,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,oBAAY,0BAA0B;IAIpC,GAAG,QAAQ;IAIX,KAAK,UAAU;IAIf,SAAS,cAAc;IAIvB,SAAS,cAAc;IAKvB,SAAS,cAAc;IAKvB,SAAS,cAAc;IAIvB,iBAAiB,sBAAsB;CACxC;AAED;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,iBAAiB,EAAE,iBAAiB,CAAC;IACrC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,KAAK,UAAU;IACf;;;OAGG;IACH,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,oBAAY,mBAAmB;IAC7B,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,IAAI,SAAS;CACd;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,mBAAmB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAEpE;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CACb,MAAM,EACN;QACE,WAAW,EAAE,mBAAmB,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CACF,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;CAuB3B,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,OAAO,wBAAwB,CAAC"}
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;OAWG;IACH,IAAI,EAAE,0BAA0B,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,oBAAY,0BAA0B;IAIpC,GAAG,QAAQ;IAIX,KAAK,UAAU;IAIf,SAAS,cAAc;IAIvB,SAAS,cAAc;IAKvB,SAAS,cAAc;IAKvB,SAAS,cAAc;IAIvB,iBAAiB,sBAAsB;CACxC;AAED;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,iBAAiB,EAAE,iBAAiB,CAAC;IACrC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,KAAK,UAAU;IACf;;;OAGG;IACH,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,oBAAY,mBAAmB;IAC7B,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,IAAI,SAAS;CACd;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,mBAAmB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAEpE;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CACb,MAAM,EACN;QACE,WAAW,EAAE,mBAAmB,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CACF,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC3B,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,OAAO,wBAAwB,CAAC;AAE/D;;GAEG;AACH,oBAAY,qBAAqB;IAC/B;;OAEG;IACH,MAAM,WAAW;IACjB;;OAEG;IACH,OAAO,YAAY;IACnB;;OAEG;IACH,SAAS,cAAc;IACvB;;OAEG;IACH,WAAW,gBAAgB;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,WAAW,EAAE,qBAAqB,CAAC;IACnC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,qBAAqB,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}

@@ -93,3 +93,39 @@ /**

'0x127': 'hedera',
'0x12c': 'zksync-sepolia',
'0xaa36a7': 'ethereum-sepolia',
'0xa869': 'avalanche-fuji',
'0x343b': 'immutable-zkevm',
'0x34a1': 'immutable-zkevm-testnet',
'0x64': 'gnosis',
'0x1e0': 'worldchain',
'0x8173': 'apechain',
'0x138c5': 'berachain-bartio',
'0xdef1': 'ink',
'0xba5ed': 'ink-sepolia',
'0x2b74': 'abstract-testnet',
'0x531': 'sei',
'0x2eb': 'flow-evm',
};
/**
* Result type of an address scan
*/
export var AddressScanResultType;
(function (AddressScanResultType) {
/**
* Address is benign/safe
*/
AddressScanResultType["Benign"] = "Benign";
/**
* Address has warning indicators
*/
AddressScanResultType["Warning"] = "Warning";
/**
* Address is malicious
*/
AddressScanResultType["Malicious"] = "Malicious";
/**
* Error occurred during scan
*/
AddressScanResultType["ErrorResult"] = "ErrorResult";
})(AddressScanResultType || (AddressScanResultType = {}));
//# sourceMappingURL=types.mjs.map

@@ -1,1 +0,1 @@

{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAsCA;;GAEG;AACH,MAAM,CAAN,IAAY,0BA+BX;AA/BD,WAAY,0BAA0B;IACpC;;OAEG;IACH,yCAAW,CAAA;IACX;;OAEG;IACH,6CAAe,CAAA;IACf;;OAEG;IACH,qDAAuB,CAAA;IACvB;;OAEG;IACH,qDAAuB,CAAA;IACvB;;;OAGG;IACH,qDAAuB,CAAA;IACvB;;;OAGG;IACH,qDAAuB,CAAA;IACvB;;OAEG;IACH,qEAAuC,CAAA;AACzC,CAAC,EA/BW,0BAA0B,KAA1B,0BAA0B,QA+BrC;AA8BD;;GAEG;AACH,MAAM,CAAN,IAAY,iBAkBX;AAlBD,WAAY,iBAAiB;IAC3B;;OAEG;IACH,kCAAa,CAAA;IACb;;OAEG;IACH,kCAAa,CAAA;IACb;;OAEG;IACH,oCAAe,CAAA;IACf;;;OAGG;IACH,0CAAqB,CAAA;AACvB,CAAC,EAlBW,iBAAiB,KAAjB,iBAAiB,QAkB5B;AAUD;;GAEG;AACH,MAAM,CAAN,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,0CAAmB,CAAA;IACnB,8CAAuB,CAAA;IACvB,oCAAa,CAAA;AACf,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,QAK9B;AAoCD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,UAAU;IACjB,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,OAAO;IACjB,YAAY,EAAE,OAAO;IACrB,OAAO,EAAE,QAAQ;IACjB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,OAAO;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,gBAAgB;IACzB,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,QAAQ;CACT,CAAC","sourcesContent":["/**\n * Represents the result of checking a domain.\n */\nexport type PhishingDetectorResult = {\n /**\n * The name of the configuration object in which the domain was found within\n * an allowlist, blocklist, or fuzzylist.\n */\n name?: string;\n /**\n * The version associated with the configuration object in which the domain\n * was found within an allowlist, blocklist, or fuzzylist.\n */\n version?: string;\n /**\n * Whether the domain is regarded as allowed (true) or not (false).\n */\n result: boolean;\n /**\n * A normalized version of the domain, which is only constructed if the domain\n * is found within a list.\n */\n match?: string;\n /**\n * Which type of list in which the domain was found.\n *\n * - \"allowlist\" means that the domain was found in the allowlist.\n * - \"blocklist\" means that the domain was found in the blocklist.\n * - \"fuzzy\" means that the domain was found in the fuzzylist.\n * - \"blacklist\" means that the domain was found in a blacklist of a legacy\n * configuration object.\n * - \"whitelist\" means that the domain was found in a whitelist of a legacy\n * configuration object.\n * - \"all\" means that the domain was not found in any list.\n */\n type: PhishingDetectorResultType;\n};\n\n/**\n * The type of list in which the domain was found.\n */\nexport enum PhishingDetectorResultType {\n /*\n * \"all\" means that the domain was not found in any list.\n */\n All = 'all',\n /*\n * \"fuzzy\" means that the domain was found in the fuzzylist.\n */\n Fuzzy = 'fuzzy',\n /*\n * \"blocklist\" means that the domain was found in the blocklist.\n */\n Blocklist = 'blocklist',\n /*\n * \"allowlist\" means that the domain was found in the allowlist.\n */\n Allowlist = 'allowlist',\n /*\n * \"blacklist\" means that the domain was found in a blacklist of a legacy\n * configuration object.\n */\n Blacklist = 'blacklist',\n /*\n * \"whitelist\" means that the domain was found in a whitelist of a legacy\n * configuration object.\n */\n Whitelist = 'whitelist',\n /*\n * \"c2DomainBlocklist\" means that the domain was found in the C2 domain blocklist.\n */\n C2DomainBlocklist = 'c2DomainBlocklist',\n}\n\n/**\n * PhishingDetectionScanResult represents the result of a phishing detection scan.\n */\nexport type PhishingDetectionScanResult = {\n /**\n * The hostname that was scanned.\n */\n hostname: string;\n /**\n * Indicates the warning level based on risk factors.\n *\n * - \"NONE\" means it is most likely safe.\n * - \"WARN\" means there is some risk.\n * - \"BLOCK\" means it is highly likely to be malicious.\n * - \"VERIFIED\" means it has been associated as an official domain of a\n * company or organization and/or a top Web3 domain.\n */\n recommendedAction: RecommendedAction;\n /**\n * An optional error message that exists if:\n * - The link requested is not a valid web URL.\n * - Failed to fetch the result from the phishing detector.\n *\n * Consumers can use the existence of this field to retry.\n */\n fetchError?: string;\n};\n\n/**\n * Indicates the warning level based on risk factors\n */\nexport enum RecommendedAction {\n /**\n * None means it is most likely safe\n */\n None = 'NONE',\n /**\n * Warn means there is some risk\n */\n Warn = 'WARN',\n /**\n * Block means it is highly likely to be malicious\n */\n Block = 'BLOCK',\n /**\n * Verified means it has been associated as an official domain of a\n * company or organization and/or a top Web3 domain.\n */\n Verified = 'VERIFIED',\n}\n\n/**\n * Request for bulk token scan\n */\nexport type BulkTokenScanRequest = {\n chainId: string;\n tokens: string[];\n};\n\n/**\n * Result type of a token scan\n */\nexport enum TokenScanResultType {\n Benign = 'Benign',\n Warning = 'Warning',\n Malicious = 'Malicious',\n Spam = 'Spam',\n}\n\n/**\n * Result of a token scan\n */\nexport type TokenScanResult = {\n result_type: TokenScanResultType;\n chain: string;\n address: string;\n};\n\n/**\n * Response for bulk token scan requests\n */\nexport type BulkTokenScanResponse = Record<string, TokenScanResult>;\n\n/**\n * Token data stored in cache (excludes chain and address which are in the key)\n * For now, we only cache the result type, but we could add more data if needed in the future\n */\nexport type TokenScanCacheData = Omit<TokenScanResult, 'chain' | 'address'>;\n\n/**\n * API response from the bulk token scanning endpoint\n */\nexport type TokenScanApiResponse = {\n results: Record<\n string,\n {\n result_type: TokenScanResultType;\n chain?: string;\n address?: string;\n }\n >;\n};\n\nexport const DEFAULT_CHAIN_ID_TO_NAME = {\n '0x1': 'ethereum',\n '0x89': 'polygon',\n '0x38': 'bsc',\n '0xa4b1': 'arbitrum',\n '0xa86a': 'avalanche',\n '0x2105': 'base',\n '0xa': 'optimism',\n '0x76adf1': 'zora',\n '0xe708': 'linea',\n '0x27bc86aa': 'degen',\n '0x144': 'zksync',\n '0x82750': 'scroll',\n '0x13e31': 'blast',\n '0x74c': 'soneium',\n '0x79a': 'soneium-minato',\n '0x14a34': 'base-sepolia',\n '0xab5': 'abstract',\n '0x849ea': 'zero-network',\n '0x138de': 'berachain',\n '0x82': 'unichain',\n '0x7e4': 'ronin',\n '0x127': 'hedera',\n} as const;\n\nexport type ChainIdToNameMap = typeof DEFAULT_CHAIN_ID_TO_NAME;\n"]}
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAsCA;;GAEG;AACH,MAAM,CAAN,IAAY,0BA+BX;AA/BD,WAAY,0BAA0B;IACpC;;OAEG;IACH,yCAAW,CAAA;IACX;;OAEG;IACH,6CAAe,CAAA;IACf;;OAEG;IACH,qDAAuB,CAAA;IACvB;;OAEG;IACH,qDAAuB,CAAA;IACvB;;;OAGG;IACH,qDAAuB,CAAA;IACvB;;;OAGG;IACH,qDAAuB,CAAA;IACvB;;OAEG;IACH,qEAAuC,CAAA;AACzC,CAAC,EA/BW,0BAA0B,KAA1B,0BAA0B,QA+BrC;AA8BD;;GAEG;AACH,MAAM,CAAN,IAAY,iBAkBX;AAlBD,WAAY,iBAAiB;IAC3B;;OAEG;IACH,kCAAa,CAAA;IACb;;OAEG;IACH,kCAAa,CAAA;IACb;;OAEG;IACH,oCAAe,CAAA;IACf;;;OAGG;IACH,0CAAqB,CAAA;AACvB,CAAC,EAlBW,iBAAiB,KAAjB,iBAAiB,QAkB5B;AAUD;;GAEG;AACH,MAAM,CAAN,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,0CAAmB,CAAA;IACnB,8CAAuB,CAAA;IACvB,oCAAa,CAAA;AACf,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,QAK9B;AAoCD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,UAAU;IACjB,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,OAAO;IACjB,YAAY,EAAE,OAAO;IACrB,OAAO,EAAE,QAAQ;IACjB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,OAAO;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,gBAAgB;IACzB,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,gBAAgB;IACzB,UAAU,EAAE,kBAAkB;IAC9B,QAAQ,EAAE,gBAAgB;IAC1B,QAAQ,EAAE,iBAAiB;IAC3B,QAAQ,EAAE,yBAAyB;IACnC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,kBAAkB;IAC7B,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,aAAa;IACxB,QAAQ,EAAE,kBAAkB;IAC5B,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,UAAU;CACX,CAAC;AAIX;;GAEG;AACH,MAAM,CAAN,IAAY,qBAiBX;AAjBD,WAAY,qBAAqB;IAC/B;;OAEG;IACH,0CAAiB,CAAA;IACjB;;OAEG;IACH,4CAAmB,CAAA;IACnB;;OAEG;IACH,gDAAuB,CAAA;IACvB;;OAEG;IACH,oDAA2B,CAAA;AAC7B,CAAC,EAjBW,qBAAqB,KAArB,qBAAqB,QAiBhC","sourcesContent":["/**\n * Represents the result of checking a domain.\n */\nexport type PhishingDetectorResult = {\n /**\n * The name of the configuration object in which the domain was found within\n * an allowlist, blocklist, or fuzzylist.\n */\n name?: string;\n /**\n * The version associated with the configuration object in which the domain\n * was found within an allowlist, blocklist, or fuzzylist.\n */\n version?: string;\n /**\n * Whether the domain is regarded as allowed (true) or not (false).\n */\n result: boolean;\n /**\n * A normalized version of the domain, which is only constructed if the domain\n * is found within a list.\n */\n match?: string;\n /**\n * Which type of list in which the domain was found.\n *\n * - \"allowlist\" means that the domain was found in the allowlist.\n * - \"blocklist\" means that the domain was found in the blocklist.\n * - \"fuzzy\" means that the domain was found in the fuzzylist.\n * - \"blacklist\" means that the domain was found in a blacklist of a legacy\n * configuration object.\n * - \"whitelist\" means that the domain was found in a whitelist of a legacy\n * configuration object.\n * - \"all\" means that the domain was not found in any list.\n */\n type: PhishingDetectorResultType;\n};\n\n/**\n * The type of list in which the domain was found.\n */\nexport enum PhishingDetectorResultType {\n /*\n * \"all\" means that the domain was not found in any list.\n */\n All = 'all',\n /*\n * \"fuzzy\" means that the domain was found in the fuzzylist.\n */\n Fuzzy = 'fuzzy',\n /*\n * \"blocklist\" means that the domain was found in the blocklist.\n */\n Blocklist = 'blocklist',\n /*\n * \"allowlist\" means that the domain was found in the allowlist.\n */\n Allowlist = 'allowlist',\n /*\n * \"blacklist\" means that the domain was found in a blacklist of a legacy\n * configuration object.\n */\n Blacklist = 'blacklist',\n /*\n * \"whitelist\" means that the domain was found in a whitelist of a legacy\n * configuration object.\n */\n Whitelist = 'whitelist',\n /*\n * \"c2DomainBlocklist\" means that the domain was found in the C2 domain blocklist.\n */\n C2DomainBlocklist = 'c2DomainBlocklist',\n}\n\n/**\n * PhishingDetectionScanResult represents the result of a phishing detection scan.\n */\nexport type PhishingDetectionScanResult = {\n /**\n * The hostname that was scanned.\n */\n hostname: string;\n /**\n * Indicates the warning level based on risk factors.\n *\n * - \"NONE\" means it is most likely safe.\n * - \"WARN\" means there is some risk.\n * - \"BLOCK\" means it is highly likely to be malicious.\n * - \"VERIFIED\" means it has been associated as an official domain of a\n * company or organization and/or a top Web3 domain.\n */\n recommendedAction: RecommendedAction;\n /**\n * An optional error message that exists if:\n * - The link requested is not a valid web URL.\n * - Failed to fetch the result from the phishing detector.\n *\n * Consumers can use the existence of this field to retry.\n */\n fetchError?: string;\n};\n\n/**\n * Indicates the warning level based on risk factors\n */\nexport enum RecommendedAction {\n /**\n * None means it is most likely safe\n */\n None = 'NONE',\n /**\n * Warn means there is some risk\n */\n Warn = 'WARN',\n /**\n * Block means it is highly likely to be malicious\n */\n Block = 'BLOCK',\n /**\n * Verified means it has been associated as an official domain of a\n * company or organization and/or a top Web3 domain.\n */\n Verified = 'VERIFIED',\n}\n\n/**\n * Request for bulk token scan\n */\nexport type BulkTokenScanRequest = {\n chainId: string;\n tokens: string[];\n};\n\n/**\n * Result type of a token scan\n */\nexport enum TokenScanResultType {\n Benign = 'Benign',\n Warning = 'Warning',\n Malicious = 'Malicious',\n Spam = 'Spam',\n}\n\n/**\n * Result of a token scan\n */\nexport type TokenScanResult = {\n result_type: TokenScanResultType;\n chain: string;\n address: string;\n};\n\n/**\n * Response for bulk token scan requests\n */\nexport type BulkTokenScanResponse = Record<string, TokenScanResult>;\n\n/**\n * Token data stored in cache (excludes chain and address which are in the key)\n * For now, we only cache the result type, but we could add more data if needed in the future\n */\nexport type TokenScanCacheData = Omit<TokenScanResult, 'chain' | 'address'>;\n\n/**\n * API response from the bulk token scanning endpoint\n */\nexport type TokenScanApiResponse = {\n results: Record<\n string,\n {\n result_type: TokenScanResultType;\n chain?: string;\n address?: string;\n }\n >;\n};\n\nexport const DEFAULT_CHAIN_ID_TO_NAME = {\n '0x1': 'ethereum',\n '0x89': 'polygon',\n '0x38': 'bsc',\n '0xa4b1': 'arbitrum',\n '0xa86a': 'avalanche',\n '0x2105': 'base',\n '0xa': 'optimism',\n '0x76adf1': 'zora',\n '0xe708': 'linea',\n '0x27bc86aa': 'degen',\n '0x144': 'zksync',\n '0x82750': 'scroll',\n '0x13e31': 'blast',\n '0x74c': 'soneium',\n '0x79a': 'soneium-minato',\n '0x14a34': 'base-sepolia',\n '0xab5': 'abstract',\n '0x849ea': 'zero-network',\n '0x138de': 'berachain',\n '0x82': 'unichain',\n '0x7e4': 'ronin',\n '0x127': 'hedera',\n '0x12c': 'zksync-sepolia',\n '0xaa36a7': 'ethereum-sepolia',\n '0xa869': 'avalanche-fuji',\n '0x343b': 'immutable-zkevm',\n '0x34a1': 'immutable-zkevm-testnet',\n '0x64': 'gnosis',\n '0x1e0': 'worldchain',\n '0x8173': 'apechain',\n '0x138c5': 'berachain-bartio',\n '0xdef1': 'ink',\n '0xba5ed': 'ink-sepolia',\n '0x2b74': 'abstract-testnet',\n '0x531': 'sei',\n '0x2eb': 'flow-evm',\n} as const;\n\nexport type ChainIdToNameMap = typeof DEFAULT_CHAIN_ID_TO_NAME;\n\n/**\n * Result type of an address scan\n */\nexport enum AddressScanResultType {\n /**\n * Address is benign/safe\n */\n Benign = 'Benign',\n /**\n * Address has warning indicators\n */\n Warning = 'Warning',\n /**\n * Address is malicious\n */\n Malicious = 'Malicious',\n /**\n * Error occurred during scan\n */\n ErrorResult = 'ErrorResult',\n}\n\n/**\n * Result of an address security scan\n */\nexport type AddressScanResult = {\n /**\n * The result type indicating the security assessment\n */\n result_type: AddressScanResultType;\n /**\n * Additional label or description for the result\n */\n label: string;\n};\n\n/**\n * Address data stored in cache (minimal data needed)\n */\nexport type AddressScanCacheData = {\n result_type: AddressScanResultType;\n label: string;\n};\n"]}

@@ -182,2 +182,16 @@ import type { Hotlist, PhishingListState } from "./PhishingController.cjs";

readonly '0x127': "hedera";
readonly '0x12c': "zksync-sepolia";
readonly '0xaa36a7': "ethereum-sepolia";
readonly '0xa869': "avalanche-fuji";
readonly '0x343b': "immutable-zkevm";
readonly '0x34a1': "immutable-zkevm-testnet";
readonly '0x64': "gnosis";
readonly '0x1e0': "worldchain";
readonly '0x8173': "apechain";
readonly '0x138c5': "berachain-bartio";
readonly '0xdef1': "ink";
readonly '0xba5ed': "ink-sepolia";
readonly '0x2b74': "abstract-testnet";
readonly '0x531': "sei";
readonly '0x2eb': "flow-evm";
}) => string | null;

@@ -184,0 +198,0 @@ /**

@@ -1,1 +0,1 @@

{"version":3,"file":"utils.d.cts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,iCAA6B;AACvE,OAAO,EAAE,QAAQ,EAA0B,iCAA6B;AACxE,OAAO,KAAK,EACV,oBAAoB,EACpB,6BAA6B,EAC9B,+BAA2B;AAC5B,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,oBAAgB;AAIjB;;;;GAIG;AACH,eAAO,MAAM,YAAY,QAAO,MAAuC,CAAC;AAExE;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAElE;AAkBD,eAAO,MAAM,4BAA4B,QAClC,MAAM,KACV;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAiB9C,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,cACV,iBAAiB,kCAEnB,QAAQ,2BACO,MAAM,EAAE,6BACN,MAAM,EAAE,KACjC,iBAmEF,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,MAAM,IAAI,iBAAiB,CAuBrC;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,WAAY,MAAM,aAE3C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,SAAU,MAAM,EAAE,KAAG,MAAM,EAAE,EAS1D,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,gCAAgC;;;;;MAUzC,6BASH,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,aAChB,oBAAoB,EAAE,KAC9B,6BAA6B,EAe/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,gBAAiB,MAAM,EAAE,WAExD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,gBAAiB,MAAM,EAAE,WAE3D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,WAAY,MAAM,EAAE,QAAQ,MAAM,EAAE,EAAE,yBASvE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,aAAc,MAAM,KAAG,MAG7C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,QAAS,MAAM,KAAG,MAAM,GAAG,IAYzD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,QAAS,MAAM,KAAG,CAAC,MAAM,EAAE,OAAO,CAUnE,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,MAAM,KAAG,MAOhD,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,gBACnB,MAAM,EAAE,qBAEpB,MAAM,EA2BR,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,YAAa,MAAM,WAAW,MAAM,WAE7D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,YAClB,MAAM;;;;;;;;;;;;;;;;;;;;;;;MAEd,MAAM,GAAG,IAEX,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;eACL,MAAM,KAAK,kBAAkB,GAAG,SAAS;YACpD,MAAM,UACP,MAAM,EAAE;mBAED,OAAO,MAAM,EAAE,eAAe,CAAC;mBAC/B,MAAM,EAAE;CAqBxB,CAAC"}
{"version":3,"file":"utils.d.cts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,iCAA6B;AACvE,OAAO,EAAE,QAAQ,EAA0B,iCAA6B;AACxE,OAAO,KAAK,EACV,oBAAoB,EACpB,6BAA6B,EAC9B,+BAA2B;AAC5B,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,oBAAgB;AAIjB;;;;GAIG;AACH,eAAO,MAAM,YAAY,QAAO,MAAuC,CAAC;AAExE;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAElE;AAkBD,eAAO,MAAM,4BAA4B,QAClC,MAAM,KACV;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAiB9C,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,cACV,iBAAiB,kCAEnB,QAAQ,2BACO,MAAM,EAAE,6BACN,MAAM,EAAE,KACjC,iBAmEF,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,MAAM,IAAI,iBAAiB,CAuBrC;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,WAAY,MAAM,aAE3C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,SAAU,MAAM,EAAE,KAAG,MAAM,EAAE,EAS1D,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,gCAAgC;;;;;MAUzC,6BASH,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,aAChB,oBAAoB,EAAE,KAC9B,6BAA6B,EAe/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,gBAAiB,MAAM,EAAE,WAExD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,gBAAiB,MAAM,EAAE,WAE3D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,WAAY,MAAM,EAAE,QAAQ,MAAM,EAAE,EAAE,yBASvE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,aAAc,MAAM,KAAG,MAG7C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,QAAS,MAAM,KAAG,MAAM,GAAG,IAYzD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,QAAS,MAAM,KAAG,CAAC,MAAM,EAAE,OAAO,CAUnE,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,MAAM,KAAG,MAOhD,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,gBACnB,MAAM,EAAE,qBAEpB,MAAM,EA2BR,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,YAAa,MAAM,WAAW,MAAM,WAE7D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,YAClB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEd,MAAM,GAAG,IAEX,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;eACL,MAAM,KAAK,kBAAkB,GAAG,SAAS;YACpD,MAAM,UACP,MAAM,EAAE;mBAED,OAAO,MAAM,EAAE,eAAe,CAAC;mBAC/B,MAAM,EAAE;CAqBxB,CAAC"}

@@ -182,2 +182,16 @@ import type { Hotlist, PhishingListState } from "./PhishingController.mjs";

readonly '0x127': "hedera";
readonly '0x12c': "zksync-sepolia";
readonly '0xaa36a7': "ethereum-sepolia";
readonly '0xa869': "avalanche-fuji";
readonly '0x343b': "immutable-zkevm";
readonly '0x34a1': "immutable-zkevm-testnet";
readonly '0x64': "gnosis";
readonly '0x1e0': "worldchain";
readonly '0x8173': "apechain";
readonly '0x138c5': "berachain-bartio";
readonly '0xdef1': "ink";
readonly '0xba5ed': "ink-sepolia";
readonly '0x2b74': "abstract-testnet";
readonly '0x531': "sei";
readonly '0x2eb': "flow-evm";
}) => string | null;

@@ -184,0 +198,0 @@ /**

@@ -1,1 +0,1 @@

{"version":3,"file":"utils.d.mts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,iCAA6B;AACvE,OAAO,EAAE,QAAQ,EAA0B,iCAA6B;AACxE,OAAO,KAAK,EACV,oBAAoB,EACpB,6BAA6B,EAC9B,+BAA2B;AAC5B,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,oBAAgB;AAIjB;;;;GAIG;AACH,eAAO,MAAM,YAAY,QAAO,MAAuC,CAAC;AAExE;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAElE;AAkBD,eAAO,MAAM,4BAA4B,QAClC,MAAM,KACV;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAiB9C,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,cACV,iBAAiB,kCAEnB,QAAQ,2BACO,MAAM,EAAE,6BACN,MAAM,EAAE,KACjC,iBAmEF,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,MAAM,IAAI,iBAAiB,CAuBrC;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,WAAY,MAAM,aAE3C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,SAAU,MAAM,EAAE,KAAG,MAAM,EAAE,EAS1D,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,gCAAgC;;;;;MAUzC,6BASH,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,aAChB,oBAAoB,EAAE,KAC9B,6BAA6B,EAe/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,gBAAiB,MAAM,EAAE,WAExD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,gBAAiB,MAAM,EAAE,WAE3D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,WAAY,MAAM,EAAE,QAAQ,MAAM,EAAE,EAAE,yBASvE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,aAAc,MAAM,KAAG,MAG7C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,QAAS,MAAM,KAAG,MAAM,GAAG,IAYzD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,QAAS,MAAM,KAAG,CAAC,MAAM,EAAE,OAAO,CAUnE,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,MAAM,KAAG,MAOhD,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,gBACnB,MAAM,EAAE,qBAEpB,MAAM,EA2BR,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,YAAa,MAAM,WAAW,MAAM,WAE7D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,YAClB,MAAM;;;;;;;;;;;;;;;;;;;;;;;MAEd,MAAM,GAAG,IAEX,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;eACL,MAAM,KAAK,kBAAkB,GAAG,SAAS;YACpD,MAAM,UACP,MAAM,EAAE;mBAED,OAAO,MAAM,EAAE,eAAe,CAAC;mBAC/B,MAAM,EAAE;CAqBxB,CAAC"}
{"version":3,"file":"utils.d.mts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,iCAA6B;AACvE,OAAO,EAAE,QAAQ,EAA0B,iCAA6B;AACxE,OAAO,KAAK,EACV,oBAAoB,EACpB,6BAA6B,EAC9B,+BAA2B;AAC5B,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,oBAAgB;AAIjB;;;;GAIG;AACH,eAAO,MAAM,YAAY,QAAO,MAAuC,CAAC;AAExE;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAElE;AAkBD,eAAO,MAAM,4BAA4B,QAClC,MAAM,KACV;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAiB9C,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,cACV,iBAAiB,kCAEnB,QAAQ,2BACO,MAAM,EAAE,6BACN,MAAM,EAAE,KACjC,iBAmEF,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,MAAM,IAAI,iBAAiB,CAuBrC;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,WAAY,MAAM,aAE3C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,SAAU,MAAM,EAAE,KAAG,MAAM,EAAE,EAS1D,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,gCAAgC;;;;;MAUzC,6BASH,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,aAChB,oBAAoB,EAAE,KAC9B,6BAA6B,EAe/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,gBAAiB,MAAM,EAAE,WAExD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,gBAAiB,MAAM,EAAE,WAE3D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,WAAY,MAAM,EAAE,QAAQ,MAAM,EAAE,EAAE,yBASvE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,aAAc,MAAM,KAAG,MAG7C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,QAAS,MAAM,KAAG,MAAM,GAAG,IAYzD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,QAAS,MAAM,KAAG,CAAC,MAAM,EAAE,OAAO,CAUnE,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,MAAM,KAAG,MAOhD,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,gBACnB,MAAM,EAAE,qBAEpB,MAAM,EA2BR,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,YAAa,MAAM,WAAW,MAAM,WAE7D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,YAClB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEd,MAAM,GAAG,IAEX,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;eACL,MAAM,KAAK,kBAAkB,GAAG,SAAS;YACpD,MAAM,UACP,MAAM,EAAE;mBAED,OAAO,MAAM,EAAE,eAAe,CAAC;mBAC/B,MAAM,EAAE;CAqBxB,CAAC"}
{
"name": "@metamask/phishing-controller",
"version": "15.0.1",
"version": "16.0.0",
"description": "Maintains a periodically updated list of approved and unapproved website origins",

@@ -52,3 +52,3 @@ "keywords": [

"@metamask/base-controller": "^9.0.0",
"@metamask/controller-utils": "^11.15.0",
"@metamask/controller-utils": "^11.16.0",
"@metamask/messenger": "^0.3.0",

@@ -63,3 +63,3 @@ "@noble/hashes": "^1.8.0",

"@metamask/auto-changelog": "^3.4.4",
"@metamask/transaction-controller": "^61.3.0",
"@metamask/transaction-controller": "^62.0.0",
"@ts-bridge/cli": "^0.6.4",

@@ -77,3 +77,3 @@ "@types/jest": "^27.4.1",

"peerDependencies": {
"@metamask/transaction-controller": "^61.0.0"
"@metamask/transaction-controller": "^62.0.0"
},

@@ -80,0 +80,0 @@ "engines": {

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display