@kheopskit/core 5.1.0 → 5.1.2

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.
Files changed (76) hide show
  1. package/dist/errors-Caq2csKx.mjs +181 -0
  2. package/dist/errors-Caq2csKx.mjs.map +1 -0
  3. package/dist/errors-DPw6pc2H.js +222 -0
  4. package/dist/errors-DPw6pc2H.js.map +1 -0
  5. package/dist/ethereum.d.mts +39 -38
  6. package/dist/ethereum.d.ts +39 -38
  7. package/dist/ethereum.js +214 -281
  8. package/dist/ethereum.js.map +1 -1
  9. package/dist/ethereum.mjs +211 -282
  10. package/dist/ethereum.mjs.map +1 -1
  11. package/dist/{getCachedObservable-C4E8dfMp.d.ts → getCachedObservable-LUq9IfEx.d.mts} +5 -2
  12. package/dist/{getCachedObservable-C4E8dfMp.d.mts → getCachedObservable-LUq9IfEx.d.ts} +5 -2
  13. package/dist/iconCache-BSa42Sui.mjs +343 -0
  14. package/dist/iconCache-BSa42Sui.mjs.map +1 -0
  15. package/dist/iconCache-DS4zNiP1.js +396 -0
  16. package/dist/iconCache-DS4zNiP1.js.map +1 -0
  17. package/dist/index.d.mts +65 -59
  18. package/dist/index.d.ts +65 -59
  19. package/dist/index.js +901 -1015
  20. package/dist/index.js.map +1 -1
  21. package/dist/index.mjs +885 -1016
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/injectedWallets-B1MCxAE9.js +148 -0
  24. package/dist/injectedWallets-B1MCxAE9.js.map +1 -0
  25. package/dist/injectedWallets-B3Vysfvr.mjs +119 -0
  26. package/dist/injectedWallets-B3Vysfvr.mjs.map +1 -0
  27. package/dist/internal.d.mts +18 -16
  28. package/dist/internal.d.ts +18 -16
  29. package/dist/internal.js +9 -20
  30. package/dist/internal.mjs +3 -20
  31. package/dist/polkadot.d.mts +37 -36
  32. package/dist/polkadot.d.ts +37 -36
  33. package/dist/polkadot.js +178 -220
  34. package/dist/polkadot.js.map +1 -1
  35. package/dist/polkadot.mjs +175 -221
  36. package/dist/polkadot.mjs.map +1 -1
  37. package/dist/polkadotExtensions-BoVKhNU_.mjs +23 -0
  38. package/dist/polkadotExtensions-BoVKhNU_.mjs.map +1 -0
  39. package/dist/polkadotExtensions-y4J9UzYl.js +28 -0
  40. package/dist/polkadotExtensions-y4J9UzYl.js.map +1 -0
  41. package/dist/solana.d.mts +50 -48
  42. package/dist/solana.d.ts +50 -48
  43. package/dist/solana.js +320 -378
  44. package/dist/solana.js.map +1 -1
  45. package/dist/solana.mjs +314 -379
  46. package/dist/solana.mjs.map +1 -1
  47. package/dist/types-Cb-vuEru.d.mts +330 -0
  48. package/dist/types-Cb-vuEru.d.ts +330 -0
  49. package/dist/types-DKU-SNio.js +169 -0
  50. package/dist/{chunk-P7BPHHVV.js.map → types-DKU-SNio.js.map} +1 -1
  51. package/dist/types-jnifAAA0.mjs +104 -0
  52. package/dist/types-jnifAAA0.mjs.map +1 -0
  53. package/package.json +12 -12
  54. package/dist/chunk-3Y5N4N3Q.mjs +0 -267
  55. package/dist/chunk-3Y5N4N3Q.mjs.map +0 -1
  56. package/dist/chunk-BWUUHUDK.mjs +0 -24
  57. package/dist/chunk-BWUUHUDK.mjs.map +0 -1
  58. package/dist/chunk-D3EQMFZ2.js +0 -24
  59. package/dist/chunk-D3EQMFZ2.js.map +0 -1
  60. package/dist/chunk-DF7EKK4G.mjs +0 -106
  61. package/dist/chunk-DF7EKK4G.mjs.map +0 -1
  62. package/dist/chunk-EH73P476.js +0 -106
  63. package/dist/chunk-EH73P476.js.map +0 -1
  64. package/dist/chunk-JVSCMJY5.mjs +0 -147
  65. package/dist/chunk-JVSCMJY5.mjs.map +0 -1
  66. package/dist/chunk-P7BPHHVV.js +0 -76
  67. package/dist/chunk-SO64R7Z6.js +0 -267
  68. package/dist/chunk-SO64R7Z6.js.map +0 -1
  69. package/dist/chunk-WOPCW2OX.mjs +0 -76
  70. package/dist/chunk-WOPCW2OX.mjs.map +0 -1
  71. package/dist/chunk-XOGQMEV2.js +0 -147
  72. package/dist/chunk-XOGQMEV2.js.map +0 -1
  73. package/dist/internal.js.map +0 -1
  74. package/dist/internal.mjs.map +0 -1
  75. package/dist/types-0iDBydsK.d.mts +0 -327
  76. package/dist/types-0iDBydsK.d.ts +0 -327
