@turnkey/core 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.MD +5 -0
- package/dist/__clients__/core.d.ts +1010 -0
- package/dist/__clients__/core.d.ts.map +1 -0
- package/dist/__clients__/core.js +2358 -0
- package/dist/__clients__/core.js.map +1 -0
- package/dist/__clients__/core.mjs +2356 -0
- package/dist/__clients__/core.mjs.map +1 -0
- package/dist/__generated__/sdk-client-base.d.ts +211 -0
- package/dist/__generated__/sdk-client-base.d.ts.map +1 -0
- package/dist/__generated__/sdk-client-base.js +3219 -0
- package/dist/__generated__/sdk-client-base.js.map +1 -0
- package/dist/__generated__/sdk-client-base.mjs +3217 -0
- package/dist/__generated__/sdk-client-base.mjs.map +1 -0
- package/dist/__generated__/version.d.ts +2 -0
- package/dist/__generated__/version.d.ts.map +1 -0
- package/dist/__generated__/version.js +6 -0
- package/dist/__generated__/version.js.map +1 -0
- package/dist/__generated__/version.mjs +4 -0
- package/dist/__generated__/version.mjs.map +1 -0
- package/dist/__inputs__/public_api.types.d.ts +5170 -0
- package/dist/__inputs__/public_api.types.d.ts.map +1 -0
- package/dist/__polyfills__/window.d.ts +15 -0
- package/dist/__polyfills__/window.d.ts.map +1 -0
- package/dist/__polyfills__/window.js +30 -0
- package/dist/__polyfills__/window.js.map +1 -0
- package/dist/__polyfills__/window.mjs +28 -0
- package/dist/__polyfills__/window.mjs.map +1 -0
- package/dist/__stampers__/api/base.d.ts +20 -0
- package/dist/__stampers__/api/base.d.ts.map +1 -0
- package/dist/__stampers__/api/base.js +67 -0
- package/dist/__stampers__/api/base.js.map +1 -0
- package/dist/__stampers__/api/base.mjs +65 -0
- package/dist/__stampers__/api/base.mjs.map +1 -0
- package/dist/__stampers__/api/mobile/stamper.d.ts +13 -0
- package/dist/__stampers__/api/mobile/stamper.d.ts.map +1 -0
- package/dist/__stampers__/api/mobile/stamper.js +69 -0
- package/dist/__stampers__/api/mobile/stamper.js.map +1 -0
- package/dist/__stampers__/api/mobile/stamper.mjs +67 -0
- package/dist/__stampers__/api/mobile/stamper.mjs.map +1 -0
- package/dist/__stampers__/api/web/stamper.d.ts +14 -0
- package/dist/__stampers__/api/web/stamper.d.ts.map +1 -0
- package/dist/__stampers__/api/web/stamper.js +212 -0
- package/dist/__stampers__/api/web/stamper.js.map +1 -0
- package/dist/__stampers__/api/web/stamper.mjs +210 -0
- package/dist/__stampers__/api/web/stamper.mjs.map +1 -0
- package/dist/__stampers__/passkey/base.d.ts +18 -0
- package/dist/__stampers__/passkey/base.d.ts.map +1 -0
- package/dist/__stampers__/passkey/base.js +138 -0
- package/dist/__stampers__/passkey/base.js.map +1 -0
- package/dist/__stampers__/passkey/base.mjs +134 -0
- package/dist/__stampers__/passkey/base.mjs.map +1 -0
- package/dist/__storage__/base.d.ts +3 -0
- package/dist/__storage__/base.d.ts.map +1 -0
- package/dist/__storage__/base.js +27 -0
- package/dist/__storage__/base.js.map +1 -0
- package/dist/__storage__/base.mjs +25 -0
- package/dist/__storage__/base.mjs.map +1 -0
- package/dist/__storage__/mobile/storage.d.ts +18 -0
- package/dist/__storage__/mobile/storage.d.ts.map +1 -0
- package/dist/__storage__/mobile/storage.js +74 -0
- package/dist/__storage__/mobile/storage.js.map +1 -0
- package/dist/__storage__/mobile/storage.mjs +72 -0
- package/dist/__storage__/mobile/storage.mjs.map +1 -0
- package/dist/__storage__/web/storage.d.ts +19 -0
- package/dist/__storage__/web/storage.d.ts.map +1 -0
- package/dist/__storage__/web/storage.js +79 -0
- package/dist/__storage__/web/storage.js.map +1 -0
- package/dist/__storage__/web/storage.mjs +77 -0
- package/dist/__storage__/web/storage.mjs.map +1 -0
- package/dist/__types__/base.d.ts +407 -0
- package/dist/__types__/base.d.ts.map +1 -0
- package/dist/__types__/base.js +88 -0
- package/dist/__types__/base.js.map +1 -0
- package/dist/__types__/base.mjs +84 -0
- package/dist/__types__/base.mjs.map +1 -0
- package/dist/__wallet__/base.d.ts +3 -0
- package/dist/__wallet__/base.d.ts.map +1 -0
- package/dist/__wallet__/base.js +24 -0
- package/dist/__wallet__/base.js.map +1 -0
- package/dist/__wallet__/base.mjs +22 -0
- package/dist/__wallet__/base.mjs.map +1 -0
- package/dist/__wallet__/connector.d.ts +33 -0
- package/dist/__wallet__/connector.d.ts.map +1 -0
- package/dist/__wallet__/connector.js +63 -0
- package/dist/__wallet__/connector.js.map +1 -0
- package/dist/__wallet__/connector.mjs +61 -0
- package/dist/__wallet__/connector.mjs.map +1 -0
- package/dist/__wallet__/mobile/manager.d.ts +35 -0
- package/dist/__wallet__/mobile/manager.d.ts.map +1 -0
- package/dist/__wallet__/mobile/manager.js +95 -0
- package/dist/__wallet__/mobile/manager.js.map +1 -0
- package/dist/__wallet__/mobile/manager.mjs +93 -0
- package/dist/__wallet__/mobile/manager.mjs.map +1 -0
- package/dist/__wallet__/stamper.d.ts +19 -0
- package/dist/__wallet__/stamper.d.ts.map +1 -0
- package/dist/__wallet__/stamper.js +116 -0
- package/dist/__wallet__/stamper.js.map +1 -0
- package/dist/__wallet__/stamper.mjs +113 -0
- package/dist/__wallet__/stamper.mjs.map +1 -0
- package/dist/__wallet__/wallet-connect/base.d.ts +83 -0
- package/dist/__wallet__/wallet-connect/base.d.ts.map +1 -0
- package/dist/__wallet__/wallet-connect/base.js +362 -0
- package/dist/__wallet__/wallet-connect/base.js.map +1 -0
- package/dist/__wallet__/wallet-connect/base.mjs +360 -0
- package/dist/__wallet__/wallet-connect/base.mjs.map +1 -0
- package/dist/__wallet__/wallet-connect/client.d.ts +78 -0
- package/dist/__wallet__/wallet-connect/client.d.ts.map +1 -0
- package/dist/__wallet__/wallet-connect/client.js +139 -0
- package/dist/__wallet__/wallet-connect/client.js.map +1 -0
- package/dist/__wallet__/wallet-connect/client.mjs +137 -0
- package/dist/__wallet__/wallet-connect/client.mjs.map +1 -0
- package/dist/__wallet__/web/manager.d.ts +41 -0
- package/dist/__wallet__/web/manager.d.ts.map +1 -0
- package/dist/__wallet__/web/manager.js +115 -0
- package/dist/__wallet__/web/manager.js.map +1 -0
- package/dist/__wallet__/web/manager.mjs +113 -0
- package/dist/__wallet__/web/manager.mjs.map +1 -0
- package/dist/__wallet__/web/native/ethereum.d.ts +67 -0
- package/dist/__wallet__/web/native/ethereum.d.ts.map +1 -0
- package/dist/__wallet__/web/native/ethereum.js +248 -0
- package/dist/__wallet__/web/native/ethereum.js.map +1 -0
- package/dist/__wallet__/web/native/ethereum.mjs +245 -0
- package/dist/__wallet__/web/native/ethereum.mjs.map +1 -0
- package/dist/__wallet__/web/native/solana.d.ts +19 -0
- package/dist/__wallet__/web/native/solana.d.ts.map +1 -0
- package/dist/__wallet__/web/native/solana.js +149 -0
- package/dist/__wallet__/web/native/solana.js.map +1 -0
- package/dist/__wallet__/web/native/solana.mjs +146 -0
- package/dist/__wallet__/web/native/solana.mjs.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +78 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +8 -0
- package/dist/index.mjs.map +1 -0
- package/dist/turnkey-helpers.d.ts +68 -0
- package/dist/turnkey-helpers.d.ts.map +1 -0
- package/dist/turnkey-helpers.js +466 -0
- package/dist/turnkey-helpers.js.map +1 -0
- package/dist/turnkey-helpers.mjs +399 -0
- package/dist/turnkey-helpers.mjs.map +1 -0
- package/dist/utils.d.ts +54 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +596 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.mjs +574 -0
- package/dist/utils.mjs.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const DEFAULT_SESSION_EXPIRATION_IN_SECONDS = "900"; // 15 minutes
|
|
4
|
+
exports.MethodType = void 0;
|
|
5
|
+
(function (MethodType) {
|
|
6
|
+
MethodType[MethodType["Get"] = 0] = "Get";
|
|
7
|
+
MethodType[MethodType["List"] = 1] = "List";
|
|
8
|
+
MethodType[MethodType["Command"] = 2] = "Command";
|
|
9
|
+
})(exports.MethodType || (exports.MethodType = {}));
|
|
10
|
+
class TurnkeyRequestError extends Error {
|
|
11
|
+
constructor(input) {
|
|
12
|
+
let turnkeyErrorMessage = `Turnkey error ${input.code}: ${input.message}`;
|
|
13
|
+
if (input.details != null) {
|
|
14
|
+
turnkeyErrorMessage += ` (Details: ${JSON.stringify(input.details)})`;
|
|
15
|
+
}
|
|
16
|
+
super(turnkeyErrorMessage);
|
|
17
|
+
this.name = "TurnkeyRequestError";
|
|
18
|
+
this.details = input.details ?? null;
|
|
19
|
+
this.code = input.code;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.Curve = void 0;
|
|
23
|
+
(function (Curve) {
|
|
24
|
+
Curve["SECP256K1"] = "CURVE_SECP256K1";
|
|
25
|
+
Curve["ED25519"] = "CURVE_ED25519";
|
|
26
|
+
})(exports.Curve || (exports.Curve = {}));
|
|
27
|
+
exports.WalletSource = void 0;
|
|
28
|
+
(function (WalletSource) {
|
|
29
|
+
WalletSource["Embedded"] = "embedded";
|
|
30
|
+
WalletSource["Connected"] = "connected";
|
|
31
|
+
})(exports.WalletSource || (exports.WalletSource = {}));
|
|
32
|
+
/**
|
|
33
|
+
* The Client used to authenticate the user.
|
|
34
|
+
*/
|
|
35
|
+
exports.AuthClient = void 0;
|
|
36
|
+
(function (AuthClient) {
|
|
37
|
+
AuthClient["Passkey"] = "passkey";
|
|
38
|
+
AuthClient["Wallet"] = "wallet";
|
|
39
|
+
AuthClient["IndexedDb"] = "indexed-db";
|
|
40
|
+
})(exports.AuthClient || (exports.AuthClient = {}));
|
|
41
|
+
exports.StamperType = void 0;
|
|
42
|
+
(function (StamperType) {
|
|
43
|
+
StamperType["ApiKey"] = "api-key";
|
|
44
|
+
StamperType["Passkey"] = "passkey";
|
|
45
|
+
StamperType["Wallet"] = "wallet";
|
|
46
|
+
})(exports.StamperType || (exports.StamperType = {}));
|
|
47
|
+
exports.OtpType = void 0;
|
|
48
|
+
(function (OtpType) {
|
|
49
|
+
OtpType["Email"] = "OTP_TYPE_EMAIL";
|
|
50
|
+
OtpType["Sms"] = "OTP_TYPE_SMS";
|
|
51
|
+
})(exports.OtpType || (exports.OtpType = {}));
|
|
52
|
+
exports.FilterType = void 0;
|
|
53
|
+
(function (FilterType) {
|
|
54
|
+
FilterType["Email"] = "EMAIL";
|
|
55
|
+
FilterType["Sms"] = "PHONE_NUMBER";
|
|
56
|
+
FilterType["OidcToken"] = "OIDC_TOKEN";
|
|
57
|
+
FilterType["PublicKey"] = "PUBLIC_KEY";
|
|
58
|
+
})(exports.FilterType || (exports.FilterType = {}));
|
|
59
|
+
const OtpTypeToFilterTypeMap = {
|
|
60
|
+
[exports.OtpType.Email]: exports.FilterType.Email,
|
|
61
|
+
[exports.OtpType.Sms]: exports.FilterType.Sms,
|
|
62
|
+
};
|
|
63
|
+
exports.SessionKey = void 0;
|
|
64
|
+
(function (SessionKey) {
|
|
65
|
+
SessionKey["DefaultSessionkey"] = "@turnkey/session/v3";
|
|
66
|
+
})(exports.SessionKey || (exports.SessionKey = {}));
|
|
67
|
+
exports.Chain = void 0;
|
|
68
|
+
(function (Chain) {
|
|
69
|
+
Chain["Ethereum"] = "ethereum";
|
|
70
|
+
Chain["Solana"] = "solana";
|
|
71
|
+
})(exports.Chain || (exports.Chain = {}));
|
|
72
|
+
exports.SignIntent = void 0;
|
|
73
|
+
(function (SignIntent) {
|
|
74
|
+
SignIntent["SignMessage"] = "sign_message";
|
|
75
|
+
SignIntent["SignTransaction"] = "sign_transaction";
|
|
76
|
+
SignIntent["SignAndSendTransaction"] = "sign_and_send";
|
|
77
|
+
})(exports.SignIntent || (exports.SignIntent = {}));
|
|
78
|
+
exports.WalletInterfaceType = void 0;
|
|
79
|
+
(function (WalletInterfaceType) {
|
|
80
|
+
WalletInterfaceType["Solana"] = "solana";
|
|
81
|
+
WalletInterfaceType["Ethereum"] = "ethereum";
|
|
82
|
+
WalletInterfaceType["WalletConnect"] = "wallet_connect";
|
|
83
|
+
})(exports.WalletInterfaceType || (exports.WalletInterfaceType = {}));
|
|
84
|
+
|
|
85
|
+
exports.DEFAULT_SESSION_EXPIRATION_IN_SECONDS = DEFAULT_SESSION_EXPIRATION_IN_SECONDS;
|
|
86
|
+
exports.OtpTypeToFilterTypeMap = OtpTypeToFilterTypeMap;
|
|
87
|
+
exports.TurnkeyRequestError = TurnkeyRequestError;
|
|
88
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sources":["../../src/__types__/base.ts"],"sourcesContent":[null],"names":["MethodType","Curve","WalletSource","AuthClient","StamperType","OtpType","FilterType","SessionKey","Chain","SignIntent","WalletInterfaceType"],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
const DEFAULT_SESSION_EXPIRATION_IN_SECONDS = "900"; // 15 minutes
|
|
2
|
+
var MethodType;
|
|
3
|
+
(function (MethodType) {
|
|
4
|
+
MethodType[MethodType["Get"] = 0] = "Get";
|
|
5
|
+
MethodType[MethodType["List"] = 1] = "List";
|
|
6
|
+
MethodType[MethodType["Command"] = 2] = "Command";
|
|
7
|
+
})(MethodType || (MethodType = {}));
|
|
8
|
+
class TurnkeyRequestError extends Error {
|
|
9
|
+
constructor(input) {
|
|
10
|
+
let turnkeyErrorMessage = `Turnkey error ${input.code}: ${input.message}`;
|
|
11
|
+
if (input.details != null) {
|
|
12
|
+
turnkeyErrorMessage += ` (Details: ${JSON.stringify(input.details)})`;
|
|
13
|
+
}
|
|
14
|
+
super(turnkeyErrorMessage);
|
|
15
|
+
this.name = "TurnkeyRequestError";
|
|
16
|
+
this.details = input.details ?? null;
|
|
17
|
+
this.code = input.code;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
var Curve;
|
|
21
|
+
(function (Curve) {
|
|
22
|
+
Curve["SECP256K1"] = "CURVE_SECP256K1";
|
|
23
|
+
Curve["ED25519"] = "CURVE_ED25519";
|
|
24
|
+
})(Curve || (Curve = {}));
|
|
25
|
+
var WalletSource;
|
|
26
|
+
(function (WalletSource) {
|
|
27
|
+
WalletSource["Embedded"] = "embedded";
|
|
28
|
+
WalletSource["Connected"] = "connected";
|
|
29
|
+
})(WalletSource || (WalletSource = {}));
|
|
30
|
+
/**
|
|
31
|
+
* The Client used to authenticate the user.
|
|
32
|
+
*/
|
|
33
|
+
var AuthClient;
|
|
34
|
+
(function (AuthClient) {
|
|
35
|
+
AuthClient["Passkey"] = "passkey";
|
|
36
|
+
AuthClient["Wallet"] = "wallet";
|
|
37
|
+
AuthClient["IndexedDb"] = "indexed-db";
|
|
38
|
+
})(AuthClient || (AuthClient = {}));
|
|
39
|
+
var StamperType;
|
|
40
|
+
(function (StamperType) {
|
|
41
|
+
StamperType["ApiKey"] = "api-key";
|
|
42
|
+
StamperType["Passkey"] = "passkey";
|
|
43
|
+
StamperType["Wallet"] = "wallet";
|
|
44
|
+
})(StamperType || (StamperType = {}));
|
|
45
|
+
var OtpType;
|
|
46
|
+
(function (OtpType) {
|
|
47
|
+
OtpType["Email"] = "OTP_TYPE_EMAIL";
|
|
48
|
+
OtpType["Sms"] = "OTP_TYPE_SMS";
|
|
49
|
+
})(OtpType || (OtpType = {}));
|
|
50
|
+
var FilterType;
|
|
51
|
+
(function (FilterType) {
|
|
52
|
+
FilterType["Email"] = "EMAIL";
|
|
53
|
+
FilterType["Sms"] = "PHONE_NUMBER";
|
|
54
|
+
FilterType["OidcToken"] = "OIDC_TOKEN";
|
|
55
|
+
FilterType["PublicKey"] = "PUBLIC_KEY";
|
|
56
|
+
})(FilterType || (FilterType = {}));
|
|
57
|
+
const OtpTypeToFilterTypeMap = {
|
|
58
|
+
[OtpType.Email]: FilterType.Email,
|
|
59
|
+
[OtpType.Sms]: FilterType.Sms,
|
|
60
|
+
};
|
|
61
|
+
var SessionKey;
|
|
62
|
+
(function (SessionKey) {
|
|
63
|
+
SessionKey["DefaultSessionkey"] = "@turnkey/session/v3";
|
|
64
|
+
})(SessionKey || (SessionKey = {}));
|
|
65
|
+
var Chain;
|
|
66
|
+
(function (Chain) {
|
|
67
|
+
Chain["Ethereum"] = "ethereum";
|
|
68
|
+
Chain["Solana"] = "solana";
|
|
69
|
+
})(Chain || (Chain = {}));
|
|
70
|
+
var SignIntent;
|
|
71
|
+
(function (SignIntent) {
|
|
72
|
+
SignIntent["SignMessage"] = "sign_message";
|
|
73
|
+
SignIntent["SignTransaction"] = "sign_transaction";
|
|
74
|
+
SignIntent["SignAndSendTransaction"] = "sign_and_send";
|
|
75
|
+
})(SignIntent || (SignIntent = {}));
|
|
76
|
+
var WalletInterfaceType;
|
|
77
|
+
(function (WalletInterfaceType) {
|
|
78
|
+
WalletInterfaceType["Solana"] = "solana";
|
|
79
|
+
WalletInterfaceType["Ethereum"] = "ethereum";
|
|
80
|
+
WalletInterfaceType["WalletConnect"] = "wallet_connect";
|
|
81
|
+
})(WalletInterfaceType || (WalletInterfaceType = {}));
|
|
82
|
+
|
|
83
|
+
export { AuthClient, Chain, Curve, DEFAULT_SESSION_EXPIRATION_IN_SECONDS, FilterType, MethodType, OtpType, OtpTypeToFilterTypeMap, SessionKey, SignIntent, StamperType, TurnkeyRequestError, WalletInterfaceType, WalletSource };
|
|
84
|
+
//# sourceMappingURL=base.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.mjs","sources":["../../src/__types__/base.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/__wallet__/base.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAGtE,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,oBAAoB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAY5B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var manager$1 = require('./web/manager.js');
|
|
4
|
+
var utils = require('../utils.js');
|
|
5
|
+
var manager = require('./mobile/manager.js');
|
|
6
|
+
|
|
7
|
+
async function createWalletManager(cfg) {
|
|
8
|
+
if (utils.isReactNative()) {
|
|
9
|
+
const manager$1 = new manager.MobileWalletManager(cfg);
|
|
10
|
+
await manager$1.init(cfg);
|
|
11
|
+
return manager$1;
|
|
12
|
+
}
|
|
13
|
+
else if (utils.isWeb()) {
|
|
14
|
+
const manager = new manager$1.WebWalletManager(cfg);
|
|
15
|
+
await manager.init(cfg);
|
|
16
|
+
return manager;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
throw new Error("Unsupported environment for wallet manager.");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
exports.createWalletManager = createWalletManager;
|
|
24
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sources":["../../src/__wallet__/base.ts"],"sourcesContent":[null],"names":["isReactNative","manager","MobileWalletManager","isWeb","WebWalletManager"],"mappings":";;;;;;AAKO,eAAe,mBAAmB,CACvC,GAAyB,EAAA;IAEzB,IAAIA,mBAAa,EAAE,EAAE;AACnB,QAAA,MAAMC,SAAO,GAAG,IAAIC,2BAAmB,CAAC,GAAG,CAAC;AAC5C,QAAA,MAAMD,SAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,QAAA,OAAOA,SAAO;;SACT,IAAIE,WAAK,EAAE,EAAE;AAClB,QAAA,MAAM,OAAO,GAAG,IAAIC,0BAAgB,CAAC,GAAG,CAAC;AACzC,QAAA,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,QAAA,OAAO,OAAO;;SACT;AACL,QAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;;AAElE;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { WebWalletManager } from './web/manager.mjs';
|
|
2
|
+
import { isReactNative, isWeb } from '../utils.mjs';
|
|
3
|
+
import { MobileWalletManager } from './mobile/manager.mjs';
|
|
4
|
+
|
|
5
|
+
async function createWalletManager(cfg) {
|
|
6
|
+
if (isReactNative()) {
|
|
7
|
+
const manager = new MobileWalletManager(cfg);
|
|
8
|
+
await manager.init(cfg);
|
|
9
|
+
return manager;
|
|
10
|
+
}
|
|
11
|
+
else if (isWeb()) {
|
|
12
|
+
const manager = new WebWalletManager(cfg);
|
|
13
|
+
await manager.init(cfg);
|
|
14
|
+
return manager;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
throw new Error("Unsupported environment for wallet manager.");
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { createWalletManager };
|
|
22
|
+
//# sourceMappingURL=base.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.mjs","sources":["../../src/__wallet__/base.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,eAAe,mBAAmB,CACvC,GAAyB,EAAA;IAEzB,IAAI,aAAa,EAAE,EAAE;AACnB,QAAA,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,GAAG,CAAC;AAC5C,QAAA,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,QAAA,OAAO,OAAO;;SACT,IAAI,KAAK,EAAE,EAAE;AAClB,QAAA,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC;AACzC,QAAA,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,QAAA,OAAO,OAAO;;SACT;AACL,QAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;;AAElE;;;;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { SignIntent, WalletProvider, WalletInterface, WalletInterfaceType, SwitchableChain } from "@types";
|
|
2
|
+
export interface CrossPlatformWalletConnectorInterface {
|
|
3
|
+
sign(message: string | Uint8Array, walletProvider: WalletProvider, intent: SignIntent): Promise<string>;
|
|
4
|
+
}
|
|
5
|
+
export declare class CrossPlatformWalletConnector implements CrossPlatformWalletConnectorInterface {
|
|
6
|
+
private readonly wallets;
|
|
7
|
+
constructor(wallets: Partial<Record<WalletInterfaceType, WalletInterface>>);
|
|
8
|
+
/**
|
|
9
|
+
* Connects the wallet account for the given provider.
|
|
10
|
+
*
|
|
11
|
+
* @param provider - The wallet provider to connect.
|
|
12
|
+
* @returns A promise that resolves once the wallet account is connected.
|
|
13
|
+
*/
|
|
14
|
+
connectWalletAccount(provider: WalletProvider): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Disconnects the wallet account for the given provider.
|
|
17
|
+
*
|
|
18
|
+
* @param provider - The wallet provider to disconnect.
|
|
19
|
+
* @returns A promise that resolves once the wallet account is disconnected.
|
|
20
|
+
*/
|
|
21
|
+
disconnectWalletAccount(provider: WalletProvider): Promise<void>;
|
|
22
|
+
switchChain(provider: WalletProvider, chainOrId: string | SwitchableChain): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Signs a message using the appropriate wallet based on the provider.
|
|
25
|
+
*
|
|
26
|
+
* @param message - The message to be signed.
|
|
27
|
+
* @param walletProvider - The wallet provider used for signing.
|
|
28
|
+
* @param intent - The signing intent (e.g., message, transaction).
|
|
29
|
+
* @returns A promise that resolves to the hex-encoded signature string.
|
|
30
|
+
*/
|
|
31
|
+
sign(message: string, walletProvider: WalletProvider, intent: SignIntent): Promise<string>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=connector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/__wallet__/connector.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,eAAe,EAEhB,MAAM,QAAQ,CAAC;AAEhB,MAAM,WAAW,qCAAqC;IACpD,IAAI,CACF,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB;AAED,qBAAa,4BACX,YAAW,qCAAqC;IAG9C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,OAAO,CAC/B,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAC7C;IAGH;;;;;OAKG;IACG,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE;;;;;OAKG;IACG,uBAAuB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhE,WAAW,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,MAAM,GAAG,eAAe,GAClC,OAAO,CAAC,IAAI,CAAC;IAehB;;;;;;;OAOG;IACG,IAAI,CACR,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,MAAM,CAAC;CAWnB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var base = require('../__types__/base.js');
|
|
4
|
+
|
|
5
|
+
class CrossPlatformWalletConnector {
|
|
6
|
+
constructor(wallets) {
|
|
7
|
+
this.wallets = wallets;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Connects the wallet account for the given provider.
|
|
11
|
+
*
|
|
12
|
+
* @param provider - The wallet provider to connect.
|
|
13
|
+
* @returns A promise that resolves once the wallet account is connected.
|
|
14
|
+
*/
|
|
15
|
+
async connectWalletAccount(provider) {
|
|
16
|
+
const wallet = this.wallets[provider.interfaceType];
|
|
17
|
+
if (!wallet) {
|
|
18
|
+
throw new Error(`Wallet for ${provider.interfaceType} not initialized`);
|
|
19
|
+
}
|
|
20
|
+
await wallet.connectWalletAccount(provider);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Disconnects the wallet account for the given provider.
|
|
24
|
+
*
|
|
25
|
+
* @param provider - The wallet provider to disconnect.
|
|
26
|
+
* @returns A promise that resolves once the wallet account is disconnected.
|
|
27
|
+
*/
|
|
28
|
+
async disconnectWalletAccount(provider) {
|
|
29
|
+
const wallet = this.wallets[provider.interfaceType];
|
|
30
|
+
if (!wallet) {
|
|
31
|
+
throw new Error(`Wallet for ${provider.interfaceType} not initialized`);
|
|
32
|
+
}
|
|
33
|
+
await wallet.disconnectWalletAccount(provider);
|
|
34
|
+
}
|
|
35
|
+
async switchChain(provider, chainOrId) {
|
|
36
|
+
if (provider.chainInfo.namespace !== base.Chain.Ethereum) {
|
|
37
|
+
throw new Error("Only Ethereum wallets support chain switching");
|
|
38
|
+
}
|
|
39
|
+
const wallet = this.wallets[provider.interfaceType];
|
|
40
|
+
if (!wallet?.switchChain) {
|
|
41
|
+
throw new Error(`Wallet ${provider.interfaceType} doesn’t support switching chains`);
|
|
42
|
+
}
|
|
43
|
+
return wallet.switchChain(provider, chainOrId);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Signs a message using the appropriate wallet based on the provider.
|
|
47
|
+
*
|
|
48
|
+
* @param message - The message to be signed.
|
|
49
|
+
* @param walletProvider - The wallet provider used for signing.
|
|
50
|
+
* @param intent - The signing intent (e.g., message, transaction).
|
|
51
|
+
* @returns A promise that resolves to the hex-encoded signature string.
|
|
52
|
+
*/
|
|
53
|
+
async sign(message, walletProvider, intent) {
|
|
54
|
+
const wallet = this.wallets[walletProvider.interfaceType];
|
|
55
|
+
if (!wallet) {
|
|
56
|
+
throw new Error(`Wallet for ${walletProvider.interfaceType} not initialized`);
|
|
57
|
+
}
|
|
58
|
+
return wallet.sign(message, walletProvider, intent);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
exports.CrossPlatformWalletConnector = CrossPlatformWalletConnector;
|
|
63
|
+
//# sourceMappingURL=connector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.js","sources":["../../src/__wallet__/connector.ts"],"sourcesContent":[null],"names":["Chain"],"mappings":";;;;MAiBa,4BAA4B,CAAA;AAGvC,IAAA,WAAA,CACmB,OAEhB,EAAA;QAFgB,IAAO,CAAA,OAAA,GAAP,OAAO;;AAK1B;;;;;AAKG;IACH,MAAM,oBAAoB,CAAC,QAAwB,EAAA;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;QAEnD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,CAAA,WAAA,EAAc,QAAQ,CAAC,aAAa,CAAkB,gBAAA,CAAA,CAAC;;AAGzE,QAAA,MAAM,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC;;AAG7C;;;;;AAKG;IACH,MAAM,uBAAuB,CAAC,QAAwB,EAAA;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;QAEnD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,CAAA,WAAA,EAAc,QAAQ,CAAC,aAAa,CAAkB,gBAAA,CAAA,CAAC;;AAGzE,QAAA,MAAM,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC;;AAGhD,IAAA,MAAM,WAAW,CACf,QAAwB,EACxB,SAAmC,EAAA;QAEnC,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,KAAKA,UAAK,CAAC,QAAQ,EAAE;AACnD,YAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;;QAGlE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;AACnD,QAAA,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE;YACxB,MAAM,IAAI,KAAK,CACb,CAAA,OAAA,EAAU,QAAQ,CAAC,aAAa,CAAmC,iCAAA,CAAA,CACpE;;QAGH,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC;;AAGhD;;;;;;;AAOG;AACH,IAAA,MAAM,IAAI,CACR,OAAe,EACf,cAA8B,EAC9B,MAAkB,EAAA;QAElB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC;QAEzD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CACb,CAAA,WAAA,EAAc,cAAc,CAAC,aAAa,CAAkB,gBAAA,CAAA,CAC7D;;QAGH,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC;;AAEtD;;;;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Chain } from '../__types__/base.mjs';
|
|
2
|
+
|
|
3
|
+
class CrossPlatformWalletConnector {
|
|
4
|
+
constructor(wallets) {
|
|
5
|
+
this.wallets = wallets;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Connects the wallet account for the given provider.
|
|
9
|
+
*
|
|
10
|
+
* @param provider - The wallet provider to connect.
|
|
11
|
+
* @returns A promise that resolves once the wallet account is connected.
|
|
12
|
+
*/
|
|
13
|
+
async connectWalletAccount(provider) {
|
|
14
|
+
const wallet = this.wallets[provider.interfaceType];
|
|
15
|
+
if (!wallet) {
|
|
16
|
+
throw new Error(`Wallet for ${provider.interfaceType} not initialized`);
|
|
17
|
+
}
|
|
18
|
+
await wallet.connectWalletAccount(provider);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Disconnects the wallet account for the given provider.
|
|
22
|
+
*
|
|
23
|
+
* @param provider - The wallet provider to disconnect.
|
|
24
|
+
* @returns A promise that resolves once the wallet account is disconnected.
|
|
25
|
+
*/
|
|
26
|
+
async disconnectWalletAccount(provider) {
|
|
27
|
+
const wallet = this.wallets[provider.interfaceType];
|
|
28
|
+
if (!wallet) {
|
|
29
|
+
throw new Error(`Wallet for ${provider.interfaceType} not initialized`);
|
|
30
|
+
}
|
|
31
|
+
await wallet.disconnectWalletAccount(provider);
|
|
32
|
+
}
|
|
33
|
+
async switchChain(provider, chainOrId) {
|
|
34
|
+
if (provider.chainInfo.namespace !== Chain.Ethereum) {
|
|
35
|
+
throw new Error("Only Ethereum wallets support chain switching");
|
|
36
|
+
}
|
|
37
|
+
const wallet = this.wallets[provider.interfaceType];
|
|
38
|
+
if (!wallet?.switchChain) {
|
|
39
|
+
throw new Error(`Wallet ${provider.interfaceType} doesn’t support switching chains`);
|
|
40
|
+
}
|
|
41
|
+
return wallet.switchChain(provider, chainOrId);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Signs a message using the appropriate wallet based on the provider.
|
|
45
|
+
*
|
|
46
|
+
* @param message - The message to be signed.
|
|
47
|
+
* @param walletProvider - The wallet provider used for signing.
|
|
48
|
+
* @param intent - The signing intent (e.g., message, transaction).
|
|
49
|
+
* @returns A promise that resolves to the hex-encoded signature string.
|
|
50
|
+
*/
|
|
51
|
+
async sign(message, walletProvider, intent) {
|
|
52
|
+
const wallet = this.wallets[walletProvider.interfaceType];
|
|
53
|
+
if (!wallet) {
|
|
54
|
+
throw new Error(`Wallet for ${walletProvider.interfaceType} not initialized`);
|
|
55
|
+
}
|
|
56
|
+
return wallet.sign(message, walletProvider, intent);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { CrossPlatformWalletConnector };
|
|
61
|
+
//# sourceMappingURL=connector.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.mjs","sources":["../../src/__wallet__/connector.ts"],"sourcesContent":[null],"names":[],"mappings":";;MAiBa,4BAA4B,CAAA;AAGvC,IAAA,WAAA,CACmB,OAEhB,EAAA;QAFgB,IAAO,CAAA,OAAA,GAAP,OAAO;;AAK1B;;;;;AAKG;IACH,MAAM,oBAAoB,CAAC,QAAwB,EAAA;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;QAEnD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,CAAA,WAAA,EAAc,QAAQ,CAAC,aAAa,CAAkB,gBAAA,CAAA,CAAC;;AAGzE,QAAA,MAAM,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC;;AAG7C;;;;;AAKG;IACH,MAAM,uBAAuB,CAAC,QAAwB,EAAA;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;QAEnD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,CAAA,WAAA,EAAc,QAAQ,CAAC,aAAa,CAAkB,gBAAA,CAAA,CAAC;;AAGzE,QAAA,MAAM,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC;;AAGhD,IAAA,MAAM,WAAW,CACf,QAAwB,EACxB,SAAmC,EAAA;QAEnC,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,KAAK,KAAK,CAAC,QAAQ,EAAE;AACnD,YAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;;QAGlE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;AACnD,QAAA,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE;YACxB,MAAM,IAAI,KAAK,CACb,CAAA,OAAA,EAAU,QAAQ,CAAC,aAAa,CAAmC,iCAAA,CAAA,CACpE;;QAGH,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC;;AAGhD;;;;;;;AAOG;AACH,IAAA,MAAM,IAAI,CACR,OAAe,EACf,cAA8B,EAC9B,MAAkB,EAAA;QAElB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC;QAEzD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CACb,CAAA,WAAA,EAAc,cAAc,CAAC,aAAa,CAAkB,gBAAA,CAAA,CAC7D;;QAGH,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC;;AAEtD;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CrossPlatformWalletStamper } from "../stamper";
|
|
2
|
+
import { CrossPlatformWalletConnector } from "../connector";
|
|
3
|
+
import { TWalletManagerConfig, WalletInterface, WalletProvider, WalletInterfaceType, Chain } from "@types";
|
|
4
|
+
export declare class MobileWalletManager {
|
|
5
|
+
private initializers;
|
|
6
|
+
private wcClient?;
|
|
7
|
+
readonly wallets: Partial<Record<WalletInterfaceType, WalletInterface>>;
|
|
8
|
+
private chainToInterfaces;
|
|
9
|
+
readonly stamper?: CrossPlatformWalletStamper;
|
|
10
|
+
readonly connector?: CrossPlatformWalletConnector;
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a MobileWalletManager that only uses WalletConnect.
|
|
13
|
+
*
|
|
14
|
+
* @param cfg - Wallet manager configuration (uses only WalletConnect fields).
|
|
15
|
+
*/
|
|
16
|
+
constructor(cfg: TWalletManagerConfig);
|
|
17
|
+
/**
|
|
18
|
+
* Initializes the wallet manager and WalletConnect client.
|
|
19
|
+
*
|
|
20
|
+
* @param cfg - Wallet manager configuration.
|
|
21
|
+
*/
|
|
22
|
+
init(cfg: TWalletManagerConfig): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Retrieves available wallet providers, optionally filtered by chain.
|
|
25
|
+
*
|
|
26
|
+
* @param chain - Optional chain to filter providers by.
|
|
27
|
+
* @throws If no wallet interface is registered for the given chain.
|
|
28
|
+
*/
|
|
29
|
+
getProviders(chain?: Chain): Promise<WalletProvider[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Registers a wallet interface as supporting a specific blockchain chain.
|
|
32
|
+
*/
|
|
33
|
+
private addChainInterface;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/__wallet__/mobile/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,KAAK,EACN,MAAM,QAAQ,CAAC;AAIhB,qBAAa,mBAAmB;IAE9B,OAAO,CAAC,YAAY,CAAkC;IAGtD,OAAO,CAAC,QAAQ,CAAC,CAAsB;IAGvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC,CAAM;IAG7E,OAAO,CAAC,iBAAiB,CAAqD;IAG9E,QAAQ,CAAC,OAAO,CAAC,EAAE,0BAA0B,CAAC;IAG9C,QAAQ,CAAC,SAAS,CAAC,EAAE,4BAA4B,CAAC;IAElD;;;;OAIG;gBACS,GAAG,EAAE,oBAAoB;IA2CrC;;;;OAIG;IACG,IAAI,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IASpD;;;;;OAKG;IACG,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA4B5D;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAGvB;CACH"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var stamper = require('../stamper.js');
|
|
4
|
+
var connector = require('../connector.js');
|
|
5
|
+
var base$1 = require('../../__types__/base.js');
|
|
6
|
+
var client = require('../wallet-connect/client.js');
|
|
7
|
+
var base = require('../wallet-connect/base.js');
|
|
8
|
+
|
|
9
|
+
class MobileWalletManager {
|
|
10
|
+
/**
|
|
11
|
+
* Constructs a MobileWalletManager that only uses WalletConnect.
|
|
12
|
+
*
|
|
13
|
+
* @param cfg - Wallet manager configuration (uses only WalletConnect fields).
|
|
14
|
+
*/
|
|
15
|
+
constructor(cfg) {
|
|
16
|
+
// queue of async initialization functions
|
|
17
|
+
this.initializers = [];
|
|
18
|
+
// mapping of wallet interface types to their wallet instances
|
|
19
|
+
this.wallets = {};
|
|
20
|
+
// maps a blockchain chain to its corresponding wallet interface types
|
|
21
|
+
this.chainToInterfaces = {};
|
|
22
|
+
/**
|
|
23
|
+
* Registers a wallet interface as supporting a specific blockchain chain.
|
|
24
|
+
*/
|
|
25
|
+
this.addChainInterface = (chain, iface) => {
|
|
26
|
+
if (!this.chainToInterfaces[chain])
|
|
27
|
+
this.chainToInterfaces[chain] = [];
|
|
28
|
+
this.chainToInterfaces[chain].push(iface);
|
|
29
|
+
};
|
|
30
|
+
const ethereumNamespaces = cfg.chains.ethereum?.walletConnectNamespaces ?? [];
|
|
31
|
+
const solanaNamespaces = cfg.chains.solana?.walletConnectNamespaces ?? [];
|
|
32
|
+
const enableWalletConnectEvm = ethereumNamespaces.length > 0;
|
|
33
|
+
const enableWalletConnectSol = solanaNamespaces.length > 0;
|
|
34
|
+
const enableWalletConnect = enableWalletConnectEvm || enableWalletConnectSol;
|
|
35
|
+
if (cfg.walletConnect && enableWalletConnect) {
|
|
36
|
+
this.wcClient = new client.WalletConnectClient();
|
|
37
|
+
const wcUnified = new base.WalletConnectWallet(this.wcClient);
|
|
38
|
+
this.wallets[base$1.WalletInterfaceType.WalletConnect] = wcUnified;
|
|
39
|
+
// add async init step to the initializer queue
|
|
40
|
+
this.initializers.push(() => wcUnified.init({ ethereumNamespaces, solanaNamespaces }));
|
|
41
|
+
// register WalletConnect as a wallet interface for each enabled chain
|
|
42
|
+
if (enableWalletConnectEvm) {
|
|
43
|
+
this.addChainInterface(base$1.Chain.Ethereum, base$1.WalletInterfaceType.WalletConnect);
|
|
44
|
+
}
|
|
45
|
+
if (enableWalletConnectSol) {
|
|
46
|
+
this.addChainInterface(base$1.Chain.Solana, base$1.WalletInterfaceType.WalletConnect);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (cfg.features?.auth) {
|
|
50
|
+
this.stamper = new stamper.CrossPlatformWalletStamper(this.wallets);
|
|
51
|
+
}
|
|
52
|
+
if (cfg.features?.connecting) {
|
|
53
|
+
this.connector = new connector.CrossPlatformWalletConnector(this.wallets);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Initializes the wallet manager and WalletConnect client.
|
|
58
|
+
*
|
|
59
|
+
* @param cfg - Wallet manager configuration.
|
|
60
|
+
*/
|
|
61
|
+
async init(cfg) {
|
|
62
|
+
if (this.wcClient) {
|
|
63
|
+
await this.wcClient.init(cfg.walletConnect);
|
|
64
|
+
}
|
|
65
|
+
await Promise.all(this.initializers.map((fn) => fn()));
|
|
66
|
+
await this.stamper?.init();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Retrieves available wallet providers, optionally filtered by chain.
|
|
70
|
+
*
|
|
71
|
+
* @param chain - Optional chain to filter providers by.
|
|
72
|
+
* @throws If no wallet interface is registered for the given chain.
|
|
73
|
+
*/
|
|
74
|
+
async getProviders(chain) {
|
|
75
|
+
if (chain) {
|
|
76
|
+
const ifaceTypes = this.chainToInterfaces[chain];
|
|
77
|
+
if (!ifaceTypes || ifaceTypes.length === 0) {
|
|
78
|
+
throw new Error(`No wallet supports chain: ${chain}`);
|
|
79
|
+
}
|
|
80
|
+
const walletsToQuery = ifaceTypes
|
|
81
|
+
.map((iface) => this.wallets[iface])
|
|
82
|
+
.filter(Boolean);
|
|
83
|
+
const providersArrays = await Promise.all(walletsToQuery.map((wallet) => wallet.getProviders()));
|
|
84
|
+
// we still need to filter by chain because WalletConnect can return providers for multiple chains
|
|
85
|
+
return providersArrays
|
|
86
|
+
.flat()
|
|
87
|
+
.filter((p) => p.chainInfo.namespace === chain);
|
|
88
|
+
}
|
|
89
|
+
const providersArrays = await Promise.all(Object.values(this.wallets).map((wallet) => wallet.getProviders()));
|
|
90
|
+
return providersArrays.flat();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
exports.MobileWalletManager = MobileWalletManager;
|
|
95
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sources":["../../../src/__wallet__/mobile/manager.ts"],"sourcesContent":[null],"names":["WalletConnectClient","WalletConnectWallet","WalletInterfaceType","Chain","CrossPlatformWalletStamper","CrossPlatformWalletConnector"],"mappings":"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"}
|