@metamask-previews/account-api 0.0.0-586437b
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 +10 -0
- package/README.md +15 -0
- package/dist/api/group.cjs +27 -0
- package/dist/api/group.cjs.map +1 -0
- package/dist/api/group.d.cts +40 -0
- package/dist/api/group.d.cts.map +1 -0
- package/dist/api/group.d.mts +40 -0
- package/dist/api/group.d.mts.map +1 -0
- package/dist/api/group.mjs +22 -0
- package/dist/api/group.mjs.map +1 -0
- package/dist/api/index.cjs +20 -0
- package/dist/api/index.cjs.map +1 -0
- package/dist/api/index.d.cts +4 -0
- package/dist/api/index.d.cts.map +1 -0
- package/dist/api/index.d.mts +4 -0
- package/dist/api/index.d.mts.map +1 -0
- package/dist/api/index.mjs +4 -0
- package/dist/api/index.mjs.map +1 -0
- package/dist/api/multichain/adapters.cjs +240 -0
- package/dist/api/multichain/adapters.cjs.map +1 -0
- package/dist/api/multichain/adapters.d.cts +37 -0
- package/dist/api/multichain/adapters.d.cts.map +1 -0
- package/dist/api/multichain/adapters.d.mts +37 -0
- package/dist/api/multichain/adapters.d.mts.map +1 -0
- package/dist/api/multichain/adapters.mjs +235 -0
- package/dist/api/multichain/adapters.mjs.map +1 -0
- package/dist/api/multichain/id.cjs +43 -0
- package/dist/api/multichain/id.cjs.map +1 -0
- package/dist/api/multichain/id.d.cts +28 -0
- package/dist/api/multichain/id.d.cts.map +1 -0
- package/dist/api/multichain/id.d.mts +28 -0
- package/dist/api/multichain/id.d.mts.map +1 -0
- package/dist/api/multichain/id.mjs +38 -0
- package/dist/api/multichain/id.mjs.map +1 -0
- package/dist/api/multichain/index.cjs +18 -0
- package/dist/api/multichain/index.cjs.map +1 -0
- package/dist/api/multichain/index.d.cts +5 -0
- package/dist/api/multichain/index.d.cts.map +1 -0
- package/dist/api/multichain/index.d.mts +5 -0
- package/dist/api/multichain/index.d.mts.map +1 -0
- package/dist/api/multichain/index.mjs +2 -0
- package/dist/api/multichain/index.mjs.map +1 -0
- package/dist/api/multichain/providers.cjs +3 -0
- package/dist/api/multichain/providers.cjs.map +1 -0
- package/dist/api/multichain/providers.d.cts +18 -0
- package/dist/api/multichain/providers.d.cts.map +1 -0
- package/dist/api/multichain/providers.d.mts +18 -0
- package/dist/api/multichain/providers.d.mts.map +1 -0
- package/dist/api/multichain/providers.mjs +2 -0
- package/dist/api/multichain/providers.mjs.map +1 -0
- package/dist/api/multichain/types.cjs +3 -0
- package/dist/api/multichain/types.cjs.map +1 -0
- package/dist/api/multichain/types.d.cts +93 -0
- package/dist/api/multichain/types.d.cts.map +1 -0
- package/dist/api/multichain/types.d.mts +93 -0
- package/dist/api/multichain/types.d.mts.map +1 -0
- package/dist/api/multichain/types.mjs +2 -0
- package/dist/api/multichain/types.mjs.map +1 -0
- package/dist/api/wallet.cjs +21 -0
- package/dist/api/wallet.cjs.map +1 -0
- package/dist/api/wallet.d.cts +32 -0
- package/dist/api/wallet.d.cts.map +1 -0
- package/dist/api/wallet.d.mts +32 -0
- package/dist/api/wallet.d.mts.map +1 -0
- package/dist/api/wallet.mjs +17 -0
- package/dist/api/wallet.mjs.map +1 -0
- package/dist/index.cjs +18 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +2 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +92 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
[Unreleased]: https://github.com/MetaMask/accounts/
|
package/README.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# MetaMask Keyring utils
|
|
2
|
+
|
|
3
|
+
Various JavaScript/TypeScript utilities required by Keyrings.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
`yarn add @metamask/account-api`
|
|
8
|
+
|
|
9
|
+
or
|
|
10
|
+
|
|
11
|
+
`npm install @metamask/account-api`
|
|
12
|
+
|
|
13
|
+
## Contributing
|
|
14
|
+
|
|
15
|
+
This package is part of a monorepo. Instructions for contributing can be found in the [monorepo README](https://github.com/MetaMask/accounts#readme).
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_ACCOUNT_GROUP_NAME = exports.DEFAULT_ACCOUNT_GROUP_UNIQUE_ID = void 0;
|
|
4
|
+
exports.toAccountGroupId = toAccountGroupId;
|
|
5
|
+
exports.toDefaultAccountGroupId = toDefaultAccountGroupId;
|
|
6
|
+
exports.DEFAULT_ACCOUNT_GROUP_UNIQUE_ID = 'default';
|
|
7
|
+
exports.DEFAULT_ACCOUNT_GROUP_NAME = 'Default';
|
|
8
|
+
/**
|
|
9
|
+
* Convert a wallet ID and a unique ID, to a group ID.
|
|
10
|
+
*
|
|
11
|
+
* @param walletId - A wallet ID.
|
|
12
|
+
* @param id - A unique ID.
|
|
13
|
+
* @returns A group ID.
|
|
14
|
+
*/
|
|
15
|
+
function toAccountGroupId(walletId, id) {
|
|
16
|
+
return `${walletId}:${id}`;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Convert a wallet ID to the default group ID.
|
|
20
|
+
*
|
|
21
|
+
* @param walletId - A wallet ID.
|
|
22
|
+
* @returns The default group ID.
|
|
23
|
+
*/
|
|
24
|
+
function toDefaultAccountGroupId(walletId) {
|
|
25
|
+
return toAccountGroupId(walletId, exports.DEFAULT_ACCOUNT_GROUP_UNIQUE_ID);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=group.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.cjs","sourceRoot":"","sources":["../../src/api/group.ts"],"names":[],"mappings":";;;AAuCA,4CAKC;AAQD,0DAIC;AAnDY,QAAA,+BAA+B,GAAW,SAAS,CAAC;AACpD,QAAA,0BAA0B,GAAW,SAAS,CAAC;AA0B5D;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAC9B,QAAyB,EACzB,EAAU;IAEV,OAAO,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CACrC,QAAyB;IAEzB,OAAO,gBAAgB,CAAC,QAAQ,EAAE,uCAA+B,CAAC,CAAC;AACrE,CAAC","sourcesContent":["import type { KeyringAccount } from '@metamask/keyring-api';\nimport type { AccountId } from '@metamask/keyring-utils';\n\nimport type { AccountWalletId } from './wallet';\n\nexport const DEFAULT_ACCOUNT_GROUP_UNIQUE_ID: string = 'default';\nexport const DEFAULT_ACCOUNT_GROUP_NAME: string = 'Default';\n\nexport type AccountGroupId = `${AccountWalletId}:${string}`;\n\nexport type AccountGroup<Account extends KeyringAccount> = {\n get id(): AccountGroupId;\n\n get index(): number;\n\n /**\n * Gets the \"blockchain\" accounts for this multichain account.\n *\n * @param id - Account ID.\n * @returns The \"blockchain\" accounts.\n */\n getAccounts(): Account[];\n\n /**\n * Gets the \"blockchain\" account for a given account ID.\n *\n * @param id - Account ID.\n * @returns The \"blockchain\" account or undefined if not found.\n */\n getAccount(id: AccountId): Account | undefined;\n};\n\n/**\n * Convert a wallet ID and a unique ID, to a group ID.\n *\n * @param walletId - A wallet ID.\n * @param id - A unique ID.\n * @returns A group ID.\n */\nexport function toAccountGroupId(\n walletId: AccountWalletId,\n id: string,\n): AccountGroupId {\n return `${walletId}:${id}`;\n}\n\n/**\n * Convert a wallet ID to the default group ID.\n *\n * @param walletId - A wallet ID.\n * @returns The default group ID.\n */\nexport function toDefaultAccountGroupId(\n walletId: AccountWalletId,\n): AccountGroupId {\n return toAccountGroupId(walletId, DEFAULT_ACCOUNT_GROUP_UNIQUE_ID);\n}\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { KeyringAccount } from "@metamask/keyring-api";
|
|
2
|
+
import type { AccountId } from "@metamask/keyring-utils";
|
|
3
|
+
import type { AccountWalletId } from "./wallet.cjs";
|
|
4
|
+
export declare const DEFAULT_ACCOUNT_GROUP_UNIQUE_ID: string;
|
|
5
|
+
export declare const DEFAULT_ACCOUNT_GROUP_NAME: string;
|
|
6
|
+
export type AccountGroupId = `${AccountWalletId}:${string}`;
|
|
7
|
+
export type AccountGroup<Account extends KeyringAccount> = {
|
|
8
|
+
get id(): AccountGroupId;
|
|
9
|
+
get index(): number;
|
|
10
|
+
/**
|
|
11
|
+
* Gets the "blockchain" accounts for this multichain account.
|
|
12
|
+
*
|
|
13
|
+
* @param id - Account ID.
|
|
14
|
+
* @returns The "blockchain" accounts.
|
|
15
|
+
*/
|
|
16
|
+
getAccounts(): Account[];
|
|
17
|
+
/**
|
|
18
|
+
* Gets the "blockchain" account for a given account ID.
|
|
19
|
+
*
|
|
20
|
+
* @param id - Account ID.
|
|
21
|
+
* @returns The "blockchain" account or undefined if not found.
|
|
22
|
+
*/
|
|
23
|
+
getAccount(id: AccountId): Account | undefined;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Convert a wallet ID and a unique ID, to a group ID.
|
|
27
|
+
*
|
|
28
|
+
* @param walletId - A wallet ID.
|
|
29
|
+
* @param id - A unique ID.
|
|
30
|
+
* @returns A group ID.
|
|
31
|
+
*/
|
|
32
|
+
export declare function toAccountGroupId(walletId: AccountWalletId, id: string): AccountGroupId;
|
|
33
|
+
/**
|
|
34
|
+
* Convert a wallet ID to the default group ID.
|
|
35
|
+
*
|
|
36
|
+
* @param walletId - A wallet ID.
|
|
37
|
+
* @returns The default group ID.
|
|
38
|
+
*/
|
|
39
|
+
export declare function toDefaultAccountGroupId(walletId: AccountWalletId): AccountGroupId;
|
|
40
|
+
//# sourceMappingURL=group.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.d.cts","sourceRoot":"","sources":["../../src/api/group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,8BAA8B;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,gCAAgC;AAEzD,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAiB;AAEhD,eAAO,MAAM,+BAA+B,EAAE,MAAkB,CAAC;AACjE,eAAO,MAAM,0BAA0B,EAAE,MAAkB,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,GAAG,eAAe,IAAI,MAAM,EAAE,CAAC;AAE5D,MAAM,MAAM,YAAY,CAAC,OAAO,SAAS,cAAc,IAAI;IACzD,IAAI,EAAE,IAAI,cAAc,CAAC;IAEzB,IAAI,KAAK,IAAI,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,WAAW,IAAI,OAAO,EAAE,CAAC;IAEzB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;CAChD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,eAAe,EACzB,EAAE,EAAE,MAAM,GACT,cAAc,CAEhB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,eAAe,GACxB,cAAc,CAEhB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { KeyringAccount } from "@metamask/keyring-api";
|
|
2
|
+
import type { AccountId } from "@metamask/keyring-utils";
|
|
3
|
+
import type { AccountWalletId } from "./wallet.mjs";
|
|
4
|
+
export declare const DEFAULT_ACCOUNT_GROUP_UNIQUE_ID: string;
|
|
5
|
+
export declare const DEFAULT_ACCOUNT_GROUP_NAME: string;
|
|
6
|
+
export type AccountGroupId = `${AccountWalletId}:${string}`;
|
|
7
|
+
export type AccountGroup<Account extends KeyringAccount> = {
|
|
8
|
+
get id(): AccountGroupId;
|
|
9
|
+
get index(): number;
|
|
10
|
+
/**
|
|
11
|
+
* Gets the "blockchain" accounts for this multichain account.
|
|
12
|
+
*
|
|
13
|
+
* @param id - Account ID.
|
|
14
|
+
* @returns The "blockchain" accounts.
|
|
15
|
+
*/
|
|
16
|
+
getAccounts(): Account[];
|
|
17
|
+
/**
|
|
18
|
+
* Gets the "blockchain" account for a given account ID.
|
|
19
|
+
*
|
|
20
|
+
* @param id - Account ID.
|
|
21
|
+
* @returns The "blockchain" account or undefined if not found.
|
|
22
|
+
*/
|
|
23
|
+
getAccount(id: AccountId): Account | undefined;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Convert a wallet ID and a unique ID, to a group ID.
|
|
27
|
+
*
|
|
28
|
+
* @param walletId - A wallet ID.
|
|
29
|
+
* @param id - A unique ID.
|
|
30
|
+
* @returns A group ID.
|
|
31
|
+
*/
|
|
32
|
+
export declare function toAccountGroupId(walletId: AccountWalletId, id: string): AccountGroupId;
|
|
33
|
+
/**
|
|
34
|
+
* Convert a wallet ID to the default group ID.
|
|
35
|
+
*
|
|
36
|
+
* @param walletId - A wallet ID.
|
|
37
|
+
* @returns The default group ID.
|
|
38
|
+
*/
|
|
39
|
+
export declare function toDefaultAccountGroupId(walletId: AccountWalletId): AccountGroupId;
|
|
40
|
+
//# sourceMappingURL=group.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.d.mts","sourceRoot":"","sources":["../../src/api/group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,8BAA8B;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,gCAAgC;AAEzD,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAiB;AAEhD,eAAO,MAAM,+BAA+B,EAAE,MAAkB,CAAC;AACjE,eAAO,MAAM,0BAA0B,EAAE,MAAkB,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,GAAG,eAAe,IAAI,MAAM,EAAE,CAAC;AAE5D,MAAM,MAAM,YAAY,CAAC,OAAO,SAAS,cAAc,IAAI;IACzD,IAAI,EAAE,IAAI,cAAc,CAAC;IAEzB,IAAI,KAAK,IAAI,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,WAAW,IAAI,OAAO,EAAE,CAAC;IAEzB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;CAChD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,eAAe,EACzB,EAAE,EAAE,MAAM,GACT,cAAc,CAEhB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,eAAe,GACxB,cAAc,CAEhB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const DEFAULT_ACCOUNT_GROUP_UNIQUE_ID = 'default';
|
|
2
|
+
export const DEFAULT_ACCOUNT_GROUP_NAME = 'Default';
|
|
3
|
+
/**
|
|
4
|
+
* Convert a wallet ID and a unique ID, to a group ID.
|
|
5
|
+
*
|
|
6
|
+
* @param walletId - A wallet ID.
|
|
7
|
+
* @param id - A unique ID.
|
|
8
|
+
* @returns A group ID.
|
|
9
|
+
*/
|
|
10
|
+
export function toAccountGroupId(walletId, id) {
|
|
11
|
+
return `${walletId}:${id}`;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Convert a wallet ID to the default group ID.
|
|
15
|
+
*
|
|
16
|
+
* @param walletId - A wallet ID.
|
|
17
|
+
* @returns The default group ID.
|
|
18
|
+
*/
|
|
19
|
+
export function toDefaultAccountGroupId(walletId) {
|
|
20
|
+
return toAccountGroupId(walletId, DEFAULT_ACCOUNT_GROUP_UNIQUE_ID);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=group.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.mjs","sourceRoot":"","sources":["../../src/api/group.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,+BAA+B,GAAW,SAAS,CAAC;AACjE,MAAM,CAAC,MAAM,0BAA0B,GAAW,SAAS,CAAC;AA0B5D;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAyB,EACzB,EAAU;IAEV,OAAO,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAyB;IAEzB,OAAO,gBAAgB,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAC;AACrE,CAAC","sourcesContent":["import type { KeyringAccount } from '@metamask/keyring-api';\nimport type { AccountId } from '@metamask/keyring-utils';\n\nimport type { AccountWalletId } from './wallet';\n\nexport const DEFAULT_ACCOUNT_GROUP_UNIQUE_ID: string = 'default';\nexport const DEFAULT_ACCOUNT_GROUP_NAME: string = 'Default';\n\nexport type AccountGroupId = `${AccountWalletId}:${string}`;\n\nexport type AccountGroup<Account extends KeyringAccount> = {\n get id(): AccountGroupId;\n\n get index(): number;\n\n /**\n * Gets the \"blockchain\" accounts for this multichain account.\n *\n * @param id - Account ID.\n * @returns The \"blockchain\" accounts.\n */\n getAccounts(): Account[];\n\n /**\n * Gets the \"blockchain\" account for a given account ID.\n *\n * @param id - Account ID.\n * @returns The \"blockchain\" account or undefined if not found.\n */\n getAccount(id: AccountId): Account | undefined;\n};\n\n/**\n * Convert a wallet ID and a unique ID, to a group ID.\n *\n * @param walletId - A wallet ID.\n * @param id - A unique ID.\n * @returns A group ID.\n */\nexport function toAccountGroupId(\n walletId: AccountWalletId,\n id: string,\n): AccountGroupId {\n return `${walletId}:${id}`;\n}\n\n/**\n * Convert a wallet ID to the default group ID.\n *\n * @param walletId - A wallet ID.\n * @returns The default group ID.\n */\nexport function toDefaultAccountGroupId(\n walletId: AccountWalletId,\n): AccountGroupId {\n return toAccountGroupId(walletId, DEFAULT_ACCOUNT_GROUP_UNIQUE_ID);\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
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("./group.cjs"), exports);
|
|
18
|
+
__exportStar(require("./wallet.cjs"), exports);
|
|
19
|
+
__exportStar(require("./multichain/index.cjs"), exports);
|
|
20
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAAwB;AACxB,+CAAyB;AACzB,yDAA6B","sourcesContent":["export * from './group';\nexport * from './wallet';\nexport * from './multichain';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,4BAAwB;AACxB,6BAAyB;AACzB,uCAA6B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,4BAAwB;AACxB,6BAAyB;AACzB,uCAA6B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,4BAAwB;AACxB,6BAAyB;AACzB,uCAA6B","sourcesContent":["export * from './group';\nexport * from './wallet';\nexport * from './multichain';\n"]}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-redundant-type-constituents */
|
|
3
|
+
// This rule seems to be triggering a false positive. Possibly eslint is not
|
|
4
|
+
// inferring the `InternalAccount` type correctly which causes issue with the
|
|
5
|
+
// union `| undefined`.
|
|
6
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
7
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
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
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
|
+
};
|
|
12
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
13
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
14
|
+
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");
|
|
15
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
16
|
+
};
|
|
17
|
+
var _MultichainAccountAdapter_id, _MultichainAccountAdapter_wallet, _MultichainAccountAdapter_index, _MultichainAccountAdapter_providers, _MultichainAccountAdapter_providersByAccountId, _MultichainAccountAdapter_accounts, _MultichainAccountWalletAdapter_instances, _MultichainAccountWalletAdapter_id, _MultichainAccountWalletAdapter_providers, _MultichainAccountWalletAdapter_entropySource, _MultichainAccountWalletAdapter_accounts, _MultichainAccountWalletAdapter_createMultichainAccount;
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.MultichainAccountWalletAdapter = exports.MultichainAccountAdapter = void 0;
|
|
20
|
+
const keyring_utils_1 = require("@metamask/keyring-utils");
|
|
21
|
+
const __1 = require("../index.cjs");
|
|
22
|
+
class MultichainAccountAdapter {
|
|
23
|
+
constructor({ groupIndex, wallet, providers, }) {
|
|
24
|
+
_MultichainAccountAdapter_id.set(this, void 0);
|
|
25
|
+
_MultichainAccountAdapter_wallet.set(this, void 0);
|
|
26
|
+
_MultichainAccountAdapter_index.set(this, void 0);
|
|
27
|
+
_MultichainAccountAdapter_providers.set(this, void 0);
|
|
28
|
+
_MultichainAccountAdapter_providersByAccountId.set(this, void 0);
|
|
29
|
+
_MultichainAccountAdapter_accounts.set(this, void 0);
|
|
30
|
+
__classPrivateFieldSet(this, _MultichainAccountAdapter_id, (0, __1.toMultichainAccountId)(wallet.id, groupIndex), "f");
|
|
31
|
+
__classPrivateFieldSet(this, _MultichainAccountAdapter_index, groupIndex, "f");
|
|
32
|
+
__classPrivateFieldSet(this, _MultichainAccountAdapter_wallet, wallet, "f");
|
|
33
|
+
__classPrivateFieldSet(this, _MultichainAccountAdapter_providers, providers, "f");
|
|
34
|
+
__classPrivateFieldSet(this, _MultichainAccountAdapter_accounts, new Map(), "f");
|
|
35
|
+
__classPrivateFieldSet(this, _MultichainAccountAdapter_providersByAccountId, new Map(), "f");
|
|
36
|
+
for (const provider of __classPrivateFieldGet(this, _MultichainAccountAdapter_providers, "f")) {
|
|
37
|
+
const accounts = provider.getAccounts({
|
|
38
|
+
entropySource: __classPrivateFieldGet(this, _MultichainAccountAdapter_wallet, "f").entropySource,
|
|
39
|
+
groupIndex: __classPrivateFieldGet(this, _MultichainAccountAdapter_index, "f"),
|
|
40
|
+
});
|
|
41
|
+
__classPrivateFieldGet(this, _MultichainAccountAdapter_accounts, "f").set(provider, accounts);
|
|
42
|
+
for (const id of accounts) {
|
|
43
|
+
__classPrivateFieldGet(this, _MultichainAccountAdapter_providersByAccountId, "f").set(id, provider);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
get id() {
|
|
48
|
+
return __classPrivateFieldGet(this, _MultichainAccountAdapter_id, "f");
|
|
49
|
+
}
|
|
50
|
+
get wallet() {
|
|
51
|
+
return __classPrivateFieldGet(this, _MultichainAccountAdapter_wallet, "f");
|
|
52
|
+
}
|
|
53
|
+
get index() {
|
|
54
|
+
return __classPrivateFieldGet(this, _MultichainAccountAdapter_index, "f");
|
|
55
|
+
}
|
|
56
|
+
hasAccounts() {
|
|
57
|
+
// Use this map, cause if there's no accounts, then this map will also
|
|
58
|
+
// be empty.
|
|
59
|
+
return __classPrivateFieldGet(this, _MultichainAccountAdapter_providersByAccountId, "f").size > 0;
|
|
60
|
+
}
|
|
61
|
+
getAccounts() {
|
|
62
|
+
let allAccounts = [];
|
|
63
|
+
for (const [provider, accounts] of __classPrivateFieldGet(this, _MultichainAccountAdapter_accounts, "f").entries()) {
|
|
64
|
+
allAccounts = allAccounts.concat(accounts.map((id) => provider.getAccount(id)));
|
|
65
|
+
}
|
|
66
|
+
return allAccounts;
|
|
67
|
+
}
|
|
68
|
+
getAccount(id) {
|
|
69
|
+
const provider = __classPrivateFieldGet(this, _MultichainAccountAdapter_providersByAccountId, "f").get(id);
|
|
70
|
+
return provider?.getAccount(id);
|
|
71
|
+
}
|
|
72
|
+
get(selector) {
|
|
73
|
+
const accounts = this.select(selector);
|
|
74
|
+
if (accounts.length > 1) {
|
|
75
|
+
throw new Error(`Too many account candidates, expected 1, got: ${accounts.length}`);
|
|
76
|
+
}
|
|
77
|
+
if (accounts.length === 0) {
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
return accounts[0]; // This is safe, see checks above.
|
|
81
|
+
}
|
|
82
|
+
select(selector) {
|
|
83
|
+
return this.getAccounts().filter((account) => {
|
|
84
|
+
let selected = true;
|
|
85
|
+
if (selector.id) {
|
|
86
|
+
selected && (selected = account.id === selector.id);
|
|
87
|
+
}
|
|
88
|
+
if (selector.address) {
|
|
89
|
+
selected && (selected = account.address === selector.address);
|
|
90
|
+
}
|
|
91
|
+
if (selector.type) {
|
|
92
|
+
selected && (selected = account.type === selector.type);
|
|
93
|
+
}
|
|
94
|
+
if (selector.methods !== undefined) {
|
|
95
|
+
selected && (selected = selector.methods.some((method) => account.methods.includes(method)));
|
|
96
|
+
}
|
|
97
|
+
if (selector.scopes !== undefined) {
|
|
98
|
+
selected && (selected = selector.scopes.some((scope) => {
|
|
99
|
+
return (
|
|
100
|
+
// This will cover specific EVM EOA scopes as well.
|
|
101
|
+
(0, keyring_utils_1.isScopeEqualToAny)(scope, account.scopes));
|
|
102
|
+
}));
|
|
103
|
+
}
|
|
104
|
+
return selected;
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.MultichainAccountAdapter = MultichainAccountAdapter;
|
|
109
|
+
_MultichainAccountAdapter_id = new WeakMap(), _MultichainAccountAdapter_wallet = new WeakMap(), _MultichainAccountAdapter_index = new WeakMap(), _MultichainAccountAdapter_providers = new WeakMap(), _MultichainAccountAdapter_providersByAccountId = new WeakMap(), _MultichainAccountAdapter_accounts = new WeakMap();
|
|
110
|
+
class MultichainAccountWalletAdapter {
|
|
111
|
+
constructor({ providers, entropySource, }) {
|
|
112
|
+
_MultichainAccountWalletAdapter_instances.add(this);
|
|
113
|
+
_MultichainAccountWalletAdapter_id.set(this, void 0);
|
|
114
|
+
_MultichainAccountWalletAdapter_providers.set(this, void 0);
|
|
115
|
+
_MultichainAccountWalletAdapter_entropySource.set(this, void 0);
|
|
116
|
+
_MultichainAccountWalletAdapter_accounts.set(this, void 0);
|
|
117
|
+
__classPrivateFieldSet(this, _MultichainAccountWalletAdapter_id, (0, __1.toMultichainAccountWalletId)(entropySource), "f");
|
|
118
|
+
__classPrivateFieldSet(this, _MultichainAccountWalletAdapter_providers, providers, "f");
|
|
119
|
+
__classPrivateFieldSet(this, _MultichainAccountWalletAdapter_entropySource, entropySource, "f");
|
|
120
|
+
__classPrivateFieldSet(this, _MultichainAccountWalletAdapter_accounts, new Map(), "f");
|
|
121
|
+
let groupIndex = 0;
|
|
122
|
+
let hasAccounts = false;
|
|
123
|
+
do {
|
|
124
|
+
const multichainAccount = new MultichainAccountAdapter({
|
|
125
|
+
groupIndex,
|
|
126
|
+
wallet: this,
|
|
127
|
+
providers: __classPrivateFieldGet(this, _MultichainAccountWalletAdapter_providers, "f"),
|
|
128
|
+
});
|
|
129
|
+
// We only add multichain account that has underlying accounts.
|
|
130
|
+
hasAccounts = multichainAccount.hasAccounts();
|
|
131
|
+
if (hasAccounts) {
|
|
132
|
+
__classPrivateFieldGet(this, _MultichainAccountWalletAdapter_accounts, "f").set(groupIndex, multichainAccount);
|
|
133
|
+
}
|
|
134
|
+
groupIndex += 1;
|
|
135
|
+
} while (hasAccounts);
|
|
136
|
+
}
|
|
137
|
+
get id() {
|
|
138
|
+
return __classPrivateFieldGet(this, _MultichainAccountWalletAdapter_id, "f");
|
|
139
|
+
}
|
|
140
|
+
get entropySource() {
|
|
141
|
+
return __classPrivateFieldGet(this, _MultichainAccountWalletAdapter_entropySource, "f");
|
|
142
|
+
}
|
|
143
|
+
getAccountGroup(groupId) {
|
|
144
|
+
// We consider the "default case" to be mapped to index 0.
|
|
145
|
+
if (groupId === (0, __1.toDefaultAccountGroupId)(this.id)) {
|
|
146
|
+
return __classPrivateFieldGet(this, _MultichainAccountWalletAdapter_accounts, "f").get(0);
|
|
147
|
+
}
|
|
148
|
+
const groupIndex = (0, __1.getGroupIndexFromAccountGroupId)(groupId);
|
|
149
|
+
if (groupIndex === undefined) {
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
return __classPrivateFieldGet(this, _MultichainAccountWalletAdapter_accounts, "f").get(groupIndex);
|
|
153
|
+
}
|
|
154
|
+
getAccountGroups() {
|
|
155
|
+
return this.getMultichainAccounts();
|
|
156
|
+
}
|
|
157
|
+
getMultichainAccount(groupIndex) {
|
|
158
|
+
return __classPrivateFieldGet(this, _MultichainAccountWalletAdapter_accounts, "f").get(groupIndex);
|
|
159
|
+
}
|
|
160
|
+
getMultichainAccounts() {
|
|
161
|
+
return Array.from(__classPrivateFieldGet(this, _MultichainAccountWalletAdapter_accounts, "f").values()); // TODO: Prevent copy here.
|
|
162
|
+
}
|
|
163
|
+
getNextGroupIndex() {
|
|
164
|
+
// Assuming we cannot have indexes gaps.
|
|
165
|
+
return __classPrivateFieldGet(this, _MultichainAccountWalletAdapter_accounts, "f").size; // No +1 here, group indexes starts at 0.
|
|
166
|
+
}
|
|
167
|
+
async createMultichainAccount(groupIndex) {
|
|
168
|
+
const nextGroupIndex = this.getNextGroupIndex();
|
|
169
|
+
if (groupIndex > nextGroupIndex) {
|
|
170
|
+
throw new Error(`You cannot use an group index that is higher than the next available one: expect <${nextGroupIndex}, got ${groupIndex}`);
|
|
171
|
+
}
|
|
172
|
+
for (const provider of __classPrivateFieldGet(this, _MultichainAccountWalletAdapter_providers, "f")) {
|
|
173
|
+
await provider.createAccounts({
|
|
174
|
+
entropySource: __classPrivateFieldGet(this, _MultichainAccountWalletAdapter_entropySource, "f"),
|
|
175
|
+
groupIndex,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
// Re-create and "refresh" the multichain account (we assume all account creations are
|
|
179
|
+
// idempotent, so we should get the same accounts and potentially some new accounts (if
|
|
180
|
+
// some account providers decide to return more of them this time).
|
|
181
|
+
return __classPrivateFieldGet(this, _MultichainAccountWalletAdapter_instances, "m", _MultichainAccountWalletAdapter_createMultichainAccount).call(this, groupIndex);
|
|
182
|
+
}
|
|
183
|
+
async createNextMultichainAccount() {
|
|
184
|
+
return this.createMultichainAccount(this.getNextGroupIndex());
|
|
185
|
+
}
|
|
186
|
+
async discoverAndCreateMultichainAccounts() {
|
|
187
|
+
const multichainAccounts = [];
|
|
188
|
+
let discovered;
|
|
189
|
+
let groupIndex = 0;
|
|
190
|
+
do {
|
|
191
|
+
// Keep track if any accounts got discovered for that new index.
|
|
192
|
+
discovered = false;
|
|
193
|
+
const missingProviders = [];
|
|
194
|
+
for (const provider of __classPrivateFieldGet(this, _MultichainAccountWalletAdapter_providers, "f")) {
|
|
195
|
+
const discoveredAccounts = await provider.discoverAndCreateAccounts({
|
|
196
|
+
entropySource: __classPrivateFieldGet(this, _MultichainAccountWalletAdapter_entropySource, "f"),
|
|
197
|
+
groupIndex,
|
|
198
|
+
});
|
|
199
|
+
if (discoveredAccounts.length) {
|
|
200
|
+
// This provider has discovered and created accounts, meaning there might
|
|
201
|
+
// be something to discover on the next index.
|
|
202
|
+
discovered = true;
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
// This provider did not discover or create any accounts. We mark it as
|
|
206
|
+
// "missing", so we can create accounts on this index if other providers
|
|
207
|
+
// did discover something.
|
|
208
|
+
missingProviders.push(provider);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if (discovered) {
|
|
212
|
+
// We only create missing accounts if one of the provider has discovered
|
|
213
|
+
// and created accounts.
|
|
214
|
+
for (const provider of missingProviders) {
|
|
215
|
+
await provider.createAccounts({
|
|
216
|
+
entropySource: __classPrivateFieldGet(this, _MultichainAccountWalletAdapter_entropySource, "f"),
|
|
217
|
+
groupIndex,
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
// We've got all the accounts now, we can create our multichain account.
|
|
221
|
+
multichainAccounts.push(__classPrivateFieldGet(this, _MultichainAccountWalletAdapter_instances, "m", _MultichainAccountWalletAdapter_createMultichainAccount).call(this, groupIndex));
|
|
222
|
+
// We have accounts, we need to check the next index.
|
|
223
|
+
groupIndex += 1;
|
|
224
|
+
}
|
|
225
|
+
} while (discovered);
|
|
226
|
+
return multichainAccounts;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
exports.MultichainAccountWalletAdapter = MultichainAccountWalletAdapter;
|
|
230
|
+
_MultichainAccountWalletAdapter_id = new WeakMap(), _MultichainAccountWalletAdapter_providers = new WeakMap(), _MultichainAccountWalletAdapter_entropySource = new WeakMap(), _MultichainAccountWalletAdapter_accounts = new WeakMap(), _MultichainAccountWalletAdapter_instances = new WeakSet(), _MultichainAccountWalletAdapter_createMultichainAccount = function _MultichainAccountWalletAdapter_createMultichainAccount(groupIndex) {
|
|
231
|
+
const multichainAccount = new MultichainAccountAdapter({
|
|
232
|
+
wallet: this,
|
|
233
|
+
providers: __classPrivateFieldGet(this, _MultichainAccountWalletAdapter_providers, "f"),
|
|
234
|
+
groupIndex,
|
|
235
|
+
});
|
|
236
|
+
// Register the account to our internal map.
|
|
237
|
+
__classPrivateFieldGet(this, _MultichainAccountWalletAdapter_accounts, "f").set(groupIndex, multichainAccount);
|
|
238
|
+
return multichainAccount;
|
|
239
|
+
};
|
|
240
|
+
//# sourceMappingURL=adapters.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.cjs","sourceRoot":"","sources":["../../../src/api/multichain/adapters.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\n// This rule seems to be triggering a false positive. Possibly eslint is not\n// inferring the `InternalAccount` type correctly which causes issue with the\n// union `| undefined`.\n\nimport type { EntropySourceId, KeyringAccount } from '@metamask/keyring-api';\nimport type { AccountId } from '@metamask/keyring-utils';\nimport { isScopeEqualToAny } from '@metamask/keyring-utils';\n\nimport type {\n AccountGroupId,\n AccountProvider,\n MultichainAccount,\n MultichainAccountId,\n MultichainAccountSelector,\n MultichainAccountWallet,\n MultichainAccountWalletId,\n} from '..';\nimport {\n getGroupIndexFromAccountGroupId,\n toDefaultAccountGroupId,\n toMultichainAccountId,\n toMultichainAccountWalletId,\n} from '..';\n\nexport class MultichainAccountAdapter<Account extends KeyringAccount>\n implements MultichainAccount<Account>\n{\n readonly #id: MultichainAccountId;\n\n readonly #wallet: MultichainAccountWallet<Account>;\n\n readonly #index: number;\n\n readonly #providers: AccountProvider<Account>[];\n\n readonly #providersByAccountId: Map<AccountId, AccountProvider<Account>>;\n\n readonly #accounts: Map<AccountProvider<Account>, AccountId[]>;\n\n constructor({\n groupIndex,\n wallet,\n providers,\n }: {\n groupIndex: number;\n wallet: MultichainAccountWallet<Account>;\n providers: AccountProvider<Account>[];\n }) {\n this.#id = toMultichainAccountId(wallet.id, groupIndex);\n this.#index = groupIndex;\n this.#wallet = wallet;\n this.#providers = providers;\n this.#accounts = new Map();\n this.#providersByAccountId = new Map();\n\n for (const provider of this.#providers) {\n const accounts = provider.getAccounts({\n entropySource: this.#wallet.entropySource,\n groupIndex: this.#index,\n });\n\n this.#accounts.set(provider, accounts);\n for (const id of accounts) {\n this.#providersByAccountId.set(id, provider);\n }\n }\n }\n\n get id(): MultichainAccountId {\n return this.#id;\n }\n\n get wallet(): MultichainAccountWallet<Account> {\n return this.#wallet;\n }\n\n get index(): number {\n return this.#index;\n }\n\n hasAccounts(): boolean {\n // Use this map, cause if there's no accounts, then this map will also\n // be empty.\n return this.#providersByAccountId.size > 0;\n }\n\n getAccounts(): Account[] {\n let allAccounts: Account[] = [];\n\n for (const [provider, accounts] of this.#accounts.entries()) {\n allAccounts = allAccounts.concat(\n accounts.map((id) => provider.getAccount(id)),\n );\n }\n\n return allAccounts;\n }\n\n getAccount(id: AccountId): Account | undefined {\n const provider = this.#providersByAccountId.get(id);\n\n return provider?.getAccount(id);\n }\n\n get(selector: MultichainAccountSelector): Account | undefined {\n const accounts = this.select(selector);\n\n if (accounts.length > 1) {\n throw new Error(\n `Too many account candidates, expected 1, got: ${accounts.length}`,\n );\n }\n\n if (accounts.length === 0) {\n return undefined;\n }\n\n return accounts[0]; // This is safe, see checks above.\n }\n\n select(selector: MultichainAccountSelector): Account[] {\n return this.getAccounts().filter((account) => {\n let selected = true;\n\n if (selector.id) {\n selected &&= account.id === selector.id;\n }\n if (selector.address) {\n selected &&= account.address === selector.address;\n }\n if (selector.type) {\n selected &&= account.type === selector.type;\n }\n if (selector.methods !== undefined) {\n selected &&= selector.methods.some((method) =>\n account.methods.includes(method),\n );\n }\n if (selector.scopes !== undefined) {\n selected &&= selector.scopes.some((scope) => {\n return (\n // This will cover specific EVM EOA scopes as well.\n isScopeEqualToAny(scope, account.scopes)\n );\n });\n }\n\n return selected;\n });\n }\n}\n\nexport class MultichainAccountWalletAdapter<Account extends KeyringAccount>\n implements MultichainAccountWallet<Account>\n{\n readonly #id: MultichainAccountWalletId;\n\n readonly #providers: AccountProvider<Account>[];\n\n readonly #entropySource: EntropySourceId;\n\n readonly #accounts: Map<number, MultichainAccount<Account>>;\n\n constructor({\n providers,\n entropySource,\n }: {\n providers: AccountProvider<Account>[];\n entropySource: EntropySourceId;\n }) {\n this.#id = toMultichainAccountWalletId(entropySource);\n this.#providers = providers;\n this.#entropySource = entropySource;\n this.#accounts = new Map();\n\n let groupIndex = 0;\n let hasAccounts = false;\n\n do {\n const multichainAccount = new MultichainAccountAdapter({\n groupIndex,\n wallet: this,\n providers: this.#providers,\n });\n\n // We only add multichain account that has underlying accounts.\n hasAccounts = multichainAccount.hasAccounts();\n if (hasAccounts) {\n this.#accounts.set(groupIndex, multichainAccount);\n }\n\n groupIndex += 1;\n } while (hasAccounts);\n }\n\n get id(): MultichainAccountWalletId {\n return this.#id;\n }\n\n get entropySource(): EntropySourceId {\n return this.#entropySource;\n }\n\n getAccountGroup(\n groupId: AccountGroupId,\n ): MultichainAccount<Account> | undefined {\n // We consider the \"default case\" to be mapped to index 0.\n if (groupId === toDefaultAccountGroupId(this.id)) {\n return this.#accounts.get(0);\n }\n\n const groupIndex = getGroupIndexFromAccountGroupId(groupId);\n if (groupIndex === undefined) {\n return undefined;\n }\n return this.#accounts.get(groupIndex);\n }\n\n getAccountGroups(): MultichainAccount<Account>[] {\n return this.getMultichainAccounts();\n }\n\n getMultichainAccount(\n groupIndex: number,\n ): MultichainAccount<Account> | undefined {\n return this.#accounts.get(groupIndex);\n }\n\n getMultichainAccounts(): MultichainAccount<Account>[] {\n return Array.from(this.#accounts.values()); // TODO: Prevent copy here.\n }\n\n #createMultichainAccount(groupIndex: number): MultichainAccount<Account> {\n const multichainAccount = new MultichainAccountAdapter({\n wallet: this,\n providers: this.#providers,\n groupIndex,\n });\n\n // Register the account to our internal map.\n this.#accounts.set(groupIndex, multichainAccount);\n\n return multichainAccount;\n }\n\n getNextGroupIndex(): number {\n // Assuming we cannot have indexes gaps.\n return this.#accounts.size; // No +1 here, group indexes starts at 0.\n }\n\n async createMultichainAccount(\n groupIndex: number,\n ): Promise<MultichainAccount<Account>> {\n const nextGroupIndex = this.getNextGroupIndex();\n if (groupIndex > nextGroupIndex) {\n throw new Error(\n `You cannot use an group index that is higher than the next available one: expect <${nextGroupIndex}, got ${groupIndex}`,\n );\n }\n\n for (const provider of this.#providers) {\n await provider.createAccounts({\n entropySource: this.#entropySource,\n groupIndex,\n });\n }\n\n // Re-create and \"refresh\" the multichain account (we assume all account creations are\n // idempotent, so we should get the same accounts and potentially some new accounts (if\n // some account providers decide to return more of them this time).\n return this.#createMultichainAccount(groupIndex);\n }\n\n async createNextMultichainAccount(): Promise<MultichainAccount<Account>> {\n return this.createMultichainAccount(this.getNextGroupIndex());\n }\n\n async discoverAndCreateMultichainAccounts(): Promise<\n MultichainAccount<Account>[]\n > {\n const multichainAccounts: MultichainAccount<Account>[] = [];\n\n let discovered: boolean;\n let groupIndex = 0;\n\n do {\n // Keep track if any accounts got discovered for that new index.\n discovered = false;\n\n const missingProviders = [];\n for (const provider of this.#providers) {\n const discoveredAccounts = await provider.discoverAndCreateAccounts({\n entropySource: this.#entropySource,\n groupIndex,\n });\n\n if (discoveredAccounts.length) {\n // This provider has discovered and created accounts, meaning there might\n // be something to discover on the next index.\n discovered = true;\n } else {\n // This provider did not discover or create any accounts. We mark it as\n // \"missing\", so we can create accounts on this index if other providers\n // did discover something.\n missingProviders.push(provider);\n }\n }\n\n if (discovered) {\n // We only create missing accounts if one of the provider has discovered\n // and created accounts.\n for (const provider of missingProviders) {\n await provider.createAccounts({\n entropySource: this.#entropySource,\n groupIndex,\n });\n }\n\n // We've got all the accounts now, we can create our multichain account.\n multichainAccounts.push(this.#createMultichainAccount(groupIndex));\n\n // We have accounts, we need to check the next index.\n groupIndex += 1;\n }\n } while (discovered);\n\n return multichainAccounts;\n }\n}\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { EntropySourceId, KeyringAccount } from "@metamask/keyring-api";
|
|
2
|
+
import type { AccountId } from "@metamask/keyring-utils";
|
|
3
|
+
import type { AccountGroupId, AccountProvider, MultichainAccount, MultichainAccountId, MultichainAccountSelector, MultichainAccountWallet, MultichainAccountWalletId } from "../index.cjs";
|
|
4
|
+
export declare class MultichainAccountAdapter<Account extends KeyringAccount> implements MultichainAccount<Account> {
|
|
5
|
+
#private;
|
|
6
|
+
constructor({ groupIndex, wallet, providers, }: {
|
|
7
|
+
groupIndex: number;
|
|
8
|
+
wallet: MultichainAccountWallet<Account>;
|
|
9
|
+
providers: AccountProvider<Account>[];
|
|
10
|
+
});
|
|
11
|
+
get id(): MultichainAccountId;
|
|
12
|
+
get wallet(): MultichainAccountWallet<Account>;
|
|
13
|
+
get index(): number;
|
|
14
|
+
hasAccounts(): boolean;
|
|
15
|
+
getAccounts(): Account[];
|
|
16
|
+
getAccount(id: AccountId): Account | undefined;
|
|
17
|
+
get(selector: MultichainAccountSelector): Account | undefined;
|
|
18
|
+
select(selector: MultichainAccountSelector): Account[];
|
|
19
|
+
}
|
|
20
|
+
export declare class MultichainAccountWalletAdapter<Account extends KeyringAccount> implements MultichainAccountWallet<Account> {
|
|
21
|
+
#private;
|
|
22
|
+
constructor({ providers, entropySource, }: {
|
|
23
|
+
providers: AccountProvider<Account>[];
|
|
24
|
+
entropySource: EntropySourceId;
|
|
25
|
+
});
|
|
26
|
+
get id(): MultichainAccountWalletId;
|
|
27
|
+
get entropySource(): EntropySourceId;
|
|
28
|
+
getAccountGroup(groupId: AccountGroupId): MultichainAccount<Account> | undefined;
|
|
29
|
+
getAccountGroups(): MultichainAccount<Account>[];
|
|
30
|
+
getMultichainAccount(groupIndex: number): MultichainAccount<Account> | undefined;
|
|
31
|
+
getMultichainAccounts(): MultichainAccount<Account>[];
|
|
32
|
+
getNextGroupIndex(): number;
|
|
33
|
+
createMultichainAccount(groupIndex: number): Promise<MultichainAccount<Account>>;
|
|
34
|
+
createNextMultichainAccount(): Promise<MultichainAccount<Account>>;
|
|
35
|
+
discoverAndCreateMultichainAccounts(): Promise<MultichainAccount<Account>[]>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=adapters.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.d.cts","sourceRoot":"","sources":["../../../src/api/multichain/adapters.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,8BAA8B;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,gCAAgC;AAGzD,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EAC1B,qBAAW;AAQZ,qBAAa,wBAAwB,CAAC,OAAO,SAAS,cAAc,CAClE,YAAW,iBAAiB,CAAC,OAAO,CAAC;;gBAczB,EACV,UAAU,EACV,MAAM,EACN,SAAS,GACV,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACzC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;KACvC;IAqBD,IAAI,EAAE,IAAI,mBAAmB,CAE5B;IAED,IAAI,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAE7C;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,WAAW,IAAI,OAAO;IAMtB,WAAW,IAAI,OAAO,EAAE;IAYxB,UAAU,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS;IAM9C,GAAG,CAAC,QAAQ,EAAE,yBAAyB,GAAG,OAAO,GAAG,SAAS;IAgB7D,MAAM,CAAC,QAAQ,EAAE,yBAAyB,GAAG,OAAO,EAAE;CA8BvD;AAED,qBAAa,8BAA8B,CAAC,OAAO,SAAS,cAAc,CACxE,YAAW,uBAAuB,CAAC,OAAO,CAAC;;gBAU/B,EACV,SAAS,EACT,aAAa,GACd,EAAE;QACD,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,aAAa,EAAE,eAAe,CAAC;KAChC;IA0BD,IAAI,EAAE,IAAI,yBAAyB,CAElC;IAED,IAAI,aAAa,IAAI,eAAe,CAEnC;IAED,eAAe,CACb,OAAO,EAAE,cAAc,GACtB,iBAAiB,CAAC,OAAO,CAAC,GAAG,SAAS;IAazC,gBAAgB,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAIhD,oBAAoB,CAClB,UAAU,EAAE,MAAM,GACjB,iBAAiB,CAAC,OAAO,CAAC,GAAG,SAAS;IAIzC,qBAAqB,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAiBrD,iBAAiB,IAAI,MAAM;IAKrB,uBAAuB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAqBhC,2BAA2B,IAAI,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAIlE,mCAAmC,IAAI,OAAO,CAClD,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAC7B;CAiDF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { EntropySourceId, KeyringAccount } from "@metamask/keyring-api";
|
|
2
|
+
import type { AccountId } from "@metamask/keyring-utils";
|
|
3
|
+
import type { AccountGroupId, AccountProvider, MultichainAccount, MultichainAccountId, MultichainAccountSelector, MultichainAccountWallet, MultichainAccountWalletId } from "../index.mjs";
|
|
4
|
+
export declare class MultichainAccountAdapter<Account extends KeyringAccount> implements MultichainAccount<Account> {
|
|
5
|
+
#private;
|
|
6
|
+
constructor({ groupIndex, wallet, providers, }: {
|
|
7
|
+
groupIndex: number;
|
|
8
|
+
wallet: MultichainAccountWallet<Account>;
|
|
9
|
+
providers: AccountProvider<Account>[];
|
|
10
|
+
});
|
|
11
|
+
get id(): MultichainAccountId;
|
|
12
|
+
get wallet(): MultichainAccountWallet<Account>;
|
|
13
|
+
get index(): number;
|
|
14
|
+
hasAccounts(): boolean;
|
|
15
|
+
getAccounts(): Account[];
|
|
16
|
+
getAccount(id: AccountId): Account | undefined;
|
|
17
|
+
get(selector: MultichainAccountSelector): Account | undefined;
|
|
18
|
+
select(selector: MultichainAccountSelector): Account[];
|
|
19
|
+
}
|
|
20
|
+
export declare class MultichainAccountWalletAdapter<Account extends KeyringAccount> implements MultichainAccountWallet<Account> {
|
|
21
|
+
#private;
|
|
22
|
+
constructor({ providers, entropySource, }: {
|
|
23
|
+
providers: AccountProvider<Account>[];
|
|
24
|
+
entropySource: EntropySourceId;
|
|
25
|
+
});
|
|
26
|
+
get id(): MultichainAccountWalletId;
|
|
27
|
+
get entropySource(): EntropySourceId;
|
|
28
|
+
getAccountGroup(groupId: AccountGroupId): MultichainAccount<Account> | undefined;
|
|
29
|
+
getAccountGroups(): MultichainAccount<Account>[];
|
|
30
|
+
getMultichainAccount(groupIndex: number): MultichainAccount<Account> | undefined;
|
|
31
|
+
getMultichainAccounts(): MultichainAccount<Account>[];
|
|
32
|
+
getNextGroupIndex(): number;
|
|
33
|
+
createMultichainAccount(groupIndex: number): Promise<MultichainAccount<Account>>;
|
|
34
|
+
createNextMultichainAccount(): Promise<MultichainAccount<Account>>;
|
|
35
|
+
discoverAndCreateMultichainAccounts(): Promise<MultichainAccount<Account>[]>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=adapters.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.d.mts","sourceRoot":"","sources":["../../../src/api/multichain/adapters.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,8BAA8B;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,gCAAgC;AAGzD,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EAC1B,qBAAW;AAQZ,qBAAa,wBAAwB,CAAC,OAAO,SAAS,cAAc,CAClE,YAAW,iBAAiB,CAAC,OAAO,CAAC;;gBAczB,EACV,UAAU,EACV,MAAM,EACN,SAAS,GACV,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACzC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;KACvC;IAqBD,IAAI,EAAE,IAAI,mBAAmB,CAE5B;IAED,IAAI,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAE7C;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,WAAW,IAAI,OAAO;IAMtB,WAAW,IAAI,OAAO,EAAE;IAYxB,UAAU,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS;IAM9C,GAAG,CAAC,QAAQ,EAAE,yBAAyB,GAAG,OAAO,GAAG,SAAS;IAgB7D,MAAM,CAAC,QAAQ,EAAE,yBAAyB,GAAG,OAAO,EAAE;CA8BvD;AAED,qBAAa,8BAA8B,CAAC,OAAO,SAAS,cAAc,CACxE,YAAW,uBAAuB,CAAC,OAAO,CAAC;;gBAU/B,EACV,SAAS,EACT,aAAa,GACd,EAAE;QACD,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,aAAa,EAAE,eAAe,CAAC;KAChC;IA0BD,IAAI,EAAE,IAAI,yBAAyB,CAElC;IAED,IAAI,aAAa,IAAI,eAAe,CAEnC;IAED,eAAe,CACb,OAAO,EAAE,cAAc,GACtB,iBAAiB,CAAC,OAAO,CAAC,GAAG,SAAS;IAazC,gBAAgB,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAIhD,oBAAoB,CAClB,UAAU,EAAE,MAAM,GACjB,iBAAiB,CAAC,OAAO,CAAC,GAAG,SAAS;IAIzC,qBAAqB,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAiBrD,iBAAiB,IAAI,MAAM;IAKrB,uBAAuB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAqBhC,2BAA2B,IAAI,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAIlE,mCAAmC,IAAI,OAAO,CAClD,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAC7B;CAiDF"}
|