Skip to content

Commit 57c8654

Browse files
Merge branch 'feature/support-solana-ledger-and-wallet-connect'
* feature/support-solana-ledger-and-wallet-connect: make solana wallet connect working temp commit # Conflicts: # wallets/ledger/package.json
2 parents 763ba77 + f707f5a commit 57c8654

File tree

35 files changed

+611
-330
lines changed

35 files changed

+611
-330
lines changed

.eslintrc.json

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,32 +16,19 @@
1616
"ecmaVersion": "latest",
1717
"sourceType": "module"
1818
},
19-
"plugins": [
20-
"@typescript-eslint",
21-
"simple-import-sort",
22-
"unused-imports"
23-
],
19+
"plugins": ["@typescript-eslint", "simple-import-sort", "unused-imports"],
2420
"rules": {
25-
"indent": [
26-
"error",
27-
2
28-
],
21+
"indent": ["error", 2],
2922
"quotes": [
3023
"error",
31-
"single",
24+
"double",
3225
{
3326
"avoidEscape": true,
3427
"allowTemplateLiterals": true
3528
}
3629
],
37-
"quote-props": [
38-
"error",
39-
"as-needed"
40-
],
41-
"semi": [
42-
"error",
43-
"always"
44-
],
30+
"quote-props": ["error", "as-needed"],
31+
"semi": ["error", "always"],
4532
"simple-import-sort/imports": 1,
4633
"simple-import-sort/exports": 1,
4734
"unused-imports/no-unused-imports": 1,
@@ -60,4 +47,4 @@
6047
"no-implicit-globals": 0,
6148
"@typescript-eslint/no-unsafe-declaration-merging": 0
6249
}
63-
}
50+
}

examples/react/src/main.tsx

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ import {
4949
createStarshipAssetList,
5050
} from "./utils/osmo-test-net.ts";
5151
import { create } from "domain";
52+
import {
53+
createSolanaAssetList,
54+
createSolanaChain,
55+
} from "./utils/solana-test-net.ts";
5256

5357
const chainNames: string[] = [
5458
// "injectivetestnet",
@@ -61,7 +65,7 @@ const chainNames: string[] = [
6165
// "seitestnet2",
6266
// "ethereum",
6367
// "cosmoshubtestnet",
64-
"solana",
68+
// "solana",
6569
];
6670
// const chainNames = ["osmosistestnet"];
6771
// const chainNames = ["cosmoshub"];
@@ -149,17 +153,10 @@ const _chains = [
149153
// "http://localhost:26657",
150154
// "http://localhost:1317"
151155
// ),
152-
].map((c) => {
153-
if (c.chainName === "solana") {
154-
c.chainId = "4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ";
155-
}
156-
/**
157-
* 主网:solana:4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ(或简化为 solana:mainnet)
158-
测试网:solana:8E9rvCKLFYuNbobMWfCabm7Kkm2PzQw6A6FMnH7nL5V(或 solana:devnet)
159-
开发网:solana:EtWTRABZaYq6iMfeAkw(或 solana:devnet)
160-
*/
161-
return c;
162-
});
156+
// createSolanaChain("devnet"),
157+
// createSolanaChain("testnet"),
158+
createSolanaChain("mainnet-beta"),
159+
];
163160
// const _chains = [starshipChain1]
164161
const _assetLists = [
165162
...assetLists.filter((a) => chainNames.includes(a.chainName)),
@@ -168,6 +165,9 @@ const _assetLists = [
168165
// createAssetListFromEthereumChainInfo(sepoliaEthereumTestNet),
169166
// createAssetListFromEthereumChainInfo(HOLESKY_TESTNET),
170167
// createStarshipAssetList("osmosis"),
168+
// createSolanaAssetList("devnet"),
169+
// createSolanaAssetList("testnet"),
170+
createSolanaAssetList("mainnet-beta"),
171171
];
172172

173173
// const mock1Wallet = new MockWallet(wallet1Mnemonic, _chains, {
@@ -186,7 +186,7 @@ if (isInstanceOf(keplrWallet, ExtensionWallet)) {
186186
preferNoSetFee: false,
187187
});
188188
}
189-
189+
// console.log(_chains);
190190
const _wallets: BaseWallet[] = [
191191
// mock1Wallet,
192192
// mock2Wallet,
@@ -199,7 +199,7 @@ const _wallets: BaseWallet[] = [
199199
// ledgerWallet,
200200
// cosmosExtensionMetaMask,
201201
// walletConnect,
202-
ledgerWallet,
202+
// ledgerWallet,
203203
// leapCosmosExtensionMetaMask,
204204
// compassWallet,
205205
// trustWallet,
@@ -258,6 +258,9 @@ ReactDOM.createRoot(document.getElementById("root")!).render(
258258
// injectivetestnet: {
259259
// rpc: ["https://testnet.explorer.injective.network/"],
260260
// },
261+
solana: {
262+
rpc: ["https://api.devnet.solana.com"],
263+
},
261264
},
262265
}}
263266
>

