@keplr-wallet/stores 0.13.27 → 0.13.30

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.
@@ -0,0 +1 @@
1
+ export declare function shouldQueryERC20WithCosmosBank(chainIdentifier: string): boolean;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shouldQueryERC20WithCosmosBank = void 0;
4
+ function shouldQueryERC20WithCosmosBank(chainIdentifier) {
5
+ // Injective exposes MTS ERC20 balances through the Cosmos bank module.
6
+ // Injective dev/testnets are kept as full chain identifiers by ChainIdHelper.
7
+ // Other Ethermint chains should keep using the EVM ERC20 balance path.
8
+ return (chainIdentifier === "injective" ||
9
+ chainIdentifier === "injective-777" ||
10
+ chainIdentifier === "injective-888");
11
+ }
12
+ exports.shouldQueryERC20WithCosmosBank = shouldQueryERC20WithCosmosBank;
13
+ //# sourceMappingURL=erc20.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../src/chain/erc20.ts"],"names":[],"mappings":";;;AAAA,SAAgB,8BAA8B,CAC5C,eAAuB;IAEvB,uEAAuE;IACvE,8EAA8E;IAC9E,uEAAuE;IACvE,OAAO,CACL,eAAe,KAAK,WAAW;QAC/B,eAAe,KAAK,eAAe;QACnC,eAAe,KAAK,eAAe,CACpC,CAAC;AACJ,CAAC;AAXD,wEAWC"}
@@ -1,4 +1,5 @@
1
1
  export * from "./types";
2
2
  export * from "./base";
3
+ export * from "./erc20";
3
4
  export * from "./modular";
4
5
  export * from "./v2-helpers";
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./types"), exports);
18
18
  __exportStar(require("./base"), exports);
19
+ __exportStar(require("./erc20"), exports);
19
20
  __exportStar(require("./modular"), exports);
20
21
  __exportStar(require("./v2-helpers"), exports);
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chain/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,yCAAuB;AACvB,4CAA0B;AAC1B,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chain/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,yCAAuB;AACvB,0CAAwB;AACxB,4CAA0B;AAC1B,+CAA6B"}
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.ObservableQueryCosmosBalanceRegistry = exports.ObservableQueryCosmosBalancesImpl = exports.ObservableQueryCosmosBalancesImplParent = void 0;
19
19
  const common_1 = require("@keplr-wallet/common");
20
20
  const common_2 = require("../../../common");
21
+ const chain_1 = require("../../../chain");
21
22
  const mobx_1 = require("mobx");
22
23
  const unit_1 = require("@keplr-wallet/unit");
23
24
  const chain_query_1 = require("../../chain-query");
@@ -51,12 +52,20 @@ class ObservableQueryCosmosBalancesImpl {
51
52
  (0, mobx_1.makeObservable)(this);
52
53
  }
53
54
  get balance() {
54
- var _a;
55
+ var _a, _b;
55
56
  const currency = this.currency;
56
57
  if (!this.response) {
57
58
  return new unit_1.CoinPretty(currency, new unit_1.Int(0)).ready(false);
58
59
  }
59
- return common_2.StoreUtils.getBalanceFromCurrency(currency, (_a = this.response.data.balances) !== null && _a !== void 0 ? _a : []);
60
+ if (this.denomHelper.type === "erc20") {
61
+ const normalizedCoinMinimalDenom = common_1.DenomHelper.normalizeDenom(currency.coinMinimalDenom);
62
+ const matchedBalance = ((_a = this.response.data.balances) !== null && _a !== void 0 ? _a : []).find((balance) => common_1.DenomHelper.normalizeDenom(balance.denom) ===
63
+ normalizedCoinMinimalDenom);
64
+ return common_2.StoreUtils.getBalanceFromCurrency(currency, matchedBalance
65
+ ? [Object.assign(Object.assign({}, matchedBalance), { denom: currency.coinMinimalDenom })]
66
+ : []);
67
+ }
68
+ return common_2.StoreUtils.getBalanceFromCurrency(currency, (_b = this.response.data.balances) !== null && _b !== void 0 ? _b : []);
60
69
  }
