@metamask-previews/account-api 0.10.0-8f62d3a → 0.10.0-9fbf2ff
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 +4 -0
- package/dist/api/multichain/wallet.cjs.map +1 -1
- package/dist/api/multichain/wallet.d.cts +30 -2
- package/dist/api/multichain/wallet.d.cts.map +1 -1
- package/dist/api/multichain/wallet.d.mts +30 -2
- package/dist/api/multichain/wallet.d.mts.map +1 -1
- package/dist/api/multichain/wallet.mjs.map +1 -1
- package/dist/api/wallet.cjs.map +1 -1
- package/dist/api/wallet.d.cts +56 -3
- package/dist/api/wallet.d.cts.map +1 -1
- package/dist/api/wallet.d.mts +56 -3
- package/dist/api/wallet.d.mts.map +1 -1
- package/dist/api/wallet.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.cjs","sourceRoot":"","sources":["../../../src/api/multichain/wallet.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"wallet.cjs","sourceRoot":"","sources":["../../../src/api/multichain/wallet.ts"],"names":[],"mappings":";;;AA2GA,kEAIC;AAQD,kEAIC;AAUD,wEAYC;AAzID,0CAA8C;AAQ9C;;GAEG;AACU,QAAA,kCAAkC,GAC7C,2DAA2D,CAAC;AAiF9D;;;;;GAKG;AACH,SAAgB,2BAA2B,CACzC,aAA8B;IAE9B,OAAO,GAAG,0BAAiB,CAAC,OAAO,IAAI,aAAa,EAAE,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,2BAA2B,CACzC,KAAa;IAEb,OAAO,0CAAkC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,8BAA8B,CAC5C,QAAgB;IAEhB,MAAM,KAAK,GAAG,0CAAkC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,GAAG,CAAC,CAAC;IACzE,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,UAAuC;QAC1D,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,WAAqB;KAC1C,CAAC;AACJ,CAAC","sourcesContent":["import {\n type EntropySourceId,\n type KeyringAccount,\n} from '@metamask/keyring-api';\n\nimport type { MultichainAccountGroup } from './group';\nimport type { Bip44Account } from '../bip44';\nimport type { AccountWalletStatus, BaseAccountWallet } from '../wallet';\nimport { AccountWalletType } from '../wallet';\n\n/**\n * Multichain account wallet ID.\n */\nexport type MultichainAccountWalletId =\n `${AccountWalletType.Entropy}:${EntropySourceId}`;\n\n/**\n * Regex to validate a valid multichain account wallet ID.\n */\nexport const MULTICHAIN_ACCOUNT_WALLET_ID_REGEX =\n /^(?<walletId>(?<walletType>entropy):(?<walletSubId>.+))$/u;\n\n/**\n * Parsed multichain account wallet ID with its wallet type and sub-ID.\n */\nexport type ParsedMultichainAccountWalletId = {\n type: AccountWalletType.Entropy;\n subId: string;\n};\n\n/**\n * Wallet status.\n *\n * Those status are used to report in which \"state\" the wallet is currently\n * in. All of those operations cannot run concurrently, thus, the wallet\n * cannot have multiple status at once.\n */\nexport type MultichainAccountWalletStatus =\n | AccountWalletStatus\n /**\n * Discovery is in progress for this wallet. New account groups will be\n * automatically added based on the account provider discovery result.\n */\n | 'in-progress:discovery'\n /**\n * Alignment is in progress for this wallet. Account groups will be\n * automatically updated based on the active account providers.\n */\n | 'in-progress:alignment'\n /**\n * An on-going operation (creating/deleting) is in progress for this\n * wallet. Account groups will either be created or deleted during\n * this operation.\n */\n | 'in-progress:operation';\n\n/**\n * A multichain account wallet that holds multiple multichain accounts (one multichain account per\n * group index).\n */\nexport type MultichainAccountWallet<\n Account extends Bip44Account<KeyringAccount>,\n> = BaseAccountWallet<Account> & {\n /**\n * Multichain account wallet ID.\n */\n get id(): MultichainAccountWalletId;\n\n /**\n * Multichain account wallet type, which is always {@link AccountWalletType.Entropy}.\n */\n get type(): AccountWalletType.Entropy;\n\n /**\n * Multichain account wallet entropy source.\n */\n get entropySource(): EntropySourceId;\n\n /**\n * Multichain account wallet status.\n */\n get status(): MultichainAccountWalletStatus;\n\n /**\n * Gets multichain account for a given index.\n *\n * @param groupIndex - Multichain account index.\n * @returns The multichain account associated with the given index.\n */\n getMultichainAccountGroup(\n groupIndex: number,\n ): MultichainAccountGroup<Account> | undefined;\n\n /**\n * Gets all multichain accounts.\n *\n * @returns The multichain accounts.\n */\n getMultichainAccountGroups(): MultichainAccountGroup<Account>[];\n};\n\n/**\n * Gets the multichain account wallet ID from its entropy source.\n *\n * @param entropySource - Entropy source ID of that wallet.\n * @returns The multichain account wallet ID.\n */\nexport function toMultichainAccountWalletId(\n entropySource: EntropySourceId,\n): MultichainAccountWalletId {\n return `${AccountWalletType.Entropy}:${entropySource}`;\n}\n\n/**\n * Checks if the given value is {@link MultichainAccountWalletId}.\n *\n * @param value - The value to check.\n * @returns Whether the value is a {@link MultichainAccountWalletId}.\n */\nexport function isMultichainAccountWalletId(\n value: string,\n): value is MultichainAccountWalletId {\n return MULTICHAIN_ACCOUNT_WALLET_ID_REGEX.test(value);\n}\n\n/**\n * Parse a multichain account wallet ID to an object containing wallet ID\n * information (wallet type and sub-ID).\n *\n * @param walletId - The account wallet ID to validate and parse.\n * @returns The parsed account wallet ID.\n * @throws When the wallet ID format is invalid.\n */\nexport function parseMultichainAccountWalletId(\n walletId: string,\n): ParsedMultichainAccountWalletId {\n const match = MULTICHAIN_ACCOUNT_WALLET_ID_REGEX.exec(walletId);\n if (!match?.groups) {\n throw new Error(`Invalid multichain account wallet ID: \"${walletId}\"`);\n }\n\n return {\n type: match.groups.walletType as AccountWalletType.Entropy,\n subId: match.groups.walletSubId as string,\n };\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type EntropySourceId, type KeyringAccount } from "@metamask/keyring-api";
|
|
2
2
|
import type { MultichainAccountGroup } from "./group.cjs";
|
|
3
3
|
import type { Bip44Account } from "../bip44.cjs";
|
|
4
|
-
import type {
|
|
4
|
+
import type { AccountWalletStatus, BaseAccountWallet } from "../wallet.cjs";
|
|
5
5
|
import { AccountWalletType } from "../wallet.cjs";
|
|
6
6
|
/**
|
|
7
7
|
* Multichain account wallet ID.
|
|
@@ -18,11 +18,35 @@ export type ParsedMultichainAccountWalletId = {
|
|
|
18
18
|
type: AccountWalletType.Entropy;
|
|
19
19
|
subId: string;
|
|
20
20
|
};
|
|
21
|
+
/**
|
|
22
|
+
* Wallet status.
|
|
23
|
+
*
|
|
24
|
+
* Those status are used to report in which "state" the wallet is currently
|
|
25
|
+
* in. All of those operations cannot run concurrently, thus, the wallet
|
|
26
|
+
* cannot have multiple status at once.
|
|
27
|
+
*/
|
|
28
|
+
export type MultichainAccountWalletStatus = AccountWalletStatus
|
|
29
|
+
/**
|
|
30
|
+
* Discovery is in progress for this wallet. New account groups will be
|
|
31
|
+
* automatically added based on the account provider discovery result.
|
|
32
|
+
*/
|
|
33
|
+
| 'in-progress:discovery'
|
|
34
|
+
/**
|
|
35
|
+
* Alignment is in progress for this wallet. Account groups will be
|
|
36
|
+
* automatically updated based on the active account providers.
|
|
37
|
+
*/
|
|
38
|
+
| 'in-progress:alignment'
|
|
39
|
+
/**
|
|
40
|
+
* An on-going operation (creating/deleting) is in progress for this
|
|
41
|
+
* wallet. Account groups will either be created or deleted during
|
|
42
|
+
* this operation.
|
|
43
|
+
*/
|
|
44
|
+
| 'in-progress:operation';
|
|
21
45
|
/**
|
|
22
46
|
* A multichain account wallet that holds multiple multichain accounts (one multichain account per
|
|
23
47
|
* group index).
|
|
24
48
|
*/
|
|
25
|
-
export type MultichainAccountWallet<Account extends Bip44Account<KeyringAccount>> =
|
|
49
|
+
export type MultichainAccountWallet<Account extends Bip44Account<KeyringAccount>> = BaseAccountWallet<Account> & {
|
|
26
50
|
/**
|
|
27
51
|
* Multichain account wallet ID.
|
|
28
52
|
*/
|
|
@@ -35,6 +59,10 @@ export type MultichainAccountWallet<Account extends Bip44Account<KeyringAccount>
|
|
|
35
59
|
* Multichain account wallet entropy source.
|
|
36
60
|
*/
|
|
37
61
|
get entropySource(): EntropySourceId;
|
|
62
|
+
/**
|
|
63
|
+
* Multichain account wallet status.
|
|
64
|
+
*/
|
|
65
|
+
get status(): MultichainAccountWalletStatus;
|
|
38
66
|
/**
|
|
39
67
|
* Gets multichain account for a given index.
|
|
40
68
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.cts","sourceRoot":"","sources":["../../../src/api/multichain/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,8BAA8B;AAE/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAgB;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAiB;AAC7C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"wallet.d.cts","sourceRoot":"","sources":["../../../src/api/multichain/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,8BAA8B;AAE/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAgB;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAiB;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,sBAAkB;AACxE,OAAO,EAAE,iBAAiB,EAAE,sBAAkB;AAE9C;;GAEG;AACH,MAAM,MAAM,yBAAyB,GACnC,GAAG,iBAAiB,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,kCAAkC,QACc,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,6BAA6B,GACrC,mBAAmB;AACrB;;;GAGG;GACD,uBAAuB;AACzB;;;GAGG;GACD,uBAAuB;AACzB;;;;GAIG;GACD,uBAAuB,CAAC;AAE5B;;;GAGG;AACH,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,YAAY,CAAC,cAAc,CAAC,IAC1C,iBAAiB,CAAC,OAAO,CAAC,GAAG;IAC/B;;OAEG;IACH,IAAI,EAAE,IAAI,yBAAyB,CAAC;IAEpC;;OAEG;IACH,IAAI,IAAI,IAAI,iBAAiB,CAAC,OAAO,CAAC;IAEtC;;OAEG;IACH,IAAI,aAAa,IAAI,eAAe,CAAC;IAErC;;OAEG;IACH,IAAI,MAAM,IAAI,6BAA6B,CAAC;IAE5C;;;;;OAKG;IACH,yBAAyB,CACvB,UAAU,EAAE,MAAM,GACjB,sBAAsB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAE/C;;;;OAIG;IACH,0BAA0B,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;CACjE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,eAAe,GAC7B,yBAAyB,CAE3B;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,GACZ,KAAK,IAAI,yBAAyB,CAEpC;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,GACf,+BAA+B,CAUjC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type EntropySourceId, type KeyringAccount } from "@metamask/keyring-api";
|
|
2
2
|
import type { MultichainAccountGroup } from "./group.mjs";
|
|
3
3
|
import type { Bip44Account } from "../bip44.mjs";
|
|
4
|
-
import type {
|
|
4
|
+
import type { AccountWalletStatus, BaseAccountWallet } from "../wallet.mjs";
|
|
5
5
|
import { AccountWalletType } from "../wallet.mjs";
|
|
6
6
|
/**
|
|
7
7
|
* Multichain account wallet ID.
|
|
@@ -18,11 +18,35 @@ export type ParsedMultichainAccountWalletId = {
|
|
|
18
18
|
type: AccountWalletType.Entropy;
|
|
19
19
|
subId: string;
|
|
20
20
|
};
|
|
21
|
+
/**
|
|
22
|
+
* Wallet status.
|
|
23
|
+
*
|
|
24
|
+
* Those status are used to report in which "state" the wallet is currently
|
|
25
|
+
* in. All of those operations cannot run concurrently, thus, the wallet
|
|
26
|
+
* cannot have multiple status at once.
|
|
27
|
+
*/
|
|
28
|
+
export type MultichainAccountWalletStatus = AccountWalletStatus
|
|
29
|
+
/**
|
|
30
|
+
* Discovery is in progress for this wallet. New account groups will be
|
|
31
|
+
* automatically added based on the account provider discovery result.
|
|
32
|
+
*/
|
|
33
|
+
| 'in-progress:discovery'
|
|
34
|
+
/**
|
|
35
|
+
* Alignment is in progress for this wallet. Account groups will be
|
|
36
|
+
* automatically updated based on the active account providers.
|
|
37
|
+
*/
|
|
38
|
+
| 'in-progress:alignment'
|
|
39
|
+
/**
|
|
40
|
+
* An on-going operation (creating/deleting) is in progress for this
|
|
41
|
+
* wallet. Account groups will either be created or deleted during
|
|
42
|
+
* this operation.
|
|
43
|
+
*/
|
|
44
|
+
| 'in-progress:operation';
|
|
21
45
|
/**
|
|
22
46
|
* A multichain account wallet that holds multiple multichain accounts (one multichain account per
|
|
23
47
|
* group index).
|
|
24
48
|
*/
|
|
25
|
-
export type MultichainAccountWallet<Account extends Bip44Account<KeyringAccount>> =
|
|
49
|
+
export type MultichainAccountWallet<Account extends Bip44Account<KeyringAccount>> = BaseAccountWallet<Account> & {
|
|
26
50
|
/**
|
|
27
51
|
* Multichain account wallet ID.
|
|
28
52
|
*/
|
|
@@ -35,6 +59,10 @@ export type MultichainAccountWallet<Account extends Bip44Account<KeyringAccount>
|
|
|
35
59
|
* Multichain account wallet entropy source.
|
|
36
60
|
*/
|
|
37
61
|
get entropySource(): EntropySourceId;
|
|
62
|
+
/**
|
|
63
|
+
* Multichain account wallet status.
|
|
64
|
+
*/
|
|
65
|
+
get status(): MultichainAccountWalletStatus;
|
|
38
66
|
/**
|
|
39
67
|
* Gets multichain account for a given index.
|
|
40
68
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.mts","sourceRoot":"","sources":["../../../src/api/multichain/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,8BAA8B;AAE/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAgB;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAiB;AAC7C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"wallet.d.mts","sourceRoot":"","sources":["../../../src/api/multichain/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,8BAA8B;AAE/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAgB;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAiB;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,sBAAkB;AACxE,OAAO,EAAE,iBAAiB,EAAE,sBAAkB;AAE9C;;GAEG;AACH,MAAM,MAAM,yBAAyB,GACnC,GAAG,iBAAiB,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,kCAAkC,QACc,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,6BAA6B,GACrC,mBAAmB;AACrB;;;GAGG;GACD,uBAAuB;AACzB;;;GAGG;GACD,uBAAuB;AACzB;;;;GAIG;GACD,uBAAuB,CAAC;AAE5B;;;GAGG;AACH,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,YAAY,CAAC,cAAc,CAAC,IAC1C,iBAAiB,CAAC,OAAO,CAAC,GAAG;IAC/B;;OAEG;IACH,IAAI,EAAE,IAAI,yBAAyB,CAAC;IAEpC;;OAEG;IACH,IAAI,IAAI,IAAI,iBAAiB,CAAC,OAAO,CAAC;IAEtC;;OAEG;IACH,IAAI,aAAa,IAAI,eAAe,CAAC;IAErC;;OAEG;IACH,IAAI,MAAM,IAAI,6BAA6B,CAAC;IAE5C;;;;;OAKG;IACH,yBAAyB,CACvB,UAAU,EAAE,MAAM,GACjB,sBAAsB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAE/C;;;;OAIG;IACH,0BAA0B,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;CACjE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,eAAe,GAC7B,yBAAyB,CAE3B;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,GACZ,KAAK,IAAI,yBAAyB,CAEpC;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,GACf,+BAA+B,CAUjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.mjs","sourceRoot":"","sources":["../../../src/api/multichain/wallet.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,sBAAkB;AAQ9C;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAC7C,2DAA2D,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet.mjs","sourceRoot":"","sources":["../../../src/api/multichain/wallet.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,sBAAkB;AAQ9C;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAC7C,2DAA2D,CAAC;AAiF9D;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,aAA8B;IAE9B,OAAO,GAAG,iBAAiB,CAAC,OAAO,IAAI,aAAa,EAAE,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAa;IAEb,OAAO,kCAAkC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAAgB;IAEhB,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,GAAG,CAAC,CAAC;IACzE,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,UAAuC;QAC1D,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,WAAqB;KAC1C,CAAC;AACJ,CAAC","sourcesContent":["import {\n type EntropySourceId,\n type KeyringAccount,\n} from '@metamask/keyring-api';\n\nimport type { MultichainAccountGroup } from './group';\nimport type { Bip44Account } from '../bip44';\nimport type { AccountWalletStatus, BaseAccountWallet } from '../wallet';\nimport { AccountWalletType } from '../wallet';\n\n/**\n * Multichain account wallet ID.\n */\nexport type MultichainAccountWalletId =\n `${AccountWalletType.Entropy}:${EntropySourceId}`;\n\n/**\n * Regex to validate a valid multichain account wallet ID.\n */\nexport const MULTICHAIN_ACCOUNT_WALLET_ID_REGEX =\n /^(?<walletId>(?<walletType>entropy):(?<walletSubId>.+))$/u;\n\n/**\n * Parsed multichain account wallet ID with its wallet type and sub-ID.\n */\nexport type ParsedMultichainAccountWalletId = {\n type: AccountWalletType.Entropy;\n subId: string;\n};\n\n/**\n * Wallet status.\n *\n * Those status are used to report in which \"state\" the wallet is currently\n * in. All of those operations cannot run concurrently, thus, the wallet\n * cannot have multiple status at once.\n */\nexport type MultichainAccountWalletStatus =\n | AccountWalletStatus\n /**\n * Discovery is in progress for this wallet. New account groups will be\n * automatically added based on the account provider discovery result.\n */\n | 'in-progress:discovery'\n /**\n * Alignment is in progress for this wallet. Account groups will be\n * automatically updated based on the active account providers.\n */\n | 'in-progress:alignment'\n /**\n * An on-going operation (creating/deleting) is in progress for this\n * wallet. Account groups will either be created or deleted during\n * this operation.\n */\n | 'in-progress:operation';\n\n/**\n * A multichain account wallet that holds multiple multichain accounts (one multichain account per\n * group index).\n */\nexport type MultichainAccountWallet<\n Account extends Bip44Account<KeyringAccount>,\n> = BaseAccountWallet<Account> & {\n /**\n * Multichain account wallet ID.\n */\n get id(): MultichainAccountWalletId;\n\n /**\n * Multichain account wallet type, which is always {@link AccountWalletType.Entropy}.\n */\n get type(): AccountWalletType.Entropy;\n\n /**\n * Multichain account wallet entropy source.\n */\n get entropySource(): EntropySourceId;\n\n /**\n * Multichain account wallet status.\n */\n get status(): MultichainAccountWalletStatus;\n\n /**\n * Gets multichain account for a given index.\n *\n * @param groupIndex - Multichain account index.\n * @returns The multichain account associated with the given index.\n */\n getMultichainAccountGroup(\n groupIndex: number,\n ): MultichainAccountGroup<Account> | undefined;\n\n /**\n * Gets all multichain accounts.\n *\n * @returns The multichain accounts.\n */\n getMultichainAccountGroups(): MultichainAccountGroup<Account>[];\n};\n\n/**\n * Gets the multichain account wallet ID from its entropy source.\n *\n * @param entropySource - Entropy source ID of that wallet.\n * @returns The multichain account wallet ID.\n */\nexport function toMultichainAccountWalletId(\n entropySource: EntropySourceId,\n): MultichainAccountWalletId {\n return `${AccountWalletType.Entropy}:${entropySource}`;\n}\n\n/**\n * Checks if the given value is {@link MultichainAccountWalletId}.\n *\n * @param value - The value to check.\n * @returns Whether the value is a {@link MultichainAccountWalletId}.\n */\nexport function isMultichainAccountWalletId(\n value: string,\n): value is MultichainAccountWalletId {\n return MULTICHAIN_ACCOUNT_WALLET_ID_REGEX.test(value);\n}\n\n/**\n * Parse a multichain account wallet ID to an object containing wallet ID\n * information (wallet type and sub-ID).\n *\n * @param walletId - The account wallet ID to validate and parse.\n * @returns The parsed account wallet ID.\n * @throws When the wallet ID format is invalid.\n */\nexport function parseMultichainAccountWalletId(\n walletId: string,\n): ParsedMultichainAccountWalletId {\n const match = MULTICHAIN_ACCOUNT_WALLET_ID_REGEX.exec(walletId);\n if (!match?.groups) {\n throw new Error(`Invalid multichain account wallet ID: \"${walletId}\"`);\n }\n\n return {\n type: match.groups.walletType as AccountWalletType.Entropy,\n subId: match.groups.walletSubId as string,\n };\n}\n"]}
|
package/dist/api/wallet.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.cjs","sourceRoot":"","sources":["../../src/api/wallet.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"wallet.cjs","sourceRoot":"","sources":["../../src/api/wallet.ts"],"names":[],"mappings":";;;AAwJA,8CAKC;AAQD,8CAEC;AAUD,oDAUC;AASD,wDAEC;AA/LD;;;;GAIG;AACH,IAAY,iBASX;AATD,WAAY,iBAAiB;IAC3B,8DAA8D;IAC9D,wCAAmB,CAAA;IAEnB,8DAA8D;IAC9D,wCAAmB,CAAA;IAEnB,2EAA2E;IAC3E,kCAAa,CAAA;AACf,CAAC,EATW,iBAAiB,iCAAjB,iBAAiB,QAS5B;AAOD;;GAEG;AACU,QAAA,uBAAuB,GAClC,2DAA2D,CAAC;AAiH9D;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAC/B,IAAgB,EAChB,EAAU;IAEV,OAAO,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,OAAO,+BAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAAC,QAAgB;IACnD,MAAM,KAAK,GAAG,+BAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,UAA+B;QAClD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,WAAqB;KAC1C,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAAC,QAAgB;IACrD,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;AAC9C,CAAC","sourcesContent":["import type { KeyringAccount } from '@metamask/keyring-api';\n\n// Circular import are allowed when using `import type`.\nimport type { Bip44Account } from './bip44';\nimport type { AccountGroup, AccountGroupId } from './group';\nimport type { MultichainAccountWallet } from './multichain';\n\n/**\n * Wallet type.\n *\n * Each wallet types groups accounts using different criterias.\n */\nexport enum AccountWalletType {\n /** Wallet grouping accounts based on their entropy source. */\n Entropy = 'entropy',\n\n /** Wallet grouping accounts based on their keyring's type. */\n Keyring = 'keyring',\n\n /** Wallet grouping accounts associated with an account management Snap. */\n Snap = 'snap',\n}\n\n/**\n * Account wallet ID.\n */\nexport type AccountWalletId = `${AccountWalletType}:${string}`;\n\n/**\n * Regex to validate an account wallet ID.\n */\nexport const ACCOUNT_WALLET_ID_REGEX =\n /^(?<walletType>entropy|keyring|snap):(?<walletSubId>.+)$/u;\n\n/**\n * Wallet status.\n *\n * Those status are used to report in which \"state\" the wallet is currently\n * in. All of those operations cannot run concurrently, thus, the wallet\n * cannot have multiple status at once.\n */\nexport type AccountWalletStatus =\n /**\n * The wallet is not initialized yet.\n */\n | 'uninitialized'\n /**\n * The wallet is ready to run any operation.\n */\n | 'ready';\n\n/**\n * Parsed account wallet ID with its wallet type and sub-ID.\n */\nexport type ParsedAccountWalletId = {\n type: AccountWalletType;\n subId: string;\n};\n\n/**\n * Keyring account wallet that can hold multiple account groups.\n */\nexport type BaseAccountWallet<Account extends KeyringAccount> = {\n /**\n * Account wallet ID.\n */\n get id(): AccountWalletId;\n\n /**\n * Keyring account wallet type.\n */\n get type(): AccountWalletType;\n\n /**\n * Account wallet status.\n */\n get status(): AccountWalletStatus;\n\n /**\n * Gets account group for a given ID.\n *\n * @param id - Account group ID.\n * @returns Account group.\n */\n getAccountGroup(id: AccountGroupId): AccountGroup<Account> | undefined;\n\n /**\n * Gets all account groups.\n *\n * @returns Account groups.\n */\n getAccountGroups(): AccountGroup<Account>[];\n};\n\n/**\n * Keyring account wallet that can hold multiple account groups.\n */\nexport type KeyringAccountWallet<Account extends KeyringAccount> =\n BaseAccountWallet<Account> & {\n /**\n * Keyring account wallet type.\n */\n get type(): AccountWalletType.Keyring;\n };\n\n/**\n * Snap keyring account wallet that can hold multiple account groups.\n */\nexport type SnapAccountWallet<Account extends KeyringAccount> =\n BaseAccountWallet<Account> & {\n /**\n * Snap account wallet type.\n */\n get type(): AccountWalletType.Snap;\n };\n\n/**\n * Type constraint for a {@link AccountGroupObject}. If one of its union-members\n * does not match this contraint, {@link AccountGroupObject} will resolve\n * to `never`.\n */\ntype IsAccountWallet<\n Wallet extends BaseAccountWallet<Account> & {\n get type(): AccountWalletType;\n },\n Account extends KeyringAccount,\n> = Wallet;\n\n/**\n * Account wallet that can hold multiple account groups.\n */\nexport type AccountWallet<Account extends KeyringAccount> = IsAccountWallet<\n | KeyringAccountWallet<Account>\n | SnapAccountWallet<Account>\n | MultichainAccountWallet<Bip44Account<Account>>,\n Account\n>;\n\n/**\n * Type utility to compute a constrained {@link AccountWalletId} type given a\n * specifc {@link AccountWalletType}.\n */\nexport type AccountWalletIdOf<WalletType extends AccountWalletType> =\n `${WalletType}:${string}`;\n\n/**\n * Convert a unique ID to a wallet ID for a given type.\n *\n * @param type - A wallet type.\n * @param id - A unique ID.\n * @returns A wallet ID.\n */\nexport function toAccountWalletId<WalletType extends AccountWalletType>(\n type: WalletType,\n id: string,\n): AccountWalletIdOf<WalletType> {\n return `${type}:${id}`;\n}\n\n/**\n * Checks if the given value is {@link AccountWalletId}.\n *\n * @param value - The value to check.\n * @returns Whether the value is a {@link AccountWalletId}.\n */\nexport function isAccountWalletId(value: string): value is AccountWalletId {\n return ACCOUNT_WALLET_ID_REGEX.test(value);\n}\n\n/**\n * Parse an account wallet ID to an object containing a wallet ID information\n * (wallet type and wallet sub-ID).\n *\n * @param walletId - The account wallet ID to validate and parse.\n * @returns The parsed account wallet ID.\n * @throws When the wallet ID format is invalid.\n */\nexport function parseAccountWalletId(walletId: string): ParsedAccountWalletId {\n const match = ACCOUNT_WALLET_ID_REGEX.exec(walletId);\n if (!match?.groups) {\n throw new Error(`Invalid account wallet ID: \"${walletId}\"`);\n }\n\n return {\n type: match.groups.walletType as AccountWalletType,\n subId: match.groups.walletSubId as string,\n };\n}\n\n/**\n * Strip the account wallet type from an account wallet ID.\n *\n * @param walletId - Account wallet ID.\n * @returns Account wallet sub-ID.\n * @throws When the wallet ID format is invalid.\n */\nexport function stripAccountWalletType(walletId: string): string {\n return parseAccountWalletId(walletId).subId;\n}\n"]}
|
package/dist/api/wallet.d.cts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { KeyringAccount } from "@metamask/keyring-api";
|
|
2
|
+
import type { Bip44Account } from "./bip44.cjs";
|
|
2
3
|
import type { AccountGroup, AccountGroupId } from "./group.cjs";
|
|
4
|
+
import type { MultichainAccountWallet } from "./multichain/index.cjs";
|
|
3
5
|
/**
|
|
4
6
|
* Wallet type.
|
|
5
7
|
*
|
|
@@ -21,6 +23,22 @@ export type AccountWalletId = `${AccountWalletType}:${string}`;
|
|
|
21
23
|
* Regex to validate an account wallet ID.
|
|
22
24
|
*/
|
|
23
25
|
export declare const ACCOUNT_WALLET_ID_REGEX: RegExp;
|
|
26
|
+
/**
|
|
27
|
+
* Wallet status.
|
|
28
|
+
*
|
|
29
|
+
* Those status are used to report in which "state" the wallet is currently
|
|
30
|
+
* in. All of those operations cannot run concurrently, thus, the wallet
|
|
31
|
+
* cannot have multiple status at once.
|
|
32
|
+
*/
|
|
33
|
+
export type AccountWalletStatus =
|
|
34
|
+
/**
|
|
35
|
+
* The wallet is not initialized yet.
|
|
36
|
+
*/
|
|
37
|
+
'uninitialized'
|
|
38
|
+
/**
|
|
39
|
+
* The wallet is ready to run any operation.
|
|
40
|
+
*/
|
|
41
|
+
| 'ready';
|
|
24
42
|
/**
|
|
25
43
|
* Parsed account wallet ID with its wallet type and sub-ID.
|
|
26
44
|
*/
|
|
@@ -29,17 +47,21 @@ export type ParsedAccountWalletId = {
|
|
|
29
47
|
subId: string;
|
|
30
48
|
};
|
|
31
49
|
/**
|
|
32
|
-
*
|
|
50
|
+
* Keyring account wallet that can hold multiple account groups.
|
|
33
51
|
*/
|
|
34
|
-
export type
|
|
52
|
+
export type BaseAccountWallet<Account extends KeyringAccount> = {
|
|
35
53
|
/**
|
|
36
54
|
* Account wallet ID.
|
|
37
55
|
*/
|
|
38
56
|
get id(): AccountWalletId;
|
|
39
57
|
/**
|
|
40
|
-
*
|
|
58
|
+
* Keyring account wallet type.
|
|
41
59
|
*/
|
|
42
60
|
get type(): AccountWalletType;
|
|
61
|
+
/**
|
|
62
|
+
* Account wallet status.
|
|
63
|
+
*/
|
|
64
|
+
get status(): AccountWalletStatus;
|
|
43
65
|
/**
|
|
44
66
|
* Gets account group for a given ID.
|
|
45
67
|
*
|
|
@@ -54,6 +76,36 @@ export type AccountWallet<Account extends KeyringAccount> = {
|
|
|
54
76
|
*/
|
|
55
77
|
getAccountGroups(): AccountGroup<Account>[];
|
|
56
78
|
};
|
|
79
|
+
/**
|
|
80
|
+
* Keyring account wallet that can hold multiple account groups.
|
|
81
|
+
*/
|
|
82
|
+
export type KeyringAccountWallet<Account extends KeyringAccount> = BaseAccountWallet<Account> & {
|
|
83
|
+
/**
|
|
84
|
+
* Keyring account wallet type.
|
|
85
|
+
*/
|
|
86
|
+
get type(): AccountWalletType.Keyring;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Snap keyring account wallet that can hold multiple account groups.
|
|
90
|
+
*/
|
|
91
|
+
export type SnapAccountWallet<Account extends KeyringAccount> = BaseAccountWallet<Account> & {
|
|
92
|
+
/**
|
|
93
|
+
* Snap account wallet type.
|
|
94
|
+
*/
|
|
95
|
+
get type(): AccountWalletType.Snap;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Type constraint for a {@link AccountGroupObject}. If one of its union-members
|
|
99
|
+
* does not match this contraint, {@link AccountGroupObject} will resolve
|
|
100
|
+
* to `never`.
|
|
101
|
+
*/
|
|
102
|
+
type IsAccountWallet<Wallet extends BaseAccountWallet<Account> & {
|
|
103
|
+
get type(): AccountWalletType;
|
|
104
|
+
}, Account extends KeyringAccount> = Wallet;
|
|
105
|
+
/**
|
|
106
|
+
* Account wallet that can hold multiple account groups.
|
|
107
|
+
*/
|
|
108
|
+
export type AccountWallet<Account extends KeyringAccount> = IsAccountWallet<KeyringAccountWallet<Account> | SnapAccountWallet<Account> | MultichainAccountWallet<Bip44Account<Account>>, Account>;
|
|
57
109
|
/**
|
|
58
110
|
* Type utility to compute a constrained {@link AccountWalletId} type given a
|
|
59
111
|
* specifc {@link AccountWalletType}.
|
|
@@ -91,4 +143,5 @@ export declare function parseAccountWalletId(walletId: string): ParsedAccountWal
|
|
|
91
143
|
* @throws When the wallet ID format is invalid.
|
|
92
144
|
*/
|
|
93
145
|
export declare function stripAccountWalletType(walletId: string): string;
|
|
146
|
+
export {};
|
|
94
147
|
//# sourceMappingURL=wallet.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.cts","sourceRoot":"","sources":["../../src/api/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,8BAA8B;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAgB;AAE5D;;;;GAIG;AACH,oBAAY,iBAAiB;IAC3B,8DAA8D;IAC9D,OAAO,YAAY;IAEnB,8DAA8D;IAC9D,OAAO,YAAY;IAEnB,2EAA2E;IAC3E,IAAI,SAAS;CACd;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,iBAAiB,IAAI,MAAM,EAAE,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,uBAAuB,QACyB,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"wallet.d.cts","sourceRoot":"","sources":["../../src/api/wallet.ts"],"names":[],"mappings":"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"}
|
package/dist/api/wallet.d.mts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { KeyringAccount } from "@metamask/keyring-api";
|
|
2
|
+
import type { Bip44Account } from "./bip44.mjs";
|
|
2
3
|
import type { AccountGroup, AccountGroupId } from "./group.mjs";
|
|
4
|
+
import type { MultichainAccountWallet } from "./multichain/index.mjs";
|
|
3
5
|
/**
|
|
4
6
|
* Wallet type.
|
|
5
7
|
*
|
|
@@ -21,6 +23,22 @@ export type AccountWalletId = `${AccountWalletType}:${string}`;
|
|
|
21
23
|
* Regex to validate an account wallet ID.
|
|
22
24
|
*/
|
|
23
25
|
export declare const ACCOUNT_WALLET_ID_REGEX: RegExp;
|
|
26
|
+
/**
|
|
27
|
+
* Wallet status.
|
|
28
|
+
*
|
|
29
|
+
* Those status are used to report in which "state" the wallet is currently
|
|
30
|
+
* in. All of those operations cannot run concurrently, thus, the wallet
|
|
31
|
+
* cannot have multiple status at once.
|
|
32
|
+
*/
|
|
33
|
+
export type AccountWalletStatus =
|
|
34
|
+
/**
|
|
35
|
+
* The wallet is not initialized yet.
|
|
36
|
+
*/
|
|
37
|
+
'uninitialized'
|
|
38
|
+
/**
|
|
39
|
+
* The wallet is ready to run any operation.
|
|
40
|
+
*/
|
|
41
|
+
| 'ready';
|
|
24
42
|
/**
|
|
25
43
|
* Parsed account wallet ID with its wallet type and sub-ID.
|
|
26
44
|
*/
|
|
@@ -29,17 +47,21 @@ export type ParsedAccountWalletId = {
|
|
|
29
47
|
subId: string;
|
|
30
48
|
};
|
|
31
49
|
/**
|
|
32
|
-
*
|
|
50
|
+
* Keyring account wallet that can hold multiple account groups.
|
|
33
51
|
*/
|
|
34
|
-
export type
|
|
52
|
+
export type BaseAccountWallet<Account extends KeyringAccount> = {
|
|
35
53
|
/**
|
|
36
54
|
* Account wallet ID.
|
|
37
55
|
*/
|
|
38
56
|
get id(): AccountWalletId;
|
|
39
57
|
/**
|
|
40
|
-
*
|
|
58
|
+
* Keyring account wallet type.
|
|
41
59
|
*/
|
|
42
60
|
get type(): AccountWalletType;
|
|
61
|
+
/**
|
|
62
|
+
* Account wallet status.
|
|
63
|
+
*/
|
|
64
|
+
get status(): AccountWalletStatus;
|
|
43
65
|
/**
|
|
44
66
|
* Gets account group for a given ID.
|
|
45
67
|
*
|
|
@@ -54,6 +76,36 @@ export type AccountWallet<Account extends KeyringAccount> = {
|
|
|
54
76
|
*/
|
|
55
77
|
getAccountGroups(): AccountGroup<Account>[];
|
|
56
78
|
};
|
|
79
|
+
/**
|
|
80
|
+
* Keyring account wallet that can hold multiple account groups.
|
|
81
|
+
*/
|
|
82
|
+
export type KeyringAccountWallet<Account extends KeyringAccount> = BaseAccountWallet<Account> & {
|
|
83
|
+
/**
|
|
84
|
+
* Keyring account wallet type.
|
|
85
|
+
*/
|
|
86
|
+
get type(): AccountWalletType.Keyring;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Snap keyring account wallet that can hold multiple account groups.
|
|
90
|
+
*/
|
|
91
|
+
export type SnapAccountWallet<Account extends KeyringAccount> = BaseAccountWallet<Account> & {
|
|
92
|
+
/**
|
|
93
|
+
* Snap account wallet type.
|
|
94
|
+
*/
|
|
95
|
+
get type(): AccountWalletType.Snap;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Type constraint for a {@link AccountGroupObject}. If one of its union-members
|
|
99
|
+
* does not match this contraint, {@link AccountGroupObject} will resolve
|
|
100
|
+
* to `never`.
|
|
101
|
+
*/
|
|
102
|
+
type IsAccountWallet<Wallet extends BaseAccountWallet<Account> & {
|
|
103
|
+
get type(): AccountWalletType;
|
|
104
|
+
}, Account extends KeyringAccount> = Wallet;
|
|
105
|
+
/**
|
|
106
|
+
* Account wallet that can hold multiple account groups.
|
|
107
|
+
*/
|
|
108
|
+
export type AccountWallet<Account extends KeyringAccount> = IsAccountWallet<KeyringAccountWallet<Account> | SnapAccountWallet<Account> | MultichainAccountWallet<Bip44Account<Account>>, Account>;
|
|
57
109
|
/**
|
|
58
110
|
* Type utility to compute a constrained {@link AccountWalletId} type given a
|
|
59
111
|
* specifc {@link AccountWalletType}.
|
|
@@ -91,4 +143,5 @@ export declare function parseAccountWalletId(walletId: string): ParsedAccountWal
|
|
|
91
143
|
* @throws When the wallet ID format is invalid.
|
|
92
144
|
*/
|
|
93
145
|
export declare function stripAccountWalletType(walletId: string): string;
|
|
146
|
+
export {};
|
|
94
147
|
//# sourceMappingURL=wallet.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.mts","sourceRoot":"","sources":["../../src/api/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,8BAA8B;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAgB;AAE5D;;;;GAIG;AACH,oBAAY,iBAAiB;IAC3B,8DAA8D;IAC9D,OAAO,YAAY;IAEnB,8DAA8D;IAC9D,OAAO,YAAY;IAEnB,2EAA2E;IAC3E,IAAI,SAAS;CACd;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,iBAAiB,IAAI,MAAM,EAAE,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,uBAAuB,QACyB,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"wallet.d.mts","sourceRoot":"","sources":["../../src/api/wallet.ts"],"names":[],"mappings":"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"}
|
package/dist/api/wallet.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.mjs","sourceRoot":"","sources":["../../src/api/wallet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wallet.mjs","sourceRoot":"","sources":["../../src/api/wallet.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,MAAM,CAAN,IAAY,iBASX;AATD,WAAY,iBAAiB;IAC3B,8DAA8D;IAC9D,wCAAmB,CAAA;IAEnB,8DAA8D;IAC9D,wCAAmB,CAAA;IAEnB,2EAA2E;IAC3E,kCAAa,CAAA;AACf,CAAC,EATW,iBAAiB,KAAjB,iBAAiB,QAS5B;AAOD;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAClC,2DAA2D,CAAC;AAiH9D;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAgB,EAChB,EAAU;IAEV,OAAO,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,UAA+B;QAClD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,WAAqB;KAC1C,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;AAC9C,CAAC","sourcesContent":["import type { KeyringAccount } from '@metamask/keyring-api';\n\n// Circular import are allowed when using `import type`.\nimport type { Bip44Account } from './bip44';\nimport type { AccountGroup, AccountGroupId } from './group';\nimport type { MultichainAccountWallet } from './multichain';\n\n/**\n * Wallet type.\n *\n * Each wallet types groups accounts using different criterias.\n */\nexport enum AccountWalletType {\n /** Wallet grouping accounts based on their entropy source. */\n Entropy = 'entropy',\n\n /** Wallet grouping accounts based on their keyring's type. */\n Keyring = 'keyring',\n\n /** Wallet grouping accounts associated with an account management Snap. */\n Snap = 'snap',\n}\n\n/**\n * Account wallet ID.\n */\nexport type AccountWalletId = `${AccountWalletType}:${string}`;\n\n/**\n * Regex to validate an account wallet ID.\n */\nexport const ACCOUNT_WALLET_ID_REGEX =\n /^(?<walletType>entropy|keyring|snap):(?<walletSubId>.+)$/u;\n\n/**\n * Wallet status.\n *\n * Those status are used to report in which \"state\" the wallet is currently\n * in. All of those operations cannot run concurrently, thus, the wallet\n * cannot have multiple status at once.\n */\nexport type AccountWalletStatus =\n /**\n * The wallet is not initialized yet.\n */\n | 'uninitialized'\n /**\n * The wallet is ready to run any operation.\n */\n | 'ready';\n\n/**\n * Parsed account wallet ID with its wallet type and sub-ID.\n */\nexport type ParsedAccountWalletId = {\n type: AccountWalletType;\n subId: string;\n};\n\n/**\n * Keyring account wallet that can hold multiple account groups.\n */\nexport type BaseAccountWallet<Account extends KeyringAccount> = {\n /**\n * Account wallet ID.\n */\n get id(): AccountWalletId;\n\n /**\n * Keyring account wallet type.\n */\n get type(): AccountWalletType;\n\n /**\n * Account wallet status.\n */\n get status(): AccountWalletStatus;\n\n /**\n * Gets account group for a given ID.\n *\n * @param id - Account group ID.\n * @returns Account group.\n */\n getAccountGroup(id: AccountGroupId): AccountGroup<Account> | undefined;\n\n /**\n * Gets all account groups.\n *\n * @returns Account groups.\n */\n getAccountGroups(): AccountGroup<Account>[];\n};\n\n/**\n * Keyring account wallet that can hold multiple account groups.\n */\nexport type KeyringAccountWallet<Account extends KeyringAccount> =\n BaseAccountWallet<Account> & {\n /**\n * Keyring account wallet type.\n */\n get type(): AccountWalletType.Keyring;\n };\n\n/**\n * Snap keyring account wallet that can hold multiple account groups.\n */\nexport type SnapAccountWallet<Account extends KeyringAccount> =\n BaseAccountWallet<Account> & {\n /**\n * Snap account wallet type.\n */\n get type(): AccountWalletType.Snap;\n };\n\n/**\n * Type constraint for a {@link AccountGroupObject}. If one of its union-members\n * does not match this contraint, {@link AccountGroupObject} will resolve\n * to `never`.\n */\ntype IsAccountWallet<\n Wallet extends BaseAccountWallet<Account> & {\n get type(): AccountWalletType;\n },\n Account extends KeyringAccount,\n> = Wallet;\n\n/**\n * Account wallet that can hold multiple account groups.\n */\nexport type AccountWallet<Account extends KeyringAccount> = IsAccountWallet<\n | KeyringAccountWallet<Account>\n | SnapAccountWallet<Account>\n | MultichainAccountWallet<Bip44Account<Account>>,\n Account\n>;\n\n/**\n * Type utility to compute a constrained {@link AccountWalletId} type given a\n * specifc {@link AccountWalletType}.\n */\nexport type AccountWalletIdOf<WalletType extends AccountWalletType> =\n `${WalletType}:${string}`;\n\n/**\n * Convert a unique ID to a wallet ID for a given type.\n *\n * @param type - A wallet type.\n * @param id - A unique ID.\n * @returns A wallet ID.\n */\nexport function toAccountWalletId<WalletType extends AccountWalletType>(\n type: WalletType,\n id: string,\n): AccountWalletIdOf<WalletType> {\n return `${type}:${id}`;\n}\n\n/**\n * Checks if the given value is {@link AccountWalletId}.\n *\n * @param value - The value to check.\n * @returns Whether the value is a {@link AccountWalletId}.\n */\nexport function isAccountWalletId(value: string): value is AccountWalletId {\n return ACCOUNT_WALLET_ID_REGEX.test(value);\n}\n\n/**\n * Parse an account wallet ID to an object containing a wallet ID information\n * (wallet type and wallet sub-ID).\n *\n * @param walletId - The account wallet ID to validate and parse.\n * @returns The parsed account wallet ID.\n * @throws When the wallet ID format is invalid.\n */\nexport function parseAccountWalletId(walletId: string): ParsedAccountWalletId {\n const match = ACCOUNT_WALLET_ID_REGEX.exec(walletId);\n if (!match?.groups) {\n throw new Error(`Invalid account wallet ID: \"${walletId}\"`);\n }\n\n return {\n type: match.groups.walletType as AccountWalletType,\n subId: match.groups.walletSubId as string,\n };\n}\n\n/**\n * Strip the account wallet type from an account wallet ID.\n *\n * @param walletId - Account wallet ID.\n * @returns Account wallet sub-ID.\n * @throws When the wallet ID format is invalid.\n */\nexport function stripAccountWalletType(walletId: string): string {\n return parseAccountWalletId(walletId).subId;\n}\n"]}
|