package/dist/polkadot.js CHANGED
@@ -1,230 +1,188 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
-
3
- var _chunkD3EQMFZ2js = require('./chunk-D3EQMFZ2.js');
4
-
5
-
6
-
7
-
8
-
9
-
10
- var _chunkXOGQMEV2js = require('./chunk-XOGQMEV2.js');
11
-
12
-
13
-
14
-
15
- var _chunkEH73P476js = require('./chunk-EH73P476.js');
16
-
17
-
18
-
19
-
20
-
21
- var _chunkP7BPHHVVjs = require('./chunk-P7BPHHVV.js');
22
-
23
- // src/api/polkadot/accounts.ts
24
-
25
-
26
- var _pjssigner = require('polkadot-api/pjs-signer');
27
- var _rxjs = require('rxjs');
28
- var getInjectedWalletAccounts$ = (wallet) => {
29
- if (!wallet.isConnected) return _rxjs.of.call(void 0, []);
30
- return new (0, _rxjs.Observable)((subscriber) => {
31
- const getAccount = (account) => ({
32
- id: _chunkEH73P476js.getWalletAccountId.call(void 0, wallet.id, account.address),
33
- ...account,
34
- type: _nullishCoalesce(account.type, () => ( "sr25519")),
35
- platform: "polkadot",
36
- walletName: wallet.name,
37
- walletId: wallet.id
38
- });
39
- const extension = wallet.extension;
40
- const unsubscribe = extension.subscribe((accounts) => {
41
- subscriber.next(accounts.map(getAccount));
42
- });
43
- subscriber.next(extension.getAccounts().map(getAccount));
44
- return () => {
45
- return unsubscribe();
46
- };
47
- });
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_types = require("./types-DKU-SNio.js");
3
+ const require_errors = require("./errors-DPw6pc2H.js");
4
+ const require_polkadotExtensions = require("./polkadotExtensions-y4J9UzYl.js");
5
+ const require_injectedWallets = require("./injectedWallets-B1MCxAE9.js");
6
+ let rxjs = require("rxjs");
7
+ let lodash_es = require("lodash-es");
8
+ let polkadot_api_pjs_signer = require("polkadot-api/pjs-signer");
9
+ //#region src/api/polkadot/accounts.ts
10
+ const getInjectedWalletAccounts$ = (wallet) => {
11
+ if (!wallet.isConnected) return (0, rxjs.of)([]);
12
+ return new rxjs.Observable((subscriber) => {
13
+ const getAccount = (account) => ({
14
+ id: require_errors.getWalletAccountId(wallet.id, account.address),
15
+ ...account,
16
+ type: account.type ?? "sr25519",
17
+ platform: "polkadot",
18
+ walletName: wallet.name,
19
+ walletId: wallet.id
20
+ });
21
+ const extension = wallet.extension;
22
+ const unsubscribe = extension.subscribe((accounts) => {
23
+ subscriber.next(accounts.map(getAccount));
24
+ });
25
+ subscriber.next(extension.getAccounts().map(getAccount));
26
+ return () => {
27
+ return unsubscribe();
28
+ };
29
+ });
48
30
  };
49
- var getAppKitPolkadotSigner = (appKit, address) => {
50
- const provider = appKit.getProvider("polkadot");
51
- if (!provider) throw new (0, _chunkEH73P476js.KheopskitError)("NO_PROVIDER", "No provider found");
52
- if (!provider.session)
53
- throw new (0, _chunkEH73P476js.KheopskitError)("NO_SESSION", "No session found");
54
- return _pjssigner.getPolkadotSignerFromPjs.call(void 0,
55
- address,
56
- (transactionPayload) => {
57
- if (!provider.session)
58
- throw new (0, _chunkEH73P476js.KheopskitError)("NO_SESSION", "No session found");
59
- return provider.client.request({
60
- topic: provider.session.topic,
61
- chainId: `polkadot:${transactionPayload.genesisHash.substring(2, 34)}`,
62
- request: {
63
- method: "polkadot_signTransaction",
64
- params: {
65
- address,
66
- transactionPayload
67
- }
68
- }
69
- });
70
- },
71
- async ({ address: address2, data }) => {
72
- if (!provider.session)
73
- throw new (0, _chunkEH73P476js.KheopskitError)("NO_SESSION", "No session found");
74
- const networks = appKit.getCaipNetworks("polkadot");
75
- const chainId = _optionalChain([networks, 'access', _ => _[0], 'optionalAccess', _2 => _2.caipNetworkId]);
76
- if (!chainId)
77
- throw new (0, _chunkEH73P476js.KheopskitError)(
78
- "NO_SESSION",
79
- "No CAIP network available for polkadot"
80
- );
81
- return provider.client.request({
82
- topic: provider.session.topic,
83
- chainId,
84
- request: {
85
- method: "polkadot_signMessage",
86
- params: {
87
- address: address2,
88
- message: data
89
- }
90
- }
91
- });
92
- }
93
- );
31
+ const getAppKitPolkadotSigner = (appKit, address) => {
32
+ const provider = appKit.getProvider("polkadot");
33
+ if (!provider) throw new require_errors.KheopskitError("NO_PROVIDER", "No provider found");
34
+ if (!provider.session) throw new require_errors.KheopskitError("NO_SESSION", "No session found");
35
+ return (0, polkadot_api_pjs_signer.getPolkadotSignerFromPjs)(address, (transactionPayload) => {
36
+ if (!provider.session) throw new require_errors.KheopskitError("NO_SESSION", "No session found");
37
+ return provider.client.request({
38
+ topic: provider.session.topic,
39
+ chainId: `polkadot:${transactionPayload.genesisHash.substring(2, 34)}`,
40
+ request: {
41
+ method: "polkadot_signTransaction",
42
+ params: {
43
+ address,
44
+ transactionPayload
45
+ }
46
+ }
47
+ });
48
+ }, async ({ address, data }) => {
49
+ if (!provider.session) throw new require_errors.KheopskitError("NO_SESSION", "No session found");
50
+ const chainId = appKit.getCaipNetworks("polkadot")[0]?.caipNetworkId;
51
+ if (!chainId) throw new require_errors.KheopskitError("NO_SESSION", "No CAIP network available for polkadot");
52
+ return provider.client.request({
53
+ topic: provider.session.topic,
54
+ chainId,
55
+ request: {
56
+ method: "polkadot_signMessage",
57
+ params: {
58
+ address,
59
+ message: data
60
+ }
61
+ }
62
+ });
63
+ });
94
64
  };
95
- var getWalletConnectAccounts$ = (wallet) => _chunkXOGQMEV2js.getWalletConnectSessionAccounts$.call(void 0, {
96
- wallet,
97
- platform: "polkadot",
98
- namespace: "polkadot",
99
- cacheKey: `accounts:${wallet.id}:polkadot:`,
100
- buildAccounts: (provider) => {
101
- const session = provider.session;
102
- if (!session) return [];
103
- const addresses = _chunkXOGQMEV2js.getCaip10Addresses.call(void 0,
104
- _chunkXOGQMEV2js.getSessionCaip10s.call(void 0, session, "polkadot")
105
- );
106
- return addresses.map(
107
- (address) => ({
108
- id: _chunkEH73P476js.getWalletAccountId.call(void 0, wallet.id, address),
109
- platform: "polkadot",
110
- walletName: wallet.name,
111
- walletId: wallet.id,
112
- address,
113
- polkadotSigner: getAppKitPolkadotSigner(wallet.appKit, address),
114
- genesisHash: null,
115
- name: `${wallet.name} Polkadot`,
116
- // WalletConnect (Reown AppKit) doesn't expose account key type;
117
- // default to sr25519, which is the most common Polkadot key type.
118
- type: "sr25519"
119
- })
120
- );
121
- }
65
+ const getWalletConnectAccounts$ = (wallet) => require_injectedWallets.getWalletConnectSessionAccounts$({
66
+ wallet,
67
+ platform: "polkadot",
68
+ namespace: "polkadot",
69
+ cacheKey: `accounts:${wallet.id}:polkadot:`,
70
+ buildAccounts: (provider) => {
71
+ const session = provider.session;
72
+ if (!session) return [];
73
+ return require_injectedWallets.getCaip10Addresses(require_injectedWallets.getSessionCaip10s(session, "polkadot")).map((address) => ({
74
+ id: require_errors.getWalletAccountId(wallet.id, address),
75
+ platform: "polkadot",
76
+ walletName: wallet.name,
77
+ walletId: wallet.id,
78
+ address,
79
+ polkadotSigner: getAppKitPolkadotSigner(wallet.appKit, address),
80
+ genesisHash: null,
81
+ name: `${wallet.name} Polkadot`,
82
+ type: "sr25519"
83
+ }));
84
+ }
122
85
  });
123
- var getPolkadotAccounts$ = (polkadotWallets$, polkadotAccountTypes) => {
124
- if (polkadotAccountTypes.length === 0) {
125
- console.warn(
126
- "[kheopskit] config.polkadotAccountTypes is empty; all Polkadot accounts will be filtered out."
127
- );
128
- }
129
- return _chunkXOGQMEV2js.createPlatformAccounts$.call(void 0, {
130
- wallets$: polkadotWallets$,
131
- getInjectedAccounts$: getInjectedWalletAccounts$,
132
- getWalletConnectAccounts$,
133
- mapAccounts: (accounts) => accounts.filter((account) => polkadotAccountTypes.includes(account.type))
134
- });
86
+ const getPolkadotAccounts$ = (polkadotWallets$, polkadotAccountTypes) => {
87
+ if (polkadotAccountTypes.length === 0) console.warn("[kheopskit] config.polkadotAccountTypes is empty; all Polkadot accounts will be filtered out.");
88
+ return require_injectedWallets.createPlatformAccounts$({
89
+ wallets$: polkadotWallets$,
90
+ getInjectedAccounts$: getInjectedWalletAccounts$,
91
+ getWalletConnectAccounts$,
92
+ mapAccounts: (accounts) => accounts.filter((account) => polkadotAccountTypes.includes(account.type))
93
+ });
135
94
  };
136
-
137
- // src/api/polkadot/wallets.ts
138
- var _lodashes = require('lodash-es');
139
-
140
-
141
-
142
-
143
-
144
- var getInjectedWalletsIds = () => typeof window === "undefined" ? [] : _pjssigner.getInjectedExtensions.call(void 0, ).map((name) => _chunkP7BPHHVVjs.getWalletId.call(void 0, "polkadot", name));
145
- var createWalletIdsPoller$ = () => {
146
- return new (0, _rxjs.Observable)((subscriber) => {
147
- subscriber.next(getInjectedWalletsIds());
148
- const intervals = [100, 200, 300, 500];
149
- let index = 0;
150
- let timer;
151
- const poll = () => {
152
- subscriber.next(getInjectedWalletsIds());
153
- if (index < intervals.length) {
154
- const delay = intervals[index++];
155
- timer = setTimeout(poll, delay);
156
- }
157
- };
158
- if (intervals.length > 0) {
159
- timer = setTimeout(poll, _nullishCoalesce(intervals[index++], () => ( 100)));
160
- }
161
- return () => {
162
- if (timer !== void 0) clearTimeout(timer);
163
- };
164
- }).pipe(
165
- _rxjs.distinctUntilChanged.call(void 0, _lodashes.isEqual),
166
- _rxjs.shareReplay.call(void 0, { refCount: true, bufferSize: 1 })
167
- );
95
+ //#endregion
96
+ //#region src/api/polkadot/wallets.ts
97
+ const getInjectedWalletsIds = () => typeof window === "undefined" ? [] : (0, polkadot_api_pjs_signer.getInjectedExtensions)().map((name) => require_types.getWalletId("polkadot", name));
98
+ const createWalletIdsPoller$ = () => {
99
+ return new rxjs.Observable((subscriber) => {
100
+ subscriber.next(getInjectedWalletsIds());
101
+ const intervals = [
102
+ 100,
103
+ 200,
104
+ 300,
105
+ 500
106
+ ];
107
+ let index = 0;
108
+ let timer;
109
+ const poll = () => {
110
+ subscriber.next(getInjectedWalletsIds());
111
+ if (index < intervals.length) {
112
+ const delay = intervals[index++];
113
+ timer = setTimeout(poll, delay);
114
+ }
115
+ };
116
+ if (intervals.length > 0) timer = setTimeout(poll, intervals[index++] ?? 100);
117
+ return () => {
118
+ if (timer !== void 0) clearTimeout(timer);
119
+ };
120
+ }).pipe((0, rxjs.distinctUntilChanged)(lodash_es.isEqual), (0, rxjs.shareReplay)({
121
+ refCount: true,
122
+ bufferSize: 1
123
+ }));
168
124
  };
169
- var getPolkadotWallets$ = (store) => _chunkXOGQMEV2js.createInjectedWallets$.call(void 0,
170
- store,
171
- {
172
- sources$: createWalletIdsPoller$(),
173
- getWalletId: (walletId) => walletId,
174
- connect: (walletId) => {
175
- const { identifier } = _chunkP7BPHHVVjs.parseWalletId.call(void 0, walletId);
176
- return _pjssigner.connectInjectedExtension.call(void 0, identifier);
177
- },
178
- buildWallet: ({ walletId, handle, isConnected, connect, disconnect }) => {
179
- const { identifier } = _chunkP7BPHHVVjs.parseWalletId.call(void 0, walletId);
180
- const extInfo = _chunkD3EQMFZ2js.POLKADOT_EXTENSIONS[identifier];
181
- return {
182
- id: walletId,
183
- type: "injected",
184
- platform: "polkadot",
185
- name: _nullishCoalesce(_optionalChain([extInfo, 'optionalAccess', _3 => _3.name]), () => ( identifier)),
186
- icon: _nullishCoalesce(_optionalChain([extInfo, 'optionalAccess', _4 => _4.icon]), () => ( "")),
187
- sourceId: identifier,
188
- extension: handle,
189
- isConnected,
190
- connect,
191
- disconnect
192
- };
193
- }
194
- }
195
- );
196
-
197
- // src/api/polkadot/plugin.ts
198
- var DEFAULT_ACCOUNT_TYPES = [
199
- "sr25519",
200
- "ed25519",
201
- "ecdsa"
125
+ const getPolkadotWallets$ = (store) => require_injectedWallets.createInjectedWallets$(store, {
126
+ sources$: createWalletIdsPoller$(),
127
+ getWalletId: (walletId) => walletId,
128
+ connect: (walletId) => {
129
+ const { identifier } = require_types.parseWalletId(walletId);
130
+ return (0, polkadot_api_pjs_signer.connectInjectedExtension)(identifier);
131
+ },
132
+ buildWallet: ({ walletId, handle, isConnected, connect, disconnect }) => {
133
+ const { identifier } = require_types.parseWalletId(walletId);
134
+ const extInfo = require_polkadotExtensions.POLKADOT_EXTENSIONS[identifier];
135
+ return {
136
+ id: walletId,
137
+ type: "injected",
138
+ platform: "polkadot",
139
+ name: extInfo?.name ?? identifier,
140
+ icon: extInfo?.icon ?? "",
141
+ sourceId: identifier,
142
+ extension: handle,
143
+ isConnected,
144
+ connect,
145
+ disconnect
146
+ };
147
+ }
148
+ });
149
+ //#endregion
150
+ //#region src/api/polkadot/plugin.ts
151
+ const DEFAULT_ACCOUNT_TYPES = [
152
+ "sr25519",
153
+ "ed25519",
154
+ "ecdsa"
202
155
  ];
203
- var VALID_ACCOUNT_TYPES = /* @__PURE__ */ new Set([
204
- "sr25519",
205
- "ed25519",
206
- "ecdsa",
207
- "ethereum"
156
+ const VALID_ACCOUNT_TYPES = /* @__PURE__ */ new Set([
157
+ "sr25519",
158
+ "ed25519",
159
+ "ecdsa",
160
+ "ethereum"
208
161
  ]);
209
- var polkadot = (options = {}) => {
210
- const accountTypes = _nullishCoalesce(options.accountTypes, () => ( DEFAULT_ACCOUNT_TYPES));
211
- const invalid = accountTypes.filter((t) => !VALID_ACCOUNT_TYPES.has(t));
212
- if (invalid.length > 0) {
213
- console.warn(
214
- `[kheopskit] Unknown polkadot accountTypes: ${JSON.stringify(invalid)}. Valid values: "sr25519", "ed25519", "ecdsa", "ethereum".`
215
- );
216
- }
217
- return {
218
- platform: "polkadot",
219
- getWallets$: (ctx) => getPolkadotWallets$(ctx.store),
220
- getAccounts$: (wallets$) => getPolkadotAccounts$(wallets$, accountTypes),
221
- acceptsCachedAccount: (cached) => accountTypes.includes(_nullishCoalesce(cached.polkadotAccountType, () => ( "sr25519")))
222
- };
162
+ /**
163
+ * Polkadot platform plugin. Pass to `getKheopskit$({ platforms: [polkadot()] })`.
164
+ *
165
+ * @example
166
+ * ```ts
167
+ * import { polkadot } from "@kheopskit/core/polkadot";
168
+ * polkadot({ accountTypes: ["sr25519", "ed25519", "ecdsa"] });
169
+ * ```
170
+ */
171
+ const polkadot = (options = {}) => {
172
+ const accountTypes = options.accountTypes ?? DEFAULT_ACCOUNT_TYPES;
173
+ const invalid = accountTypes.filter((t) => !VALID_ACCOUNT_TYPES.has(t));
174
+ if (invalid.length > 0) console.warn(`[kheopskit] Unknown polkadot accountTypes: ${JSON.stringify(invalid)}. Valid values: "sr25519", "ed25519", "ecdsa", "ethereum".`);
175
+ return {
176
+ platform: "polkadot",
177
+ getWallets$: (ctx) => getPolkadotWallets$(ctx.store),
178
+ getAccounts$: (wallets$) => getPolkadotAccounts$(wallets$, accountTypes),
179
+ acceptsCachedAccount: (cached) => accountTypes.includes(cached.polkadotAccountType ?? "sr25519")
180
+ };
223
181
  };
182
+ //#endregion
183
+ exports.isInjectedWallet = require_types.isInjectedWallet;
184
+ exports.isSs58Address = require_errors.isSs58Address;
185
+ exports.isWalletConnectWallet = require_types.isWalletConnectWallet;
186
+ exports.polkadot = polkadot;
224
187
 
225
-
226
-
227
-
228
-
229
- exports.isInjectedWallet = _chunkP7BPHHVVjs.isInjectedWallet; exports.isSs58Address = _chunkEH73P476js.isSs58Address; exports.isWalletConnectWallet = _chunkP7BPHHVVjs.isWalletConnectWallet; exports.polkadot = polkadot;
230
188
  //# sourceMappingURL=polkadot.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/kheopskit/kheopskit/packages/core/dist/polkadot.js","../src/api/polkadot/accounts.ts","../src/api/polkadot/wallets.ts","../src/api/polkadot/plugin.ts"],"names":["address"],"mappings":"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","file":"/home/runner/work/kheopskit/kheopskit/packages/core/dist/polkadot.js","sourcesContent":[null,"import {\n\tgetPolkadotSignerFromPjs,\n\ttype InjectedExtension,\n\ttype InjectedPolkadotAccount,\n} from \"polkadot-api/pjs-signer\";\nimport { Observable, of } from \"rxjs\";\nimport { getWalletAccountId } from \"../../utils\";\nimport { KheopskitError } from \"../errors\";\nimport {\n\tcreatePlatformAccounts$,\n\tgetCaip10Addresses,\n\tgetSessionCaip10s,\n\tgetWalletConnectSessionAccounts$,\n} from \"../platformAccounts\";\nimport type {\n\tAppKitInstance,\n\tPolkadotAccountType,\n\tWalletConnectWallet,\n} from \"../types\";\nimport type {\n\tPolkadotAccount,\n\tPolkadotInjectedWallet,\n\tPolkadotWallet,\n} from \"./types\";\n\nconst getInjectedWalletAccounts$ = (\n\twallet: PolkadotInjectedWallet,\n): Observable<PolkadotAccount[]> => {\n\tif (!wallet.isConnected) return of([]);\n\n\treturn new Observable<PolkadotAccount[]>((subscriber) => {\n\t\tconst getAccount = (account: InjectedPolkadotAccount): PolkadotAccount => ({\n\t\t\tid: getWalletAccountId(wallet.id, account.address),\n\t\t\t...account,\n\t\t\ttype: account.type ?? \"sr25519\",\n\t\t\tplatform: \"polkadot\",\n\t\t\twalletName: wallet.name,\n\t\t\twalletId: wallet.id,\n\t\t});\n\n\t\tconst extension = wallet.extension as InjectedExtension;\n\n\t\t// subscribe to changes\n\t\tconst unsubscribe = extension.subscribe((accounts) => {\n\t\t\tsubscriber.next(accounts.map(getAccount));\n\t\t});\n\n\t\t// initial value\n\t\tsubscriber.next(extension.getAccounts().map(getAccount));\n\n\t\treturn () => {\n\t\t\treturn unsubscribe();\n\t\t};\n\t});\n};\n\nconst getAppKitPolkadotSigner = (appKit: AppKitInstance, address: string) => {\n\tconst provider = appKit.getProvider(\"polkadot\");\n\tif (!provider) throw new KheopskitError(\"NO_PROVIDER\", \"No provider found\");\n\tif (!provider.session)\n\t\tthrow new KheopskitError(\"NO_SESSION\", \"No session found\");\n\n\treturn getPolkadotSignerFromPjs(\n\t\taddress,\n\t\t(transactionPayload) => {\n\t\t\tif (!provider.session)\n\t\t\t\tthrow new KheopskitError(\"NO_SESSION\", \"No session found\");\n\n\t\t\treturn provider.client.request({\n\t\t\t\ttopic: provider.session.topic,\n\t\t\t\tchainId: `polkadot:${transactionPayload.genesisHash.substring(2, 34)}`,\n\t\t\t\trequest: {\n\t\t\t\t\tmethod: \"polkadot_signTransaction\",\n\t\t\t\t\tparams: {\n\t\t\t\t\t\taddress,\n\t\t\t\t\t\ttransactionPayload,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tasync ({ address, data }) => {\n\t\t\tif (!provider.session)\n\t\t\t\tthrow new KheopskitError(\"NO_SESSION\", \"No session found\");\n\t\t\tconst networks = appKit.getCaipNetworks(\"polkadot\");\n\t\t\tconst chainId = networks[0]?.caipNetworkId;\n\t\t\tif (!chainId)\n\t\t\t\tthrow new KheopskitError(\n\t\t\t\t\t\"NO_SESSION\",\n\t\t\t\t\t\"No CAIP network available for polkadot\",\n\t\t\t\t);\n\n\t\t\treturn provider.client.request({\n\t\t\t\ttopic: provider.session.topic,\n\t\t\t\tchainId,\n\t\t\t\trequest: {\n\t\t\t\t\tmethod: \"polkadot_signMessage\",\n\t\t\t\t\tparams: {\n\t\t\t\t\t\taddress,\n\t\t\t\t\t\tmessage: data,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t);\n};\n\nconst getWalletConnectAccounts$ = (\n\twallet: WalletConnectWallet,\n): Observable<PolkadotAccount[]> =>\n\tgetWalletConnectSessionAccounts$({\n\t\twallet,\n\t\tplatform: \"polkadot\",\n\t\tnamespace: \"polkadot\",\n\t\tcacheKey: `accounts:${wallet.id}:polkadot:`,\n\t\tbuildAccounts: (provider) => {\n\t\t\tconst session = provider.session;\n\t\t\tif (!session) return [];\n\n\t\t\tconst addresses = getCaip10Addresses(\n\t\t\t\tgetSessionCaip10s(session, \"polkadot\"),\n\t\t\t);\n\n\t\t\treturn addresses.map(\n\t\t\t\t(address): PolkadotAccount => ({\n\t\t\t\t\tid: getWalletAccountId(wallet.id, address),\n\t\t\t\t\tplatform: \"polkadot\",\n\t\t\t\t\twalletName: wallet.name,\n\t\t\t\t\twalletId: wallet.id,\n\t\t\t\t\taddress,\n\t\t\t\t\tpolkadotSigner: getAppKitPolkadotSigner(wallet.appKit, address),\n\t\t\t\t\tgenesisHash: null,\n\t\t\t\t\tname: `${wallet.name} Polkadot`,\n\t\t\t\t\t// WalletConnect (Reown AppKit) doesn't expose account key type;\n\t\t\t\t\t// default to sr25519, which is the most common Polkadot key type.\n\t\t\t\t\ttype: \"sr25519\",\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t});\n\nexport const getPolkadotAccounts$ = (\n\tpolkadotWallets$: Observable<(PolkadotWallet | WalletConnectWallet)[]>,\n\tpolkadotAccountTypes: PolkadotAccountType[],\n) => {\n\tif (polkadotAccountTypes.length === 0) {\n\t\tconsole.warn(\n\t\t\t\"[kheopskit] config.polkadotAccountTypes is empty; all Polkadot accounts will be filtered out.\",\n\t\t);\n\t}\n\n\treturn createPlatformAccounts$({\n\t\twallets$: polkadotWallets$,\n\t\tgetInjectedAccounts$: getInjectedWalletAccounts$,\n\t\tgetWalletConnectAccounts$,\n\t\tmapAccounts: (accounts) =>\n\t\t\taccounts.filter((account) => polkadotAccountTypes.includes(account.type)),\n\t});\n};\n","import { isEqual } from \"lodash-es\";\nimport {\n\tconnectInjectedExtension,\n\tgetInjectedExtensions,\n\ttype InjectedExtension,\n} from \"polkadot-api/pjs-signer\";\nimport { distinctUntilChanged, Observable, shareReplay } from \"rxjs\";\nimport { POLKADOT_EXTENSIONS } from \"../../utils/polkadotExtensions\";\nimport {\n\tgetWalletId,\n\tparseWalletId,\n\ttype WalletId,\n} from \"../../utils/WalletId\";\nimport { createInjectedWallets$ } from \"../injectedWallets\";\nimport type { KheopskitStore } from \"../store\";\nimport type { PolkadotInjectedWallet } from \"./types\";\n\nconst getInjectedWalletsIds = () =>\n\ttypeof window === \"undefined\"\n\t\t? []\n\t\t: getInjectedExtensions().map((name) => getWalletId(\"polkadot\", name));\n\n// Create a polling observable that starts immediately and polls at intervals\nconst createWalletIdsPoller$ = () => {\n\treturn new Observable<WalletId[]>((subscriber) => {\n\t\t// Emit immediately on subscribe\n\t\tsubscriber.next(getInjectedWalletsIds());\n\n\t\t// Poll at shorter intervals initially, then slow down\n\t\tconst intervals = [100, 200, 300, 500];\n\t\tlet index = 0;\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\n\t\tconst poll = () => {\n\t\t\tsubscriber.next(getInjectedWalletsIds());\n\t\t\tif (index < intervals.length) {\n\t\t\t\tconst delay = intervals[index++];\n\t\t\t\ttimer = setTimeout(poll, delay);\n\t\t\t}\n\t\t};\n\n\t\t// Start polling after first immediate emission\n\t\tif (intervals.length > 0) {\n\t\t\ttimer = setTimeout(poll, intervals[index++] ?? 100);\n\t\t}\n\n\t\treturn () => {\n\t\t\t// Cancel any pending poll so it can't fire after unsubscribe.\n\t\t\tif (timer !== undefined) clearTimeout(timer);\n\t\t};\n\t}).pipe(\n\t\tdistinctUntilChanged<WalletId[]>(isEqual),\n\t\tshareReplay({ refCount: true, bufferSize: 1 }),\n\t);\n};\n\n// The shared WalletConnect connector is emitted once by core (see\n// `getWallets$`), not per platform — so this returns only injected wallets.\nexport const getPolkadotWallets$ = (store: KheopskitStore) =>\n\tcreateInjectedWallets$<WalletId, PolkadotInjectedWallet, InjectedExtension>(\n\t\tstore,\n\t\t{\n\t\t\tsources$: createWalletIdsPoller$(),\n\t\t\tgetWalletId: (walletId) => walletId,\n\t\t\tconnect: (walletId) => {\n\t\t\t\tconst { identifier } = parseWalletId(walletId);\n\t\t\t\treturn connectInjectedExtension(identifier);\n\t\t\t},\n\t\t\tbuildWallet: ({ walletId, handle, isConnected, connect, disconnect }) => {\n\t\t\t\tconst { identifier } = parseWalletId(walletId);\n\t\t\t\tconst extInfo = POLKADOT_EXTENSIONS[identifier];\n\n\t\t\t\treturn {\n\t\t\t\t\tid: walletId,\n\t\t\t\t\ttype: \"injected\",\n\t\t\t\t\tplatform: \"polkadot\",\n\t\t\t\t\tname: extInfo?.name ?? identifier,\n\t\t\t\t\ticon: extInfo?.icon ?? \"\",\n\t\t\t\t\tsourceId: identifier,\n\t\t\t\t\textension: handle,\n\t\t\t\t\tisConnected,\n\t\t\t\t\tconnect,\n\t\t\t\t\tdisconnect,\n\t\t\t\t};\n\t\t\t},\n\t\t},\n\t);\n","import type {\n\tKheopskitPlatform,\n\tPlatformContext,\n\tPolkadotAccountType,\n} from \"../types\";\nimport { getPolkadotAccounts$ } from \"./accounts\";\nimport type { PolkadotAccount, PolkadotWallet } from \"./types\";\nimport { getPolkadotWallets$ } from \"./wallets\";\n\nconst DEFAULT_ACCOUNT_TYPES: PolkadotAccountType[] = [\n\t\"sr25519\",\n\t\"ed25519\",\n\t\"ecdsa\",\n];\n\nconst VALID_ACCOUNT_TYPES = new Set<string>([\n\t\"sr25519\",\n\t\"ed25519\",\n\t\"ecdsa\",\n\t\"ethereum\",\n]);\n\nexport type PolkadotPluginOptions = {\n\t/**\n\t * Allowed Polkadot account key types. Accounts with other key types are\n\t * filtered out from kheopskit state.\n\t *\n\t * @default [\"sr25519\", \"ed25519\", \"ecdsa\"]\n\t */\n\taccountTypes?: PolkadotAccountType[];\n};\n\n/**\n * Polkadot platform plugin. Pass to `getKheopskit$({ platforms: [polkadot()] })`.\n *\n * @example\n * ```ts\n * import { polkadot } from \"@kheopskit/core/polkadot\";\n * polkadot({ accountTypes: [\"sr25519\", \"ed25519\", \"ecdsa\"] });\n * ```\n */\nexport const polkadot = (\n\toptions: PolkadotPluginOptions = {},\n): KheopskitPlatform<\"polkadot\", PolkadotWallet, PolkadotAccount> => {\n\tconst accountTypes = options.accountTypes ?? DEFAULT_ACCOUNT_TYPES;\n\n\tconst invalid = accountTypes.filter((t) => !VALID_ACCOUNT_TYPES.has(t));\n\tif (invalid.length > 0) {\n\t\tconsole.warn(\n\t\t\t`[kheopskit] Unknown polkadot accountTypes: ${JSON.stringify(invalid)}. Valid values: \"sr25519\", \"ed25519\", \"ecdsa\", \"ethereum\".`,\n\t\t);\n\t}\n\n\treturn {\n\t\tplatform: \"polkadot\",\n\t\tgetWallets$: (ctx: PlatformContext) => getPolkadotWallets$(ctx.store),\n\t\tgetAccounts$: (wallets$) => getPolkadotAccounts$(wallets$, accountTypes),\n\t\tacceptsCachedAccount: (cached) =>\n\t\t\taccountTypes.includes(cached.polkadotAccountType ?? \"sr25519\"),\n\t};\n};\n"]}
1
+ {"version":3,"file":"polkadot.js","names":["Observable","getWalletAccountId","KheopskitError","getWalletConnectSessionAccounts$","getCaip10Addresses","getSessionCaip10s","createPlatformAccounts$","getWalletId","Observable","isEqual","createInjectedWallets$","parseWalletId","POLKADOT_EXTENSIONS"],"sources":["../src/api/polkadot/accounts.ts","../src/api/polkadot/wallets.ts","../src/api/polkadot/plugin.ts"],"sourcesContent":["import {\n\tgetPolkadotSignerFromPjs,\n\ttype InjectedExtension,\n\ttype InjectedPolkadotAccount,\n} from \"polkadot-api/pjs-signer\";\nimport { Observable, of } from \"rxjs\";\nimport { getWalletAccountId } from \"../../utils\";\nimport { KheopskitError } from \"../errors\";\nimport {\n\tcreatePlatformAccounts$,\n\tgetCaip10Addresses,\n\tgetSessionCaip10s,\n\tgetWalletConnectSessionAccounts$,\n} from \"../platformAccounts\";\nimport type {\n\tAppKitInstance,\n\tPolkadotAccountType,\n\tWalletConnectWallet,\n} from \"../types\";\nimport type {\n\tPolkadotAccount,\n\tPolkadotInjectedWallet,\n\tPolkadotWallet,\n} from \"./types\";\n\nconst getInjectedWalletAccounts$ = (\n\twallet: PolkadotInjectedWallet,\n): Observable<PolkadotAccount[]> => {\n\tif (!wallet.isConnected) return of([]);\n\n\treturn new Observable<PolkadotAccount[]>((subscriber) => {\n\t\tconst getAccount = (account: InjectedPolkadotAccount): PolkadotAccount => ({\n\t\t\tid: getWalletAccountId(wallet.id, account.address),\n\t\t\t...account,\n\t\t\ttype: account.type ?? \"sr25519\",\n\t\t\tplatform: \"polkadot\",\n\t\t\twalletName: wallet.name,\n\t\t\twalletId: wallet.id,\n\t\t});\n\n\t\tconst extension = wallet.extension as InjectedExtension;\n\n\t\t// subscribe to changes\n\t\tconst unsubscribe = extension.subscribe((accounts) => {\n\t\t\tsubscriber.next(accounts.map(getAccount));\n\t\t});\n\n\t\t// initial value\n\t\tsubscriber.next(extension.getAccounts().map(getAccount));\n\n\t\treturn () => {\n\t\t\treturn unsubscribe();\n\t\t};\n\t});\n};\n\nconst getAppKitPolkadotSigner = (appKit: AppKitInstance, address: string) => {\n\tconst provider = appKit.getProvider(\"polkadot\");\n\tif (!provider) throw new KheopskitError(\"NO_PROVIDER\", \"No provider found\");\n\tif (!provider.session)\n\t\tthrow new KheopskitError(\"NO_SESSION\", \"No session found\");\n\n\treturn getPolkadotSignerFromPjs(\n\t\taddress,\n\t\t(transactionPayload) => {\n\t\t\tif (!provider.session)\n\t\t\t\tthrow new KheopskitError(\"NO_SESSION\", \"No session found\");\n\n\t\t\treturn provider.client.request({\n\t\t\t\ttopic: provider.session.topic,\n\t\t\t\tchainId: `polkadot:${transactionPayload.genesisHash.substring(2, 34)}`,\n\t\t\t\trequest: {\n\t\t\t\t\tmethod: \"polkadot_signTransaction\",\n\t\t\t\t\tparams: {\n\t\t\t\t\t\taddress,\n\t\t\t\t\t\ttransactionPayload,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tasync ({ address, data }) => {\n\t\t\tif (!provider.session)\n\t\t\t\tthrow new KheopskitError(\"NO_SESSION\", \"No session found\");\n\t\t\tconst networks = appKit.getCaipNetworks(\"polkadot\");\n\t\t\tconst chainId = networks[0]?.caipNetworkId;\n\t\t\tif (!chainId)\n\t\t\t\tthrow new KheopskitError(\n\t\t\t\t\t\"NO_SESSION\",\n\t\t\t\t\t\"No CAIP network available for polkadot\",\n\t\t\t\t);\n\n\t\t\treturn provider.client.request({\n\t\t\t\ttopic: provider.session.topic,\n\t\t\t\tchainId,\n\t\t\t\trequest: {\n\t\t\t\t\tmethod: \"polkadot_signMessage\",\n\t\t\t\t\tparams: {\n\t\t\t\t\t\taddress,\n\t\t\t\t\t\tmessage: data,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t);\n};\n\nconst getWalletConnectAccounts$ = (\n\twallet: WalletConnectWallet,\n): Observable<PolkadotAccount[]> =>\n\tgetWalletConnectSessionAccounts$({\n\t\twallet,\n\t\tplatform: \"polkadot\",\n\t\tnamespace: \"polkadot\",\n\t\tcacheKey: `accounts:${wallet.id}:polkadot:`,\n\t\tbuildAccounts: (provider) => {\n\t\t\tconst session = provider.session;\n\t\t\tif (!session) return [];\n\n\t\t\tconst addresses = getCaip10Addresses(\n\t\t\t\tgetSessionCaip10s(session, \"polkadot\"),\n\t\t\t);\n\n\t\t\treturn addresses.map(\n\t\t\t\t(address): PolkadotAccount => ({\n\t\t\t\t\tid: getWalletAccountId(wallet.id, address),\n\t\t\t\t\tplatform: \"polkadot\",\n\t\t\t\t\twalletName: wallet.name,\n\t\t\t\t\twalletId: wallet.id,\n\t\t\t\t\taddress,\n\t\t\t\t\tpolkadotSigner: getAppKitPolkadotSigner(wallet.appKit, address),\n\t\t\t\t\tgenesisHash: null,\n\t\t\t\t\tname: `${wallet.name} Polkadot`,\n\t\t\t\t\t// WalletConnect (Reown AppKit) doesn't expose account key type;\n\t\t\t\t\t// default to sr25519, which is the most common Polkadot key type.\n\t\t\t\t\ttype: \"sr25519\",\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t});\n\nexport const getPolkadotAccounts$ = (\n\tpolkadotWallets$: Observable<(PolkadotWallet | WalletConnectWallet)[]>,\n\tpolkadotAccountTypes: PolkadotAccountType[],\n) => {\n\tif (polkadotAccountTypes.length === 0) {\n\t\tconsole.warn(\n\t\t\t\"[kheopskit] config.polkadotAccountTypes is empty; all Polkadot accounts will be filtered out.\",\n\t\t);\n\t}\n\n\treturn createPlatformAccounts$({\n\t\twallets$: polkadotWallets$,\n\t\tgetInjectedAccounts$: getInjectedWalletAccounts$,\n\t\tgetWalletConnectAccounts$,\n\t\tmapAccounts: (accounts) =>\n\t\t\taccounts.filter((account) => polkadotAccountTypes.includes(account.type)),\n\t});\n};\n","import { isEqual } from \"lodash-es\";\nimport {\n\tconnectInjectedExtension,\n\tgetInjectedExtensions,\n\ttype InjectedExtension,\n} from \"polkadot-api/pjs-signer\";\nimport { distinctUntilChanged, Observable, shareReplay } from \"rxjs\";\nimport { POLKADOT_EXTENSIONS } from \"../../utils/polkadotExtensions\";\nimport {\n\tgetWalletId,\n\tparseWalletId,\n\ttype WalletId,\n} from \"../../utils/WalletId\";\nimport { createInjectedWallets$ } from \"../injectedWallets\";\nimport type { KheopskitStore } from \"../store\";\nimport type { PolkadotInjectedWallet } from \"./types\";\n\nconst getInjectedWalletsIds = () =>\n\ttypeof window === \"undefined\"\n\t\t? []\n\t\t: getInjectedExtensions().map((name) => getWalletId(\"polkadot\", name));\n\n// Create a polling observable that starts immediately and polls at intervals\nconst createWalletIdsPoller$ = () => {\n\treturn new Observable<WalletId[]>((subscriber) => {\n\t\t// Emit immediately on subscribe\n\t\tsubscriber.next(getInjectedWalletsIds());\n\n\t\t// Poll at shorter intervals initially, then slow down\n\t\tconst intervals = [100, 200, 300, 500];\n\t\tlet index = 0;\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\n\t\tconst poll = () => {\n\t\t\tsubscriber.next(getInjectedWalletsIds());\n\t\t\tif (index < intervals.length) {\n\t\t\t\tconst delay = intervals[index++];\n\t\t\t\ttimer = setTimeout(poll, delay);\n\t\t\t}\n\t\t};\n\n\t\t// Start polling after first immediate emission\n\t\tif (intervals.length > 0) {\n\t\t\ttimer = setTimeout(poll, intervals[index++] ?? 100);\n\t\t}\n\n\t\treturn () => {\n\t\t\t// Cancel any pending poll so it can't fire after unsubscribe.\n\t\t\tif (timer !== undefined) clearTimeout(timer);\n\t\t};\n\t}).pipe(\n\t\tdistinctUntilChanged<WalletId[]>(isEqual),\n\t\tshareReplay({ refCount: true, bufferSize: 1 }),\n\t);\n};\n\n// The shared WalletConnect connector is emitted once by core (see\n// `getWallets$`), not per platform — so this returns only injected wallets.\nexport const getPolkadotWallets$ = (store: KheopskitStore) =>\n\tcreateInjectedWallets$<WalletId, PolkadotInjectedWallet, InjectedExtension>(\n\t\tstore,\n\t\t{\n\t\t\tsources$: createWalletIdsPoller$(),\n\t\t\tgetWalletId: (walletId) => walletId,\n\t\t\tconnect: (walletId) => {\n\t\t\t\tconst { identifier } = parseWalletId(walletId);\n\t\t\t\treturn connectInjectedExtension(identifier);\n\t\t\t},\n\t\t\tbuildWallet: ({ walletId, handle, isConnected, connect, disconnect }) => {\n\t\t\t\tconst { identifier } = parseWalletId(walletId);\n\t\t\t\tconst extInfo = POLKADOT_EXTENSIONS[identifier];\n\n\t\t\t\treturn {\n\t\t\t\t\tid: walletId,\n\t\t\t\t\ttype: \"injected\",\n\t\t\t\t\tplatform: \"polkadot\",\n\t\t\t\t\tname: extInfo?.name ?? identifier,\n\t\t\t\t\ticon: extInfo?.icon ?? \"\",\n\t\t\t\t\tsourceId: identifier,\n\t\t\t\t\textension: handle,\n\t\t\t\t\tisConnected,\n\t\t\t\t\tconnect,\n\t\t\t\t\tdisconnect,\n\t\t\t\t};\n\t\t\t},\n\t\t},\n\t);\n","import type {\n\tKheopskitPlatform,\n\tPlatformContext,\n\tPolkadotAccountType,\n} from \"../types\";\nimport { getPolkadotAccounts$ } from \"./accounts\";\nimport type { PolkadotAccount, PolkadotWallet } from \"./types\";\nimport { getPolkadotWallets$ } from \"./wallets\";\n\nconst DEFAULT_ACCOUNT_TYPES: PolkadotAccountType[] = [\n\t\"sr25519\",\n\t\"ed25519\",\n\t\"ecdsa\",\n];\n\nconst VALID_ACCOUNT_TYPES = new Set<string>([\n\t\"sr25519\",\n\t\"ed25519\",\n\t\"ecdsa\",\n\t\"ethereum\",\n]);\n\nexport type PolkadotPluginOptions = {\n\t/**\n\t * Allowed Polkadot account key types. Accounts with other key types are\n\t * filtered out from kheopskit state.\n\t *\n\t * @default [\"sr25519\", \"ed25519\", \"ecdsa\"]\n\t */\n\taccountTypes?: PolkadotAccountType[];\n};\n\n/**\n * Polkadot platform plugin. Pass to `getKheopskit$({ platforms: [polkadot()] })`.\n *\n * @example\n * ```ts\n * import { polkadot } from \"@kheopskit/core/polkadot\";\n * polkadot({ accountTypes: [\"sr25519\", \"ed25519\", \"ecdsa\"] });\n * ```\n */\nexport const polkadot = (\n\toptions: PolkadotPluginOptions = {},\n): KheopskitPlatform<\"polkadot\", PolkadotWallet, PolkadotAccount> => {\n\tconst accountTypes = options.accountTypes ?? DEFAULT_ACCOUNT_TYPES;\n\n\tconst invalid = accountTypes.filter((t) => !VALID_ACCOUNT_TYPES.has(t));\n\tif (invalid.length > 0) {\n\t\tconsole.warn(\n\t\t\t`[kheopskit] Unknown polkadot accountTypes: ${JSON.stringify(invalid)}. Valid values: \"sr25519\", \"ed25519\", \"ecdsa\", \"ethereum\".`,\n\t\t);\n\t}\n\n\treturn {\n\t\tplatform: \"polkadot\",\n\t\tgetWallets$: (ctx: PlatformContext) => getPolkadotWallets$(ctx.store),\n\t\tgetAccounts$: (wallets$) => getPolkadotAccounts$(wallets$, accountTypes),\n\t\tacceptsCachedAccount: (cached) =>\n\t\t\taccountTypes.includes(cached.polkadotAccountType ?? \"sr25519\"),\n\t};\n};\n"],"mappings":"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"}