@metamask-previews/multichain-account-service 2.0.0-preview-cc7e30d0 → 2.0.1-preview-5460dce
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -1
- package/dist/providers/TrxAccountProvider.cjs +11 -23
- package/dist/providers/TrxAccountProvider.cjs.map +1 -1
- package/dist/providers/TrxAccountProvider.d.cts +1 -1
- package/dist/providers/TrxAccountProvider.d.cts.map +1 -1
- package/dist/providers/TrxAccountProvider.d.mts +1 -1
- package/dist/providers/TrxAccountProvider.d.mts.map +1 -1
- package/dist/providers/TrxAccountProvider.mjs +11 -23
- package/dist/providers/TrxAccountProvider.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.0.1]
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Use `groupIndex` for account creations on `TrxAccountProvider` instead of the outdated `derivationPath` ([#7010](https://github.com/MetaMask/core/pull/7010)), ([#7018](https://github.com/MetaMask/core/pull/7018))
|
|
15
|
+
|
|
10
16
|
## [2.0.0]
|
|
11
17
|
|
|
12
18
|
### Changed
|
|
@@ -244,7 +250,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
244
250
|
- Add `MultichainAccountService` ([#6141](https://github.com/MetaMask/core/pull/6141)), ([#6165](https://github.com/MetaMask/core/pull/6165))
|
|
245
251
|
- This service manages multichain accounts/wallets.
|
|
246
252
|
|
|
247
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/multichain-account-service@2.0.
|
|
253
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/multichain-account-service@2.0.1...HEAD
|
|
254
|
+
[2.0.1]: https://github.com/MetaMask/core/compare/@metamask/multichain-account-service@2.0.0...@metamask/multichain-account-service@2.0.1
|
|
248
255
|
[2.0.0]: https://github.com/MetaMask/core/compare/@metamask/multichain-account-service@1.6.2...@metamask/multichain-account-service@2.0.0
|
|
249
256
|
[1.6.2]: https://github.com/MetaMask/core/compare/@metamask/multichain-account-service@1.6.1...@metamask/multichain-account-service@1.6.2
|
|
250
257
|
[1.6.1]: https://github.com/MetaMask/core/compare/@metamask/multichain-account-service@1.6.0...@metamask/multichain-account-service@1.6.1
|
|
@@ -10,12 +10,11 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
10
10
|
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");
|
|
11
11
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
12
|
};
|
|
13
|
-
var _TrxAccountProvider_instances, _TrxAccountProvider_client, _TrxAccountProvider_config, _TrxAccountProvider_getKeyringClientFromSnapId
|
|
13
|
+
var _TrxAccountProvider_instances, _TrxAccountProvider_client, _TrxAccountProvider_config, _TrxAccountProvider_getKeyringClientFromSnapId;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.TrxAccountProvider = exports.TRX_ACCOUNT_PROVIDER_NAME = void 0;
|
|
16
16
|
const account_api_1 = require("@metamask/account-api");
|
|
17
17
|
const keyring_api_1 = require("@metamask/keyring-api");
|
|
18
|
-
const keyring_api_2 = require("@metamask/keyring-api");
|
|
19
18
|
const keyring_controller_1 = require("@metamask/keyring-controller");
|
|
20
19
|
const keyring_snap_client_1 = require("@metamask/keyring-snap-client");
|
|
21
20
|
const snaps_utils_1 = require("@metamask/snaps-utils");
|
|
@@ -47,13 +46,15 @@ class TrxAccountProvider extends SnapAccountProvider_1.SnapAccountProvider {
|
|
|
47
46
|
return (account.type === keyring_api_1.TrxAccountType.Eoa &&
|
|
48
47
|
account.metadata.keyring.type === keyring_controller_1.KeyringTypes.snap);
|
|
49
48
|
}
|
|
50
|
-
async createAccounts({ entropySource, groupIndex, }) {
|
|
51
|
-
const
|
|
52
|
-
const account = await
|
|
49
|
+
async createAccounts({ entropySource, groupIndex: index, }) {
|
|
50
|
+
const createAccount = await this.getRestrictedSnapAccountCreator();
|
|
51
|
+
const account = await (0, utils_1.withTimeout)(createAccount({
|
|
53
52
|
entropySource,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
index,
|
|
54
|
+
addressType: keyring_api_1.TrxAccountType.Eoa,
|
|
55
|
+
scope: keyring_api_1.TrxScope.Mainnet,
|
|
56
|
+
}), __classPrivateFieldGet(this, _TrxAccountProvider_config, "f").createAccounts.timeoutMs);
|
|
57
|
+
(0, account_api_1.assertIsBip44Account)(account);
|
|
57
58
|
return [account];
|
|
58
59
|
}
|
|
59
60
|
async discoverAccounts({ entropySource, groupIndex, }) {
|
|
@@ -64,11 +65,10 @@ class TrxAccountProvider extends SnapAccountProvider_1.SnapAccountProvider {
|
|
|
64
65
|
if (!discoveredAccounts.length) {
|
|
65
66
|
return [];
|
|
66
67
|
}
|
|
67
|
-
const createdAccounts = await
|
|
68
|
+
const createdAccounts = await this.createAccounts({
|
|
68
69
|
entropySource,
|
|
69
70
|
groupIndex,
|
|
70
|
-
|
|
71
|
-
})));
|
|
71
|
+
});
|
|
72
72
|
return createdAccounts;
|
|
73
73
|
}
|
|
74
74
|
}
|
|
@@ -85,18 +85,6 @@ _TrxAccountProvider_client = new WeakMap(), _TrxAccountProvider_config = new Wea
|
|
|
85
85
|
return response;
|
|
86
86
|
},
|
|
87
87
|
});
|
|
88
|
-
}, _TrxAccountProvider_createAccount = async function _TrxAccountProvider_createAccount({ entropySource, groupIndex, derivationPath, }) {
|
|
89
|
-
const createAccount = await this.getRestrictedSnapAccountCreator();
|
|
90
|
-
const account = await (0, utils_1.withTimeout)(createAccount({ entropySource, derivationPath }), __classPrivateFieldGet(this, _TrxAccountProvider_config, "f").createAccounts.timeoutMs);
|
|
91
|
-
// Ensure entropy is present before type assertion validation
|
|
92
|
-
account.options.entropy = {
|
|
93
|
-
type: keyring_api_2.KeyringAccountEntropyTypeOption.Mnemonic,
|
|
94
|
-
id: entropySource,
|
|
95
|
-
groupIndex,
|
|
96
|
-
derivationPath,
|
|
97
|
-
};
|
|
98
|
-
(0, account_api_1.assertIsBip44Account)(account);
|
|
99
|
-
return account;
|
|
100
88
|
};
|
|
101
89
|
TrxAccountProvider.NAME = exports.TRX_ACCOUNT_PROVIDER_NAME;
|
|
102
90
|
TrxAccountProvider.TRX_SNAP_ID = 'npm:@metamask/tron-wallet-snap';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrxAccountProvider.cjs","sourceRoot":"","sources":["../../src/providers/TrxAccountProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uDAAgF;AAEhF,uDAAiE;AACjE,
|
|
1
|
+
{"version":3,"file":"TrxAccountProvider.cjs","sourceRoot":"","sources":["../../src/providers/TrxAccountProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { assertIsBip44Account, type Bip44Account } from '@metamask/account-api';\nimport type { EntropySourceId, KeyringAccount } from '@metamask/keyring-api';\nimport { TrxAccountType, TrxScope } from '@metamask/keyring-api';\nimport { KeyringTypes } from '@metamask/keyring-controller';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport { KeyringClient } from '@metamask/keyring-snap-client';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Json, JsonRpcRequest } from '@metamask/utils';\nimport type { MultichainAccountServiceMessenger } from 'src/types';\n\nimport { SnapAccountProvider } from './SnapAccountProvider';\nimport { withRetry, withTimeout } from './utils';\n\nexport type TrxAccountProviderConfig = {\n discovery: {\n maxAttempts: number;\n timeoutMs: number;\n backOffMs: number;\n };\n createAccounts: {\n timeoutMs: number;\n };\n};\n\nexport const TRX_ACCOUNT_PROVIDER_NAME = 'Tron' as const;\n\nexport class TrxAccountProvider extends SnapAccountProvider {\n static NAME = TRX_ACCOUNT_PROVIDER_NAME;\n\n static TRX_SNAP_ID = 'npm:@metamask/tron-wallet-snap' as SnapId;\n\n readonly #client: KeyringClient;\n\n readonly #config: TrxAccountProviderConfig;\n\n constructor(\n messenger: MultichainAccountServiceMessenger,\n config: TrxAccountProviderConfig = {\n discovery: {\n timeoutMs: 2000,\n maxAttempts: 3,\n backOffMs: 1000,\n },\n createAccounts: {\n timeoutMs: 3000,\n },\n },\n ) {\n super(TrxAccountProvider.TRX_SNAP_ID, messenger);\n this.#client = this.#getKeyringClientFromSnapId(\n TrxAccountProvider.TRX_SNAP_ID,\n );\n this.#config = config;\n }\n\n getName(): string {\n return TrxAccountProvider.NAME;\n }\n\n #getKeyringClientFromSnapId(snapId: string): KeyringClient {\n return new KeyringClient({\n send: async (request: JsonRpcRequest) => {\n const response = await this.messenger.call(\n 'SnapController:handleRequest',\n {\n snapId: snapId as SnapId,\n origin: 'metamask',\n handler: HandlerType.OnKeyringRequest,\n request,\n },\n );\n return response as Json;\n },\n });\n }\n\n isAccountCompatible(account: Bip44Account<InternalAccount>): boolean {\n return (\n account.type === TrxAccountType.Eoa &&\n account.metadata.keyring.type === (KeyringTypes.snap as string)\n );\n }\n\n async createAccounts({\n entropySource,\n groupIndex: index,\n }: {\n entropySource: EntropySourceId;\n groupIndex: number;\n }): Promise<Bip44Account<KeyringAccount>[]> {\n const createAccount = await this.getRestrictedSnapAccountCreator();\n\n const account = await withTimeout(\n createAccount({\n entropySource,\n index,\n addressType: TrxAccountType.Eoa,\n scope: TrxScope.Mainnet,\n }),\n this.#config.createAccounts.timeoutMs,\n );\n\n assertIsBip44Account(account);\n return [account];\n }\n\n async discoverAccounts({\n entropySource,\n groupIndex,\n }: {\n entropySource: EntropySourceId;\n groupIndex: number;\n }): Promise<Bip44Account<KeyringAccount>[]> {\n const discoveredAccounts = await withRetry(\n () =>\n withTimeout(\n this.#client.discoverAccounts(\n [TrxScope.Mainnet],\n entropySource,\n groupIndex,\n ),\n this.#config.discovery.timeoutMs,\n ),\n {\n maxAttempts: this.#config.discovery.maxAttempts,\n backOffMs: this.#config.discovery.backOffMs,\n },\n );\n\n if (!discoveredAccounts.length) {\n return [];\n }\n\n const createdAccounts = await this.createAccounts({\n entropySource,\n groupIndex,\n });\n\n return createdAccounts;\n }\n}\n"]}
|
|
@@ -22,7 +22,7 @@ export declare class TrxAccountProvider extends SnapAccountProvider {
|
|
|
22
22
|
constructor(messenger: MultichainAccountServiceMessenger, config?: TrxAccountProviderConfig);
|
|
23
23
|
getName(): string;
|
|
24
24
|
isAccountCompatible(account: Bip44Account<InternalAccount>): boolean;
|
|
25
|
-
createAccounts({ entropySource, groupIndex, }: {
|
|
25
|
+
createAccounts({ entropySource, groupIndex: index, }: {
|
|
26
26
|
entropySource: EntropySourceId;
|
|
27
27
|
groupIndex: number;
|
|
28
28
|
}): Promise<Bip44Account<KeyringAccount>[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrxAccountProvider.d.cts","sourceRoot":"","sources":["../../src/providers/TrxAccountProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,YAAY,EAAE,8BAA8B;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,8BAA8B;
|
|
1
|
+
{"version":3,"file":"TrxAccountProvider.d.cts","sourceRoot":"","sources":["../../src/providers/TrxAccountProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,YAAY,EAAE,8BAA8B;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,8BAA8B;AAG7E,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAGlD,OAAO,KAAK,EAAE,iCAAiC,EAAE,kBAAkB;AAEnE,OAAO,EAAE,mBAAmB,EAAE,kCAA8B;AAG5D,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,cAAc,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAkB,CAAC;AAEzD,qBAAa,kBAAmB,SAAQ,mBAAmB;;IACzD,MAAM,CAAC,IAAI,SAA6B;IAExC,MAAM,CAAC,WAAW,SAA8C;gBAO9D,SAAS,EAAE,iCAAiC,EAC5C,MAAM,GAAE,wBASP;IASH,OAAO,IAAI,MAAM;IAqBjB,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,eAAe,CAAC,GAAG,OAAO;IAO9D,cAAc,CAAC,EACnB,aAAa,EACb,UAAU,EAAE,KAAK,GAClB,EAAE;QACD,aAAa,EAAE,eAAe,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;IAiBrC,gBAAgB,CAAC,EACrB,aAAa,EACb,UAAU,GACX,EAAE;QACD,aAAa,EAAE,eAAe,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;CA4B5C"}
|
|
@@ -22,7 +22,7 @@ export declare class TrxAccountProvider extends SnapAccountProvider {
|
|
|
22
22
|
constructor(messenger: MultichainAccountServiceMessenger, config?: TrxAccountProviderConfig);
|
|
23
23
|
getName(): string;
|
|
24
24
|
isAccountCompatible(account: Bip44Account<InternalAccount>): boolean;
|
|
25
|
-
createAccounts({ entropySource, groupIndex, }: {
|
|
25
|
+
createAccounts({ entropySource, groupIndex: index, }: {
|
|
26
26
|
entropySource: EntropySourceId;
|
|
27
27
|
groupIndex: number;
|
|
28
28
|
}): Promise<Bip44Account<KeyringAccount>[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrxAccountProvider.d.mts","sourceRoot":"","sources":["../../src/providers/TrxAccountProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,YAAY,EAAE,8BAA8B;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,8BAA8B;
|
|
1
|
+
{"version":3,"file":"TrxAccountProvider.d.mts","sourceRoot":"","sources":["../../src/providers/TrxAccountProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,YAAY,EAAE,8BAA8B;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,8BAA8B;AAG7E,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAGlD,OAAO,KAAK,EAAE,iCAAiC,EAAE,kBAAkB;AAEnE,OAAO,EAAE,mBAAmB,EAAE,kCAA8B;AAG5D,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,cAAc,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAkB,CAAC;AAEzD,qBAAa,kBAAmB,SAAQ,mBAAmB;;IACzD,MAAM,CAAC,IAAI,SAA6B;IAExC,MAAM,CAAC,WAAW,SAA8C;gBAO9D,SAAS,EAAE,iCAAiC,EAC5C,MAAM,GAAE,wBASP;IASH,OAAO,IAAI,MAAM;IAqBjB,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,eAAe,CAAC,GAAG,OAAO;IAO9D,cAAc,CAAC,EACnB,aAAa,EACb,UAAU,EAAE,KAAK,GAClB,EAAE;QACD,aAAa,EAAE,eAAe,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;IAiBrC,gBAAgB,CAAC,EACrB,aAAa,EACb,UAAU,GACX,EAAE;QACD,aAAa,EAAE,eAAe,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;CA4B5C"}
|
|
@@ -9,10 +9,9 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
9
9
|
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");
|
|
10
10
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
11
|
};
|
|
12
|
-
var _TrxAccountProvider_instances, _TrxAccountProvider_client, _TrxAccountProvider_config, _TrxAccountProvider_getKeyringClientFromSnapId
|
|
12
|
+
var _TrxAccountProvider_instances, _TrxAccountProvider_client, _TrxAccountProvider_config, _TrxAccountProvider_getKeyringClientFromSnapId;
|
|
13
13
|
import { assertIsBip44Account } from "@metamask/account-api";
|
|
14
14
|
import { TrxAccountType, TrxScope } from "@metamask/keyring-api";
|
|
15
|
-
import { KeyringAccountEntropyTypeOption } from "@metamask/keyring-api";
|
|
16
15
|
import { KeyringTypes } from "@metamask/keyring-controller";
|
|
17
16
|
import { KeyringClient } from "@metamask/keyring-snap-client";
|
|
18
17
|
import { HandlerType } from "@metamask/snaps-utils";
|
|
@@ -44,13 +43,15 @@ export class TrxAccountProvider extends SnapAccountProvider {
|
|
|
44
43
|
return (account.type === TrxAccountType.Eoa &&
|
|
45
44
|
account.metadata.keyring.type === KeyringTypes.snap);
|
|
46
45
|
}
|
|
47
|
-
async createAccounts({ entropySource, groupIndex, }) {
|
|
48
|
-
const
|
|
49
|
-
const account = await
|
|
46
|
+
async createAccounts({ entropySource, groupIndex: index, }) {
|
|
47
|
+
const createAccount = await this.getRestrictedSnapAccountCreator();
|
|
48
|
+
const account = await withTimeout(createAccount({
|
|
50
49
|
entropySource,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
index,
|
|
51
|
+
addressType: TrxAccountType.Eoa,
|
|
52
|
+
scope: TrxScope.Mainnet,
|
|
53
|
+
}), __classPrivateFieldGet(this, _TrxAccountProvider_config, "f").createAccounts.timeoutMs);
|
|
54
|
+
assertIsBip44Account(account);
|
|
54
55
|
return [account];
|
|
55
56
|
}
|
|
56
57
|
async discoverAccounts({ entropySource, groupIndex, }) {
|
|
@@ -61,11 +62,10 @@ export class TrxAccountProvider extends SnapAccountProvider {
|
|
|
61
62
|
if (!discoveredAccounts.length) {
|
|
62
63
|
return [];
|
|
63
64
|
}
|
|
64
|
-
const createdAccounts = await
|
|
65
|
+
const createdAccounts = await this.createAccounts({
|
|
65
66
|
entropySource,
|
|
66
67
|
groupIndex,
|
|
67
|
-
|
|
68
|
-
})));
|
|
68
|
+
});
|
|
69
69
|
return createdAccounts;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -81,18 +81,6 @@ _TrxAccountProvider_client = new WeakMap(), _TrxAccountProvider_config = new Wea
|
|
|
81
81
|
return response;
|
|
82
82
|
},
|
|
83
83
|
});
|
|
84
|
-
}, _TrxAccountProvider_createAccount = async function _TrxAccountProvider_createAccount({ entropySource, groupIndex, derivationPath, }) {
|
|
85
|
-
const createAccount = await this.getRestrictedSnapAccountCreator();
|
|
86
|
-
const account = await withTimeout(createAccount({ entropySource, derivationPath }), __classPrivateFieldGet(this, _TrxAccountProvider_config, "f").createAccounts.timeoutMs);
|
|
87
|
-
// Ensure entropy is present before type assertion validation
|
|
88
|
-
account.options.entropy = {
|
|
89
|
-
type: KeyringAccountEntropyTypeOption.Mnemonic,
|
|
90
|
-
id: entropySource,
|
|
91
|
-
groupIndex,
|
|
92
|
-
derivationPath,
|
|
93
|
-
};
|
|
94
|
-
assertIsBip44Account(account);
|
|
95
|
-
return account;
|
|
96
84
|
};
|
|
97
85
|
TrxAccountProvider.NAME = TRX_ACCOUNT_PROVIDER_NAME;
|
|
98
86
|
TrxAccountProvider.TRX_SNAP_ID = 'npm:@metamask/tron-wallet-snap';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrxAccountProvider.mjs","sourceRoot":"","sources":["../../src/providers/TrxAccountProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,oBAAoB,EAAqB,8BAA8B;AAEhF,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,8BAA8B;AACjE,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"TrxAccountProvider.mjs","sourceRoot":"","sources":["../../src/providers/TrxAccountProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { assertIsBip44Account, type Bip44Account } from '@metamask/account-api';\nimport type { EntropySourceId, KeyringAccount } from '@metamask/keyring-api';\nimport { TrxAccountType, TrxScope } from '@metamask/keyring-api';\nimport { KeyringTypes } from '@metamask/keyring-controller';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport { KeyringClient } from '@metamask/keyring-snap-client';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Json, JsonRpcRequest } from '@metamask/utils';\nimport type { MultichainAccountServiceMessenger } from 'src/types';\n\nimport { SnapAccountProvider } from './SnapAccountProvider';\nimport { withRetry, withTimeout } from './utils';\n\nexport type TrxAccountProviderConfig = {\n discovery: {\n maxAttempts: number;\n timeoutMs: number;\n backOffMs: number;\n };\n createAccounts: {\n timeoutMs: number;\n };\n};\n\nexport const TRX_ACCOUNT_PROVIDER_NAME = 'Tron' as const;\n\nexport class TrxAccountProvider extends SnapAccountProvider {\n static NAME = TRX_ACCOUNT_PROVIDER_NAME;\n\n static TRX_SNAP_ID = 'npm:@metamask/tron-wallet-snap' as SnapId;\n\n readonly #client: KeyringClient;\n\n readonly #config: TrxAccountProviderConfig;\n\n constructor(\n messenger: MultichainAccountServiceMessenger,\n config: TrxAccountProviderConfig = {\n discovery: {\n timeoutMs: 2000,\n maxAttempts: 3,\n backOffMs: 1000,\n },\n createAccounts: {\n timeoutMs: 3000,\n },\n },\n ) {\n super(TrxAccountProvider.TRX_SNAP_ID, messenger);\n this.#client = this.#getKeyringClientFromSnapId(\n TrxAccountProvider.TRX_SNAP_ID,\n );\n this.#config = config;\n }\n\n getName(): string {\n return TrxAccountProvider.NAME;\n }\n\n #getKeyringClientFromSnapId(snapId: string): KeyringClient {\n return new KeyringClient({\n send: async (request: JsonRpcRequest) => {\n const response = await this.messenger.call(\n 'SnapController:handleRequest',\n {\n snapId: snapId as SnapId,\n origin: 'metamask',\n handler: HandlerType.OnKeyringRequest,\n request,\n },\n );\n return response as Json;\n },\n });\n }\n\n isAccountCompatible(account: Bip44Account<InternalAccount>): boolean {\n return (\n account.type === TrxAccountType.Eoa &&\n account.metadata.keyring.type === (KeyringTypes.snap as string)\n );\n }\n\n async createAccounts({\n entropySource,\n groupIndex: index,\n }: {\n entropySource: EntropySourceId;\n groupIndex: number;\n }): Promise<Bip44Account<KeyringAccount>[]> {\n const createAccount = await this.getRestrictedSnapAccountCreator();\n\n const account = await withTimeout(\n createAccount({\n entropySource,\n index,\n addressType: TrxAccountType.Eoa,\n scope: TrxScope.Mainnet,\n }),\n this.#config.createAccounts.timeoutMs,\n );\n\n assertIsBip44Account(account);\n return [account];\n }\n\n async discoverAccounts({\n entropySource,\n groupIndex,\n }: {\n entropySource: EntropySourceId;\n groupIndex: number;\n }): Promise<Bip44Account<KeyringAccount>[]> {\n const discoveredAccounts = await withRetry(\n () =>\n withTimeout(\n this.#client.discoverAccounts(\n [TrxScope.Mainnet],\n entropySource,\n groupIndex,\n ),\n this.#config.discovery.timeoutMs,\n ),\n {\n maxAttempts: this.#config.discovery.maxAttempts,\n backOffMs: this.#config.discovery.backOffMs,\n },\n );\n\n if (!discoveredAccounts.length) {\n return [];\n }\n\n const createdAccounts = await this.createAccounts({\n entropySource,\n groupIndex,\n });\n\n return createdAccounts;\n }\n}\n"]}
|