@dynamic-labs-sdk/cosmos 0.20.0 → 0.22.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.
Files changed (44) hide show
  1. package/dist/addCosmosExtension/addCosmosExtension.d.ts +10 -0
  2. package/dist/addCosmosExtension/addCosmosExtension.d.ts.map +1 -0
  3. package/dist/addCosmosExtension/index.d.ts +2 -0
  4. package/dist/addCosmosExtension/index.d.ts.map +1 -0
  5. package/dist/addCosmosInjectedExtension-CA5nvvNU.cjs.js +246 -0
  6. package/dist/addCosmosInjectedExtension-CA5nvvNU.cjs.js.map +1 -0
  7. package/dist/addCosmosInjectedExtension-iWAqM9Kr.esm.js +229 -0
  8. package/dist/addCosmosInjectedExtension-iWAqM9Kr.esm.js.map +1 -0
  9. package/dist/exports/index.d.ts +2 -0
  10. package/dist/exports/index.d.ts.map +1 -1
  11. package/dist/exports/injected.d.ts +2 -0
  12. package/dist/exports/injected.d.ts.map +1 -0
  13. package/dist/index.cjs.js +22 -4
  14. package/dist/index.cjs.js.map +1 -1
  15. package/dist/index.esm.js +20 -4
  16. package/dist/index.esm.js.map +1 -1
  17. package/dist/injected/addCosmosInjectedExtension/addCosmosInjectedExtension.d.ts +4 -0
  18. package/dist/injected/addCosmosInjectedExtension/addCosmosInjectedExtension.d.ts.map +1 -0
  19. package/dist/injected/addCosmosInjectedExtension/index.d.ts +2 -0
  20. package/dist/injected/addCosmosInjectedExtension/index.d.ts.map +1 -0
  21. package/dist/injected/utils/compass/getCompassInjectedProvider/index.d.ts +2 -0
  22. package/dist/injected/utils/compass/getCompassInjectedProvider/index.d.ts.map +1 -0
  23. package/dist/injected/utils/keplr/getKeplrInjectedProvider/index.d.ts +2 -0
  24. package/dist/injected/utils/keplr/getKeplrInjectedProvider/index.d.ts.map +1 -0
  25. package/dist/injected/utils/leap/getLeapInjectedProvider/index.d.ts +2 -0
  26. package/dist/injected/utils/leap/getLeapInjectedProvider/index.d.ts.map +1 -0
  27. package/dist/injected.cjs.js +9 -0
  28. package/dist/injected.cjs.js.map +1 -0
  29. package/dist/injected.esm.js +9 -0
  30. package/dist/injected.esm.js.map +1 -0
  31. package/dist/isCosmosNetworkProvider/index.d.ts +2 -0
  32. package/dist/isCosmosNetworkProvider/index.d.ts.map +1 -0
  33. package/dist/isCosmosNetworkProvider/isCosmosNetworkProvider.d.ts +5 -0
  34. package/dist/isCosmosNetworkProvider/isCosmosNetworkProvider.d.ts.map +1 -0
  35. package/dist/isCosmosWalletAccount/index.d.ts +2 -0
  36. package/dist/isCosmosWalletAccount/index.d.ts.map +1 -0
  37. package/dist/isCosmosWalletAccount/isCosmosWalletAccount.d.ts +5 -0
  38. package/dist/isCosmosWalletAccount/isCosmosWalletAccount.d.ts.map +1 -0
  39. package/dist/isCosmosWalletProvider/index.d.ts +2 -0
  40. package/dist/isCosmosWalletProvider/index.d.ts.map +1 -0
  41. package/dist/isCosmosWalletProvider/isCosmosWalletProvider.d.ts +1 -1
  42. package/dist/isCosmosWalletProvider/isCosmosWalletProvider.d.ts.map +1 -1
  43. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  44. package/package.json +9 -4
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Adds the Cosmos extension to the Dynamic client.
3
+ *
4
+ * This is a convenience function that adds support for cosmos injected wallets like Compass, Keplr, and more.
5
+ *
6
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
7
+ * @not-instrumented
8
+ */
9
+ export declare const addCosmosExtension: (client?: import("@dynamic-labs-sdk/client").DynamicClient) => void;
10
+ //# sourceMappingURL=addCosmosExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addCosmosExtension.d.ts","sourceRoot":"","sources":["../../src/addCosmosExtension/addCosmosExtension.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,iEAAkC,IAEhE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { addCosmosExtension } from './addCosmosExtension';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/addCosmosExtension/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,246 @@
1
+ let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
2
+ let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
3
+ let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
4
+
5
+ //#region package.json
6
+ var name = "@dynamic-labs-sdk/cosmos";
7
+ var version = "0.22.0";
8
+
9
+ //#endregion
10
+ //#region src/utils/fetchCosmosBalance/fetchCosmosBalance.ts
11
+ /** @not-instrumented */
12
+ const fetchCosmosBalance = async ({ address, networkData }) => {
13
+ const response = await fetch(`${networkData.rpcUrls.http[0]}/cosmos/bank/v1beta1/balances/${address}`);
14
+ if (!response.ok) return null;
15
+ const data = await response.json();
16
+ if (!data?.balances) return null;
17
+ const denomBalance = data.balances.find((b) => b.denom === networkData.nativeCurrency.denom);
18
+ if (!denomBalance) return "0";
19
+ return (Number(denomBalance.amount) / 10 ** networkData.nativeCurrency.decimals).toString();
20
+ };
21
+
22
+ //#endregion
23
+ //#region src/utils/createCosmosNetworkProvider/createCosmosNetworkProvider.ts
24
+ /** @not-instrumented */
25
+ const createCosmosNetworkProvider = (networkData) => ({
26
+ ...(0, _dynamic_labs_sdk_client_core.createBaseNetworkProvider)("COSMOS", networkData),
27
+ getBalance: async ({ address }) => ({ balance: await fetchCosmosBalance({
28
+ address,
29
+ networkData
30
+ }) })
31
+ });
32
+
33
+ //#endregion
34
+ //#region src/registerCosmosNetworkProviderBuilder/registerCosmosNetworkProviderBuilder.ts
35
+ /** @not-instrumented */
36
+ const registerCosmosNetworkProviderBuilder = (client) => {
37
+ const networkProviderBuilderRegistry = (0, _dynamic_labs_sdk_client_core.getNetworkProviderBuilderRegistry)(client);
38
+ if (networkProviderBuilderRegistry.get().get("COSMOS")) return;
39
+ networkProviderBuilderRegistry.register({
40
+ builder: (networkData) => createCosmosNetworkProvider(networkData),
41
+ chain: "COSMOS"
42
+ });
43
+ };
44
+
45
+ //#endregion
46
+ //#region src/injected/utils/compass/getCompassInjectedProvider/getCompassInjectedProvider.ts
47
+ const COMPASS_PROVIDER_LOCATOR = "compass";
48
+ /** @not-instrumented */
49
+ const getCompassInjectedProvider = () => {
50
+ return (0, _dynamic_labs_sdk_client_core.getInjectedProviderFromWindow)(COMPASS_PROVIDER_LOCATOR);
51
+ };
52
+
53
+ //#endregion
54
+ //#region src/utils/constants.ts
55
+ const DEFAULT_COSMOS_CHAIN_ID = "cosmoshub-4";
56
+
57
+ //#endregion
58
+ //#region src/injected/utils/resolveCosmosChainId/resolveCosmosChainId.ts
59
+ /** @not-instrumented */
60
+ const resolveCosmosChainId = ({ networkId }, client) => {
61
+ try {
62
+ return (0, _dynamic_labs_sdk_client.getNetworksData)(client).find((data) => data.networkId === networkId && data.chain === "COSMOS")?.name ?? networkId;
63
+ } catch {
64
+ return networkId;
65
+ }
66
+ };
67
+
68
+ //#endregion
69
+ //#region src/injected/utils/createWalletProviderFromCosmosProvider/createWalletProviderFromCosmosProvider.ts
70
+ /** @not-instrumented */
71
+ const createWalletProviderFromCosmosProvider = ({ injectedProvider, keystoreEventName, metadata }, client) => {
72
+ const chain = "COSMOS";
73
+ const walletProviderType = _dynamic_labs_sdk_api_core.WalletProviderEnum.BrowserExtension;
74
+ const key = (0, _dynamic_labs_sdk_client_core.formatWalletProviderKey)({
75
+ chain,
76
+ displayName: metadata.displayName,
77
+ walletProviderType
78
+ });
79
+ const getChainId = async () => {
80
+ return resolveCosmosChainId({ networkId: (await (0, _dynamic_labs_sdk_client_core.getActiveNetworkIdFromLastKnownRegistry)({
81
+ client,
82
+ walletProviderKey: key
83
+ }))?.networkId ?? DEFAULT_COSMOS_CHAIN_ID }, client);
84
+ };
85
+ const connect = async () => {
86
+ await injectedProvider.enable(DEFAULT_COSMOS_CHAIN_ID);
87
+ const cosmosKey = await injectedProvider.getKey(DEFAULT_COSMOS_CHAIN_ID);
88
+ const publicKey = Array.from(cosmosKey.pubKey).map((b) => b.toString(16).padStart(2, "0")).join("");
89
+ return { addresses: [{
90
+ address: cosmosKey.bech32Address,
91
+ publicKey
92
+ }] };
93
+ };
94
+ const getConnectedAddresses = async () => {
95
+ try {
96
+ const chainId = await getChainId();
97
+ return { addresses: [(await injectedProvider.getKey(chainId)).bech32Address] };
98
+ } catch {
99
+ return { addresses: [] };
100
+ }
101
+ };
102
+ const getActiveNetworkId = async () => (0, _dynamic_labs_sdk_client_core.getActiveNetworkIdFromLastKnownRegistry)({
103
+ client,
104
+ walletProviderKey: key
105
+ });
106
+ const switchActiveNetwork = async ({ networkId }) => {
107
+ await injectedProvider.enable(networkId);
108
+ await (0, _dynamic_labs_sdk_client_core.switchActiveNetworkInLastKnownRegistry)({
109
+ client,
110
+ networkId,
111
+ walletProviderKey: key
112
+ });
113
+ };
114
+ const signMessage = async ({ message, walletAccount }) => {
115
+ const chainId = await getChainId();
116
+ const cosmosKey = await injectedProvider.getKey(chainId);
117
+ const address = walletAccount?.address ?? cosmosKey.bech32Address;
118
+ const signatureResponse = await injectedProvider.signArbitrary(chainId, address, message);
119
+ const bech32Prefix = cosmosKey.bech32Address.split("1")[0];
120
+ const signatureWithPrefix = {
121
+ ...signatureResponse,
122
+ bech32Prefix
123
+ };
124
+ return { signature: JSON.stringify(signatureWithPrefix) };
125
+ };
126
+ const getOfflineSigner = (chainId) => {
127
+ return injectedProvider.getOfflineSigner(chainId);
128
+ };
129
+ const { getEventEmitter, cleanupEventEmitter } = (0, _dynamic_labs_sdk_client_core.createWalletProviderEventEmitter)({
130
+ removeEventListeners: ({ setupReturnValue }) => {
131
+ setupReturnValue?.();
132
+ },
133
+ setupEventListeners: ({ handleAccountsChanged }) => {
134
+ const handler = () => {
135
+ getChainId().then((chainId) => injectedProvider.getKey(chainId)).then((cosmosKey) => {
136
+ handleAccountsChanged({ addresses: [cosmosKey.bech32Address] });
137
+ }).catch(() => {});
138
+ };
139
+ globalThis.addEventListener(keystoreEventName, handler);
140
+ return () => globalThis.removeEventListener(keystoreEventName, handler);
141
+ },
142
+ supportedEvents: ["accountsChanged"]
143
+ });
144
+ const terminate = async () => {
145
+ cleanupEventEmitter();
146
+ };
147
+ return {
148
+ chain,
149
+ connect,
150
+ get events() {
151
+ return getEventEmitter();
152
+ },
153
+ getActiveNetworkId,
154
+ getConnectedAddresses,
155
+ getOfflineSigner,
156
+ groupKey: (0, _dynamic_labs_sdk_client_core.formatWalletProviderGroupKey)(metadata.displayName),
157
+ key,
158
+ metadata,
159
+ signMessage,
160
+ switchActiveNetwork,
161
+ terminate,
162
+ walletProviderType
163
+ };
164
+ };
165
+
166
+ //#endregion
167
+ //#region src/injected/utils/keplr/getKeplrInjectedProvider/getKeplrInjectedProvider.ts
168
+ const KEPLR_PROVIDER_LOCATOR = "keplr";
169
+ /** @not-instrumented */
170
+ const getKeplrInjectedProvider = () => {
171
+ return (0, _dynamic_labs_sdk_client_core.getInjectedProviderFromWindow)(KEPLR_PROVIDER_LOCATOR);
172
+ };
173
+
174
+ //#endregion
175
+ //#region src/injected/utils/leap/getLeapInjectedProvider/getLeapInjectedProvider.ts
176
+ const LEAP_PROVIDER_LOCATOR = "leap";
177
+ /** @not-instrumented */
178
+ const getLeapInjectedProvider = () => {
179
+ return (0, _dynamic_labs_sdk_client_core.getInjectedProviderFromWindow)(LEAP_PROVIDER_LOCATOR);
180
+ };
181
+
182
+ //#endregion
183
+ //#region src/injected/addCosmosInjectedExtension/addCosmosInjectedExtension.ts
184
+ const COSMOS_INJECTED_EXTENSION_KEY = "cosmosInjected";
185
+ /** @not-instrumented */
186
+ const addCosmosInjectedExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
187
+ if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: COSMOS_INJECTED_EXTENSION_KEY }, client)) return;
188
+ (0, _dynamic_labs_sdk_client_core.registerExtension)({ extensionKey: COSMOS_INJECTED_EXTENSION_KEY }, client);
189
+ registerCosmosNetworkProviderBuilder(client);
190
+ const walletProviderRegistry = (0, _dynamic_labs_sdk_client_core.getWalletProviderRegistry)(client);
191
+ const injectedWalletProviders = [];
192
+ const keplrProvider = getKeplrInjectedProvider();
193
+ if (keplrProvider) injectedWalletProviders.push(createWalletProviderFromCosmosProvider({
194
+ injectedProvider: keplrProvider,
195
+ keystoreEventName: "keplr_keystorechange",
196
+ metadata: {
197
+ displayName: "Keplr",
198
+ icon: `${_dynamic_labs_sdk_client_core.DYNAMIC_ICONIC_SPRITE_URL}#keplr`
199
+ }
200
+ }, client));
201
+ const leapProvider = getLeapInjectedProvider();
202
+ if (leapProvider) injectedWalletProviders.push(createWalletProviderFromCosmosProvider({
203
+ injectedProvider: leapProvider,
204
+ keystoreEventName: "leap_keystorechange",
205
+ metadata: {
206
+ displayName: "Leap",
207
+ icon: `${_dynamic_labs_sdk_client_core.DYNAMIC_ICONIC_SPRITE_URL}#leap`
208
+ }
209
+ }, client));
210
+ const compassProvider = getCompassInjectedProvider();
211
+ if (compassProvider) injectedWalletProviders.push(createWalletProviderFromCosmosProvider({
212
+ injectedProvider: compassProvider,
213
+ keystoreEventName: "leap_keystorechange",
214
+ metadata: {
215
+ displayName: "Compass",
216
+ icon: `${_dynamic_labs_sdk_client_core.DYNAMIC_ICONIC_SPRITE_URL}#compass`
217
+ }
218
+ }, client));
219
+ injectedWalletProviders.forEach((walletProvider) => {
220
+ walletProviderRegistry.register({
221
+ priority: _dynamic_labs_sdk_client_core.WalletProviderPriority.WINDOW_INJECT,
222
+ walletProvider
223
+ });
224
+ });
225
+ };
226
+
227
+ //#endregion
228
+ Object.defineProperty(exports, 'addCosmosInjectedExtension', {
229
+ enumerable: true,
230
+ get: function () {
231
+ return addCosmosInjectedExtension;
232
+ }
233
+ });
234
+ Object.defineProperty(exports, 'name', {
235
+ enumerable: true,
236
+ get: function () {
237
+ return name;
238
+ }
239
+ });
240
+ Object.defineProperty(exports, 'version', {
241
+ enumerable: true,
242
+ get: function () {
243
+ return version;
244
+ }
245
+ });
246
+ //# sourceMappingURL=addCosmosInjectedExtension-CA5nvvNU.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addCosmosInjectedExtension-CA5nvvNU.cjs.js","names":["data: BankBalancesResponse","chain: Chain","WalletProviderEnum","connect: CosmosWalletProvider['connect']","getConnectedAddresses: CosmosWalletProvider['getConnectedAddresses']","getActiveNetworkId: CosmosWalletProvider['getActiveNetworkId']","switchActiveNetwork: CosmosWalletProvider['switchActiveNetwork']","signMessage: CosmosWalletProvider['signMessage']","terminate: CosmosWalletProvider['terminate']","injectedWalletProviders: CosmosWalletProvider[]","DYNAMIC_ICONIC_SPRITE_URL","WalletProviderPriority"],"sources":["../package.json","../src/utils/fetchCosmosBalance/fetchCosmosBalance.ts","../src/utils/createCosmosNetworkProvider/createCosmosNetworkProvider.ts","../src/registerCosmosNetworkProviderBuilder/registerCosmosNetworkProviderBuilder.ts","../src/injected/utils/compass/getCompassInjectedProvider/getCompassInjectedProvider.ts","../src/utils/constants.ts","../src/injected/utils/resolveCosmosChainId/resolveCosmosChainId.ts","../src/injected/utils/createWalletProviderFromCosmosProvider/createWalletProviderFromCosmosProvider.ts","../src/injected/utils/keplr/getKeplrInjectedProvider/getKeplrInjectedProvider.ts","../src/injected/utils/leap/getLeapInjectedProvider/getLeapInjectedProvider.ts","../src/injected/addCosmosInjectedExtension/addCosmosInjectedExtension.ts"],"sourcesContent":["","import type { NetworkData } from '@dynamic-labs-sdk/client';\n\ntype FetchCosmosBalanceParams = {\n address: string;\n networkData: NetworkData;\n};\n\ntype BankBalancesResponse = {\n balances: { amount: string; denom: string }[];\n pagination: { next_key: string | null; total: string };\n};\n\n/** @not-instrumented */\nexport const fetchCosmosBalance = async ({\n address,\n networkData,\n}: FetchCosmosBalanceParams): Promise<string | null> => {\n const response = await fetch(\n `${networkData.rpcUrls.http[0]}/cosmos/bank/v1beta1/balances/${address}`\n );\n\n if (!response.ok) {\n return null;\n }\n\n const data: BankBalancesResponse = await response.json();\n\n if (!data?.balances) {\n return null;\n }\n\n const denomBalance = data.balances.find(\n (b) => b.denom === networkData.nativeCurrency.denom\n );\n\n if (!denomBalance) {\n return '0';\n }\n\n return (\n Number(denomBalance.amount) /\n 10 ** networkData.nativeCurrency.decimals\n ).toString();\n};\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { CosmosNetworkProvider } from '../../CosmosNetworkProvider.types';\nimport { fetchCosmosBalance } from '../fetchCosmosBalance/fetchCosmosBalance';\n\n/** @not-instrumented */\nexport const createCosmosNetworkProvider = (\n networkData: NetworkData\n): CosmosNetworkProvider => ({\n ...createBaseNetworkProvider('COSMOS', networkData),\n\n getBalance: async ({ address }) => ({\n balance: await fetchCosmosBalance({\n address,\n networkData,\n }),\n }),\n});\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createCosmosNetworkProvider } from '../utils/createCosmosNetworkProvider/createCosmosNetworkProvider';\n\n/** @not-instrumented */\nexport const registerCosmosNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n if (networkProviderBuilderRegistry.get().get('COSMOS')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: (networkData) => createCosmosNetworkProvider(networkData),\n chain: 'COSMOS',\n });\n};\n","import { getInjectedProviderFromWindow } from '@dynamic-labs-sdk/client/core';\n\nimport type { CosmosInjectedProvider } from '../../../CosmosWalletInjectedProvider.types';\n\nconst COMPASS_PROVIDER_LOCATOR = 'compass';\n\n/** @not-instrumented */\nexport const getCompassInjectedProvider = () => {\n return getInjectedProviderFromWindow<CosmosInjectedProvider>(\n COMPASS_PROVIDER_LOCATOR\n );\n};\n","export const DEFAULT_COSMOS_CHAIN_ID = 'cosmoshub-4';\nexport const UATOM_DENOM = 'uatom';\nexport const UATOM_DECIMALS = 6;\n","import { type DynamicClient, getNetworksData } from '@dynamic-labs-sdk/client';\n\ntype ResolveCosmosChainIdParams = {\n networkId: string;\n};\n\n// The registry stores the Dynamic numeric network ID (e.g. '401'), but cosmos\n// wallets identify chains by their chain string (e.g. 'cosmoshub-4') stored\n// in networkConfiguration.name. Resolve the numeric ID to the chain string.\n/** @not-instrumented */\nexport const resolveCosmosChainId = (\n { networkId }: ResolveCosmosChainIdParams,\n client: DynamicClient\n): string => {\n try {\n const networksData = getNetworksData(client);\n const networkData = networksData.find(\n (data) => data.networkId === networkId && data.chain === 'COSMOS'\n );\n return networkData?.name ?? networkId;\n } catch {\n return networkId;\n }\n};\n","import type {\n Chain,\n DynamicClient,\n WalletProviderMetadata,\n} from '@dynamic-labs-sdk/client';\nimport {\n createWalletProviderEventEmitter,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\nimport type {\n CosmosOfflineSigner,\n CosmosWalletProvider,\n} from '../../../CosmosWalletProvider.types';\nimport type { CosmosInjectedProvider } from '../../../injected/CosmosWalletInjectedProvider.types';\nimport { DEFAULT_COSMOS_CHAIN_ID } from '../../../utils/constants';\nimport { resolveCosmosChainId } from '../resolveCosmosChainId';\n\ntype CreateWalletProviderFromCosmosProviderParams = {\n injectedProvider: CosmosInjectedProvider;\n keystoreEventName: string;\n metadata: WalletProviderMetadata;\n};\n\n/** @not-instrumented */\nexport const createWalletProviderFromCosmosProvider = (\n {\n injectedProvider,\n keystoreEventName,\n metadata,\n }: CreateWalletProviderFromCosmosProviderParams,\n client: DynamicClient\n): CosmosWalletProvider => {\n const chain: Chain = 'COSMOS';\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n const key = formatWalletProviderKey({\n chain,\n displayName: metadata.displayName,\n walletProviderType,\n });\n\n const getChainId = async (): Promise<string> => {\n const result = await getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n return resolveCosmosChainId(\n { networkId: result?.networkId ?? DEFAULT_COSMOS_CHAIN_ID },\n client\n );\n };\n\n const connect: CosmosWalletProvider['connect'] = async () => {\n await injectedProvider.enable(DEFAULT_COSMOS_CHAIN_ID);\n const cosmosKey = await injectedProvider.getKey(DEFAULT_COSMOS_CHAIN_ID);\n const publicKey = Array.from(cosmosKey.pubKey)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n\n return {\n addresses: [{ address: cosmosKey.bech32Address, publicKey }],\n };\n };\n\n const getConnectedAddresses: CosmosWalletProvider['getConnectedAddresses'] =\n async () => {\n try {\n const chainId = await getChainId();\n const cosmosKey = await injectedProvider.getKey(chainId);\n return { addresses: [cosmosKey.bech32Address] };\n } catch {\n return { addresses: [] };\n }\n };\n\n const getActiveNetworkId: CosmosWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: CosmosWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n await injectedProvider.enable(networkId);\n await switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey: key,\n });\n };\n\n const signMessage: CosmosWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const chainId = await getChainId();\n const cosmosKey = await injectedProvider.getKey(chainId);\n const address = walletAccount?.address ?? cosmosKey.bech32Address;\n const signatureResponse = await injectedProvider.signArbitrary(\n chainId,\n address,\n message\n );\n const bech32Prefix = cosmosKey.bech32Address.split('1')[0];\n const signatureWithPrefix = {\n ...signatureResponse,\n bech32Prefix,\n };\n return { signature: JSON.stringify(signatureWithPrefix) };\n };\n\n const getOfflineSigner = (chainId: string): CosmosOfflineSigner => {\n return injectedProvider.getOfflineSigner(chainId);\n };\n\n const { getEventEmitter, cleanupEventEmitter } =\n createWalletProviderEventEmitter<VoidFunction>({\n removeEventListeners: ({ setupReturnValue }) => {\n setupReturnValue?.();\n },\n setupEventListeners: ({ handleAccountsChanged }) => {\n const handler = () => {\n getChainId()\n .then((chainId) => injectedProvider.getKey(chainId))\n .then((cosmosKey) => {\n handleAccountsChanged({ addresses: [cosmosKey.bech32Address] });\n })\n .catch(() => {});\n };\n globalThis.addEventListener(keystoreEventName, handler);\n return () => globalThis.removeEventListener(keystoreEventName, handler);\n },\n supportedEvents: ['accountsChanged'],\n });\n\n const terminate: CosmosWalletProvider['terminate'] = async () => {\n cleanupEventEmitter();\n };\n\n return {\n chain,\n connect,\n get events() {\n return getEventEmitter();\n },\n getActiveNetworkId,\n getConnectedAddresses,\n getOfflineSigner,\n groupKey: formatWalletProviderGroupKey(metadata.displayName),\n key,\n metadata,\n signMessage,\n switchActiveNetwork,\n terminate,\n walletProviderType,\n };\n};\n","import { getInjectedProviderFromWindow } from '@dynamic-labs-sdk/client/core';\n\nimport type { CosmosInjectedProvider } from '../../../CosmosWalletInjectedProvider.types';\n\nconst KEPLR_PROVIDER_LOCATOR = 'keplr';\n\n/** @not-instrumented */\nexport const getKeplrInjectedProvider = () => {\n return getInjectedProviderFromWindow<CosmosInjectedProvider>(\n KEPLR_PROVIDER_LOCATOR\n );\n};\n","import { getInjectedProviderFromWindow } from '@dynamic-labs-sdk/client/core';\n\nimport type { CosmosInjectedProvider } from '../../../CosmosWalletInjectedProvider.types';\n\nconst LEAP_PROVIDER_LOCATOR = 'leap';\n\n/** @not-instrumented */\nexport const getLeapInjectedProvider = () => {\n return getInjectedProviderFromWindow<CosmosInjectedProvider>(\n LEAP_PROVIDER_LOCATOR\n );\n};\n","import {\n DYNAMIC_ICONIC_SPRITE_URL,\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport type { CosmosWalletProvider } from '../../CosmosWalletProvider.types';\nimport { registerCosmosNetworkProviderBuilder } from '../../registerCosmosNetworkProviderBuilder/registerCosmosNetworkProviderBuilder';\nimport { getCompassInjectedProvider } from '../utils/compass/getCompassInjectedProvider/getCompassInjectedProvider';\nimport { createWalletProviderFromCosmosProvider } from '../utils/createWalletProviderFromCosmosProvider/createWalletProviderFromCosmosProvider';\nimport { getKeplrInjectedProvider } from '../utils/keplr/getKeplrInjectedProvider/getKeplrInjectedProvider';\nimport { getLeapInjectedProvider } from '../utils/leap/getLeapInjectedProvider/getLeapInjectedProvider';\n\nexport const COSMOS_INJECTED_EXTENSION_KEY = 'cosmosInjected';\n\n/** @not-instrumented */\nexport const addCosmosInjectedExtension = (\n client = getDefaultClient()\n): void => {\n if (hasExtension({ extensionKey: COSMOS_INJECTED_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: COSMOS_INJECTED_EXTENSION_KEY }, client);\n registerCosmosNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n const injectedWalletProviders: CosmosWalletProvider[] = [];\n\n const keplrProvider = getKeplrInjectedProvider();\n if (keplrProvider) {\n injectedWalletProviders.push(\n createWalletProviderFromCosmosProvider(\n {\n injectedProvider: keplrProvider,\n keystoreEventName: 'keplr_keystorechange',\n metadata: {\n displayName: 'Keplr',\n icon: `${DYNAMIC_ICONIC_SPRITE_URL}#keplr`,\n },\n },\n client\n )\n );\n }\n\n const leapProvider = getLeapInjectedProvider();\n if (leapProvider) {\n injectedWalletProviders.push(\n createWalletProviderFromCosmosProvider(\n {\n injectedProvider: leapProvider,\n keystoreEventName: 'leap_keystorechange',\n metadata: {\n displayName: 'Leap',\n icon: `${DYNAMIC_ICONIC_SPRITE_URL}#leap`,\n },\n },\n client\n )\n );\n }\n\n const compassProvider = getCompassInjectedProvider();\n if (compassProvider) {\n injectedWalletProviders.push(\n createWalletProviderFromCosmosProvider(\n {\n injectedProvider: compassProvider,\n keystoreEventName: 'leap_keystorechange',\n metadata: {\n displayName: 'Compass',\n icon: `${DYNAMIC_ICONIC_SPRITE_URL}#compass`,\n },\n },\n client\n )\n );\n }\n\n injectedWalletProviders.forEach((walletProvider) => {\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n};\n"],"mappings":"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"}
@@ -0,0 +1,229 @@
1
+ import { DYNAMIC_ICONIC_SPRITE_URL, WalletProviderPriority, createBaseNetworkProvider, createWalletProviderEventEmitter, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getDefaultClient, getInjectedProviderFromWindow, getNetworkProviderBuilderRegistry, getWalletProviderRegistry, hasExtension, registerExtension, switchActiveNetworkInLastKnownRegistry } from "@dynamic-labs-sdk/client/core";
2
+ import { WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
3
+ import { getNetworksData } from "@dynamic-labs-sdk/client";
4
+
5
+ //#region package.json
6
+ var name = "@dynamic-labs-sdk/cosmos";
7
+ var version = "0.22.0";
8
+
9
+ //#endregion
10
+ //#region src/utils/fetchCosmosBalance/fetchCosmosBalance.ts
11
+ /** @not-instrumented */
12
+ const fetchCosmosBalance = async ({ address, networkData }) => {
13
+ const response = await fetch(`${networkData.rpcUrls.http[0]}/cosmos/bank/v1beta1/balances/${address}`);
14
+ if (!response.ok) return null;
15
+ const data = await response.json();
16
+ if (!data?.balances) return null;
17
+ const denomBalance = data.balances.find((b) => b.denom === networkData.nativeCurrency.denom);
18
+ if (!denomBalance) return "0";
19
+ return (Number(denomBalance.amount) / 10 ** networkData.nativeCurrency.decimals).toString();
20
+ };
21
+
22
+ //#endregion
23
+ //#region src/utils/createCosmosNetworkProvider/createCosmosNetworkProvider.ts
24
+ /** @not-instrumented */
25
+ const createCosmosNetworkProvider = (networkData) => ({
26
+ ...createBaseNetworkProvider("COSMOS", networkData),
27
+ getBalance: async ({ address }) => ({ balance: await fetchCosmosBalance({
28
+ address,
29
+ networkData
30
+ }) })
31
+ });
32
+
33
+ //#endregion
34
+ //#region src/registerCosmosNetworkProviderBuilder/registerCosmosNetworkProviderBuilder.ts
35
+ /** @not-instrumented */
36
+ const registerCosmosNetworkProviderBuilder = (client) => {
37
+ const networkProviderBuilderRegistry = getNetworkProviderBuilderRegistry(client);
38
+ if (networkProviderBuilderRegistry.get().get("COSMOS")) return;
39
+ networkProviderBuilderRegistry.register({
40
+ builder: (networkData) => createCosmosNetworkProvider(networkData),
41
+ chain: "COSMOS"
42
+ });
43
+ };
44
+
45
+ //#endregion
46
+ //#region src/injected/utils/compass/getCompassInjectedProvider/getCompassInjectedProvider.ts
47
+ const COMPASS_PROVIDER_LOCATOR = "compass";
48
+ /** @not-instrumented */
49
+ const getCompassInjectedProvider = () => {
50
+ return getInjectedProviderFromWindow(COMPASS_PROVIDER_LOCATOR);
51
+ };
52
+
53
+ //#endregion
54
+ //#region src/utils/constants.ts
55
+ const DEFAULT_COSMOS_CHAIN_ID = "cosmoshub-4";
56
+
57
+ //#endregion
58
+ //#region src/injected/utils/resolveCosmosChainId/resolveCosmosChainId.ts
59
+ /** @not-instrumented */
60
+ const resolveCosmosChainId = ({ networkId }, client) => {
61
+ try {
62
+ return getNetworksData(client).find((data) => data.networkId === networkId && data.chain === "COSMOS")?.name ?? networkId;
63
+ } catch {
64
+ return networkId;
65
+ }
66
+ };
67
+
68
+ //#endregion
69
+ //#region src/injected/utils/createWalletProviderFromCosmosProvider/createWalletProviderFromCosmosProvider.ts
70
+ /** @not-instrumented */
71
+ const createWalletProviderFromCosmosProvider = ({ injectedProvider, keystoreEventName, metadata }, client) => {
72
+ const chain = "COSMOS";
73
+ const walletProviderType = WalletProviderEnum.BrowserExtension;
74
+ const key = formatWalletProviderKey({
75
+ chain,
76
+ displayName: metadata.displayName,
77
+ walletProviderType
78
+ });
79
+ const getChainId = async () => {
80
+ return resolveCosmosChainId({ networkId: (await getActiveNetworkIdFromLastKnownRegistry({
81
+ client,
82
+ walletProviderKey: key
83
+ }))?.networkId ?? DEFAULT_COSMOS_CHAIN_ID }, client);
84
+ };
85
+ const connect = async () => {
86
+ await injectedProvider.enable(DEFAULT_COSMOS_CHAIN_ID);
87
+ const cosmosKey = await injectedProvider.getKey(DEFAULT_COSMOS_CHAIN_ID);
88
+ const publicKey = Array.from(cosmosKey.pubKey).map((b) => b.toString(16).padStart(2, "0")).join("");
89
+ return { addresses: [{
90
+ address: cosmosKey.bech32Address,
91
+ publicKey
92
+ }] };
93
+ };
94
+ const getConnectedAddresses = async () => {
95
+ try {
96
+ const chainId = await getChainId();
97
+ return { addresses: [(await injectedProvider.getKey(chainId)).bech32Address] };
98
+ } catch {
99
+ return { addresses: [] };
100
+ }
101
+ };
102
+ const getActiveNetworkId = async () => getActiveNetworkIdFromLastKnownRegistry({
103
+ client,
104
+ walletProviderKey: key
105
+ });
106
+ const switchActiveNetwork = async ({ networkId }) => {
107
+ await injectedProvider.enable(networkId);
108
+ await switchActiveNetworkInLastKnownRegistry({
109
+ client,
110
+ networkId,
111
+ walletProviderKey: key
112
+ });
113
+ };
114
+ const signMessage = async ({ message, walletAccount }) => {
115
+ const chainId = await getChainId();
116
+ const cosmosKey = await injectedProvider.getKey(chainId);
117
+ const address = walletAccount?.address ?? cosmosKey.bech32Address;
118
+ const signatureResponse = await injectedProvider.signArbitrary(chainId, address, message);
119
+ const bech32Prefix = cosmosKey.bech32Address.split("1")[0];
120
+ const signatureWithPrefix = {
121
+ ...signatureResponse,
122
+ bech32Prefix
123
+ };
124
+ return { signature: JSON.stringify(signatureWithPrefix) };
125
+ };
126
+ const getOfflineSigner = (chainId) => {
127
+ return injectedProvider.getOfflineSigner(chainId);
128
+ };
129
+ const { getEventEmitter, cleanupEventEmitter } = createWalletProviderEventEmitter({
130
+ removeEventListeners: ({ setupReturnValue }) => {
131
+ setupReturnValue?.();
132
+ },
133
+ setupEventListeners: ({ handleAccountsChanged }) => {
134
+ const handler = () => {
135
+ getChainId().then((chainId) => injectedProvider.getKey(chainId)).then((cosmosKey) => {
136
+ handleAccountsChanged({ addresses: [cosmosKey.bech32Address] });
137
+ }).catch(() => {});
138
+ };
139
+ globalThis.addEventListener(keystoreEventName, handler);
140
+ return () => globalThis.removeEventListener(keystoreEventName, handler);
141
+ },
142
+ supportedEvents: ["accountsChanged"]
143
+ });
144
+ const terminate = async () => {
145
+ cleanupEventEmitter();
146
+ };
147
+ return {
148
+ chain,
149
+ connect,
150
+ get events() {
151
+ return getEventEmitter();
152
+ },
153
+ getActiveNetworkId,
154
+ getConnectedAddresses,
155
+ getOfflineSigner,
156
+ groupKey: formatWalletProviderGroupKey(metadata.displayName),
157
+ key,
158
+ metadata,
159
+ signMessage,
160
+ switchActiveNetwork,
161
+ terminate,
162
+ walletProviderType
163
+ };
164
+ };
165
+
166
+ //#endregion
167
+ //#region src/injected/utils/keplr/getKeplrInjectedProvider/getKeplrInjectedProvider.ts
168
+ const KEPLR_PROVIDER_LOCATOR = "keplr";
169
+ /** @not-instrumented */
170
+ const getKeplrInjectedProvider = () => {
171
+ return getInjectedProviderFromWindow(KEPLR_PROVIDER_LOCATOR);
172
+ };
173
+
174
+ //#endregion
175
+ //#region src/injected/utils/leap/getLeapInjectedProvider/getLeapInjectedProvider.ts
176
+ const LEAP_PROVIDER_LOCATOR = "leap";
177
+ /** @not-instrumented */
178
+ const getLeapInjectedProvider = () => {
179
+ return getInjectedProviderFromWindow(LEAP_PROVIDER_LOCATOR);
180
+ };
181
+
182
+ //#endregion
183
+ //#region src/injected/addCosmosInjectedExtension/addCosmosInjectedExtension.ts
184
+ const COSMOS_INJECTED_EXTENSION_KEY = "cosmosInjected";
185
+ /** @not-instrumented */
186
+ const addCosmosInjectedExtension = (client = getDefaultClient()) => {
187
+ if (hasExtension({ extensionKey: COSMOS_INJECTED_EXTENSION_KEY }, client)) return;
188
+ registerExtension({ extensionKey: COSMOS_INJECTED_EXTENSION_KEY }, client);
189
+ registerCosmosNetworkProviderBuilder(client);
190
+ const walletProviderRegistry = getWalletProviderRegistry(client);
191
+ const injectedWalletProviders = [];
192
+ const keplrProvider = getKeplrInjectedProvider();
193
+ if (keplrProvider) injectedWalletProviders.push(createWalletProviderFromCosmosProvider({
194
+ injectedProvider: keplrProvider,
195
+ keystoreEventName: "keplr_keystorechange",
196
+ metadata: {
197
+ displayName: "Keplr",
198
+ icon: `${DYNAMIC_ICONIC_SPRITE_URL}#keplr`
199
+ }
200
+ }, client));
201
+ const leapProvider = getLeapInjectedProvider();
202
+ if (leapProvider) injectedWalletProviders.push(createWalletProviderFromCosmosProvider({
203
+ injectedProvider: leapProvider,
204
+ keystoreEventName: "leap_keystorechange",
205
+ metadata: {
206
+ displayName: "Leap",
207
+ icon: `${DYNAMIC_ICONIC_SPRITE_URL}#leap`
208
+ }
209
+ }, client));
210
+ const compassProvider = getCompassInjectedProvider();
211
+ if (compassProvider) injectedWalletProviders.push(createWalletProviderFromCosmosProvider({
212
+ injectedProvider: compassProvider,
213
+ keystoreEventName: "leap_keystorechange",
214
+ metadata: {
215
+ displayName: "Compass",
216
+ icon: `${DYNAMIC_ICONIC_SPRITE_URL}#compass`
217
+ }
218
+ }, client));
219
+ injectedWalletProviders.forEach((walletProvider) => {
220
+ walletProviderRegistry.register({
221
+ priority: WalletProviderPriority.WINDOW_INJECT,
222
+ walletProvider
223
+ });
224
+ });
225
+ };
226
+
227
+ //#endregion
228
+ export { name as n, version as r, addCosmosInjectedExtension as t };
229
+ //# sourceMappingURL=addCosmosInjectedExtension-iWAqM9Kr.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addCosmosInjectedExtension-iWAqM9Kr.esm.js","names":["data: BankBalancesResponse","chain: Chain","connect: CosmosWalletProvider['connect']","getConnectedAddresses: CosmosWalletProvider['getConnectedAddresses']","getActiveNetworkId: CosmosWalletProvider['getActiveNetworkId']","switchActiveNetwork: CosmosWalletProvider['switchActiveNetwork']","signMessage: CosmosWalletProvider['signMessage']","terminate: CosmosWalletProvider['terminate']","injectedWalletProviders: CosmosWalletProvider[]"],"sources":["../package.json","../src/utils/fetchCosmosBalance/fetchCosmosBalance.ts","../src/utils/createCosmosNetworkProvider/createCosmosNetworkProvider.ts","../src/registerCosmosNetworkProviderBuilder/registerCosmosNetworkProviderBuilder.ts","../src/injected/utils/compass/getCompassInjectedProvider/getCompassInjectedProvider.ts","../src/utils/constants.ts","../src/injected/utils/resolveCosmosChainId/resolveCosmosChainId.ts","../src/injected/utils/createWalletProviderFromCosmosProvider/createWalletProviderFromCosmosProvider.ts","../src/injected/utils/keplr/getKeplrInjectedProvider/getKeplrInjectedProvider.ts","../src/injected/utils/leap/getLeapInjectedProvider/getLeapInjectedProvider.ts","../src/injected/addCosmosInjectedExtension/addCosmosInjectedExtension.ts"],"sourcesContent":["","import type { NetworkData } from '@dynamic-labs-sdk/client';\n\ntype FetchCosmosBalanceParams = {\n address: string;\n networkData: NetworkData;\n};\n\ntype BankBalancesResponse = {\n balances: { amount: string; denom: string }[];\n pagination: { next_key: string | null; total: string };\n};\n\n/** @not-instrumented */\nexport const fetchCosmosBalance = async ({\n address,\n networkData,\n}: FetchCosmosBalanceParams): Promise<string | null> => {\n const response = await fetch(\n `${networkData.rpcUrls.http[0]}/cosmos/bank/v1beta1/balances/${address}`\n );\n\n if (!response.ok) {\n return null;\n }\n\n const data: BankBalancesResponse = await response.json();\n\n if (!data?.balances) {\n return null;\n }\n\n const denomBalance = data.balances.find(\n (b) => b.denom === networkData.nativeCurrency.denom\n );\n\n if (!denomBalance) {\n return '0';\n }\n\n return (\n Number(denomBalance.amount) /\n 10 ** networkData.nativeCurrency.decimals\n ).toString();\n};\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { CosmosNetworkProvider } from '../../CosmosNetworkProvider.types';\nimport { fetchCosmosBalance } from '../fetchCosmosBalance/fetchCosmosBalance';\n\n/** @not-instrumented */\nexport const createCosmosNetworkProvider = (\n networkData: NetworkData\n): CosmosNetworkProvider => ({\n ...createBaseNetworkProvider('COSMOS', networkData),\n\n getBalance: async ({ address }) => ({\n balance: await fetchCosmosBalance({\n address,\n networkData,\n }),\n }),\n});\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createCosmosNetworkProvider } from '../utils/createCosmosNetworkProvider/createCosmosNetworkProvider';\n\n/** @not-instrumented */\nexport const registerCosmosNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n if (networkProviderBuilderRegistry.get().get('COSMOS')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: (networkData) => createCosmosNetworkProvider(networkData),\n chain: 'COSMOS',\n });\n};\n","import { getInjectedProviderFromWindow } from '@dynamic-labs-sdk/client/core';\n\nimport type { CosmosInjectedProvider } from '../../../CosmosWalletInjectedProvider.types';\n\nconst COMPASS_PROVIDER_LOCATOR = 'compass';\n\n/** @not-instrumented */\nexport const getCompassInjectedProvider = () => {\n return getInjectedProviderFromWindow<CosmosInjectedProvider>(\n COMPASS_PROVIDER_LOCATOR\n );\n};\n","export const DEFAULT_COSMOS_CHAIN_ID = 'cosmoshub-4';\nexport const UATOM_DENOM = 'uatom';\nexport const UATOM_DECIMALS = 6;\n","import { type DynamicClient, getNetworksData } from '@dynamic-labs-sdk/client';\n\ntype ResolveCosmosChainIdParams = {\n networkId: string;\n};\n\n// The registry stores the Dynamic numeric network ID (e.g. '401'), but cosmos\n// wallets identify chains by their chain string (e.g. 'cosmoshub-4') stored\n// in networkConfiguration.name. Resolve the numeric ID to the chain string.\n/** @not-instrumented */\nexport const resolveCosmosChainId = (\n { networkId }: ResolveCosmosChainIdParams,\n client: DynamicClient\n): string => {\n try {\n const networksData = getNetworksData(client);\n const networkData = networksData.find(\n (data) => data.networkId === networkId && data.chain === 'COSMOS'\n );\n return networkData?.name ?? networkId;\n } catch {\n return networkId;\n }\n};\n","import type {\n Chain,\n DynamicClient,\n WalletProviderMetadata,\n} from '@dynamic-labs-sdk/client';\nimport {\n createWalletProviderEventEmitter,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\nimport type {\n CosmosOfflineSigner,\n CosmosWalletProvider,\n} from '../../../CosmosWalletProvider.types';\nimport type { CosmosInjectedProvider } from '../../../injected/CosmosWalletInjectedProvider.types';\nimport { DEFAULT_COSMOS_CHAIN_ID } from '../../../utils/constants';\nimport { resolveCosmosChainId } from '../resolveCosmosChainId';\n\ntype CreateWalletProviderFromCosmosProviderParams = {\n injectedProvider: CosmosInjectedProvider;\n keystoreEventName: string;\n metadata: WalletProviderMetadata;\n};\n\n/** @not-instrumented */\nexport const createWalletProviderFromCosmosProvider = (\n {\n injectedProvider,\n keystoreEventName,\n metadata,\n }: CreateWalletProviderFromCosmosProviderParams,\n client: DynamicClient\n): CosmosWalletProvider => {\n const chain: Chain = 'COSMOS';\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n const key = formatWalletProviderKey({\n chain,\n displayName: metadata.displayName,\n walletProviderType,\n });\n\n const getChainId = async (): Promise<string> => {\n const result = await getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n return resolveCosmosChainId(\n { networkId: result?.networkId ?? DEFAULT_COSMOS_CHAIN_ID },\n client\n );\n };\n\n const connect: CosmosWalletProvider['connect'] = async () => {\n await injectedProvider.enable(DEFAULT_COSMOS_CHAIN_ID);\n const cosmosKey = await injectedProvider.getKey(DEFAULT_COSMOS_CHAIN_ID);\n const publicKey = Array.from(cosmosKey.pubKey)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n\n return {\n addresses: [{ address: cosmosKey.bech32Address, publicKey }],\n };\n };\n\n const getConnectedAddresses: CosmosWalletProvider['getConnectedAddresses'] =\n async () => {\n try {\n const chainId = await getChainId();\n const cosmosKey = await injectedProvider.getKey(chainId);\n return { addresses: [cosmosKey.bech32Address] };\n } catch {\n return { addresses: [] };\n }\n };\n\n const getActiveNetworkId: CosmosWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: CosmosWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n await injectedProvider.enable(networkId);\n await switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey: key,\n });\n };\n\n const signMessage: CosmosWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const chainId = await getChainId();\n const cosmosKey = await injectedProvider.getKey(chainId);\n const address = walletAccount?.address ?? cosmosKey.bech32Address;\n const signatureResponse = await injectedProvider.signArbitrary(\n chainId,\n address,\n message\n );\n const bech32Prefix = cosmosKey.bech32Address.split('1')[0];\n const signatureWithPrefix = {\n ...signatureResponse,\n bech32Prefix,\n };\n return { signature: JSON.stringify(signatureWithPrefix) };\n };\n\n const getOfflineSigner = (chainId: string): CosmosOfflineSigner => {\n return injectedProvider.getOfflineSigner(chainId);\n };\n\n const { getEventEmitter, cleanupEventEmitter } =\n createWalletProviderEventEmitter<VoidFunction>({\n removeEventListeners: ({ setupReturnValue }) => {\n setupReturnValue?.();\n },\n setupEventListeners: ({ handleAccountsChanged }) => {\n const handler = () => {\n getChainId()\n .then((chainId) => injectedProvider.getKey(chainId))\n .then((cosmosKey) => {\n handleAccountsChanged({ addresses: [cosmosKey.bech32Address] });\n })\n .catch(() => {});\n };\n globalThis.addEventListener(keystoreEventName, handler);\n return () => globalThis.removeEventListener(keystoreEventName, handler);\n },\n supportedEvents: ['accountsChanged'],\n });\n\n const terminate: CosmosWalletProvider['terminate'] = async () => {\n cleanupEventEmitter();\n };\n\n return {\n chain,\n connect,\n get events() {\n return getEventEmitter();\n },\n getActiveNetworkId,\n getConnectedAddresses,\n getOfflineSigner,\n groupKey: formatWalletProviderGroupKey(metadata.displayName),\n key,\n metadata,\n signMessage,\n switchActiveNetwork,\n terminate,\n walletProviderType,\n };\n};\n","import { getInjectedProviderFromWindow } from '@dynamic-labs-sdk/client/core';\n\nimport type { CosmosInjectedProvider } from '../../../CosmosWalletInjectedProvider.types';\n\nconst KEPLR_PROVIDER_LOCATOR = 'keplr';\n\n/** @not-instrumented */\nexport const getKeplrInjectedProvider = () => {\n return getInjectedProviderFromWindow<CosmosInjectedProvider>(\n KEPLR_PROVIDER_LOCATOR\n );\n};\n","import { getInjectedProviderFromWindow } from '@dynamic-labs-sdk/client/core';\n\nimport type { CosmosInjectedProvider } from '../../../CosmosWalletInjectedProvider.types';\n\nconst LEAP_PROVIDER_LOCATOR = 'leap';\n\n/** @not-instrumented */\nexport const getLeapInjectedProvider = () => {\n return getInjectedProviderFromWindow<CosmosInjectedProvider>(\n LEAP_PROVIDER_LOCATOR\n );\n};\n","import {\n DYNAMIC_ICONIC_SPRITE_URL,\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport type { CosmosWalletProvider } from '../../CosmosWalletProvider.types';\nimport { registerCosmosNetworkProviderBuilder } from '../../registerCosmosNetworkProviderBuilder/registerCosmosNetworkProviderBuilder';\nimport { getCompassInjectedProvider } from '../utils/compass/getCompassInjectedProvider/getCompassInjectedProvider';\nimport { createWalletProviderFromCosmosProvider } from '../utils/createWalletProviderFromCosmosProvider/createWalletProviderFromCosmosProvider';\nimport { getKeplrInjectedProvider } from '../utils/keplr/getKeplrInjectedProvider/getKeplrInjectedProvider';\nimport { getLeapInjectedProvider } from '../utils/leap/getLeapInjectedProvider/getLeapInjectedProvider';\n\nexport const COSMOS_INJECTED_EXTENSION_KEY = 'cosmosInjected';\n\n/** @not-instrumented */\nexport const addCosmosInjectedExtension = (\n client = getDefaultClient()\n): void => {\n if (hasExtension({ extensionKey: COSMOS_INJECTED_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: COSMOS_INJECTED_EXTENSION_KEY }, client);\n registerCosmosNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n const injectedWalletProviders: CosmosWalletProvider[] = [];\n\n const keplrProvider = getKeplrInjectedProvider();\n if (keplrProvider) {\n injectedWalletProviders.push(\n createWalletProviderFromCosmosProvider(\n {\n injectedProvider: keplrProvider,\n keystoreEventName: 'keplr_keystorechange',\n metadata: {\n displayName: 'Keplr',\n icon: `${DYNAMIC_ICONIC_SPRITE_URL}#keplr`,\n },\n },\n client\n )\n );\n }\n\n const leapProvider = getLeapInjectedProvider();\n if (leapProvider) {\n injectedWalletProviders.push(\n createWalletProviderFromCosmosProvider(\n {\n injectedProvider: leapProvider,\n keystoreEventName: 'leap_keystorechange',\n metadata: {\n displayName: 'Leap',\n icon: `${DYNAMIC_ICONIC_SPRITE_URL}#leap`,\n },\n },\n client\n )\n );\n }\n\n const compassProvider = getCompassInjectedProvider();\n if (compassProvider) {\n injectedWalletProviders.push(\n createWalletProviderFromCosmosProvider(\n {\n injectedProvider: compassProvider,\n keystoreEventName: 'leap_keystorechange',\n metadata: {\n displayName: 'Compass',\n icon: `${DYNAMIC_ICONIC_SPRITE_URL}#compass`,\n },\n },\n client\n )\n );\n }\n\n injectedWalletProviders.forEach((walletProvider) => {\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n};\n"],"mappings":"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"}
@@ -1,5 +1,7 @@
1
+ export { addCosmosExtension } from '../addCosmosExtension';
1
2
  export type { CosmosNetworkProvider } from '../CosmosNetworkProvider.types';
2
3
  export type { CosmosWalletAccount } from '../CosmosWalletAccount.types';
3
4
  export type { CosmosOfflineSigner } from '../CosmosWalletProvider.types';
4
5
  export { NotCosmosProviderError } from '../errors/NotCosmosProviderError';
6
+ export { isCosmosWalletAccount } from '../isCosmosWalletAccount';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exports/index.ts"],"names":[],"mappings":"AAQA,YAAY,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exports/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { addCosmosInjectedExtension } from '../injected/addCosmosInjectedExtension';
2
+ //# sourceMappingURL=injected.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injected.d.ts","sourceRoot":"","sources":["../../src/exports/injected.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC"}
package/dist/index.cjs.js CHANGED
@@ -1,9 +1,20 @@
1
+ const require_addCosmosInjectedExtension = require('./addCosmosInjectedExtension-CA5nvvNU.cjs.js');
1
2
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
3
+ let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
2
4
  let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
3
5
 
4
- //#region package.json
5
- var name = "@dynamic-labs-sdk/cosmos";
6
- var version = "0.20.0";
6
+ //#region src/addCosmosExtension/addCosmosExtension.ts
7
+ /**
8
+ * Adds the Cosmos extension to the Dynamic client.
9
+ *
10
+ * This is a convenience function that adds support for cosmos injected wallets like Compass, Keplr, and more.
11
+ *
12
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
13
+ * @not-instrumented
14
+ */
15
+ const addCosmosExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
16
+ require_addCosmosInjectedExtension.addCosmosInjectedExtension(client);
17
+ };
7
18
 
8
19
  //#endregion
9
20
  //#region src/errors/NotCosmosProviderError/NotCosmosProviderError.ts
@@ -21,10 +32,17 @@ var NotCosmosProviderError = class extends _dynamic_labs_sdk_client.BaseError {
21
32
  }
22
33
  };
23
34
 
35
+ //#endregion
36
+ //#region src/isCosmosWalletAccount/isCosmosWalletAccount.ts
37
+ /** @not-instrumented */
38
+ const isCosmosWalletAccount = (walletAccount) => walletAccount.chain === "COSMOS";
39
+
24
40
  //#endregion
25
41
  //#region src/exports/index.ts
26
- (0, _dynamic_labs_sdk_assert_package_version.assertPackageVersion)(name, version);
42
+ (0, _dynamic_labs_sdk_assert_package_version.assertPackageVersion)(require_addCosmosInjectedExtension.name, require_addCosmosInjectedExtension.version);
27
43
 
28
44
  //#endregion
29
45
  exports.NotCosmosProviderError = NotCosmosProviderError;
46
+ exports.addCosmosExtension = addCosmosExtension;
47
+ exports.isCosmosWalletAccount = isCosmosWalletAccount;
30
48
  //# sourceMappingURL=index.cjs.js.map