@dynamic-labs-sdk/cosmos 0.20.0 → 0.21.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 (30) hide show
  1. package/dist/exports/injected.d.ts +2 -0
  2. package/dist/exports/injected.d.ts.map +1 -0
  3. package/dist/index.cjs.js +2 -6
  4. package/dist/index.cjs.js.map +1 -1
  5. package/dist/index.esm.js +1 -5
  6. package/dist/index.esm.js.map +1 -1
  7. package/dist/injected/addCosmosInjectedExtension/addCosmosInjectedExtension.d.ts +4 -0
  8. package/dist/injected/addCosmosInjectedExtension/addCosmosInjectedExtension.d.ts.map +1 -0
  9. package/dist/injected/addCosmosInjectedExtension/index.d.ts +2 -0
  10. package/dist/injected/addCosmosInjectedExtension/index.d.ts.map +1 -0
  11. package/dist/injected/utils/compass/getCompassInjectedProvider/index.d.ts +2 -0
  12. package/dist/injected/utils/compass/getCompassInjectedProvider/index.d.ts.map +1 -0
  13. package/dist/injected/utils/keplr/getKeplrInjectedProvider/index.d.ts +2 -0
  14. package/dist/injected/utils/keplr/getKeplrInjectedProvider/index.d.ts.map +1 -0
  15. package/dist/injected/utils/leap/getLeapInjectedProvider/index.d.ts +2 -0
  16. package/dist/injected/utils/leap/getLeapInjectedProvider/index.d.ts.map +1 -0
  17. package/dist/injected.cjs.js +230 -0
  18. package/dist/injected.cjs.js.map +1 -0
  19. package/dist/injected.esm.js +230 -0
  20. package/dist/injected.esm.js.map +1 -0
  21. package/dist/isCosmosWalletProvider/index.d.ts +2 -0
  22. package/dist/isCosmosWalletProvider/index.d.ts.map +1 -0
  23. package/dist/isCosmosWalletProvider/isCosmosWalletProvider.d.ts +1 -1
  24. package/dist/isCosmosWalletProvider/isCosmosWalletProvider.d.ts.map +1 -1
  25. package/dist/package-D2avobp_.esm.js +7 -0
  26. package/dist/package-D2avobp_.esm.js.map +1 -0
  27. package/dist/package-RJyn9j8d.cjs.js +19 -0
  28. package/dist/package-RJyn9j8d.cjs.js.map +1 -0
  29. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  30. package/package.json +9 -4
@@ -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,11 +1,7 @@
1
+ const require_package = require('./package-RJyn9j8d.cjs.js');
1
2
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
2
3
  let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
3
4
 
4
- //#region package.json
5
- var name = "@dynamic-labs-sdk/cosmos";
6
- var version = "0.20.0";
7
-
8
- //#endregion
9
5
  //#region src/errors/NotCosmosProviderError/NotCosmosProviderError.ts
10
6
  var NotCosmosProviderError = class extends _dynamic_labs_sdk_client.BaseError {
11
7
  constructor() {
@@ -23,7 +19,7 @@ var NotCosmosProviderError = class extends _dynamic_labs_sdk_client.BaseError {
23
19
 
24
20
  //#endregion
25
21
  //#region src/exports/index.ts
26
- (0, _dynamic_labs_sdk_assert_package_version.assertPackageVersion)(name, version);
22
+ (0, _dynamic_labs_sdk_assert_package_version.assertPackageVersion)(require_package.name, require_package.version);
27
23
 
28
24
  //#endregion
29
25
  exports.NotCosmosProviderError = NotCosmosProviderError;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","names":["BaseError","packageName","packageVersion"],"sources":["../package.json","../src/errors/NotCosmosProviderError/NotCosmosProviderError.ts","../src/exports/index.ts"],"sourcesContent":["","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotCosmosProviderError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'not_cosmos_provider',\n details: undefined,\n docsUrl: null,\n metaMessages: undefined,\n name: 'NotCosmosProviderError',\n shortMessage: 'The provided wallet provider is not a Cosmos wallet provider.',\n });\n }\n}\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport type { CosmosNetworkProvider } from '../CosmosNetworkProvider.types';\nexport type { CosmosWalletAccount } from '../CosmosWalletAccount.types';\nexport type { CosmosOfflineSigner } from '../CosmosWalletProvider.types';\nexport { NotCosmosProviderError } from '../errors/NotCosmosProviderError';\n"],"mappings":";;;;;;;;;ACEA,IAAa,yBAAb,cAA4CA,mCAAU;CACpD,cAAc;AACZ,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,SAAS;GACT,cAAc;GACd,MAAM;GACN,cAAc;GACf,CAAC;;;;;;mECNeC,MAAaC,QAAe"}
