@injectivelabs/wallet-ledger 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +111 -0
  2. package/dist/cjs/index.d.ts +5 -0
  3. package/dist/cjs/index.d.ts.map +1 -0
  4. package/dist/cjs/index.js +25 -0
  5. package/dist/cjs/index.js.map +1 -0
  6. package/dist/cjs/package.json +3 -0
  7. package/dist/cjs/strategy/Ledger/Base.d.ts +43 -0
  8. package/dist/cjs/strategy/Ledger/Base.d.ts.map +1 -0
  9. package/dist/cjs/strategy/Ledger/Base.js +302 -0
  10. package/dist/cjs/strategy/Ledger/Base.js.map +1 -0
  11. package/dist/cjs/strategy/Ledger/LedgerLegacy.d.ts +6 -0
  12. package/dist/cjs/strategy/Ledger/LedgerLegacy.d.ts.map +1 -0
  13. package/dist/cjs/strategy/Ledger/LedgerLegacy.js +15 -0
  14. package/dist/cjs/strategy/Ledger/LedgerLegacy.js.map +1 -0
  15. package/dist/cjs/strategy/Ledger/LedgerLive.d.ts +6 -0
  16. package/dist/cjs/strategy/Ledger/LedgerLive.d.ts.map +1 -0
  17. package/dist/cjs/strategy/Ledger/LedgerLive.js +15 -0
  18. package/dist/cjs/strategy/Ledger/LedgerLive.js.map +1 -0
  19. package/dist/cjs/strategy/Ledger/hw/AccountManager.d.ts +22 -0
  20. package/dist/cjs/strategy/Ledger/hw/AccountManager.d.ts.map +1 -0
  21. package/dist/cjs/strategy/Ledger/hw/AccountManager.js +106 -0
  22. package/dist/cjs/strategy/Ledger/hw/AccountManager.js.map +1 -0
  23. package/dist/cjs/strategy/Ledger/hw/index.d.ts +12 -0
  24. package/dist/cjs/strategy/Ledger/hw/index.d.ts.map +1 -0
  25. package/dist/cjs/strategy/Ledger/hw/index.js +108 -0
  26. package/dist/cjs/strategy/Ledger/hw/index.js.map +1 -0
  27. package/dist/cjs/strategy/Ledger/utils.d.ts +4 -0
  28. package/dist/cjs/strategy/Ledger/utils.d.ts.map +1 -0
  29. package/dist/cjs/strategy/Ledger/utils.js +9 -0
  30. package/dist/cjs/strategy/Ledger/utils.js.map +1 -0
  31. package/dist/cjs/strategy/LedgerCosmos/hw/AccountManager.d.ts +21 -0
  32. package/dist/cjs/strategy/LedgerCosmos/hw/AccountManager.d.ts.map +1 -0
  33. package/dist/cjs/strategy/LedgerCosmos/hw/AccountManager.js +84 -0
  34. package/dist/cjs/strategy/LedgerCosmos/hw/AccountManager.js.map +1 -0
  35. package/dist/cjs/strategy/LedgerCosmos/hw/index.d.ts +12 -0
  36. package/dist/cjs/strategy/LedgerCosmos/hw/index.d.ts.map +1 -0
  37. package/dist/cjs/strategy/LedgerCosmos/hw/index.js +68 -0
  38. package/dist/cjs/strategy/LedgerCosmos/hw/index.js.map +1 -0
  39. package/dist/cjs/strategy/LedgerCosmos/index.d.ts +37 -0
  40. package/dist/cjs/strategy/LedgerCosmos/index.d.ts.map +1 -0
  41. package/dist/cjs/strategy/LedgerCosmos/index.js +197 -0
  42. package/dist/cjs/strategy/LedgerCosmos/index.js.map +1 -0
  43. package/dist/cjs/types.d.ts +18 -0
  44. package/dist/cjs/types.d.ts.map +1 -0
  45. package/dist/cjs/types.js +15 -0
  46. package/dist/cjs/types.js.map +1 -0
  47. package/dist/esm/index.d.ts +5 -0
  48. package/dist/esm/index.d.ts.map +1 -0
  49. package/dist/esm/index.js +5 -0
  50. package/dist/esm/index.js.map +1 -0
  51. package/dist/esm/package.json +3 -0
  52. package/dist/esm/strategy/Ledger/Base.d.ts +43 -0
  53. package/dist/esm/strategy/Ledger/Base.d.ts.map +1 -0
  54. package/dist/esm/strategy/Ledger/Base.js +240 -0
  55. package/dist/esm/strategy/Ledger/Base.js.map +1 -0
  56. package/dist/esm/strategy/Ledger/LedgerLegacy.d.ts +6 -0
  57. package/dist/esm/strategy/Ledger/LedgerLegacy.d.ts.map +1 -0
  58. package/dist/esm/strategy/Ledger/LedgerLegacy.js +11 -0
  59. package/dist/esm/strategy/Ledger/LedgerLegacy.js.map +1 -0
  60. package/dist/esm/strategy/Ledger/LedgerLive.d.ts +6 -0
  61. package/dist/esm/strategy/Ledger/LedgerLive.d.ts.map +1 -0
  62. package/dist/esm/strategy/Ledger/LedgerLive.js +11 -0
  63. package/dist/esm/strategy/Ledger/LedgerLive.js.map +1 -0
  64. package/dist/esm/strategy/Ledger/hw/AccountManager.d.ts +22 -0
  65. package/dist/esm/strategy/Ledger/hw/AccountManager.d.ts.map +1 -0
  66. package/dist/esm/strategy/Ledger/hw/AccountManager.js +86 -0
  67. package/dist/esm/strategy/Ledger/hw/AccountManager.js.map +1 -0
  68. package/dist/esm/strategy/Ledger/hw/index.d.ts +12 -0
  69. package/dist/esm/strategy/Ledger/hw/index.d.ts.map +1 -0
  70. package/dist/esm/strategy/Ledger/hw/index.js +60 -0
  71. package/dist/esm/strategy/Ledger/hw/index.js.map +1 -0
  72. package/dist/esm/strategy/Ledger/utils.d.ts +4 -0
  73. package/dist/esm/strategy/Ledger/utils.d.ts.map +1 -0
  74. package/dist/esm/strategy/Ledger/utils.js +4 -0
  75. package/dist/esm/strategy/Ledger/utils.js.map +1 -0
  76. package/dist/esm/strategy/LedgerCosmos/hw/AccountManager.d.ts +21 -0
  77. package/dist/esm/strategy/LedgerCosmos/hw/AccountManager.d.ts.map +1 -0
  78. package/dist/esm/strategy/LedgerCosmos/hw/AccountManager.js +67 -0
  79. package/dist/esm/strategy/LedgerCosmos/hw/AccountManager.js.map +1 -0
  80. package/dist/esm/strategy/LedgerCosmos/hw/index.d.ts +12 -0
  81. package/dist/esm/strategy/LedgerCosmos/hw/index.d.ts.map +1 -0
  82. package/dist/esm/strategy/LedgerCosmos/hw/index.js +43 -0
  83. package/dist/esm/strategy/LedgerCosmos/hw/index.js.map +1 -0
  84. package/dist/esm/strategy/LedgerCosmos/index.d.ts +37 -0
  85. package/dist/esm/strategy/LedgerCosmos/index.d.ts.map +1 -0
  86. package/dist/esm/strategy/LedgerCosmos/index.js +153 -0
  87. package/dist/esm/strategy/LedgerCosmos/index.js.map +1 -0
  88. package/dist/esm/types.d.ts +18 -0
  89. package/dist/esm/types.d.ts.map +1 -0
  90. package/dist/esm/types.js +12 -0
  91. package/dist/esm/types.js.map +1 -0
  92. package/package.json +67 -0
