@metamask/name-controller 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ // Below constants are intentionally copied from transaction-controller to avoid package dependency
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ETHERSCAN_SUPPORTED_NETWORKS = exports.CHAIN_IDS = void 0;
5
+ exports.CHAIN_IDS = {
6
+ MAINNET: '0x1',
7
+ GOERLI: '0x5',
8
+ BSC: '0x38',
9
+ BSC_TESTNET: '0x61',
10
+ OPTIMISM: '0xa',
11
+ OPTIMISM_TESTNET: '0x1a4',
12
+ POLYGON: '0x89',
13
+ POLYGON_TESTNET: '0x13881',
14
+ AVALANCHE: '0xa86a',
15
+ AVALANCHE_TESTNET: '0xa869',
16
+ FANTOM: '0xfa',
17
+ FANTOM_TESTNET: '0xfa2',
18
+ SEPOLIA: '0xaa36a7',
19
+ LINEA_GOERLI: '0xe704',
20
+ LINEA_MAINNET: '0xe708',
21
+ MOONBEAM: '0x504',
22
+ MOONBEAM_TESTNET: '0x507',
23
+ MOONRIVER: '0x505',
24
+ GNOSIS: '0x64',
25
+ };
26
+ const DEFAULT_ETHERSCAN_DOMAIN = 'etherscan.io';
27
+ const DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX = 'api';
28
+ exports.ETHERSCAN_SUPPORTED_NETWORKS = {
29
+ [exports.CHAIN_IDS.GOERLI]: {
30
+ domain: DEFAULT_ETHERSCAN_DOMAIN,
31
+ subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-goerli`,
32
+ },
33
+ [exports.CHAIN_IDS.MAINNET]: {
34
+ domain: DEFAULT_ETHERSCAN_DOMAIN,
35
+ subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,
36
+ },
37
+ [exports.CHAIN_IDS.SEPOLIA]: {
38
+ domain: DEFAULT_ETHERSCAN_DOMAIN,
39
+ subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-sepolia`,
40
+ },
41
+ [exports.CHAIN_IDS.LINEA_GOERLI]: {
42
+ domain: 'lineascan.build',
43
+ subdomain: 'goerli',
44
+ },
45
+ [exports.CHAIN_IDS.LINEA_MAINNET]: {
46
+ domain: 'lineascan.build',
47
+ subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,
48
+ },
49
+ [exports.CHAIN_IDS.BSC]: {
50
+ domain: 'bscscan.com',
51
+ subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,
52
+ },
53
+ [exports.CHAIN_IDS.BSC_TESTNET]: {
54
+ domain: 'bscscan.com',
55
+ subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,
56
+ },
57
+ [exports.CHAIN_IDS.OPTIMISM]: {
58
+ domain: DEFAULT_ETHERSCAN_DOMAIN,
59
+ subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-optimistic`,
60
+ },
61
+ [exports.CHAIN_IDS.OPTIMISM_TESTNET]: {
62
+ domain: DEFAULT_ETHERSCAN_DOMAIN,
63
+ subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-goerli-optimistic`,
64
+ },
65
+ [exports.CHAIN_IDS.POLYGON]: {
66
+ domain: 'polygonscan.com',
67
+ subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,
68
+ },
69
+ [exports.CHAIN_IDS.POLYGON_TESTNET]: {
70
+ domain: 'polygonscan.com',
71
+ subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-mumbai`,
72
+ },
73
+ [exports.CHAIN_IDS.AVALANCHE]: {
74
+ domain: 'snowtrace.io',
75
+ subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,
76
+ },
77
+ [exports.CHAIN_IDS.AVALANCHE_TESTNET]: {
78
+ domain: 'snowtrace.io',
79
+ subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,
80
+ },
81
+ [exports.CHAIN_IDS.FANTOM]: {
82
+ domain: 'ftmscan.com',
83
+ subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,
84
+ },
85
+ [exports.CHAIN_IDS.FANTOM_TESTNET]: {
86
+ domain: 'ftmscan.com',
87
+ subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,
88
+ },
89
+ [exports.CHAIN_IDS.MOONBEAM]: {
90
+ domain: 'moonscan.io',
91
+ subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonbeam`,
92
+ },
93
+ [exports.CHAIN_IDS.MOONBEAM_TESTNET]: {
94
+ domain: 'moonscan.io',
95
+ subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonbase`,
96
+ },
97
+ [exports.CHAIN_IDS.MOONRIVER]: {
98
+ domain: 'moonscan.io',
99
+ subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonriver`,
100
+ },
101
+ [exports.CHAIN_IDS.GNOSIS]: {
102
+ domain: 'gnosisscan.io',
103
+ subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-gnosis`,
104
+ },
105
+ };
106
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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","sourcesContent":["// Below constants are intentionally copied from transaction-controller to avoid package dependency\n\nexport const CHAIN_IDS = {\n MAINNET: '0x1',\n GOERLI: '0x5',\n BSC: '0x38',\n BSC_TESTNET: '0x61',\n OPTIMISM: '0xa',\n OPTIMISM_TESTNET: '0x1a4',\n POLYGON: '0x89',\n POLYGON_TESTNET: '0x13881',\n AVALANCHE: '0xa86a',\n AVALANCHE_TESTNET: '0xa869',\n FANTOM: '0xfa',\n FANTOM_TESTNET: '0xfa2',\n SEPOLIA: '0xaa36a7',\n LINEA_GOERLI: '0xe704',\n LINEA_MAINNET: '0xe708',\n MOONBEAM: '0x504',\n MOONBEAM_TESTNET: '0x507',\n MOONRIVER: '0x505',\n GNOSIS: '0x64',\n} as const;\n\nconst DEFAULT_ETHERSCAN_DOMAIN = 'etherscan.io';\nconst DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX = 'api';\n\nexport const ETHERSCAN_SUPPORTED_NETWORKS = {\n [CHAIN_IDS.GOERLI]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-goerli`,\n },\n [CHAIN_IDS.MAINNET]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.SEPOLIA]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-sepolia`,\n },\n [CHAIN_IDS.LINEA_GOERLI]: {\n domain: 'lineascan.build',\n subdomain: 'goerli',\n },\n [CHAIN_IDS.LINEA_MAINNET]: {\n domain: 'lineascan.build',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.BSC]: {\n domain: 'bscscan.com',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.BSC_TESTNET]: {\n domain: 'bscscan.com',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,\n },\n [CHAIN_IDS.OPTIMISM]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-optimistic`,\n },\n [CHAIN_IDS.OPTIMISM_TESTNET]: {\n domain: DEFAULT_ETHERSCAN_DOMAIN,\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-goerli-optimistic`,\n },\n [CHAIN_IDS.POLYGON]: {\n domain: 'polygonscan.com',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.POLYGON_TESTNET]: {\n domain: 'polygonscan.com',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-mumbai`,\n },\n [CHAIN_IDS.AVALANCHE]: {\n domain: 'snowtrace.io',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.AVALANCHE_TESTNET]: {\n domain: 'snowtrace.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,\n },\n [CHAIN_IDS.FANTOM]: {\n domain: 'ftmscan.com',\n subdomain: DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX,\n },\n [CHAIN_IDS.FANTOM_TESTNET]: {\n domain: 'ftmscan.com',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-testnet`,\n },\n [CHAIN_IDS.MOONBEAM]: {\n domain: 'moonscan.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonbeam`,\n },\n [CHAIN_IDS.MOONBEAM_TESTNET]: {\n domain: 'moonscan.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonbase`,\n },\n [CHAIN_IDS.MOONRIVER]: {\n domain: 'moonscan.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-moonriver`,\n },\n [CHAIN_IDS.GNOSIS]: {\n domain: 'gnosisscan.io',\n subdomain: `${DEFAULT_ETHERSCAN_SUBDOMAIN_PREFIX}-gnosis`,\n },\n};\n"]}
@@ -0,0 +1,7 @@
1
+ export * from './NameController';
2
+ export * from './types';
3
+ export * from './providers/ens';
4
+ export * from './providers/etherscan';
5
+ export * from './providers/token';
6
+ export * from './providers/lens';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./NameController"), exports);
18
+ __exportStar(require("./types"), exports);
19
+ __exportStar(require("./providers/ens"), exports);
20
+ __exportStar(require("./providers/etherscan"), exports);
21
+ __exportStar(require("./providers/token"), exports);
22
+ __exportStar(require("./providers/lens"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,0CAAwB;AACxB,kDAAgC;AAChC,wDAAsC;AACtC,oDAAkC;AAClC,mDAAiC","sourcesContent":["export * from './NameController';\nexport * from './types';\nexport * from './providers/ens';\nexport * from './providers/etherscan';\nexport * from './providers/token';\nexport * from './providers/lens';\n"]}
@@ -0,0 +1,11 @@
1
+ import type { NameProvider, NameProviderMetadata, NameProviderRequest, NameProviderResult } from '../types';
2
+ export declare type ReverseLookupCallback = (address: string, chainId: string) => Promise<string>;
3
+ export declare class ENSNameProvider implements NameProvider {
4
+ #private;
5
+ constructor({ reverseLookup }: {
6
+ reverseLookup: ReverseLookupCallback;
7
+ });
8
+ getMetadata(): NameProviderMetadata;
9
+ getProposedNames(request: NameProviderRequest): Promise<NameProviderResult>;
10
+ }
11
+ //# sourceMappingURL=ens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ens.d.ts","sourceRoot":"","sources":["../../src/providers/ens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAGlB,oBAAY,qBAAqB,GAAG,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,MAAM,CAAC,CAAC;AAKrB,qBAAa,eAAgB,YAAW,YAAY;;gBAGtC,EAAE,aAAa,EAAE,EAAE;QAAE,aAAa,EAAE,qBAAqB,CAAA;KAAE;IAIvE,WAAW,IAAI,oBAAoB;IAO7B,gBAAgB,CACpB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC;CAU/B"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
12
+ if (kind === "m") throw new TypeError("Private method is not writable");
13
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
14
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
15
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
16
+ };
17
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
18
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
19
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
20
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
21
+ };
22
+ var _ENSNameProvider_reverseLookup;
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.ENSNameProvider = void 0;
25
+ const types_1 = require("../types");
26
+ const ID = 'ens';
27
+ const LABEL = 'Ethereum Name Service (ENS)';
28
+ class ENSNameProvider {
29
+ constructor({ reverseLookup }) {
30
+ _ENSNameProvider_reverseLookup.set(this, void 0);
31
+ __classPrivateFieldSet(this, _ENSNameProvider_reverseLookup, reverseLookup, "f");
32
+ }
33
+ getMetadata() {
34
+ return {
35
+ sourceIds: { [types_1.NameType.ETHEREUM_ADDRESS]: [ID] },
36
+ sourceLabels: { [ID]: LABEL },
37
+ };
38
+ }
39
+ getProposedNames(request) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ const { value, chainId } = request;
42
+ const proposedName = yield __classPrivateFieldGet(this, _ENSNameProvider_reverseLookup, "f").call(this, value, chainId);
43
+ return {
44
+ results: {
45
+ [ID]: { proposedNames: [proposedName] },
46
+ },
47
+ };
48
+ });
49
+ }
50
+ }
51
+ exports.ENSNameProvider = ENSNameProvider;
52
+ _ENSNameProvider_reverseLookup = new WeakMap();
53
+ //# sourceMappingURL=ens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ens.js","sourceRoot":"","sources":["../../src/providers/ens.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAMA,oCAAoC;AAOpC,MAAM,EAAE,GAAG,KAAK,CAAC;AACjB,MAAM,KAAK,GAAG,6BAA6B,CAAC;AAE5C,MAAa,eAAe;IAG1B,YAAY,EAAE,aAAa,EAA4C;QAFvE,iDAAsC;QAGpC,uBAAA,IAAI,kCAAkB,aAAa,MAAA,CAAC;IACtC,CAAC;IAED,WAAW;QACT,OAAO;YACL,SAAS,EAAE,EAAE,CAAC,gBAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YAChD,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;SAC9B,CAAC;IACJ,CAAC;IAEK,gBAAgB,CACpB,OAA4B;;YAE5B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YACnC,MAAM,YAAY,GAAG,MAAM,uBAAA,IAAI,sCAAe,MAAnB,IAAI,EAAgB,KAAK,EAAE,OAAO,CAAC,CAAC;YAE/D,OAAO;gBACL,OAAO,EAAE;oBACP,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE;iBACxC;aACF,CAAC;QACJ,CAAC;KAAA;CACF;AA1BD,0CA0BC","sourcesContent":["import type {\n NameProvider,\n NameProviderMetadata,\n NameProviderRequest,\n NameProviderResult,\n} from '../types';\nimport { NameType } from '../types';\n\nexport type ReverseLookupCallback = (\n address: string,\n chainId: string,\n) => Promise<string>;\n\nconst ID = 'ens';\nconst LABEL = 'Ethereum Name Service (ENS)';\n\nexport class ENSNameProvider implements NameProvider {\n #reverseLookup: ReverseLookupCallback;\n\n constructor({ reverseLookup }: { reverseLookup: ReverseLookupCallback }) {\n this.#reverseLookup = reverseLookup;\n }\n\n getMetadata(): NameProviderMetadata {\n return {\n sourceIds: { [NameType.ETHEREUM_ADDRESS]: [ID] },\n sourceLabels: { [ID]: LABEL },\n };\n }\n\n async getProposedNames(\n request: NameProviderRequest,\n ): Promise<NameProviderResult> {\n const { value, chainId } = request;\n const proposedName = await this.#reverseLookup(value, chainId);\n\n return {\n results: {\n [ID]: { proposedNames: [proposedName] },\n },\n };\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type { NameProvider, NameProviderMetadata, NameProviderRequest, NameProviderResult } from '../types';
2
+ export declare class EtherscanNameProvider implements NameProvider {
3
+ #private;
4
+ constructor({ apiKey }?: {
5
+ apiKey?: string;
6
+ });
7
+ getMetadata(): NameProviderMetadata;
8
+ getProposedNames(request: NameProviderRequest): Promise<NameProviderResult>;
9
+ }
10
+ //# sourceMappingURL=etherscan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"etherscan.d.ts","sourceRoot":"","sources":["../../src/providers/etherscan.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AA4BlB,qBAAa,qBAAsB,YAAW,YAAY;;gBAG5C,EAAE,MAAM,EAAE,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO;IAIhD,WAAW,IAAI,oBAAoB;IAO7B,gBAAgB,CACpB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC;CAkD/B"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
12
+ if (kind === "m") throw new TypeError("Private method is not writable");
13
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
14
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
15
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
16
+ };
17
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
18
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
19
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
20
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
21
+ };
22
+ var _EtherscanNameProvider_instances, _EtherscanNameProvider_apiKey, _EtherscanNameProvider_getUrl;
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.EtherscanNameProvider = void 0;
25
+ const constants_1 = require("../constants");
26
+ const types_1 = require("../types");
27
+ const util_1 = require("../util");
28
+ const ID = 'etherscan';
29
+ const LABEL = 'Etherscan (Verified Contract Name)';
30
+ class EtherscanNameProvider {
31
+ constructor({ apiKey } = {}) {
32
+ _EtherscanNameProvider_instances.add(this);
33
+ _EtherscanNameProvider_apiKey.set(this, void 0);
34
+ __classPrivateFieldSet(this, _EtherscanNameProvider_apiKey, apiKey, "f");
35
+ }
36
+ getMetadata() {
37
+ return {
38
+ sourceIds: { [types_1.NameType.ETHEREUM_ADDRESS]: [ID] },
39
+ sourceLabels: { [ID]: LABEL },
40
+ };
41
+ }
42
+ getProposedNames(request) {
43
+ var _a;
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ const { value, chainId } = request;
46
+ const url = __classPrivateFieldGet(this, _EtherscanNameProvider_instances, "m", _EtherscanNameProvider_getUrl).call(this, chainId, {
47
+ module: 'contract',
48
+ action: 'getsourcecode',
49
+ address: value,
50
+ apikey: __classPrivateFieldGet(this, _EtherscanNameProvider_apiKey, "f"),
51
+ });
52
+ const responseData = (yield (0, util_1.handleFetch)(url));
53
+ const results = (_a = responseData === null || responseData === void 0 ? void 0 : responseData.result) !== null && _a !== void 0 ? _a : [];
54
+ const proposedNames = results.map((result) => result.ContractName);
55
+ return {
56
+ results: {
57
+ [ID]: {
58
+ proposedNames,
59
+ },
60
+ },
61
+ };
62
+ });
63
+ }
64
+ }
65
+ exports.EtherscanNameProvider = EtherscanNameProvider;
66
+ _EtherscanNameProvider_apiKey = new WeakMap(), _EtherscanNameProvider_instances = new WeakSet(), _EtherscanNameProvider_getUrl = function _EtherscanNameProvider_getUrl(chainId, params) {
67
+ const networkInfo = constants_1.ETHERSCAN_SUPPORTED_NETWORKS[chainId];
68
+ if (!networkInfo) {
69
+ throw new Error(`Etherscan does not support chain with ID: ${chainId}`);
70
+ }
71
+ let url = `https://${networkInfo.subdomain}.${networkInfo.domain}/api`;
72
+ Object.keys(params).forEach((key, index) => {
73
+ const value = params[key];
74
+ if (!value) {
75
+ return;
76
+ }
77
+ url += `${index === 0 ? '?' : '&'}${key}=${value}`;
78
+ });
79
+ return url;
80
+ };
81
+ //# sourceMappingURL=etherscan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"etherscan.js","sourceRoot":"","sources":["../../src/providers/etherscan.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA4D;AAO5D,oCAAoC;AACpC,kCAAsC;AAEtC,MAAM,EAAE,GAAG,WAAW,CAAC;AACvB,MAAM,KAAK,GAAG,oCAAoC,CAAC;AAuBnD,MAAa,qBAAqB;IAGhC,YAAY,EAAE,MAAM,KAA0B,EAAE;;QAFhD,gDAAiB;QAGf,uBAAA,IAAI,iCAAW,MAAM,MAAA,CAAC;IACxB,CAAC;IAED,WAAW;QACT,OAAO;YACL,SAAS,EAAE,EAAE,CAAC,gBAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YAChD,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;SAC9B,CAAC;IACJ,CAAC;IAEK,gBAAgB,CACpB,OAA4B;;;YAE5B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAEnC,MAAM,GAAG,GAAG,uBAAA,IAAI,uEAAQ,MAAZ,IAAI,EAAS,OAAO,EAAE;gBAChC,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,eAAe;gBACvB,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,uBAAA,IAAI,qCAAQ;aACrB,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,CAAC,MAAM,IAAA,kBAAW,EACrC,GAAG,CACJ,CAAmC,CAAC;YAErC,MAAM,OAAO,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,mCAAI,EAAE,CAAC;YAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAEnE,OAAO;gBACL,OAAO,EAAE;oBACP,CAAC,EAAE,CAAC,EAAE;wBACJ,aAAa;qBACd;iBACF;aACF,CAAC;;KACH;CA0BF;AAlED,sDAkEC;wKAxBS,OAAe,EAAE,MAA0C;IAGjE,MAAM,WAAW,GACf,wCAA4B,CAAC,OAA2B,CAAC,CAAC;IAE5D,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,6CAA6C,OAAO,EAAE,CAAC,CAAC;KACzE;IAED,IAAI,GAAG,GAAG,WAAW,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,MAAM,MAAM,CAAC;IAEvE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAE1B,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QAED,GAAG,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import { ETHERSCAN_SUPPORTED_NETWORKS } from '../constants';\nimport type {\n NameProvider,\n NameProviderMetadata,\n NameProviderRequest,\n NameProviderResult,\n} from '../types';\nimport { NameType } from '../types';\nimport { handleFetch } from '../util';\n\nconst ID = 'etherscan';\nconst LABEL = 'Etherscan (Verified Contract Name)';\n\ntype EtherscanGetSourceCodeResponse = {\n status: '1' | '0';\n message: string;\n result: [\n {\n SourceCode: string;\n ABI: string;\n ContractName: string;\n CompilerVersion: string;\n OptimizationUsed: string;\n Runs: string;\n ConstructorArguments: string;\n Library: string;\n LicenseType: string;\n Proxy: string;\n Implementation: string;\n SwarmSource: string;\n },\n ];\n};\n\nexport class EtherscanNameProvider implements NameProvider {\n #apiKey?: string;\n\n constructor({ apiKey }: { apiKey?: string } = {}) {\n this.#apiKey = apiKey;\n }\n\n getMetadata(): NameProviderMetadata {\n return {\n sourceIds: { [NameType.ETHEREUM_ADDRESS]: [ID] },\n sourceLabels: { [ID]: LABEL },\n };\n }\n\n async getProposedNames(\n request: NameProviderRequest,\n ): Promise<NameProviderResult> {\n const { value, chainId } = request;\n\n const url = this.#getUrl(chainId, {\n module: 'contract',\n action: 'getsourcecode',\n address: value,\n apikey: this.#apiKey,\n });\n\n const responseData = (await handleFetch(\n url,\n )) as EtherscanGetSourceCodeResponse;\n\n const results = responseData?.result ?? [];\n const proposedNames = results.map((result) => result.ContractName);\n\n return {\n results: {\n [ID]: {\n proposedNames,\n },\n },\n };\n }\n\n #getUrl(chainId: string, params: Record<string, string | undefined>): string {\n type SupportedChainId = keyof typeof ETHERSCAN_SUPPORTED_NETWORKS;\n\n const networkInfo =\n ETHERSCAN_SUPPORTED_NETWORKS[chainId as SupportedChainId];\n\n if (!networkInfo) {\n throw new Error(`Etherscan does not support chain with ID: ${chainId}`);\n }\n\n let url = `https://${networkInfo.subdomain}.${networkInfo.domain}/api`;\n\n Object.keys(params).forEach((key, index) => {\n const value = params[key];\n\n if (!value) {\n return;\n }\n\n url += `${index === 0 ? '?' : '&'}${key}=${value}`;\n });\n\n return url;\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import type { NameProvider, NameProviderMetadata, NameProviderRequest, NameProviderResult } from '../types';
2
+ export declare class LensNameProvider implements NameProvider {
3
+ getMetadata(): NameProviderMetadata;
4
+ getProposedNames(request: NameProviderRequest): Promise<NameProviderResult>;
5
+ }
6
+ //# sourceMappingURL=lens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lens.d.ts","sourceRoot":"","sources":["../../src/providers/lens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AA2BlB,qBAAa,gBAAiB,YAAW,YAAY;IACnD,WAAW,IAAI,oBAAoB;IAO7B,gBAAgB,CACpB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC;CAkB/B"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.LensNameProvider = void 0;
13
+ const types_1 = require("../types");
14
+ const util_1 = require("../util");
15
+ const ID = 'lens';
16
+ const LABEL = 'Lens Protocol';
17
+ const LENS_URL = `https://api.lens.dev`;
18
+ const QUERY = `
19
+ query HandlesForAddress($address: EthereumAddress!) {
20
+ profiles(request: { ownedBy: [$address] }) {
21
+ items {
22
+ handle
23
+ }
24
+ }
25
+ }`;
26
+ class LensNameProvider {
27
+ getMetadata() {
28
+ return {
29
+ sourceIds: { [types_1.NameType.ETHEREUM_ADDRESS]: [ID] },
30
+ sourceLabels: { [ID]: LABEL },
31
+ };
32
+ }
33
+ getProposedNames(request) {
34
+ var _a, _b;
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ const { value } = request;
37
+ const responseData = yield (0, util_1.graphQL)(LENS_URL, QUERY, {
38
+ address: value,
39
+ });
40
+ const profiles = (_b = (_a = responseData === null || responseData === void 0 ? void 0 : responseData.profiles) === null || _a === void 0 ? void 0 : _a.items) !== null && _b !== void 0 ? _b : [];
41
+ const proposedNames = profiles.map((profile) => profile.handle);
42
+ return {
43
+ results: {
44
+ [ID]: {
45
+ proposedNames,
46
+ },
47
+ },
48
+ };
49
+ });
50
+ }
51
+ }
52
+ exports.LensNameProvider = LensNameProvider;
53
+ //# sourceMappingURL=lens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lens.js","sourceRoot":"","sources":["../../src/providers/lens.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA,oCAAoC;AACpC,kCAAkC;AAElC,MAAM,EAAE,GAAG,MAAM,CAAC;AAClB,MAAM,KAAK,GAAG,eAAe,CAAC;AAC9B,MAAM,QAAQ,GAAG,sBAAsB,CAAC;AAExC,MAAM,KAAK,GAAG;;;;;;;EAOZ,CAAC;AAYH,MAAa,gBAAgB;IAC3B,WAAW;QACT,OAAO;YACL,SAAS,EAAE,EAAE,CAAC,gBAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YAChD,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;SAC9B,CAAC;IACJ,CAAC;IAEK,gBAAgB,CACpB,OAA4B;;;YAE5B,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;YAE1B,MAAM,YAAY,GAAG,MAAM,IAAA,cAAO,EAAe,QAAQ,EAAE,KAAK,EAAE;gBAChE,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,0CAAE,KAAK,mCAAI,EAAE,CAAC;YACrD,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAEhE,OAAO;gBACL,OAAO,EAAE;oBACP,CAAC,EAAE,CAAC,EAAE;wBACJ,aAAa;qBACd;iBACF;aACF,CAAC;;KACH;CACF;AA5BD,4CA4BC","sourcesContent":["import type {\n NameProvider,\n NameProviderMetadata,\n NameProviderRequest,\n NameProviderResult,\n} from '../types';\nimport { NameType } from '../types';\nimport { graphQL } from '../util';\n\nconst ID = 'lens';\nconst LABEL = 'Lens Protocol';\nconst LENS_URL = `https://api.lens.dev`;\n\nconst QUERY = `\nquery HandlesForAddress($address: EthereumAddress!) {\n profiles(request: { ownedBy: [$address] }) {\n items {\n handle\n }\n }\n}`;\n\ntype LensResponse = {\n profiles: {\n items: [\n {\n handle: string;\n },\n ];\n };\n};\n\nexport class LensNameProvider implements NameProvider {\n getMetadata(): NameProviderMetadata {\n return {\n sourceIds: { [NameType.ETHEREUM_ADDRESS]: [ID] },\n sourceLabels: { [ID]: LABEL },\n };\n }\n\n async getProposedNames(\n request: NameProviderRequest,\n ): Promise<NameProviderResult> {\n const { value } = request;\n\n const responseData = await graphQL<LensResponse>(LENS_URL, QUERY, {\n address: value,\n });\n\n const profiles = responseData?.profiles?.items ?? [];\n const proposedNames = profiles.map((profile) => profile.handle);\n\n return {\n results: {\n [ID]: {\n proposedNames,\n },\n },\n };\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import type { NameProvider, NameProviderMetadata, NameProviderRequest, NameProviderResult } from '../types';
2
+ export declare class TokenNameProvider implements NameProvider {
3
+ getMetadata(): NameProviderMetadata;
4
+ getProposedNames(request: NameProviderRequest): Promise<NameProviderResult>;
5
+ }
6
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/providers/token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAOlB,qBAAa,iBAAkB,YAAW,YAAY;IACpD,WAAW,IAAI,oBAAoB;IAO7B,gBAAgB,CACpB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC;CAc/B"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TokenNameProvider = void 0;
13
+ const types_1 = require("../types");
14
+ const util_1 = require("../util");
15
+ const ID = 'token';
16
+ const LABEL = 'Blockchain (Token Name)';
17
+ class TokenNameProvider {
18
+ getMetadata() {
19
+ return {
20
+ sourceIds: { [types_1.NameType.ETHEREUM_ADDRESS]: [ID] },
21
+ sourceLabels: { [ID]: LABEL },
22
+ };
23
+ }
24
+ getProposedNames(request) {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ const { value, chainId } = request;
27
+ const url = `https://token-api.metaswap.codefi.network/token/${chainId}?address=${value}`;
28
+ const responseData = yield (0, util_1.handleFetch)(url);
29
+ const proposedName = responseData.name;
30
+ return {
31
+ results: {
32
+ [ID]: {
33
+ proposedNames: [proposedName],
34
+ },
35
+ },
36
+ };
37
+ });
38
+ }
39
+ }
40
+ exports.TokenNameProvider = TokenNameProvider;
41
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/providers/token.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA,oCAAoC;AACpC,kCAAsC;AAEtC,MAAM,EAAE,GAAG,OAAO,CAAC;AACnB,MAAM,KAAK,GAAG,yBAAyB,CAAC;AAExC,MAAa,iBAAiB;IAC5B,WAAW;QACT,OAAO;YACL,SAAS,EAAE,EAAE,CAAC,gBAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YAChD,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;SAC9B,CAAC;IACJ,CAAC;IAEK,gBAAgB,CACpB,OAA4B;;YAE5B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YACnC,MAAM,GAAG,GAAG,mDAAmD,OAAO,YAAY,KAAK,EAAE,CAAC;YAC1F,MAAM,YAAY,GAAG,MAAM,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC;YAEvC,OAAO;gBACL,OAAO,EAAE;oBACP,CAAC,EAAE,CAAC,EAAE;wBACJ,aAAa,EAAE,CAAC,YAAY,CAAC;qBAC9B;iBACF;aACF,CAAC;QACJ,CAAC;KAAA;CACF;AAxBD,8CAwBC","sourcesContent":["import type {\n NameProvider,\n NameProviderMetadata,\n NameProviderRequest,\n NameProviderResult,\n} from '../types';\nimport { NameType } from '../types';\nimport { handleFetch } from '../util';\n\nconst ID = 'token';\nconst LABEL = 'Blockchain (Token Name)';\n\nexport class TokenNameProvider implements NameProvider {\n getMetadata(): NameProviderMetadata {\n return {\n sourceIds: { [NameType.ETHEREUM_ADDRESS]: [ID] },\n sourceLabels: { [ID]: LABEL },\n };\n }\n\n async getProposedNames(\n request: NameProviderRequest,\n ): Promise<NameProviderResult> {\n const { value, chainId } = request;\n const url = `https://token-api.metaswap.codefi.network/token/${chainId}?address=${value}`;\n const responseData = await handleFetch(url);\n const proposedName = responseData.name;\n\n return {\n results: {\n [ID]: {\n proposedNames: [proposedName],\n },\n },\n };\n }\n}\n"]}
@@ -0,0 +1,69 @@
1
+ /** The name types supported by the NameController. */
2
+ export declare enum NameType {
3
+ /** The address of an Ethereum account. */
4
+ ETHEREUM_ADDRESS = "ethereumAddress"
5
+ }
6
+ /** The metadata for a name provider. */
7
+ export declare type NameProviderMetadata = {
8
+ /**
9
+ * IDs for each alternate source of proposed names.
10
+ * Keyed by the name type.
11
+ */
12
+ sourceIds: Record<NameType, string[]>;
13
+ /**
14
+ * Friendly labels to describe each source of proposed names.
15
+ * Keyed by the source ID.
16
+ */
17
+ sourceLabels: Record<string, string>;
18
+ };
19
+ /** The request data to get proposed names from a name provider. */
20
+ export declare type NameProviderRequest = {
21
+ /** The current chain ID of the client. */
22
+ chainId: string;
23
+ /** The optional list of source IDs to get proposed names from. */
24
+ sourceIds?: string[];
25
+ /** The type of name being requested. */
26
+ type: NameType;
27
+ /** The raw value to get proposed names for. */
28
+ value: string;
29
+ };
30
+ /** The resulting data after requesting proposed names from a name provider, for a single source. */
31
+ export declare type NameProviderSourceResult = {
32
+ /**
33
+ * The array of proposed names from the source.
34
+ * Undefined if there is an error.
35
+ */
36
+ proposedNames?: string[];
37
+ /**
38
+ * An error that occurred while fetching the proposed names from the source.
39
+ * Undefined if there was no error.
40
+ */
41
+ error?: unknown;
42
+ };
43
+ /** The resulting data after requesting proposed names from a name provider. */
44
+ export declare type NameProviderResult = {
45
+ /**
46
+ * The resulting data from each alternate source of proposed names supported by the name provider.
47
+ * Keyed by the source ID.
48
+ */
49
+ results: Record<string, NameProviderSourceResult>;
50
+ /**
51
+ * An error that occurred while fetching the proposed names that was not specific to a single source.
52
+ * Undefined if there was no error.
53
+ */
54
+ error?: unknown;
55
+ };
56
+ /** An object capable of proposing friendly names for a raw value of a given type. */
57
+ export declare type NameProvider = {
58
+ /**
59
+ * Returns metadata about the name provider.
60
+ */
61
+ getMetadata(): NameProviderMetadata;
62
+ /**
63
+ * Returns proposed names for the given value and request data.
64
+ *
65
+ * @param request - The request data including the value to propose names for.
66
+ */
67
+ getProposedNames(request: NameProviderRequest): Promise<NameProviderResult>;
68
+ };
69
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,oBAAY,QAAQ;IAClB,0CAA0C;IAC1C,gBAAgB,oBAAoB;CACrC;AAED,wCAAwC;AACxC,oBAAY,oBAAoB,GAAG;IACjC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAEtC;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF,mEAAmE;AACnE,oBAAY,mBAAmB,GAAG;IAChC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAEhB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,wCAAwC;IACxC,IAAI,EAAE,QAAQ,CAAC;IAEf,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,oGAAoG;AACpG,oBAAY,wBAAwB,GAAG;IACrC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,+EAA+E;AAC/E,oBAAY,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAElD;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,qFAAqF;AACrF,oBAAY,YAAY,GAAG;IACzB;;OAEG;IACH,WAAW,IAAI,oBAAoB,CAAC;IAEpC;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC7E,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NameType = void 0;
4
+ /** The name types supported by the NameController. */
5
+ var NameType;
6
+ (function (NameType) {
7
+ /** The address of an Ethereum account. */
8
+ NameType["ETHEREUM_ADDRESS"] = "ethereumAddress";
9
+ })(NameType = exports.NameType || (exports.NameType = {}));
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,0CAA0C;IAC1C,gDAAoC,CAAA;AACtC,CAAC,EAHW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAGnB","sourcesContent":["/** The name types supported by the NameController. */\nexport enum NameType {\n /** The address of an Ethereum account. */\n ETHEREUM_ADDRESS = 'ethereumAddress',\n}\n\n/** The metadata for a name provider. */\nexport type NameProviderMetadata = {\n /**\n * IDs for each alternate source of proposed names.\n * Keyed by the name type.\n */\n sourceIds: Record<NameType, string[]>;\n\n /**\n * Friendly labels to describe each source of proposed names.\n * Keyed by the source ID.\n */\n sourceLabels: Record<string, string>;\n};\n\n/** The request data to get proposed names from a name provider. */\nexport type NameProviderRequest = {\n /** The current chain ID of the client. */\n chainId: string;\n\n /** The optional list of source IDs to get proposed names from. */\n sourceIds?: string[];\n\n /** The type of name being requested. */\n type: NameType;\n\n /** The raw value to get proposed names for. */\n value: string;\n};\n\n/** The resulting data after requesting proposed names from a name provider, for a single source. */\nexport type NameProviderSourceResult = {\n /**\n * The array of proposed names from the source.\n * Undefined if there is an error.\n */\n proposedNames?: string[];\n\n /**\n * An error that occurred while fetching the proposed names from the source.\n * Undefined if there was no error.\n */\n error?: unknown;\n};\n\n/** The resulting data after requesting proposed names from a name provider. */\nexport type NameProviderResult = {\n /**\n * The resulting data from each alternate source of proposed names supported by the name provider.\n * Keyed by the source ID.\n */\n results: Record<string, NameProviderSourceResult>;\n\n /**\n * An error that occurred while fetching the proposed names that was not specific to a single source.\n * Undefined if there was no error.\n */\n error?: unknown;\n};\n\n/** An object capable of proposing friendly names for a raw value of a given type. */\nexport type NameProvider = {\n /**\n * Returns metadata about the name provider.\n */\n getMetadata(): NameProviderMetadata;\n\n /**\n * Returns proposed names for the given value and request data.\n *\n * @param request - The request data including the value to propose names for.\n */\n getProposedNames(request: NameProviderRequest): Promise<NameProviderResult>;\n};\n"]}
package/dist/util.d.ts ADDED
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Execute a GraphQL query.
3
+ *
4
+ * @param url - GraphQL endpoint URL.
5
+ * @param query - GraphQL query.
6
+ * @param variables - GraphQL variables.
7
+ */
8
+ export declare function graphQL<T>(url: string, query: string, variables: Record<string, any>): Promise<T>;
9
+ /**
10
+ * Execute fetch and return object response.
11
+ *
12
+ * @param request - The request information.
13
+ * @param options - The fetch options.
14
+ * @returns The fetch response JSON data.
15
+ */
16
+ export declare function handleFetch(request: string, options?: RequestInit): Promise<any>;
17
+ /**
18
+ * Execute fetch and verify that the response was successful.
19
+ *
20
+ * @param request - Request information.
21
+ * @param options - Fetch options.
22
+ * @returns The fetch response.
23
+ */
24
+ export declare function successfulFetch(request: string, options?: RequestInit): Promise<Response>;
25
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAC7B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CAeZ;AAID;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,gBAIvE;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,qBAQ3E"}