examples/react/src/pages/all-wallets.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,19 @@ import {
1313
useWalletManager,
1414
useWalletModal,
1515
} from "@interchain-kit/react";
16-
import { useEffect, useRef, useState } from "react";
16+
import { useRef, useState } from "react";
1717
import { makeKeplrChainInfo } from "../utils";
1818
import { Chain, Asset, AssetList } from "@chain-registry/types";
1919
import { coins } from "@cosmjs/amino";
2020
import { ChainInfo } from "@keplr-wallet/types";
2121
import { getBalance } from "interchainjs/cosmos/bank/v1beta1/query.rpc.func";
2222
import QRCode from "react-qr-code";
2323
import { send } from "interchainjs/cosmos/bank/v1beta1/tx.rpc.func";
24-
import { RpcClient } from "@interchainjs/cosmos/query/rpc";
2524
import { ethers } from "ethers";
2625

2726
import {
2827
Connection,
2928
PublicKey,
30-
clusterApiUrl,
3129
Transaction,
3230
SystemProgram,
3331
} from "@solana/web3.js";
@@ -75,7 +73,7 @@ const BalanceTd = ({ address, wallet, chain, assetList }: BalanceProps) => {
7573
balance = { balance: { amount: result.toString() } };
7674
}
7775
if (chain.chainType === "solana") {
78-
const connection = new Connection(clusterApiUrl("testnet"), "confirmed");
76+
const connection = new Connection(rpcEndpoint as string, "confirmed");
7977
const result = await connection.getBalance(new PublicKey(address));
8078
balance = { balance: { amount: result.toString() } };
8179
}
@@ -194,7 +192,7 @@ const SendTokenTd = ({ wallet, address, chain }: SendTokenProps) => {
194192
}
195193