1
+ {"version":3,"file":"index.cjs.js","names":["BaseError","packageName","packageVersion"],"sources":["../src/errors/NotCosmosProviderError/NotCosmosProviderError.ts","../src/exports/index.ts"],"sourcesContent":["import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotCosmosProviderError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'not_cosmos_provider',\n details: undefined,\n docsUrl: null,\n metaMessages: undefined,\n name: 'NotCosmosProviderError',\n shortMessage: 'The provided wallet provider is not a Cosmos wallet provider.',\n });\n }\n}\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport type { CosmosNetworkProvider } from '../CosmosNetworkProvider.types';\nexport type { CosmosWalletAccount } from '../CosmosWalletAccount.types';\nexport type { CosmosOfflineSigner } from '../CosmosWalletProvider.types';\nexport { NotCosmosProviderError } from '../errors/NotCosmosProviderError';\n"],"mappings":";;;;;AAEA,IAAa,yBAAb,cAA4CA,mCAAU;CACpD,cAAc;AACZ,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,SAAS;GACT,cAAc;GACd,MAAM;GACN,cAAc;GACf,CAAC;;;;;;mECNeC,sBAAaC,wBAAe"}
package/dist/index.esm.js CHANGED
@@ -1,11 +1,7 @@
1
+ import { n as version, t as name } from "./package-D2avobp_.esm.js";
1
2
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
2
3
  import { BaseError } from "@dynamic-labs-sdk/client";
3
4
 
4
- //#region package.json
5
- var name = "@dynamic-labs-sdk/cosmos";
6
- var version = "0.20.0";
7
-
8
- //#endregion
9
5
  //#region src/errors/NotCosmosProviderError/NotCosmosProviderError.ts