61
70
  get currency() {
62
71
  const denom = this.denomHelper.denom;
@@ -131,7 +140,14 @@ class ObservableQueryCosmosBalanceRegistry {
131
140
  getBalanceImpl(chainId, chainGetter, bech32Address, minimalDenom) {
132
141
  const denomHelper = new common_1.DenomHelper(minimalDenom);
133
142
  if (denomHelper.type !== "native") {
134
- return;
143
+ if (denomHelper.type !== "erc20") {
144
+ return;
145
+ }
146
+ const mcInfo = chainGetter.getModularChain(chainId);
147
+ if (mcInfo.type !== "ethermint" ||
148
+ !(0, chain_1.shouldQueryERC20WithCosmosBank)(mcInfo.chainIdentifier)) {
149
+ return;
150
+ }
135
151
  }
136
152
  try {
137
153
  cosmos_1.Bech32Address.validate(bech32Address);
@@ -1 +1 @@
1
- {"version":3,"file":"balances.js","sourceRoot":"","sources":["../../../../src/query/cosmos/balance/balances.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"balances.js","sourceRoot":"","sources":["../../../../src/query/cosmos/balance/balances.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const common_1 = require("@keplr-wallet/common");
4
+ const cosmos_1 = require("@keplr-wallet/cosmos");
5
+ const unit_1 = require("@keplr-wallet/unit");
6
+ const common_2 = require("../../../common");
7
+ const balances_1 = require("./balances");
8
+ const bech32Address = "inj10alvsy3f0a6vsr7ghjh3rtygrhygavsk45803c";
9
+ const usdcCurrency = {
10
+ coinDenom: "USDC",
11
+ coinMinimalDenom: "erc20:0xa00c59ff5a080d2b954d0c75e46e22a0c371235a",
12
+ coinDecimals: 6,
13
+ };
14
+ function createRegistry(chainId, chainType) {
15
+ return new balances_1.ObservableQueryCosmosBalanceRegistry(new common_2.QuerySharedContext(new common_1.MemoryKVStore("test"), {
16
+ responseDebounceMs: 10,
17
+ })).getBalanceImpl(chainId, {
18
+ getModularChain: () => ({
19
+ type: chainType,
20
+ chainIdentifier: cosmos_1.ChainIdHelper.parse(chainId).identifier,
21
+ unwrapped: {
22
+ type: chainType,
23
+ cosmos: {
24
+ rest: "https://lcd.injective.example",
25
+ },
26
+ },
27
+ }),
28
+ hasModularChain: () => true,
29
+ }, bech32Address, usdcCurrency.coinMinimalDenom);
30
+ }
31
+ describe("ObservableQueryCosmosBalanceRegistry", () => {
32
+ test("rejects erc20 denoms on non-ethermint chains", () => {
33
+ expect(createRegistry("injective-1", "cosmos")).toBeUndefined();
34
+ });
35
+ test("rejects erc20 denoms on non-Injective ethermint chains", () => {
36
+ expect(createRegistry("planq_7070-2", "ethermint")).toBeUndefined();
37
+ });
38
+ test.each(["injective-1", "injective-777", "injective-888"])("accepts erc20 denoms on Injective ethermint chains: %s", (chainId) => {
39
+ expect(createRegistry(chainId, "ethermint")).toBeDefined();
40
+ });
41
+ test("returns zero when an ethermint erc20 balance is missing", () => {
42
+ const balance = new balances_1.ObservableQueryCosmosBalancesImpl({
43
+ response: {
44
+ headers: {},
45
+ data: {
46
+ balances: [
47
+ {
48
+ denom: "inj",
49
+ amount: "123000000000000000000",
50
+ },
51
+ ],
52
+ },
53
+ },
54
+ }, "injective-1", {
55
+ getModularChain: () => ({
56
+ forceFindCurrency: () => usdcCurrency,
57
+ }),
58
+ hasModularChain: () => true,
59
+ }, new common_1.DenomHelper(usdcCurrency.coinMinimalDenom)).balance;
60
+ expect(balance.toDec().equals(new unit_1.Dec("0"))).toBe(true);
61
+ });
62
+ test("matches ethermint erc20 balances using normalized denom casing", () => {
63
+ const balance = new balances_1.ObservableQueryCosmosBalancesImpl({
64
+ response: {
65
+ headers: {},
66
+ data: {
67
+ balances: [
68
+ {
69
+ denom: "erc20:0xa00C59fF5a080D2b954d0c75e46E22a0c371235a",
70
+ amount: "123000000",
71
+ },
72
+ ],
73
+ },
74
+ },
75
+ }, "injective-1", {
76
+ getModularChain: () => ({
77
+ forceFindCurrency: () => usdcCurrency,
78
+ }),
79
+ hasModularChain: () => true,
80
+ }, new common_1.DenomHelper(usdcCurrency.coinMinimalDenom)).balance;
81
+ expect(balance.toDec().equals(new unit_1.Dec("123"))).toBe(true);
82
+ });
83
+ });
84
+ //# sourceMappingURL=balances.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balances.spec.js","sourceRoot":"","sources":["../../../../src/query/cosmos/balance/balances.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keplr-wallet/stores",
3
- "version": "0.13.27",
3
+ "version": "0.13.30",
4
4
  "main": "build/index.js",
5
5
  "author": "chainapsis",
6
6
  "license": "Apache-2.0",
@@ -21,17 +21,17 @@
21
21
  "typecheck": "npx tsc -p tsconfig.check.json"
22
22
  },
23
23
  "devDependencies": {
24
- "@keplr-wallet/provider-mock": "0.13.27"
24
+ "@keplr-wallet/provider-mock": "0.13.30"
25
25
  },
26
26
  "dependencies": {
27
- "@keplr-wallet/common": "0.13.27",
28
- "@keplr-wallet/cosmos": "0.13.27",
29
- "@keplr-wallet/crypto": "0.13.27",
30
- "@keplr-wallet/mobx-utils": "0.13.27",
31
- "@keplr-wallet/proto-types": "0.13.27",
32
- "@keplr-wallet/simple-fetch": "0.13.27",
33
- "@keplr-wallet/types": "0.13.27",
34
- "@keplr-wallet/unit": "0.13.27",
27
+ "@keplr-wallet/common": "0.13.30",
28
+ "@keplr-wallet/cosmos": "0.13.30",
29
+ "@keplr-wallet/crypto": "0.13.30",
30
+ "@keplr-wallet/mobx-utils": "0.13.30",
31
+ "@keplr-wallet/proto-types": "0.13.30",
32
+ "@keplr-wallet/simple-fetch": "0.13.30",
33
+ "@keplr-wallet/types": "0.13.30",
34
+ "@keplr-wallet/unit": "0.13.30",
35
35
  "buffer": "^6.0.3",
36
36
  "deepmerge": "^4.2.2",
37
37
  "eventemitter3": "^4.0.7",
@@ -43,5 +43,5 @@
43
43
  "mobx": "^6",
44
44
  "mobx-utils": "^6"
45
45
  },
46
- "gitHead": "63d9cb173b85680dd7781bbd4ec527dcdc9ddf92"
46
+ "gitHead": "bbc7e090a71224f5ee81d404c76dbf71d91c2f91"
47
47
  }
@@ -0,0 +1,12 @@
1
+ export function shouldQueryERC20WithCosmosBank(
2
+ chainIdentifier: string
3
+ ): boolean {
4
+ // Injective exposes MTS ERC20 balances through the Cosmos bank module.
5
+ // Injective dev/testnets are kept as full chain identifiers by ChainIdHelper.
6
+ // Other Ethermint chains should keep using the EVM ERC20 balance path.
7
+ return (
8
+ chainIdentifier === "injective" ||
9
+ chainIdentifier === "injective-777" ||
10
+ chainIdentifier === "injective-888"
11
+ );
12
+ }
@@ -1,4 +1,5 @@
1
1
  export * from "./types";
2
2
  export * from "./base";
3
+ export * from "./erc20";
3
4
  export * from "./modular";
4
5
  export * from "./v2-helpers";
@@ -0,0 +1,117 @@
1
+ import { DenomHelper, MemoryKVStore } from "@keplr-wallet/common";
2
+ import { ChainIdHelper } from "@keplr-wallet/cosmos";
3
+ import { Dec } from "@keplr-wallet/unit";
4
+ import { QuerySharedContext } from "../../../common";
5
+ import { ChainGetter } from "../../../chain";
6
+ import {
7
+ ObservableQueryCosmosBalanceRegistry,
8
+ ObservableQueryCosmosBalancesImpl,
9
+ } from "./balances";
10
+
11
+ const bech32Address = "inj10alvsy3f0a6vsr7ghjh3rtygrhygavsk45803c";
12
+ const usdcCurrency = {
13
+ coinDenom: "USDC",
14
+ coinMinimalDenom: "erc20:0xa00c59ff5a080d2b954d0c75e46e22a0c371235a",
15
+ coinDecimals: 6,
16
+ };
17
+
18
+ function createRegistry(chainId: string, chainType: "cosmos" | "ethermint") {
19
+ return new ObservableQueryCosmosBalanceRegistry(
20
+ new QuerySharedContext(new MemoryKVStore("test"), {
21
+ responseDebounceMs: 10,
22
+ })
23
+ ).getBalanceImpl(
24
+ chainId,
25
+ {
26
+ getModularChain: () =>
27
+ ({
28
+ type: chainType,
29
+ chainIdentifier: ChainIdHelper.parse(chainId).identifier,
30
+ unwrapped: {
31
+ type: chainType,
32
+ cosmos: {
33
+ rest: "https://lcd.injective.example",
34
+ },
35
+ },
36
+ } as any),
37
+ hasModularChain: () => true,
38
+ } satisfies ChainGetter,
39
+ bech32Address,
40
+ usdcCurrency.coinMinimalDenom
41
+ );
42
+ }
43
+
44
+ describe("ObservableQueryCosmosBalanceRegistry", () => {
45
+ test("rejects erc20 denoms on non-ethermint chains", () => {
46
+ expect(createRegistry("injective-1", "cosmos")).toBeUndefined();
47
+ });
48
+
49
+ test("rejects erc20 denoms on non-Injective ethermint chains", () => {
50
+ expect(createRegistry("planq_7070-2", "ethermint")).toBeUndefined();
51
+ });
52
+
53
+ test.each(["injective-1", "injective-777", "injective-888"])(
54
+ "accepts erc20 denoms on Injective ethermint chains: %s",
55
+ (chainId) => {
56
+ expect(createRegistry(chainId, "ethermint")).toBeDefined();
57
+ }
58
+ );
59
+
60
+ test("returns zero when an ethermint erc20 balance is missing", () => {
61
+ const balance = new ObservableQueryCosmosBalancesImpl(
62
+ {
63
+ response: {
64
+ headers: {},
65
+ data: {
66
+ balances: [
67
+ {
68
+ denom: "inj",
69
+ amount: "123000000000000000000",
70
+ },
71
+ ],
72
+ },
73
+ },
74
+ } as any,
75
+ "injective-1",
76
+ {
77
+ getModularChain: () =>
78
+ ({
79
+ forceFindCurrency: () => usdcCurrency,
80
+ } as any),
81
+ hasModularChain: () => true,
82
+ },
83
+ new DenomHelper(usdcCurrency.coinMinimalDenom)
84
+ ).balance;
85
+
86
+ expect(balance.toDec().equals(new Dec("0"))).toBe(true);
87
+ });
88
+
89
+ test("matches ethermint erc20 balances using normalized denom casing", () => {
90
+ const balance = new ObservableQueryCosmosBalancesImpl(
91
+ {
92
+ response: {
93
+ headers: {},
94
+ data: {
95
+ balances: [
96
+ {
97
+ denom: "erc20:0xa00C59fF5a080D2b954d0c75e46E22a0c371235a",
98
+ amount: "123000000",
99
+ },
100
+ ],
101
+ },
102
+ },
103
+ } as any,
104
+ "injective-1",
105
+ {
106
+ getModularChain: () =>
107
+ ({
108
+ forceFindCurrency: () => usdcCurrency,
109
+ } as any),
110
+ hasModularChain: () => true,
111
+ },
112
+ new DenomHelper(usdcCurrency.coinMinimalDenom)
113
+ ).balance;
114
+
115
+ expect(balance.toDec().equals(new Dec("123"))).toBe(true);
116
+ });
117
+ });
@@ -5,7 +5,7 @@ import {
5
5
  QuerySharedContext,
6
6
  StoreUtils,
7
7
  } from "../../../common";
8
- import { ChainGetter } from "../../../chain";
8
+ import { ChainGetter, shouldQueryERC20WithCosmosBank } from "../../../chain";
9
9
  import { computed, makeObservable } from "mobx";
10
10
  import { CoinPretty, Int } from "@keplr-wallet/unit";
11
11
  import { BalanceRegistry, IObservableQueryBalanceImpl } from "../../balances";
@@ -74,6 +74,24 @@ export class ObservableQueryCosmosBalancesImpl
74
74
  return new CoinPretty(currency, new Int(0)).ready(false);
75
75
  }
76
76
 
77
+ if (this.denomHelper.type === "erc20") {
78
+ const normalizedCoinMinimalDenom = DenomHelper.normalizeDenom(
79
+ currency.coinMinimalDenom
80
+ );
81
+ const matchedBalance = (this.response.data.balances ?? []).find(
82
+ (balance) =>
83
+ DenomHelper.normalizeDenom(balance.denom) ===
84
+ normalizedCoinMinimalDenom
85
+ );
86
+
87
+ return StoreUtils.getBalanceFromCurrency(
88
+ currency,
89
+ matchedBalance
90
+ ? [{ ...matchedBalance, denom: currency.coinMinimalDenom }]
91
+ : []
92
+ );
93
+ }
94
+
77
95
  return StoreUtils.getBalanceFromCurrency(
78
96
  currency,
79
97
  this.response.data.balances ?? []
@@ -159,7 +177,17 @@ export class ObservableQueryCosmosBalanceRegistry implements BalanceRegistry {
159
177
  ): ObservableQueryCosmosBalancesImpl | undefined {
160
178
  const denomHelper = new DenomHelper(minimalDenom);
161
179
  if (denomHelper.type !== "native") {
162
- return;
180
+ if (denomHelper.type !== "erc20") {
181
+ return;
182
+ }
183
+
184
+ const mcInfo = chainGetter.getModularChain(chainId);
185
+ if (
186
+ mcInfo.type !== "ethermint" ||
187
+ !shouldQueryERC20WithCosmosBank(mcInfo.chainIdentifier)
188
+ ) {
189
+ return;
190
+ }
163
191
  }
164
192
 
165
193
  try {