@@ -0,0 +1,22 @@
1
+ import { AccountAddress } from '@injectivelabs/ts-types';
2
+ import type EthereumApp from '@ledgerhq/hw-app-eth';
3
+ import { LedgerDerivationPathType, LedgerWalletInfo } from '../../../types';
4
+ export default class AccountManager {
5
+ private wallets;
6
+ private ledger;
7
+ constructor(ledger: EthereumApp);
8
+ getWallets(baseDerivationPath: string, derivationPathType: LedgerDerivationPathType): Promise<LedgerWalletInfo[]>;
9
+ getLedgerDerivationPathBasedOnType: ({ fullBaseDerivationPath, derivationPathType, index, }: {
10
+ fullBaseDerivationPath: string;
11
+ derivationPathType: LedgerDerivationPathType;
12
+ index: number;
13
+ }) => string;
14
+ private getWalletsBasedOnIndex;
15
+ private hasWallets;
16
+ private hasWalletsInOffset;
17
+ private getOffset;
18
+ hasWalletForAddress(address: AccountAddress): boolean;
19
+ getWalletForAddress(address: AccountAddress): Promise<LedgerWalletInfo | undefined>;
20
+ reset(): void;
21
+ }
22
+ //# sourceMappingURL=AccountManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountManager.d.ts","sourceRoot":"","sources":["../../../../../src/strategy/Ledger/hw/AccountManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAe3E,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,OAAO,CAAC,OAAO,CAAyB;IAExC,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,WAAW;IAKzB,UAAU,CACd,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,wBAAwB,GAC3C,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAmB9B,kCAAkC;gCAKR,MAAM;4BACV,wBAAwB;eACrC,MAAM;UACX,MAAM,CAMT;YAEa,sBAAsB;IAiCpC,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,SAAS;IAWjB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO;IAQ/C,mBAAmB,CACvB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAMxC,KAAK;CAGN"}
@@ -0,0 +1,86 @@
1
+ import { publicToAddress, addHexPrefix } from 'ethereumjs-util';
2
+ import HDNode from 'hdkey';
3
+ import { LedgerDerivationPathType } from '../../../types';
4
+ import { DEFAULT_NUM_ADDRESSES_TO_FETCH } from '@injectivelabs/wallet-base';
5
+ const addressOfHDKey = (hdKey) => {
6
+ const shouldSanitizePublicKey = true;
7
+ const derivedPublicKey = hdKey.publicKey;
8
+ const ethereumAddressWithoutPrefix = publicToAddress(derivedPublicKey, shouldSanitizePublicKey).toString('hex');
9
+ const address = addHexPrefix(ethereumAddressWithoutPrefix);
10
+ return address;
11
+ };
12
+ export default class AccountManager {
13
+ wallets = [];
14
+ ledger;
15
+ constructor(ledger) {
16
+ this.ledger = ledger;
17
+ this.wallets = [];
18
+ }
19
+ async getWallets(baseDerivationPath, derivationPathType) {
20
+ const { start, end } = this.getOffset();
21
+ /**
22
+ * 1. Wallets are not yet fetched at all,
23
+ * 2. Wallets are not yet fetched for that offset
24
+ */
25
+ if (!this.hasWallets() || !this.hasWalletsInOffset(start)) {
26
+ await this.getWalletsBasedOnIndex({
27
+ start,
28
+ end,
29
+ baseDerivationPath,
30
+ derivationPathType,
31
+ });
32
+ }
33
+ return this.wallets.slice(start, end);
34
+ }
35
+ getLedgerDerivationPathBasedOnType = ({ fullBaseDerivationPath, derivationPathType, index, }) => {
36
+ if (derivationPathType === LedgerDerivationPathType.LedgerLive) {
37
+ return `${fullBaseDerivationPath}/${index}'/0/0`;
38
+ }
39
+ return `${fullBaseDerivationPath}/0'/${index}`;
40
+ };
41
+ async getWalletsBasedOnIndex({ start, end, baseDerivationPath, derivationPathType, }) {
42
+ for (let index = start; index < end; index += 1) {
43
+ const path = this.getLedgerDerivationPathBasedOnType({
44
+ fullBaseDerivationPath: baseDerivationPath,
45
+ derivationPathType,
46
+ index,
47
+ });
48
+ const result = await this.ledger.getAddress(path);
49
+ const hdKey = new HDNode();
50
+ hdKey.publicKey = Buffer.from(result.publicKey, 'hex');
51
+ hdKey.chainCode = Buffer.from(result.chainCode || '', 'hex');
52
+ const address = result.address || addressOfHDKey(hdKey);
53
+ this.wallets.push({
54
+ hdKey,
55
+ baseDerivationPath,
56
+ address: address.toLowerCase(),
57
+ derivationPath: path,
58
+ });
59
+ }
60
+ }
61
+ hasWallets() {
62
+ return this.wallets.length > 0;
63
+ }
64
+ hasWalletsInOffset(offset) {
65
+ return this.wallets.length > offset;
66
+ }
67
+ getOffset() {
68
+ const totalWallets = this.wallets.length;
69
+ const nextBatchStart = totalWallets;
70
+ const nextBatchEnd = totalWallets + DEFAULT_NUM_ADDRESSES_TO_FETCH;
71
+ return {
72
+ start: nextBatchStart,
73
+ end: nextBatchEnd,
74
+ };
75
+ }
76
+ hasWalletForAddress(address) {
77
+ return (this.wallets.find((wallet) => wallet.address.toLowerCase() === address.toLowerCase()) !== undefined);
78
+ }
79
+ async getWalletForAddress(address) {
80
+ return this.wallets.find((wallet) => wallet.address.toLowerCase() === address.toLowerCase());
81
+ }
82
+ reset() {
83
+ this.wallets = [];
84
+ }
85
+ }
86
+ //# sourceMappingURL=AccountManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountManager.js","sourceRoot":"","sources":["../../../../../src/strategy/Ledger/hw/AccountManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type EthereumApp from '@ledgerhq/hw-app-eth';
2
+ import type Transport from '@ledgerhq/hw-transport';
3
+ import AccountManager from './AccountManager';
4
+ export default class LedgerTransport {
5
+ private ledger;
6
+ private accountManager;
7
+ protected static getTransport(): Promise<Transport>;
8
+ getInstance(): Promise<EthereumApp>;
9
+ getAccountManager(): Promise<AccountManager>;
10
+ refresh(): Promise<LedgerTransport>;
11
+ }
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/strategy/Ledger/hw/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAA;AAEnD,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,OAAO,CAAC,MAAM,CAA2B;IAEzC,OAAO,CAAC,cAAc,CAA8B;qBAE7B,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAkCnD,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAgBnC,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAQ5C,OAAO;CASd"}
@@ -0,0 +1,60 @@
1
+ import TransportWebHID from '@ledgerhq/hw-transport-webhid';
2
+ import TransportWebUSB from '@ledgerhq/hw-transport-webusb';
3
+ import { LedgerException } from '@injectivelabs/exceptions';
4
+ import AccountManager from './AccountManager';
5
+ export default class LedgerTransport {
6
+ ledger = null;
7
+ accountManager = null;
8
+ static async getTransport() {
9
+ try {
10
+ if (await TransportWebHID.isSupported()) {
11
+ const list = await TransportWebHID.list();
12
+ if (list.length > 0 && list[0].opened) {
13
+ return new TransportWebHID(list[0]);
14
+ }
15
+ const existing = await TransportWebHID.openConnected().catch(() => null);
16
+ if (existing) {
17
+ return existing;
18
+ }
19
+ return await TransportWebHID.request();
20
+ }
21
+ if (await TransportWebUSB.isSupported()) {
22
+ const existing = await TransportWebUSB.openConnected().catch(() => null);
23
+ if (existing) {
24
+ return existing;
25
+ }
26
+ return await TransportWebUSB.request();
27
+ }
28
+ }
29
+ catch (e) {
30
+ throw new LedgerException(new Error(e.message));
31
+ }
32
+ return TransportWebUSB.request();
33
+ }
34
+ async getInstance() {
35
+ if (!this.ledger) {
36
+ const transport = await LedgerTransport.getTransport();
37
+ const EthereumApp = await import('@ledgerhq/hw-app-eth');
38
+ this.ledger = new EthereumApp.default(transport);
39
+ transport.on('disconnect', () => {
40
+ this.ledger = null;
41
+ this.accountManager = null;
42
+ });
43
+ }
44
+ return this.ledger;
45
+ }
46
+ async getAccountManager() {
47
+ if (!this.accountManager) {
48
+ this.accountManager = new AccountManager(await this.getInstance());
49
+ }
50
+ return this.accountManager;
51
+ }
52
+ async refresh() {
53
+ if (!this.ledger) {
54
+ return new LedgerTransport();
55
+ }
56
+ this.ledger.transport.close();
57
+ return new LedgerTransport();
58
+ }
59
+ }
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/strategy/Ledger/hw/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,+BAA+B,CAAA;AAC3D,OAAO,eAAe,MAAM,+BAA+B,CAAA;AAG3D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,OAAO,OAAO,eAAe;IAC1B,MAAM,GAAuB,IAAI,CAAA;IAEjC,cAAc,GAA0B,IAAI,CAAA;IAE1C,MAAM,CAAC,KAAK,CAAC,YAAY;QACjC,IAAI,CAAC;YACH,IAAI,MAAM,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAA;gBAEzC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;oBACtC,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;gBACrC,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;gBAExE,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,QAAQ,CAAA;gBACjB,CAAC;gBAED,OAAO,MAAM,eAAe,CAAC,OAAO,EAAE,CAAA;YACxC,CAAC;YAED,IAAI,MAAM,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;gBAExE,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,QAAQ,CAAA;gBACjB,CAAC;gBAED,OAAO,MAAM,eAAe,CAAC,OAAO,EAAE,CAAA;YACxC,CAAC;QACH,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,eAAe,CAAC,IAAI,KAAK,CAAE,CAAS,CAAC,OAAO,CAAC,CAAC,CAAA;QAC1D,CAAC;QAED,OAAO,eAAe,CAAC,OAAO,EAAE,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,CAAA;YACtD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;YAExD,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YAEhD,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;gBAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;gBAClB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC5B,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QACpE,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,IAAI,eAAe,EAAE,CAAA;QAC9B,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QAE7B,OAAO,IAAI,eAAe,EAAE,CAAA;IAC9B,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="node" />
2
+ export declare const domainHash: (message: any) => Buffer;
3
+ export declare const messageHash: (message: any) => Buffer;
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/strategy/Ledger/utils.ts"],"names":[],"mappings":";AAEA,eAAO,MAAM,UAAU,YAAa,GAAG,WACyC,CAAA;AAEhF,eAAO,MAAM,WAAW,YAAa,GAAG,WAMrC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { TypedDataUtils } from 'eth-sig-util';
2
+ export const domainHash = (message) => TypedDataUtils.hashStruct('EIP712Domain', message.domain, message.types, true);
3
+ export const messageHash = (message) => TypedDataUtils.hashStruct(message.primaryType, message.message, message.types, true);
4
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/strategy/Ledger/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAY,EAAE,EAAE,CACzC,cAAc,CAAC,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AAEhF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAY,EAAE,EAAE,CAC1C,cAAc,CAAC,UAAU,CACvB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,KAAK,EACb,IAAI,CACL,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { AccountAddress } from '@injectivelabs/ts-types';
2
+ import type CosmosApp from '@ledgerhq/hw-app-cosmos';
3
+ import { LedgerWalletInfo } from '../../../types';
4
+ export default class AccountManager {
5
+ private wallets;
6
+ private ledger;
7
+ constructor(ledger: CosmosApp);
8
+ getWallets(baseDerivationPath: string): Promise<LedgerWalletInfo[]>;
9
+ getLedgerDerivationPathBasedOnType: ({ fullBaseDerivationPath, index, }: {
10
+ fullBaseDerivationPath: string;
11
+ index: number;
12
+ }) => string;
13
+ private getWalletsBasedOnIndex;
14
+ private hasWallets;
15
+ private hasWalletsInOffset;
16
+ private getOffset;
17
+ hasWalletForAddress(address: AccountAddress): boolean;
18
+ getWalletForAddress(address: AccountAddress): Promise<LedgerWalletInfo | undefined>;
19
+ reset(): void;
20
+ }
21
+ //# sourceMappingURL=AccountManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountManager.d.ts","sourceRoot":"","sources":["../../../../../src/strategy/LedgerCosmos/hw/AccountManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGjD,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,OAAO,CAAC,OAAO,CAAyB;IAExC,OAAO,CAAC,MAAM,CAAW;gBAEb,MAAM,EAAE,SAAS;IAKvB,UAAU,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAkBzE,kCAAkC;gCAIR,MAAM;eACvB,MAAM;UACX,MAAM,CAET;YAEa,sBAAsB;IAyBpC,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,SAAS;IAWjB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO;IAQ/C,mBAAmB,CACvB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAMxC,KAAK;CAGN"}
@@ -0,0 +1,67 @@
1
+ import { DEFAULT_NUM_ADDRESSES_TO_FETCH } from '@injectivelabs/wallet-base';
2
+ export default class AccountManager {
3
+ wallets = [];
4
+ ledger;
5
+ constructor(ledger) {
6
+ this.ledger = ledger;
7
+ this.wallets = [];
8
+ }
9
+ async getWallets(baseDerivationPath) {
10
+ const { start, end } = this.getOffset();
11
+ /**
12
+ * 1. Wallets are not yet fetched at all,
13
+ * 2. Wallets are not yet fetched for that offset
14
+ */
15
+ if (!this.hasWallets() || !this.hasWalletsInOffset(start)) {
16
+ await this.getWalletsBasedOnIndex({
17
+ start,
18
+ end,
19
+ baseDerivationPath,
20
+ });
21
+ }
22
+ return this.wallets.slice(start, end);
23
+ }
24
+ getLedgerDerivationPathBasedOnType = ({ fullBaseDerivationPath, index, }) => {
25
+ return `${fullBaseDerivationPath}/${index}'/0/0`;
26
+ };
27
+ async getWalletsBasedOnIndex({ start, end, baseDerivationPath, }) {
28
+ for (let index = start; index < end; index += 1) {
29
+ const path = this.getLedgerDerivationPathBasedOnType({
30
+ fullBaseDerivationPath: baseDerivationPath,
31
+ index,
32
+ });
33
+ const { address, publicKey } = await this.ledger.getAddress(path, 'inj');
34
+ this.wallets.push({
35
+ publicKey,
36
+ baseDerivationPath,
37
+ address: address.toLowerCase(),
38
+ derivationPath: path,
39
+ });
40
+ }
41
+ }
42
+ hasWallets() {
43
+ return this.wallets.length > 0;
44
+ }
45
+ hasWalletsInOffset(offset) {
46
+ return this.wallets.length > offset;
47
+ }
48
+ getOffset() {
49
+ const totalWallets = this.wallets.length;
50
+ const nextBatchStart = totalWallets;
51
+ const nextBatchEnd = totalWallets + DEFAULT_NUM_ADDRESSES_TO_FETCH;
52
+ return {
53
+ start: nextBatchStart,
54
+ end: nextBatchEnd,
55
+ };
56
+ }
57
+ hasWalletForAddress(address) {
58
+ return (this.wallets.find((wallet) => wallet.address.toLowerCase() === address.toLowerCase()) !== undefined);
59
+ }
60
+ async getWalletForAddress(address) {
61
+ return this.wallets.find((wallet) => wallet.address.toLowerCase() === address.toLowerCase());
62
+ }
63
+ reset() {
64
+ this.wallets = [];
65
+ }
66
+ }
67
+ //# sourceMappingURL=AccountManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountManager.js","sourceRoot":"","sources":["../../../../../src/strategy/LedgerCosmos/hw/AccountManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAA;AAE3E,MAAM,CAAC,OAAO,OAAO,cAAc;IACzB,OAAO,GAAuB,EAAE,CAAA;IAEhC,MAAM,CAAW;IAEzB,YAAY,MAAiB;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,kBAA0B;QACzC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAEvC;;;WAGG;QACH,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,CAAC,sBAAsB,CAAC;gBAChC,KAAK;gBACL,GAAG;gBACH,kBAAkB;aACnB,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACvC,CAAC;IAED,kCAAkC,GAAG,CAAC,EACpC,sBAAsB,EACtB,KAAK,GAIN,EAAU,EAAE;QACX,OAAO,GAAG,sBAAsB,IAAI,KAAK,OAAO,CAAA;IAClD,CAAC,CAAA;IAEO,KAAK,CAAC,sBAAsB,CAAC,EACnC,KAAK,EACL,GAAG,EACH,kBAAkB,GAKnB;QACC,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,kCAAkC,CAAC;gBACnD,sBAAsB,EAAE,kBAAkB;gBAC1C,KAAK;aACN,CAAC,CAAA;YACF,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAExE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChB,SAAS;gBACT,kBAAkB;gBAClB,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE;gBAC9B,cAAc,EAAE,IAAI;aACrB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;IAChC,CAAC;IAEO,kBAAkB,CAAC,MAAc;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;IACrC,CAAC;IAEO,SAAS;QACf,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;QACxC,MAAM,cAAc,GAAG,YAAY,CAAA;QACnC,MAAM,YAAY,GAAG,YAAY,GAAG,8BAA8B,CAAA;QAElE,OAAO;YACL,KAAK,EAAE,cAAc;YACrB,GAAG,EAAE,YAAY;SAClB,CAAA;IACH,CAAC;IAED,mBAAmB,CAAC,OAAuB;QACzC,OAAO,CACL,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CACnE,KAAK,SAAS,CAChB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,OAAuB;QAEvB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CACnE,CAAA;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import CosmosApp from '@ledgerhq/hw-app-cosmos';
2
+ import type Transport from '@ledgerhq/hw-transport';
3
+ import AccountManager from './AccountManager';
4
+ export default class LedgerTransport {
5
+ private ledger;
6
+ private accountManager;
7
+ protected static getTransport(): Promise<Transport>;
8
+ getInstance(): Promise<CosmosApp>;
9
+ getAccountManager(): Promise<AccountManager>;
10
+ refresh(): Promise<LedgerTransport>;
11
+ }
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/strategy/LedgerCosmos/hw/index.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,yBAAyB,CAAA;AAC/C,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAA;AAEnD,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,OAAO,CAAC,MAAM,CAAyB;IAEvC,OAAO,CAAC,cAAc,CAA8B;qBAE7B,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAgBnD,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC;IAQjC,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAQ5C,OAAO;CASd"}
@@ -0,0 +1,43 @@
1
+ import TransportWebUSB from '@ledgerhq/hw-transport-webusb';
2
+ import TransportWebHID from '@ledgerhq/hw-transport-webhid';
3
+ import CosmosApp from '@ledgerhq/hw-app-cosmos';
4
+ import { LedgerCosmosException } from '@injectivelabs/exceptions';
5
+ import AccountManager from './AccountManager';
6
+ export default class LedgerTransport {
7
+ ledger = null;
8
+ accountManager = null;
9
+ static async getTransport() {
10
+ try {
11
+ if (await TransportWebHID.isSupported()) {
12
+ return await TransportWebHID.create();
13
+ }
14
+ if (await TransportWebUSB.isSupported()) {
15
+ return await TransportWebHID.create();
16
+ }
17
+ }
18
+ catch (e) {
19
+ throw new LedgerCosmosException(new Error(e.message));
20
+ }
21
+ return await TransportWebHID.create();
22
+ }
23
+ async getInstance() {
24
+ if (!this.ledger) {
25
+ this.ledger = new CosmosApp((await LedgerTransport.getTransport()));
26
+ }
27
+ return this.ledger;
28
+ }
29
+ async getAccountManager() {
30
+ if (!this.accountManager) {
31
+ this.accountManager = new AccountManager(await this.getInstance());
32
+ }
33
+ return this.accountManager;
34
+ }
35
+ async refresh() {
36
+ if (!this.ledger) {
37
+ return new LedgerTransport();
38
+ }
39
+ this.ledger.transport.close();
40
+ return new LedgerTransport();
41
+ }
42
+ }
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/strategy/LedgerCosmos/hw/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,+BAA+B,CAAA;AAC3D,OAAO,eAAe,MAAM,+BAA+B,CAAA;AAC3D,OAAO,SAAS,MAAM,yBAAyB,CAAA;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,OAAO,OAAO,eAAe;IAC1B,MAAM,GAAqB,IAAI,CAAA;IAE/B,cAAc,GAA0B,IAAI,CAAA;IAE1C,MAAM,CAAC,KAAK,CAAC,YAAY;QACjC,IAAI,CAAC;YACH,IAAI,MAAM,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxC,OAAO,MAAM,eAAe,CAAC,MAAM,EAAE,CAAA;YACvC,CAAC;YAED,IAAI,MAAM,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxC,OAAO,MAAM,eAAe,CAAC,MAAM,EAAE,CAAA;YACvC,CAAC;QACH,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,qBAAqB,CAAC,IAAI,KAAK,CAAE,CAAS,CAAC,OAAO,CAAC,CAAC,CAAA;QAChE,CAAC;QAED,OAAO,MAAM,eAAe,CAAC,MAAM,EAAE,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,CAAC,MAAM,eAAe,CAAC,YAAY,EAAE,CAAQ,CAAC,CAAA;QAC5E,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QACpE,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,IAAI,eAAe,EAAE,CAAA;QAC9B,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QAE7B,OAAO,IAAI,eAAe,EAAE,CAAA;IAC9B,CAAC;CACF"}
@@ -0,0 +1,37 @@
1
+ import { ChainId, AccountAddress, EthereumChainId } from '@injectivelabs/ts-types';
2
+ import { TxRaw, TxResponse, AminoSignResponse, DirectSignResponse } from '@injectivelabs/sdk-ts';
3
+ import { StdSignDoc, WalletDeviceType, BaseConcreteStrategy, ConcreteWalletStrategy, SendTransactionOptions } from '@injectivelabs/wallet-base';
4
+ export declare class LedgerCosmos extends BaseConcreteStrategy implements ConcreteWalletStrategy {
5
+ private baseDerivationPath;
6
+ private ledger;
7
+ constructor(args: {
8
+ chainId: ChainId;
9
+ });
10
+ getWalletDeviceType(): Promise<WalletDeviceType>;
11
+ enable(): Promise<boolean>;
12
+ disconnect(): Promise<void>;
13
+ getAddresses(): Promise<string[]>;
14
+ getSessionOrConfirm(address: AccountAddress): Promise<string>;
15
+ sendEthereumTransaction(_txData: any, _options: {
16
+ address: string;
17
+ ethereumChainId: EthereumChainId;
18
+ }): Promise<string>;
19
+ sendTransaction(transaction: TxRaw, options: SendTransactionOptions): Promise<TxResponse>;
20
+ signAminoCosmosTransaction(transaction: {
21
+ address: string;
22
+ signDoc: StdSignDoc;
23
+ }): Promise<AminoSignResponse>;
24
+ signCosmosTransaction(_transaction: {
25
+ txRaw: TxRaw;
26
+ accountNumber: number;
27
+ chainId: string;
28
+ address: string;
29
+ }): Promise<DirectSignResponse>;
30
+ signEip712TypedData(_eip712Json: string, _address: AccountAddress): Promise<string>;
31
+ signArbitrary(signer: AccountAddress, data: string | Uint8Array): Promise<string>;
32
+ getEthereumChainId(): Promise<string>;
33
+ getEthereumTransactionReceipt(_txHash: string): Promise<string>;
34
+ getPubKey(address?: string): Promise<string>;
35
+ private getWalletForAddress;
36
+ }
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/strategy/LedgerCosmos/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,cAAc,EACd,eAAe,EAChB,MAAM,yBAAyB,CAAA;AAQhC,OAAO,EACL,KAAK,EAGL,UAAU,EAEV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,UAAU,EAEV,gBAAgB,EAChB,oBAAoB,EAIpB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,4BAA4B,CAAA;AAKnC,qBAAa,YACX,SAAQ,oBACR,YAAW,sBAAsB;IAEjC,OAAO,CAAC,kBAAkB,CAAQ;IAElC,OAAO,CAAC,MAAM,CAAU;gBAEZ,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;IAOhC,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIhD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAInB,UAAU;IAIV,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBxC,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ7D,uBAAuB,CAC3B,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAA;QACf,eAAe,EAAE,eAAe,CAAA;KACjC,GACA,OAAO,CAAC,MAAM,CAAC;IAYZ,eAAe,CACnB,WAAW,EAAE,KAAK,EAClB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,UAAU,CAAC;IAyBhB,0BAA0B,CAAC,WAAW,EAAE;QAC5C,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,UAAU,CAAA;KACpB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4BxB,qBAAqB,CAAC,YAAY,EAAE;QACxC,KAAK,EAAE,KAAK,CAAA;QACZ,aAAa,EAAE,MAAM,CAAA;QACrB,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;KAChB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAUzB,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC;IAUZ,aAAa,CACjB,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,GAAG,UAAU,GACxB,OAAO,CAAC,MAAM,CAAC;IAiBZ,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAUrC,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU/D,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAcpC,mBAAmB;CAkClC"}
@@ -0,0 +1,153 @@
1
+ import { ErrorType, LedgerCosmosException, TransactionException, UnspecifiedErrorCode, WalletException, } from '@injectivelabs/exceptions';
2
+ import { toUtf8, TxGrpcApi, sortObjectByKeys, } from '@injectivelabs/sdk-ts';
3
+ import { WalletAction, WalletDeviceType, BaseConcreteStrategy, DEFAULT_BASE_DERIVATION_PATH, DEFAULT_ADDRESS_SEARCH_LIMIT, DEFAULT_NUM_ADDRESSES_TO_FETCH, } from '@injectivelabs/wallet-base';
4
+ import LedgerHW from './hw';
5
+ import { CosmosWalletException } from '@injectivelabs/exceptions';
6
+ export class LedgerCosmos extends BaseConcreteStrategy {
7
+ baseDerivationPath;
8
+ ledger;
9
+ constructor(args) {
10
+ super(args);
11
+ this.baseDerivationPath = DEFAULT_BASE_DERIVATION_PATH;
12
+ this.ledger = new LedgerHW();
13
+ }
14
+ async getWalletDeviceType() {
15
+ return Promise.resolve(WalletDeviceType.Hardware);
16
+ }
17
+ async enable() {
18
+ return Promise.resolve(true);
19
+ }
20
+ async disconnect() {
21
+ this.ledger = await this.ledger.refresh();
22
+ }
23
+ async getAddresses() {
24
+ const { baseDerivationPath } = this;
25
+ try {
26
+ const accountManager = await this.ledger.getAccountManager();
27
+ const wallets = await accountManager.getWallets(baseDerivationPath);
28
+ return wallets.map((k) => k.address);
29
+ }
30
+ catch (e) {
31
+ throw new LedgerCosmosException(new Error(e.message), {
32
+ code: UnspecifiedErrorCode,
33
+ type: ErrorType.WalletError,
34
+ contextModule: WalletAction.GetAccounts,
35
+ });
36
+ }
37
+ }
38
+ async getSessionOrConfirm(address) {
39
+ return Promise.resolve(`0x${Buffer.from(`Confirmation for ${address} at time: ${Date.now()}`).toString('hex')}`);
40
+ }
41
+ async sendEthereumTransaction(_txData, _options) {
42
+ throw new CosmosWalletException(new Error('sendEthereumTransaction is not supported. LedgerCosmos only supports sending cosmos transactions'), {
43
+ code: UnspecifiedErrorCode,
44
+ context: WalletAction.SendEthereumTransaction,
45
+ });
46
+ }
47
+ async sendTransaction(transaction, options) {
48
+ const { endpoints, txTimeout } = options;
49
+ if (!endpoints) {
50
+ throw new WalletException(new Error('You have to pass endpoints.grpc within the options for using LedgerCosmos wallet'));
51
+ }
52
+ const txApi = new TxGrpcApi(endpoints.grpc);
53
+ const response = await txApi.broadcast(transaction, { txTimeout });
54
+ if (response.code !== 0) {
55
+ throw new TransactionException(new Error(response.rawLog), {
56
+ code: UnspecifiedErrorCode,
57
+ contextCode: response.code,
58
+ contextModule: response.codespace,
59
+ });
60
+ }
61
+ return response;
62
+ }
63
+ async signAminoCosmosTransaction(transaction) {
64
+ try {
65
+ const { derivationPath } = await this.getWalletForAddress(transaction.address);
66
+ const ledger = await this.ledger.getInstance();
67
+ const result = await ledger.sign(derivationPath, JSON.stringify(sortObjectByKeys(transaction.signDoc)));
68
+ return {
69
+ signed: undefined,
70
+ signature: {
71
+ signature: Buffer.from(result.signature).toString('base64'),
72
+ pub_key: undefined,
73
+ },
74
+ };
75
+ }
76
+ catch (e) {
77
+ throw new LedgerCosmosException(new Error(e.message), {
78
+ code: UnspecifiedErrorCode,
79
+ type: ErrorType.WalletError,
80
+ contextModule: WalletAction.SignTransaction,
81
+ });
82
+ }
83
+ }
84
+ async signCosmosTransaction(_transaction) {
85
+ throw new CosmosWalletException(new Error('This wallet does not support signing using direct sign'), {
86
+ code: UnspecifiedErrorCode,
87
+ context: WalletAction.SendTransaction,
88
+ });
89
+ }
90
+ async signEip712TypedData(_eip712Json, _address) {
91
+ throw new CosmosWalletException(new Error('This wallet does not support signing Ethereum transactions'), {
92
+ code: UnspecifiedErrorCode,
93
+ context: WalletAction.SendTransaction,
94
+ });
95
+ }
96
+ async signArbitrary(signer, data) {
97
+ try {
98
+ const { derivationPath } = await this.getWalletForAddress(signer);
99
+ const ledger = await this.ledger.getInstance();
100
+ const result = await ledger.sign(derivationPath, toUtf8(data));
101
+ return Buffer.from(result.signature).toString('base64');
102
+ }
103
+ catch (e) {
104
+ throw new LedgerCosmosException(new Error(e.message), {
105
+ code: UnspecifiedErrorCode,
106
+ type: ErrorType.WalletError,
107
+ contextModule: WalletAction.SignTransaction,
108
+ });
109
+ }
110
+ }
111
+ async getEthereumChainId() {
112
+ throw new CosmosWalletException(new Error('getEthereumChainId is not supported on Keplr'), {
113
+ code: UnspecifiedErrorCode,
114
+ context: WalletAction.GetChainId,
115
+ });
116
+ }
117
+ async getEthereumTransactionReceipt(_txHash) {
118
+ throw new CosmosWalletException(new Error('getEthereumTransactionReceipt is not supported on Keplr'), {
119
+ code: UnspecifiedErrorCode,
120
+ context: WalletAction.GetEthereumTransactionReceipt,
121
+ });
122
+ }
123
+ async getPubKey(address) {
124
+ if (!address) {
125
+ throw new WalletException(new Error('You can only fetch PubKey corresponding to an address'));
126
+ }
127
+ const ledgerWalletInfo = await this.getWalletForAddress(address);
128
+ return Buffer.from(ledgerWalletInfo.publicKey || '', 'hex').toString('base64');
129
+ }
130
+ async getWalletForAddress(address) {
131
+ try {
132
+ const { baseDerivationPath } = this;
133
+ const accountManager = await this.ledger.getAccountManager();
134
+ if (!accountManager.hasWalletForAddress(address)) {
135
+ for (let i = 0; i < DEFAULT_ADDRESS_SEARCH_LIMIT / DEFAULT_NUM_ADDRESSES_TO_FETCH; i += 1) {
136
+ await accountManager.getWallets(baseDerivationPath);
137
+ if (accountManager.hasWalletForAddress(address)) {
138
+ return (await accountManager.getWalletForAddress(address));
139
+ }
140
+ }
141
+ }
142
+ return (await accountManager.getWalletForAddress(address));
143
+ }
144
+ catch (e) {
145
+ throw new LedgerCosmosException(new Error(e.message), {
146
+ code: UnspecifiedErrorCode,
147
+ type: ErrorType.WalletError,
148
+ contextModule: WalletAction.GetAccounts,
149
+ });
150
+ }
151
+ }
152
+ }
153
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/strategy/LedgerCosmos/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type HDNode from 'hdkey';
2
+ export declare enum LedgerDerivationPathType {
3
+ LedgerLive = "ledger-live",
4
+ LedgerMew = "ledger-mew"
5
+ }
6
+ export interface LedgerWalletInfo {
7
+ address: string;
8
+ baseDerivationPath: string;
9
+ derivationPath: string;
10
+ hdKey?: HDNode;
11
+ publicKey?: string;
12
+ }
13
+ export declare enum WalletLedger {
14
+ Ledger = "ledger",
15
+ LedgerCosmos = "ledger-cosmos",
16
+ LedgerLegacy = "ledger-legacy"
17
+ }
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,OAAO,CAAA;AAE/B,oBAAY,wBAAwB;IAClC,UAAU,gBAAgB;IAC1B,SAAS,eAAe;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,kBAAkB,EAAE,MAAM,CAAA;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,oBAAY,YAAY;IACtB,MAAM,WAAW;IACjB,YAAY,kBAAkB;IAC9B,YAAY,kBAAkB;CAC/B"}
@@ -0,0 +1,12 @@
1
+ export var LedgerDerivationPathType;
2
+ (function (LedgerDerivationPathType) {
3
+ LedgerDerivationPathType["LedgerLive"] = "ledger-live";
4
+ LedgerDerivationPathType["LedgerMew"] = "ledger-mew";
5
+ })(LedgerDerivationPathType || (LedgerDerivationPathType = {}));
6
+ export var WalletLedger;
7
+ (function (WalletLedger) {
8
+ WalletLedger["Ledger"] = "ledger";
9
+ WalletLedger["LedgerCosmos"] = "ledger-cosmos";
10
+ WalletLedger["LedgerLegacy"] = "ledger-legacy";
11
+ })(WalletLedger || (WalletLedger = {}));
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,wBAGX;AAHD,WAAY,wBAAwB;IAClC,sDAA0B,CAAA;IAC1B,oDAAwB,CAAA;AAC1B,CAAC,EAHW,wBAAwB,KAAxB,wBAAwB,QAGnC;AAUD,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,8CAA8B,CAAA;IAC9B,8CAA8B,CAAA;AAChC,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB"}