10
6
  var NotCosmosProviderError = class extends BaseError {
11
7
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","names":["packageName","packageVersion"],"sources":["../package.json","../src/errors/NotCosmosProviderError/NotCosmosProviderError.ts","../src/exports/index.ts"],"sourcesContent":["","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotCosmosProviderError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'not_cosmos_provider',\n details: undefined,\n docsUrl: null,\n metaMessages: undefined,\n name: 'NotCosmosProviderError',\n shortMessage: 'The provided wallet provider is not a Cosmos wallet provider.',\n });\n }\n}\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport type { CosmosNetworkProvider } from '../CosmosNetworkProvider.types';\nexport type { CosmosWalletAccount } from '../CosmosWalletAccount.types';\nexport type { CosmosOfflineSigner } from '../CosmosWalletProvider.types';\nexport { NotCosmosProviderError } from '../errors/NotCosmosProviderError';\n"],"mappings":";;;;;;;;;ACEA,IAAa,yBAAb,cAA4C,UAAU;CACpD,cAAc;AACZ,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,SAAS;GACT,cAAc;GACd,MAAM;GACN,cAAc;GACf,CAAC;;;;;;ACNN,qBAAqBA,MAAaC,QAAe"}
1
+ {"version":3,"file":"index.esm.js","names":["packageName","packageVersion"],"sources":["../src/errors/NotCosmosProviderError/NotCosmosProviderError.ts","../src/exports/index.ts"],"sourcesContent":["import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotCosmosProviderError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'not_cosmos_provider',\n details: undefined,\n docsUrl: null,\n metaMessages: undefined,\n name: 'NotCosmosProviderError',\n shortMessage: 'The provided wallet provider is not a Cosmos wallet provider.',\n });\n }\n}\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport type { CosmosNetworkProvider } from '../CosmosNetworkProvider.types';\nexport type { CosmosWalletAccount } from '../CosmosWalletAccount.types';\nexport type { CosmosOfflineSigner } from '../CosmosWalletProvider.types';\nexport { NotCosmosProviderError } from '../errors/NotCosmosProviderError';\n"],"mappings":";;;;;AAEA,IAAa,yBAAb,cAA4C,UAAU;CACpD,cAAc;AACZ,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,SAAS;GACT,cAAc;GACd,MAAM;GACN,cAAc;GACf,CAAC;;;;;;ACNN,qBAAqBA,MAAaC,QAAe"}
@@ -0,0 +1,4 @@
1
+ export declare const COSMOS_INJECTED_EXTENSION_KEY = "cosmosInjected";
2
+ /** @not-instrumented */
3
+ export declare const addCosmosInjectedExtension: (client?: import("@dynamic-labs-sdk/client").DynamicClient) => void;
4
+ //# sourceMappingURL=addCosmosInjectedExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addCosmosInjectedExtension.d.ts","sourceRoot":"","sources":["../../../src/injected/addCosmosInjectedExtension/addCosmosInjectedExtension.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,6BAA6B,mBAAmB,CAAC;AAE9D,wBAAwB;AACxB,eAAO,MAAM,0BAA0B,iEAEpC,IAoEF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { addCosmosInjectedExtension } from './addCosmosInjectedExtension';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/injected/addCosmosInjectedExtension/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { getCompassInjectedProvider } from './getCompassInjectedProvider';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/injected/utils/compass/getCompassInjectedProvider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { getKeplrInjectedProvider } from './getKeplrInjectedProvider';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/injected/utils/keplr/getKeplrInjectedProvider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { getLeapInjectedProvider } from './getLeapInjectedProvider';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/injected/utils/leap/getLeapInjectedProvider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,230 @@
1
+ const require_package = require('./package-RJyn9j8d.cjs.js');
2
+ let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
3
+ let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
4
+ let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
5
+ let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
6
+
7
+ //#region src/utils/fetchCosmosBalance/fetchCosmosBalance.ts
8
+ /** @not-instrumented */
9
+ const fetchCosmosBalance = async ({ address, networkData }) => {
10
+ const response = await fetch(`${networkData.rpcUrls.http[0]}/cosmos/bank/v1beta1/balances/${address}`);
11
+ if (!response.ok) return null;
12
+ const data = await response.json();
13
+ if (!data?.balances) return null;
14
+ const denomBalance = data.balances.find((b) => b.denom === networkData.nativeCurrency.denom);
15
+ if (!denomBalance) return "0";
16
+ return (Number(denomBalance.amount) / 10 ** networkData.nativeCurrency.decimals).toString();
17
+ };
18
+
19
+ //#endregion
20
+ //#region src/utils/createCosmosNetworkProvider/createCosmosNetworkProvider.ts
21
+ /** @not-instrumented */
22
+ const createCosmosNetworkProvider = (networkData) => ({
23
+ ...(0, _dynamic_labs_sdk_client_core.createBaseNetworkProvider)("COSMOS", networkData),
24
+ getBalance: async ({ address }) => ({ balance: await fetchCosmosBalance({
25
+ address,
26
+ networkData
27
+ }) })
28
+ });
29
+
30
+ //#endregion
31
+ //#region src/registerCosmosNetworkProviderBuilder/registerCosmosNetworkProviderBuilder.ts
32
+ /** @not-instrumented */
33
+ const registerCosmosNetworkProviderBuilder = (client) => {
34
+ const networkProviderBuilderRegistry = (0, _dynamic_labs_sdk_client_core.getNetworkProviderBuilderRegistry)(client);
35
+ if (networkProviderBuilderRegistry.get().get("COSMOS")) return;
36
+ networkProviderBuilderRegistry.register({
37
+ builder: (networkData) => createCosmosNetworkProvider(networkData),
38
+ chain: "COSMOS"
39
+ });
40
+ };
41
+
42
+ //#endregion
43
+ //#region src/injected/utils/compass/getCompassInjectedProvider/getCompassInjectedProvider.ts
44
+ const COMPASS_PROVIDER_LOCATOR = "compass";
45
+ /** @not-instrumented */
46
+ const getCompassInjectedProvider = () => {
47
+ return (0, _dynamic_labs_sdk_client_core.getInjectedProviderFromWindow)(COMPASS_PROVIDER_LOCATOR);
48
+ };
49
+
50
+ //#endregion
51
+ //#region src/utils/constants.ts
52
+ const DEFAULT_COSMOS_CHAIN_ID = "cosmoshub-4";
53
+
54
+ //#endregion
55
+ //#region src/injected/utils/resolveCosmosChainId/resolveCosmosChainId.ts
56
+ /** @not-instrumented */
57
+ const resolveCosmosChainId = ({ networkId }, client) => {
58
+ try {
59
+ return (0, _dynamic_labs_sdk_client.getNetworksData)(client).find((data) => data.networkId === networkId && data.chain === "COSMOS")?.name ?? networkId;
60
+ } catch {
61
+ return networkId;
62
+ }
63
+ };
64
+
65
+ //#endregion
66
+ //#region src/injected/utils/createWalletProviderFromCosmosProvider/createWalletProviderFromCosmosProvider.ts
67
+ /** @not-instrumented */
68
+ const createWalletProviderFromCosmosProvider = ({ injectedProvider, keystoreEventName, metadata }, client) => {
69
+ const chain = "COSMOS";
70
+ const walletProviderType = _dynamic_labs_sdk_api_core.WalletProviderEnum.BrowserExtension;
71
+ const key = (0, _dynamic_labs_sdk_client_core.formatWalletProviderKey)({
72
+ chain,
73
+ displayName: metadata.displayName,
74
+ walletProviderType
75
+ });
76
+ const getChainId = async () => {
77
+ return resolveCosmosChainId({ networkId: (await (0, _dynamic_labs_sdk_client_core.getActiveNetworkIdFromLastKnownRegistry)({
78
+ client,
79
+ walletProviderKey: key
80
+ }))?.networkId ?? DEFAULT_COSMOS_CHAIN_ID }, client);
81
+ };
82
+ const connect = async () => {
83
+ await injectedProvider.enable(DEFAULT_COSMOS_CHAIN_ID);
84
+ const cosmosKey = await injectedProvider.getKey(DEFAULT_COSMOS_CHAIN_ID);
85
+ const publicKey = Array.from(cosmosKey.pubKey).map((b) => b.toString(16).padStart(2, "0")).join("");
86
+ return { addresses: [{
87
+ address: cosmosKey.bech32Address,
88
+ publicKey
89
+ }] };
90
+ };
91
+ const getConnectedAddresses = async () => {
92
+ try {
93
+ const chainId = await getChainId();
94
+ return { addresses: [(await injectedProvider.getKey(chainId)).bech32Address] };
95
+ } catch {
96
+ return { addresses: [] };
97
+ }
98
+ };
99
+ const getActiveNetworkId = async () => (0, _dynamic_labs_sdk_client_core.getActiveNetworkIdFromLastKnownRegistry)({
100
+ client,
101
+ walletProviderKey: key
102
+ });
103
+ const switchActiveNetwork = async ({ networkId }) => {
104
+ await injectedProvider.enable(networkId);
105
+ await (0, _dynamic_labs_sdk_client_core.switchActiveNetworkInLastKnownRegistry)({
106
+ client,
107
+ networkId,
108
+ walletProviderKey: key
109
+ });
110
+ };
111
+ const signMessage = async ({ message, walletAccount }) => {
112
+ const chainId = await getChainId();
113
+ const cosmosKey = await injectedProvider.getKey(chainId);
114
+ const address = walletAccount?.address ?? cosmosKey.bech32Address;
115
+ const signatureResponse = await injectedProvider.signArbitrary(chainId, address, message);
116
+ const bech32Prefix = cosmosKey.bech32Address.split("1")[0];
117
+ const signatureWithPrefix = {
118
+ ...signatureResponse,
119
+ bech32Prefix
120
+ };
121
+ return { signature: JSON.stringify(signatureWithPrefix) };
122
+ };
123
+ const getOfflineSigner = (chainId) => {
124
+ return injectedProvider.getOfflineSigner(chainId);
125
+ };
126
+ const { getEventEmitter, cleanupEventEmitter } = (0, _dynamic_labs_sdk_client_core.createWalletProviderEventEmitter)({
127
+ removeEventListeners: ({ setupReturnValue }) => {
128
+ setupReturnValue?.();
129
+ },
130
+ setupEventListeners: ({ handleAccountsChanged }) => {
131
+ const handler = () => {
132
+ getChainId().then((chainId) => injectedProvider.getKey(chainId)).then((cosmosKey) => {
133
+ handleAccountsChanged({ addresses: [cosmosKey.bech32Address] });
134
+ }).catch(() => {});
135
+ };
136
+ globalThis.addEventListener(keystoreEventName, handler);
137
+ return () => globalThis.removeEventListener(keystoreEventName, handler);
138
+ },
139
+ supportedEvents: ["accountsChanged"]
140
+ });
141
+ const terminate = async () => {
142
+ cleanupEventEmitter();
143
+ };
144
+ return {
145
+ chain,
146
+ connect,
147
+ get events() {
148
+ return getEventEmitter();
149
+ },
150
+ getActiveNetworkId,
151
+ getConnectedAddresses,
152
+ getOfflineSigner,
153
+ groupKey: (0, _dynamic_labs_sdk_client_core.formatWalletProviderGroupKey)(metadata.displayName),
154
+ key,
155
+ metadata,
156
+ signMessage,
157
+ switchActiveNetwork,
158
+ terminate,
159
+ walletProviderType
160
+ };
161
+ };
162
+
163
+ //#endregion
164
+ //#region src/injected/utils/keplr/getKeplrInjectedProvider/getKeplrInjectedProvider.ts
165
+ const KEPLR_PROVIDER_LOCATOR = "keplr";
166
+ /** @not-instrumented */
167
+ const getKeplrInjectedProvider = () => {
168
+ return (0, _dynamic_labs_sdk_client_core.getInjectedProviderFromWindow)(KEPLR_PROVIDER_LOCATOR);
169
+ };
170
+
171
+ //#endregion
172
+ //#region src/injected/utils/leap/getLeapInjectedProvider/getLeapInjectedProvider.ts
173
+ const LEAP_PROVIDER_LOCATOR = "leap";
174
+ /** @not-instrumented */
175
+ const getLeapInjectedProvider = () => {
176
+ return (0, _dynamic_labs_sdk_client_core.getInjectedProviderFromWindow)(LEAP_PROVIDER_LOCATOR);
177
+ };
178
+
179
+ //#endregion
180
+ //#region src/injected/addCosmosInjectedExtension/addCosmosInjectedExtension.ts
181
+ const COSMOS_INJECTED_EXTENSION_KEY = "cosmosInjected";
182
+ /** @not-instrumented */
183
+ const addCosmosInjectedExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
184
+ if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: COSMOS_INJECTED_EXTENSION_KEY }, client)) return;
185
+ (0, _dynamic_labs_sdk_client_core.registerExtension)({ extensionKey: COSMOS_INJECTED_EXTENSION_KEY }, client);
186
+ registerCosmosNetworkProviderBuilder(client);
187
+ const walletProviderRegistry = (0, _dynamic_labs_sdk_client_core.getWalletProviderRegistry)(client);
188
+ const injectedWalletProviders = [];
189
+ const keplrProvider = getKeplrInjectedProvider();
190
+ if (keplrProvider) injectedWalletProviders.push(createWalletProviderFromCosmosProvider({
191
+ injectedProvider: keplrProvider,
192
+ keystoreEventName: "keplr_keystorechange",
193
+ metadata: {
194
+ displayName: "Keplr",
195
+ icon: `${_dynamic_labs_sdk_client_core.DYNAMIC_ICONIC_SPRITE_URL}#keplr`
196
+ }
197
+ }, client));
198
+ const leapProvider = getLeapInjectedProvider();
199
+ if (leapProvider) injectedWalletProviders.push(createWalletProviderFromCosmosProvider({
200
+ injectedProvider: leapProvider,
201
+ keystoreEventName: "leap_keystorechange",
202
+ metadata: {
203
+ displayName: "Leap",
204
+ icon: `${_dynamic_labs_sdk_client_core.DYNAMIC_ICONIC_SPRITE_URL}#leap`
205
+ }
206
+ }, client));
207
+ const compassProvider = getCompassInjectedProvider();
208
+ if (compassProvider) injectedWalletProviders.push(createWalletProviderFromCosmosProvider({
209
+ injectedProvider: compassProvider,
210
+ keystoreEventName: "leap_keystorechange",
211
+ metadata: {
212
+ displayName: "Compass",
213
+ icon: `${_dynamic_labs_sdk_client_core.DYNAMIC_ICONIC_SPRITE_URL}#compass`
214
+ }
215
+ }, client));
216
+ injectedWalletProviders.forEach((walletProvider) => {
217
+ walletProviderRegistry.register({
218
+ priority: _dynamic_labs_sdk_client_core.WalletProviderPriority.WINDOW_INJECT,
219
+ walletProvider
220
+ });
221
+ });
222
+ };
223
+
224
+ //#endregion
225
+ //#region src/exports/injected.ts
226
+ (0, _dynamic_labs_sdk_assert_package_version.assertPackageVersion)(require_package.name, require_package.version);
227
+
228
+ //#endregion
229
+ exports.addCosmosInjectedExtension = addCosmosInjectedExtension;
230
+ //# sourceMappingURL=injected.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injected.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","packageName","packageVersion"],"sources":["../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","../src/exports/injected.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","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addCosmosInjectedExtension } from '../injected/addCosmosInjectedExtension';\n"],"mappings":"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"}
@@ -0,0 +1,230 @@
1
+ import { n as version, t as name } from "./package-D2avobp_.esm.js";
2
+ import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
3
+ import { getNetworksData } from "@dynamic-labs-sdk/client";
4
+ import { DYNAMIC_ICONIC_SPRITE_URL, WalletProviderPriority, createBaseNetworkProvider, createWalletProviderEventEmitter, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getDefaultClient, getInjectedProviderFromWindow, getNetworkProviderBuilderRegistry, getWalletProviderRegistry, hasExtension, registerExtension, switchActiveNetworkInLastKnownRegistry } from "@dynamic-labs-sdk/client/core";
5
+ import { WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
6
+
7
+ //#region src/utils/fetchCosmosBalance/fetchCosmosBalance.ts
8
+ /** @not-instrumented */
9
+ const fetchCosmosBalance = async ({ address, networkData }) => {
10
+ const response = await fetch(`${networkData.rpcUrls.http[0]}/cosmos/bank/v1beta1/balances/${address}`);
11
+ if (!response.ok) return null;
12
+ const data = await response.json();
13
+ if (!data?.balances) return null;
14
+ const denomBalance = data.balances.find((b) => b.denom === networkData.nativeCurrency.denom);
15
+ if (!denomBalance) return "0";
16
+ return (Number(denomBalance.amount) / 10 ** networkData.nativeCurrency.decimals).toString();
17
+ };
18
+
19
+ //#endregion
20
+ //#region src/utils/createCosmosNetworkProvider/createCosmosNetworkProvider.ts
21
+ /** @not-instrumented */
22
+ const createCosmosNetworkProvider = (networkData) => ({
23
+ ...createBaseNetworkProvider("COSMOS", networkData),
24
+ getBalance: async ({ address }) => ({ balance: await fetchCosmosBalance({
25
+ address,
26
+ networkData
27
+ }) })
28
+ });
29
+
30
+ //#endregion
31
+ //#region src/registerCosmosNetworkProviderBuilder/registerCosmosNetworkProviderBuilder.ts
32
+ /** @not-instrumented */
33
+ const registerCosmosNetworkProviderBuilder = (client) => {
34
+ const networkProviderBuilderRegistry = getNetworkProviderBuilderRegistry(client);
35
+ if (networkProviderBuilderRegistry.get().get("COSMOS")) return;
36
+ networkProviderBuilderRegistry.register({
37
+ builder: (networkData) => createCosmosNetworkProvider(networkData),
38
+ chain: "COSMOS"
39
+ });
40
+ };
41
+
42
+ //#endregion
43
+ //#region src/injected/utils/compass/getCompassInjectedProvider/getCompassInjectedProvider.ts
44
+ const COMPASS_PROVIDER_LOCATOR = "compass";
45
+ /** @not-instrumented */
46
+ const getCompassInjectedProvider = () => {
47
+ return getInjectedProviderFromWindow(COMPASS_PROVIDER_LOCATOR);
48
+ };
49
+
50
+ //#endregion
51
+ //#region src/utils/constants.ts
52
+ const DEFAULT_COSMOS_CHAIN_ID = "cosmoshub-4";
53
+
54
+ //#endregion
55
+ //#region src/injected/utils/resolveCosmosChainId/resolveCosmosChainId.ts
56
+ /** @not-instrumented */
57
+ const resolveCosmosChainId = ({ networkId }, client) => {
58
+ try {
59
+ return getNetworksData(client).find((data) => data.networkId === networkId && data.chain === "COSMOS")?.name ?? networkId;
60
+ } catch {
61
+ return networkId;
62
+ }
63
+ };
64
+
65
+ //#endregion
66
+ //#region src/injected/utils/createWalletProviderFromCosmosProvider/createWalletProviderFromCosmosProvider.ts
67
+ /** @not-instrumented */
68
+ const createWalletProviderFromCosmosProvider = ({ injectedProvider, keystoreEventName, metadata }, client) => {
69
+ const chain = "COSMOS";
70
+ const walletProviderType = WalletProviderEnum.BrowserExtension;
71
+ const key = formatWalletProviderKey({
72
+ chain,
73
+ displayName: metadata.displayName,
74
+ walletProviderType
75
+ });
76
+ const getChainId = async () => {
77
+ return resolveCosmosChainId({ networkId: (await getActiveNetworkIdFromLastKnownRegistry({
78
+ client,
79
+ walletProviderKey: key
80
+ }))?.networkId ?? DEFAULT_COSMOS_CHAIN_ID }, client);
81
+ };
82
+ const connect = async () => {
83
+ await injectedProvider.enable(DEFAULT_COSMOS_CHAIN_ID);
84
+ const cosmosKey = await injectedProvider.getKey(DEFAULT_COSMOS_CHAIN_ID);
85
+ const publicKey = Array.from(cosmosKey.pubKey).map((b) => b.toString(16).padStart(2, "0")).join("");
86
+ return { addresses: [{
87
+ address: cosmosKey.bech32Address,
88
+ publicKey
89
+ }] };
90
+ };
91
+ const getConnectedAddresses = async () => {
92
+ try {
93
+ const chainId = await getChainId();
94
+ return { addresses: [(await injectedProvider.getKey(chainId)).bech32Address] };
95
+ } catch {
96
+ return { addresses: [] };
97
+ }
98
+ };
99
+ const getActiveNetworkId = async () => getActiveNetworkIdFromLastKnownRegistry({
100
+ client,
101
+ walletProviderKey: key
102
+ });
103
+ const switchActiveNetwork = async ({ networkId }) => {
104
+ await injectedProvider.enable(networkId);
105
+ await switchActiveNetworkInLastKnownRegistry({
106
+ client,
107
+ networkId,
108
+ walletProviderKey: key
109
+ });
110
+ };
111
+ const signMessage = async ({ message, walletAccount }) => {
112
+ const chainId = await getChainId();
113
+ const cosmosKey = await injectedProvider.getKey(chainId);
114
+ const address = walletAccount?.address ?? cosmosKey.bech32Address;
115
+ const signatureResponse = await injectedProvider.signArbitrary(chainId, address, message);
116
+ const bech32Prefix = cosmosKey.bech32Address.split("1")[0];
117
+ const signatureWithPrefix = {
118
+ ...signatureResponse,
119
+ bech32Prefix
120
+ };
121
+ return { signature: JSON.stringify(signatureWithPrefix) };
122
+ };
123
+ const getOfflineSigner = (chainId) => {
124
+ return injectedProvider.getOfflineSigner(chainId);
125
+ };
126
+ const { getEventEmitter, cleanupEventEmitter } = createWalletProviderEventEmitter({
127
+ removeEventListeners: ({ setupReturnValue }) => {
128
+ setupReturnValue?.();
129
+ },
130
+ setupEventListeners: ({ handleAccountsChanged }) => {
131
+ const handler = () => {
132
+ getChainId().then((chainId) => injectedProvider.getKey(chainId)).then((cosmosKey) => {
133
+ handleAccountsChanged({ addresses: [cosmosKey.bech32Address] });
134
+ }).catch(() => {});
135
+ };
136
+ globalThis.addEventListener(keystoreEventName, handler);
137
+ return () => globalThis.removeEventListener(keystoreEventName, handler);
138
+ },
139
+ supportedEvents: ["accountsChanged"]
140
+ });
141
+ const terminate = async () => {
142
+ cleanupEventEmitter();
143
+ };
144
+ return {
145
+ chain,
146
+ connect,
147
+ get events() {
148
+ return getEventEmitter();
149
+ },
150
+ getActiveNetworkId,
151
+ getConnectedAddresses,
152
+ getOfflineSigner,
153
+ groupKey: formatWalletProviderGroupKey(metadata.displayName),
154
+ key,
155
+ metadata,
156
+ signMessage,
157
+ switchActiveNetwork,
158
+ terminate,
159
+ walletProviderType
160
+ };
161
+ };
162
+
163
+ //#endregion
164
+ //#region src/injected/utils/keplr/getKeplrInjectedProvider/getKeplrInjectedProvider.ts
165
+ const KEPLR_PROVIDER_LOCATOR = "keplr";
166
+ /** @not-instrumented */
167
+ const getKeplrInjectedProvider = () => {
168
+ return getInjectedProviderFromWindow(KEPLR_PROVIDER_LOCATOR);
169
+ };
170
+
171
+ //#endregion
172
+ //#region src/injected/utils/leap/getLeapInjectedProvider/getLeapInjectedProvider.ts
173
+ const LEAP_PROVIDER_LOCATOR = "leap";
174
+ /** @not-instrumented */
175
+ const getLeapInjectedProvider = () => {
176
+ return getInjectedProviderFromWindow(LEAP_PROVIDER_LOCATOR);
177
+ };
178
+
179
+ //#endregion
180
+ //#region src/injected/addCosmosInjectedExtension/addCosmosInjectedExtension.ts
181
+ const COSMOS_INJECTED_EXTENSION_KEY = "cosmosInjected";
182
+ /** @not-instrumented */
183
+ const addCosmosInjectedExtension = (client = getDefaultClient()) => {
184
+ if (hasExtension({ extensionKey: COSMOS_INJECTED_EXTENSION_KEY }, client)) return;
185
+ registerExtension({ extensionKey: COSMOS_INJECTED_EXTENSION_KEY }, client);
186
+ registerCosmosNetworkProviderBuilder(client);
187
+ const walletProviderRegistry = getWalletProviderRegistry(client);
188
+ const injectedWalletProviders = [];
189
+ const keplrProvider = getKeplrInjectedProvider();
190
+ if (keplrProvider) injectedWalletProviders.push(createWalletProviderFromCosmosProvider({
191
+ injectedProvider: keplrProvider,
192
+ keystoreEventName: "keplr_keystorechange",
193
+ metadata: {
194
+ displayName: "Keplr",
195
+ icon: `${DYNAMIC_ICONIC_SPRITE_URL}#keplr`
196
+ }
197
+ }, client));
198
+ const leapProvider = getLeapInjectedProvider();
199
+ if (leapProvider) injectedWalletProviders.push(createWalletProviderFromCosmosProvider({
200
+ injectedProvider: leapProvider,
201
+ keystoreEventName: "leap_keystorechange",
202
+ metadata: {
203
+ displayName: "Leap",
204
+ icon: `${DYNAMIC_ICONIC_SPRITE_URL}#leap`
205
+ }
206
+ }, client));
207
+ const compassProvider = getCompassInjectedProvider();
208
+ if (compassProvider) injectedWalletProviders.push(createWalletProviderFromCosmosProvider({
209
+ injectedProvider: compassProvider,
210
+ keystoreEventName: "leap_keystorechange",
211
+ metadata: {
212
+ displayName: "Compass",
213
+ icon: `${DYNAMIC_ICONIC_SPRITE_URL}#compass`
214
+ }
215
+ }, client));
216
+ injectedWalletProviders.forEach((walletProvider) => {
217
+ walletProviderRegistry.register({
218
+ priority: WalletProviderPriority.WINDOW_INJECT,
219
+ walletProvider
220
+ });
221
+ });
222
+ };
223
+
224
+ //#endregion
225
+ //#region src/exports/injected.ts
226
+ assertPackageVersion(name, version);
227
+
228
+ //#endregion
229
+ export { addCosmosInjectedExtension };
230
+ //# sourceMappingURL=injected.esm.js.map