196194
if (chain.chainType === "solana") {
197-
const connection = new Connection(clusterApiUrl("testnet"), "confirmed");
195+
const connection = new Connection(rpcEndpoint as string, "confirmed");
198196

199197
// 1. 构建转账指令
200198
const transaction = new Transaction().add(
@@ -215,8 +213,8 @@ const SendTokenTd = ({ wallet, address, chain }: SendTokenProps) => {
215213
// console.log(signed);
216214

217215
const solanaWallet = wallet.getWalletOfType(SolanaWallet);
216+
218217
const signed = await solanaWallet.signTransaction(transaction);
219-
console.log(signed);
220218

221219
// 4. 发送交易
222220
const signature = await connection.sendRawTransaction(signed.serialize());
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import { Chain, AssetList } from '@chain-registry/types';
2+
import { chain, assetList } from '@chain-registry/v2/mainnet/solana'
3+
4+
5+
/**
6+
* 主网:solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp(或简化为 solana:mainnet)
7+
* 测试网:solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1(或 solana:testnet)
8+
* 开发网:solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z(或 solana:devnet)
9+
*/
10+
11+
export const createSolanaChain = (networkType: 'mainnet-beta' | 'devnet' | 'testnet' = 'devnet'): Chain => {
12+
const newChain = { ...chain }
13+
if (networkType === 'mainnet-beta') {
14+
15+
newChain.chainName = 'solanamainnet';
16+
newChain.chainId = '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp';
17+
newChain.apis = {
18+
rpc: [
19+
{
20+
// address: 'https://api.mainnet-beta.solana.com',
21+
address: 'https://api.devnet.solana.com',
22+
}
23+
]
24+
}
25+
26+
27+
}
28+
if (networkType === 'testnet') {
29+
30+
newChain.chainName = 'solanatestnet';
31+
newChain.chainId = 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1';
32+
newChain.apis = {
33+
rpc: [
34+
{
35+
address: 'https://api.testnet.solana.com',
36+
}
37+
]
38+
}
39+
40+
}
41+
if (networkType === 'devnet') {
42+
43+
newChain.chainName = 'solanadevnet';
44+
newChain.chainId = '4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z';
45+
newChain.apis = {
46+
rpc: [
47+
{
48+
address: 'https://api.devnet.solana.com',
49+
}
50+
]
51+
}
52+
}
53+
return newChain
54+
55+
};
56+
57+
export const createSolanaAssetList = (networkType: 'mainnet-beta' | 'devnet' | 'testnet' = 'devnet'): AssetList => {
58+
const a = { ...assetList }
59+
if (networkType === 'mainnet-beta') {
60+
a.chainName = 'solanamainnet'
61+
}
62+
if (networkType === 'testnet') {
63+
a.chainName = 'solanatestnet'
64+
}
65+
if (networkType === 'devnet') {
66+
a.chainName = 'solanadevnet'
67+
}
68+
return a
69+
}

examples/react/vite.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export default defineConfig({
2222
},
2323
server: {
2424
// host: '3ac5-36-229-52-247.ngrok-free.app',
25-
allowedHosts: ['hyperweb-wallet.hyperweb.dpdns.org'],
25+
allowedHosts: ['hyperweb-wallet.hyperweb.dpdns.org', '801ed07aaec1.ngrok-free.app'],
2626
host: '0.0.0.0',
2727
port: 5173,
2828
hmr: true

packages/core/__tests__/wallets/solana-wallet.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ describe('SolanaWallet', () => {
5050
toBytes: jest.fn().mockReturnValue(new Uint8Array([1, 2, 3])),
5151
},
5252
request: jest.fn(),
53+
on: jest.fn(),
5354
signAllTransactions: jest.fn().mockImplementation((transactions: any[]) => transactions),
5455
signAndSendAllTransactions: jest.fn().mockImplementation((transactions: any[]) => ({ signatures: ['sig1'] })),
5556
signAndSendTransaction: jest.fn().mockImplementation((transaction: any) => ({ signature: 'sig1' })),
@@ -78,8 +79,10 @@ describe('SolanaWallet', () => {
7879

7980
describe('bindingEvent', () => {
8081
it('should bind keystore change event', () => {
82+
// Set up the solana client first
83+
wallet.solana = mockSolanaClient;
8184
wallet.bindingEvent();
82-
expect((global as any).window.addEventListener).toHaveBeenCalledWith('keystorechange', expect.any(Function));
85+
expect(mockSolanaClient.on).toHaveBeenCalledWith('keystorechange', expect.any(Function));
8386
});
8487
});
8588

packages/core/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"base64-js": "^1.5.1",
4949
"bowser": "^2.11.0",
5050
"buffer": "^6.0.3",
51+
"bs58": "^6.0.0",
5152
"chain-registry": "^2.0.1",
5253
"interchainjs": "1.17.3",
5354
"long": "^5.2.3",

packages/core/src/constant/icon.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export const WalletConnectIcon = "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxyYWRpYWxHcmFkaWVudCBpZD0iYSIgY3g9IjAlIiBjeT0iNTAlIiByPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1ZDlkZjYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDZmZmYiLz48L3JhZGlhbEdyYWRpZW50PjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggZD0ibTI1NiAwYzE0MS4zODQ4OTYgMCAyNTYgMTE0LjYxNTEwNCAyNTYgMjU2cy0xMTQuNjE1MTA0IDI1Ni0yNTYgMjU2LTI1Ni0xMTQuNjE1MTA0LTI1Ni0yNTYgMTE0LjYxNTEwNC0yNTYgMjU2LTI1NnoiIGZpbGw9InVybCgjYSkiLz48cGF0aCBkPSJtNjQuNjkxNzU1OCAzNy43MDg4Mjk4YzUxLjUzMjgwNzItNTAuMjc4NDM5NyAxMzUuMDgzOTk0Mi01MC4yNzg0Mzk3IDE4Ni42MTY3OTkyIDBsNi4yMDIwNTcgNi4wNTEwOTA2YzIuNTc2NjQgMi41MTM5MjE4IDIuNTc2NjQgNi41ODk3OTQ4IDAgOS4xMDM3MTc3bC0yMS4yMTU5OTggMjAuNjk5NTc1OWMtMS4yODgzMjEgMS4yNTY5NjE5LTMuMzc3MSAxLjI1Njk2MTktNC42NjU0MjEgMGwtOC41MzQ3NjYtOC4zMjcwMjA1Yy0zNS45NTA1NzMtMzUuMDc1NDk2Mi05NC4yMzc5NjktMzUuMDc1NDk2Mi0xMzAuMTg4NTQ0IDBsLTkuMTQwMDI4MiA4LjkxNzU1MTljLTEuMjg4MzIxNyAxLjI1Njk2MDktMy4zNzcxMDE2IDEuMjU2OTYwOS00LjY2NTQyMDggMGwtMjEuMjE1OTk3My0yMC42OTk1NzU5Yy0yLjU3NjY0MDMtMi41MTM5MjI5LTIuNTc2NjQwMy02LjU4OTc5NTggMC05LjEwMzcxNzd6bTIzMC40OTM0ODUyIDQyLjgwODkxMTcgMTguODgyMjc5IDE4LjQyMjcyNjJjMi41NzY2MjcgMi41MTM5MTAzIDIuNTc2NjQyIDYuNTg5NzU5My4wMDAwMzIgOS4xMDM2ODYzbC04NS4xNDE0OTggODMuMDcwMzU4Yy0yLjU3NjYyMyAyLjUxMzk0MS02Ljc1NDE4MiAyLjUxMzk2OS05LjMzMDg0LjAwMDA2Ni0uMDAwMDEtLjAwMDAxLS4wMDAwMjMtLjAwMDAyMy0uMDAwMDMzLS4wMDAwMzRsLTYwLjQyODI1Ni01OC45NTc0NTFjLS42NDQxNi0uNjI4NDgxLTEuNjg4NTUtLjYyODQ4MS0yLjMzMjcxIDAtLjAwMDAwNC4wMDAwMDQtLjAwMDAwOC4wMDAwMDctLjAwMDAxMi4wMDAwMTFsLTYwLjQyNjk2ODMgNTguOTU3NDA4Yy0yLjU3NjYxNDEgMi41MTM5NDctNi43NTQxNzQ2IDIuNTEzOTktOS4zMzA4NDA4LjAwMDA5Mi0uMDAwMDE1MS0uMDAwMDE0LS4wMDAwMzA5LS4wMDAwMjktLjAwMDA0NjctLjAwMDA0NmwtODUuMTQzODY3NzQtODMuMDcxNDYzYy0yLjU3NjYzOTI4LTIuNTEzOTIxLTIuNTc2NjM5MjgtNi41ODk3OTUgMC05LjEwMzcxNjNsMTguODgyMzEyNjQtMTguNDIyNjk1NWMyLjU3NjYzOTMtMi41MTM5MjIyIDYuNzU0MTk5My0yLjUxMzkyMjIgOS4zMzA4Mzk3IDBsNjAuNDI5MTM0NyA1OC45NTgyNzU4Yy42NDQxNjA4LjYyODQ4IDEuNjg4NTQ5NS42Mjg0OCAyLjMzMjcxMDMgMCAuMDAwMDA5NS0uMDAwMDA5LjAwMDAxODItLjAwMDAxOC4wMDAwMjc3LS4wMDAwMjVsNjAuNDI2MTA2NS01OC45NTgyNTA4YzIuNTc2NTgxLTIuNTEzOTggNi43NTQxNDItMi41MTQwNzQzIDkuMzMwODQtLjAwMDIxMDMuMDAwMDM3LjAwMDAzNTQuMDAwMDcyLjAwMDA3MDkuMDAwMTA3LjAwMDEwNjNsNjAuNDI5MDU2IDU4Ljk1ODM1NDhjLjY0NDE1OS42Mjg0NzkgMS42ODg1NDkuNjI4NDc5IDIuMzMyNzA5IDBsNjAuNDI4MDc5LTU4Ljk1NzE5MjVjMi41NzY2NC0yLjUxMzkyMzEgNi43NTQxOTktMi41MTM5MjMxIDkuMzMwODM5IDB6IiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDk4IDE2MCkiLz48L2c+PC9zdmc+"
1+
export const WalletConnectIcon = 'data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxyYWRpYWxHcmFkaWVudCBpZD0iYSIgY3g9IjAlIiBjeT0iNTAlIiByPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1ZDlkZjYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDZmZmYiLz48L3JhZGlhbEdyYWRpZW50PjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggZD0ibTI1NiAwYzE0MS4zODQ4OTYgMCAyNTYgMTE0LjYxNTEwNCAyNTYgMjU2cy0xMTQuNjE1MTA0IDI1Ni0yNTYgMjU2LTI1Ni0xMTQuNjE1MTA0LTI1Ni0yNTYgMTE0LjYxNTEwNC0yNTYgMjU2LTI1NnoiIGZpbGw9InVybCgjYSkiLz48cGF0aCBkPSJtNjQuNjkxNzU1OCAzNy43MDg4Mjk4YzUxLjUzMjgwNzItNTAuMjc4NDM5NyAxMzUuMDgzOTk0Mi01MC4yNzg0Mzk3IDE4Ni42MTY3OTkyIDBsNi4yMDIwNTcgNi4wNTEwOTA2YzIuNTc2NjQgMi41MTM5MjE4IDIuNTc2NjQgNi41ODk3OTQ4IDAgOS4xMDM3MTc3bC0yMS4yMTU5OTggMjAuNjk5NTc1OWMtMS4yODgzMjEgMS4yNTY5NjE5LTMuMzc3MSAxLjI1Njk2MTktNC42NjU0MjEgMGwtOC41MzQ3NjYtOC4zMjcwMjA1Yy0zNS45NTA1NzMtMzUuMDc1NDk2Mi05NC4yMzc5NjktMzUuMDc1NDk2Mi0xMzAuMTg4NTQ0IDBsLTkuMTQwMDI4MiA4LjkxNzU1MTljLTEuMjg4MzIxNyAxLjI1Njk2MDktMy4zNzcxMDE2IDEuMjU2OTYwOS00LjY2NTQyMDggMGwtMjEuMjE1OTk3My0yMC42OTk1NzU5Yy0yLjU3NjY0MDMtMi41MTM5MjI5LTIuNTc2NjQwMy02LjU4OTc5NTggMC05LjEwMzcxNzd6bTIzMC40OTM0ODUyIDQyLjgwODkxMTcgMTguODgyMjc5IDE4LjQyMjcyNjJjMi41NzY2MjcgMi41MTM5MTAzIDIuNTc2NjQyIDYuNTg5NzU5My4wMDAwMzIgOS4xMDM2ODYzbC04NS4xNDE0OTggODMuMDcwMzU4Yy0yLjU3NjYyMyAyLjUxMzk0MS02Ljc1NDE4MiAyLjUxMzk2OS05LjMzMDg0LjAwMDA2Ni0uMDAwMDEtLjAwMDAxLS4wMDAwMjMtLjAwMDAyMy0uMDAwMDMzLS4wMDAwMzRsLTYwLjQyODI1Ni01OC45NTc0NTFjLS42NDQxNi0uNjI4NDgxLTEuNjg4NTUtLjYyODQ4MS0yLjMzMjcxIDAtLjAwMDAwNC4wMDAwMDQtLjAwMDAwOC4wMDAwMDctLjAwMDAxMi4wMDAwMTFsLTYwLjQyNjk2ODMgNTguOTU3NDA4Yy0yLjU3NjYxNDEgMi41MTM5NDctNi43NTQxNzQ2IDIuNTEzOTktOS4zMzA4NDA4LjAwMDA5Mi0uMDAwMDE1MS0uMDAwMDE0LS4wMDAwMzA5LS4wMDAwMjktLjAwMDA0NjctLjAwMDA0NmwtODUuMTQzODY3NzQtODMuMDcxNDYzYy0yLjU3NjYzOTI4LTIuNTEzOTIxLTIuNTc2NjM5MjgtNi41ODk3OTUgMC05LjEwMzcxNjNsMTguODgyMzEyNjQtMTguNDIyNjk1NWMyLjU3NjYzOTMtMi41MTM5MjIyIDYuNzU0MTk5My0yLjUxMzkyMjIgOS4zMzA4Mzk3IDBsNjAuNDI5MTM0NyA1OC45NTgyNzU4Yy42NDQxNjA4LjYyODQ4IDEuNjg4NTQ5NS42Mjg0OCAyLjMzMjcxMDMgMCAuMDAwMDA5NS0uMDAwMDA5LjAwMDAxODItLjAwMDAxOC4wMDAwMjc3LS4wMDAwMjVsNjAuNDI2MTA2NS01OC45NTgyNTA4YzIuNTc2NTgxLTIuNTEzOTggNi43NTQxNDItMi41MTQwNzQzIDkuMzMwODQtLjAwMDIxMDMuMDAwMDM3LjAwMDAzNTQuMDAwMDcyLjAwMDA3MDkuMDAwMTA3LjAwMDEwNjNsNjAuNDI5MDU2IDU4Ljk1ODM1NDhjLjY0NDE1OS42Mjg0NzkgMS42ODg1NDkuNjI4NDc5IDIuMzMyNzA5IDBsNjAuNDI4MDc5LTU4Ljk1NzE5MjVjMi41NzY2NC0yLjUxMzkyMzEgNi43NTQxOTktMi41MTM5MjMxIDkuMzMwODM5IDB6IiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDk4IDE2MCkiLz48L2c+PC9zdmc+';
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export * from './icon'
1+
export * from './icon';

packages/core/src/types/cosmos.ts

Lines changed: 70 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { AminoSignResponse, CosmosSignerConfig, DirectSignResponse } from "@interchainjs/cosmos";
2-
import { StdSignDoc } from "@interchainjs/types";
3-
import { WalletAccount, DirectSignDoc } from "./wallet";
1+
import { CosmosSignerConfig } from '@interchainjs/cosmos';
2+
3+
import { DirectSignDoc, WalletAccount } from './wallet';
44

55
export interface OfflineAminoSigner {
66
getAccounts: () => Promise<readonly WalletAccount[]>;
@@ -14,4 +14,71 @@ export interface OfflineDirectSigner {
1414

1515
export interface CosmosSigningOptions {
1616
cosmosSignerConfig: CosmosSignerConfig
17+
}
18+
19+
export interface Pubkey {
20+
type: string;
21+
value: string;
22+
}
23+
24+
export interface StdSignature {
25+
pub_key: Pubkey;
26+
signature: string;
27+
}
28+
29+
export interface TxRaw {
30+
bodyBytes: Uint8Array;
31+
authInfoBytes: Uint8Array;
32+
signatures: Uint8Array[];
33+
}
34+
export interface SignDoc {
35+
bodyBytes: Uint8Array;
36+
authInfoBytes: Uint8Array;
37+
chainId: string;
38+
accountNumber: bigint;
39+
}
40+
export interface Coin {
41+
denom: string;
42+
amount: string;
43+
}
44+
export interface StdFee {
45+
amount: Coin[];
46+
gas: string;
47+
granter?: string;
48+
payer?: string;
49+
}
50+
export interface AminoMessage {
51+
type: string;
52+
value: any;
53+
}
54+
export interface StdSignDoc {
55+
chain_id: string;
56+
account_number: string;
57+
sequence: string;
58+
fee: StdFee;
59+
msgs: AminoMessage[];
60+
memo: string;
61+
}
62+
export type TypeName = string;
63+
64+
export interface DirectSignResponse {
65+
/**
66+
* The sign doc that was signed.
67+
* This may be different from the input signDoc when the signer modifies it as part of the signing process.
68+
*/
69+
signed: SignDoc;
70+
/** Signature object with public key and signature */
71+
signature: StdSignature;
72+
}
73+
/**
74+
* Response from amino signing
75+
*/
76+
export interface AminoSignResponse {
77+
/**
78+
* The sign doc that was signed.
79+
* This may be different from the input signDoc when the signer modifies it as part of the signing process.
80+
*/
81+
signed: StdSignDoc;
82+
/** Signature object with public key and signature */
83+
signature: StdSignature;
1784
}

0 commit comments

Comments
 (0)