@hyperlane-xyz/widgets 31.1.0 → 31.2.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.
- package/dist/walletIntegrations/accountUtils.d.ts.map +1 -1
- package/dist/walletIntegrations/accountUtils.js +2 -8
- package/dist/walletIntegrations/accountUtils.js.map +1 -1
- package/dist/walletIntegrations/multiProtocol.d.ts +1 -0
- package/dist/walletIntegrations/multiProtocol.d.ts.map +1 -1
- package/dist/walletIntegrations/multiProtocol.js +1 -0
- package/dist/walletIntegrations/multiProtocol.js.map +1 -1
- package/dist/walletIntegrations/solana.d.ts.map +1 -1
- package/dist/walletIntegrations/solana.js +46 -8
- package/dist/walletIntegrations/solana.js.map +1 -1
- package/dist/walletIntegrations/walletAddresses.d.ts +8 -0
- package/dist/walletIntegrations/walletAddresses.d.ts.map +1 -0
- package/dist/walletIntegrations/walletAddresses.js +46 -0
- package/dist/walletIntegrations/walletAddresses.js.map +1 -0
- package/package.json +13 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountUtils.d.ts","sourceRoot":"","sources":["../../src/walletIntegrations/accountUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,iBAAiB,EAEvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"accountUtils.d.ts","sourceRoot":"","sources":["../../src/walletIntegrations/accountUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,iBAAiB,EAEvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,uBAAuB,EACtC,SAAS,CAAC,EAAE,SAAS,EACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAChD,OAAO,GAAG,SAAS,CAKrB;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,CAAC,EAAE,WAAW,EACrB,SAAS,CAAC,EAAE,SAAS,UAiCtB;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,uBAAuB,EACtC,SAAS,CAAC,EAAE,SAAS,EACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAChD;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAA;CAAE,CAMnE"}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
import { cosmoshub } from '@hyperlane-xyz/registry';
|
|
2
2
|
import { ProtocolType, } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { getAddressForChain } from './walletAddresses.js';
|
|
3
4
|
export function getAccountAddressForChain(multiProvider, chainName, accounts) {
|
|
4
5
|
if (!chainName || !accounts)
|
|
5
6
|
return undefined;
|
|
6
7
|
const protocol = multiProvider.getProtocol(chainName);
|
|
7
8
|
const account = accounts[protocol];
|
|
8
|
-
|
|
9
|
-
protocol === ProtocolType.CosmosNative) {
|
|
10
|
-
return account?.addresses.find((a) => a.chainName === chainName)?.address;
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
// Use first because only cosmos has the notion of per-chain addresses
|
|
14
|
-
return account?.addresses[0]?.address;
|
|
15
|
-
}
|
|
9
|
+
return getAddressForChain(account?.addresses, protocol, chainName);
|
|
16
10
|
}
|
|
17
11
|
export function getAddressFromAccountAndChain(account, chainName) {
|
|
18
12
|
if (!account) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountUtils.js","sourceRoot":"","sources":["../../src/walletIntegrations/accountUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD,OAAO,EAIL,YAAY,GACb,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"accountUtils.js","sourceRoot":"","sources":["../../src/walletIntegrations/accountUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD,OAAO,EAIL,YAAY,GACb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,UAAU,yBAAyB,CACvC,aAAsC,EACtC,SAAqB,EACrB,QAAiD;IAEjD,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,OAAqB,EACrB,SAAqB;IAErB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,mEAAmE;IACnE,iEAAiE;IACjE,mEAAmE;IACnE,+BAA+B;IAC/B,IACE,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC,MAAM;QACxC,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC,YAAY,EAC9C,CAAC;QACD,sDAAsD;QACtD,wDAAwD;QACxD,gBAAgB;QAChB,MAAM,aAAa,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CACjC,EAAE,OAAO,CAAC;QAEX,8DAA8D;QAC9D,yCAAyC;QACzC,OAAO,CACL,aAAa;YACb,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC;gBAC7D,EAAE,OAAO;YACX,SAAS,CACV,CAAC;IACJ,CAAC;IAED,sDAAsD;IACtD,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,SAAS,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,aAAsC,EACtC,SAAqB,EACrB,QAAiD;IAEjD,MAAM,OAAO,GAAG,yBAAyB,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9E,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAChD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { useAccounts, useAccountForChain, useAccountAddressForChain, } from './accounts.js';
|
|
2
2
|
export { getAccountAddressAndPubKey, getAccountAddressForChain, getAddressFromAccountAndChain, } from './accountUtils.js';
|
|
3
|
+
export { getAddressForChain, useWalletAddressForChainAndProtocol, useWalletAddressesByProtocol, } from './walletAddresses.js';
|
|
3
4
|
export { useActiveChains } from './activeChains.js';
|
|
4
5
|
export { useConnectFns } from './connectFns.js';
|
|
5
6
|
export { useDisconnectFns } from './disconnectFns.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiProtocol.d.ts","sourceRoot":"","sources":["../../src/walletIntegrations/multiProtocol.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"multiProtocol.d.ts","sourceRoot":"","sources":["../../src/walletIntegrations/multiProtocol.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,mCAAmC,EACnC,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { useAccounts, useAccountForChain, useAccountAddressForChain, } from './accounts.js';
|
|
2
2
|
export { getAccountAddressAndPubKey, getAccountAddressForChain, getAddressFromAccountAndChain, } from './accountUtils.js';
|
|
3
|
+
export { getAddressForChain, useWalletAddressForChainAndProtocol, useWalletAddressesByProtocol, } from './walletAddresses.js';
|
|
3
4
|
export { useActiveChains } from './activeChains.js';
|
|
4
5
|
export { useConnectFns } from './connectFns.js';
|
|
5
6
|
export { useDisconnectFns } from './disconnectFns.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiProtocol.js","sourceRoot":"","sources":["../../src/walletIntegrations/multiProtocol.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"multiProtocol.js","sourceRoot":"","sources":["../../src/walletIntegrations/multiProtocol.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,mCAAmC,EACnC,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/walletIntegrations/solana.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/walletIntegrations/solana.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AAS9F,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,sBAAsB,IAAI,gBAAgB,CAMzD;AAED,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,oBAAoB,GACnC,aAAa,CASf;AAED,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,oBAAoB,GAClC,mBAAmB,CAyGrB"}
|
|
@@ -2,6 +2,7 @@ import { useWallet } from '@solana/wallet-adapter-react';
|
|
|
2
2
|
import { Connection } from '@solana/web3.js';
|
|
3
3
|
import { useCallback } from 'react';
|
|
4
4
|
import { ProviderType, } from '@hyperlane-xyz/sdk/providers/ProviderType';
|
|
5
|
+
import { sleep } from '@hyperlane-xyz/utils';
|
|
5
6
|
import { widgetLogger } from '../logger.js';
|
|
6
7
|
const logger = widgetLogger.child({ module: 'walletIntegrations/solana' });
|
|
7
8
|
export { useSolanaAccount, useSolanaActiveChain, useSolanaConnectFn, useSolanaDisconnectFn, useSolanaWalletDetails, } from './solanaWallet.js';
|
|
@@ -27,18 +28,55 @@ export function useSolanaTransactionFns(multiProvider) {
|
|
|
27
28
|
await switchNetwork(chainName);
|
|
28
29
|
const rpcUrl = multiProvider.getRpcUrl(chainName);
|
|
29
30
|
const connection = new Connection(rpcUrl, 'confirmed');
|
|
30
|
-
const { context: { slot: minContextSlot }, value: {
|
|
31
|
+
const { context: { slot: minContextSlot }, value: { lastValidBlockHeight }, } = await connection.getLatestBlockhashAndContext();
|
|
31
32
|
logger.debug(`Sending tx on chain ${chainName}`);
|
|
32
33
|
const signature = await sendSolTransaction(tx.transaction, connection, {
|
|
33
34
|
minContextSlot,
|
|
34
35
|
});
|
|
35
|
-
const confirm = () =>
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
const confirm = async () => {
|
|
37
|
+
// Poll via HTTP instead of connection.confirmTransaction which
|
|
38
|
+
// relies on signatureSubscribe (WebSocket) — many RPC providers
|
|
39
|
+
// (e.g. Alchemy) don't support that method.
|
|
40
|
+
const POLL_INTERVAL_MS = 2000;
|
|
41
|
+
while (true) {
|
|
42
|
+
try {
|
|
43
|
+
const { value } = await connection.getSignatureStatuses([
|
|
44
|
+
signature,
|
|
45
|
+
]);
|
|
46
|
+
const status = value?.[0];
|
|
47
|
+
if (status?.err) {
|
|
48
|
+
throw new Error(`Transaction failed: ${JSON.stringify(status.err)}`);
|
|
49
|
+
}
|
|
50
|
+
if (status?.confirmationStatus === 'confirmed' ||
|
|
51
|
+
status?.confirmationStatus === 'finalized') {
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
const blockHeight = await connection.getBlockHeight();
|
|
55
|
+
if (blockHeight > lastValidBlockHeight) {
|
|
56
|
+
throw new Error('Transaction expired: block height exceeded');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
// Re-throw definitive failures (tx error, expiry)
|
|
61
|
+
if (error instanceof Error &&
|
|
62
|
+
(error.message.startsWith('Transaction failed') ||
|
|
63
|
+
error.message.startsWith('Transaction expired'))) {
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
// Tolerate transient RPC errors (timeouts, rate limits)
|
|
67
|
+
logger.warn('Transient error polling tx confirmation', error);
|
|
68
|
+
}
|
|
69
|
+
await sleep(POLL_INTERVAL_MS);
|
|
70
|
+
}
|
|
71
|
+
const tx = await connection.getTransaction(signature, {
|
|
72
|
+
commitment: 'confirmed',
|
|
73
|
+
maxSupportedTransactionVersion: 0,
|
|
74
|
+
});
|
|
75
|
+
if (!tx) {
|
|
76
|
+
throw new Error(`Transaction ${signature} confirmed but not found`);
|
|
77
|
+
}
|
|
78
|
+
return { type: ProviderType.SolanaWeb3, receipt: tx };
|
|
79
|
+
};
|
|
42
80
|
return { hash: signature, confirm };
|
|
43
81
|
}, [switchNetwork, sendSolTransaction, multiProvider]);
|
|
44
82
|
const onMultiSendTx = useCallback(async ({ txs: _, chainName: __, activeChainName: ___, }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../src/walletIntegrations/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EACL,YAAY,GAEb,MAAM,2CAA2C,CAAC;AAMnD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAQ5C,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC;AAC3E,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,UAAU,sBAAsB;IACpC,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,EAAE,SAAoB,EAAE,EAAE;QACjE,MAAM,CAAC,IAAI,CAAC,mDAAmD,SAAS,EAAE,CAAC,CAAC;IAC9E,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,cAAoC;IAEpC,MAAM,UAAU,GAAG,WAAW,CAC5B,KAAK,EAAE,MAAsB,EAAE,gBAA2B,EAAE,EAAE;QAC5D,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC,EACD,EAAE,CACH,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,aAAmC;IAEnC,MAAM,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,SAAS,EAAE,CAAC;IAC5D,MAAM,EAAE,aAAa,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAEnD,MAAM,QAAQ,GAAG,WAAW,CAC1B,KAAK,EAAE,EACL,EAAE,EACF,SAAS,EACT,eAAe,GAKhB,EAAE,EAAE;QACH,IAAI,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC,UAAU;YACrC,MAAM,IAAI,KAAK,CAAC,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,IAAI,eAAe,IAAI,eAAe,KAAK,SAAS;YAClD,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvD,MAAM,EACJ,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EACjC,KAAK,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../src/walletIntegrations/solana.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MinimalProviderRegistry } from '@hyperlane-xyz/sdk/providers/MinimalProviderRegistry';
|
|
2
|
+
import type { ChainName } from '@hyperlane-xyz/sdk/types';
|
|
3
|
+
import { ProtocolType } from '@hyperlane-xyz/utils';
|
|
4
|
+
import { type ChainAddress } from './types.js';
|
|
5
|
+
export declare function getAddressForChain(addresses: ChainAddress[] | undefined, protocol?: ProtocolType, chainName?: ChainName): string | undefined;
|
|
6
|
+
export declare function useWalletAddressesByProtocol(multiProvider: MinimalProviderRegistry): Map<ProtocolType, ChainAddress[]>;
|
|
7
|
+
export declare function useWalletAddressForChainAndProtocol(multiProvider: MinimalProviderRegistry, chainName?: ChainName, protocol?: ProtocolType): string | undefined;
|
|
8
|
+
//# sourceMappingURL=walletAddresses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletAddresses.d.ts","sourceRoot":"","sources":["../../src/walletIntegrations/walletAddresses.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAA0B,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG5E,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAajE,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,YAAY,EAAE,GAAG,SAAS,EACrC,QAAQ,CAAC,EAAE,YAAY,EACvB,SAAS,CAAC,EAAE,SAAS,sBActB;AAED,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,uBAAuB,GACrC,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC,CAYnC;AAED,wBAAgB,mCAAmC,CACjD,aAAa,EAAE,uBAAuB,EACtC,SAAS,CAAC,EAAE,SAAS,EACrB,QAAQ,CAAC,EAAE,YAAY,sBAWxB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { ProtocolType } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { useAccounts } from './accounts.js';
|
|
4
|
+
const WALLET_ADDRESS_PROTOCOLS = [
|
|
5
|
+
ProtocolType.Ethereum,
|
|
6
|
+
ProtocolType.Sealevel,
|
|
7
|
+
ProtocolType.Cosmos,
|
|
8
|
+
ProtocolType.CosmosNative,
|
|
9
|
+
ProtocolType.Starknet,
|
|
10
|
+
ProtocolType.Radix,
|
|
11
|
+
ProtocolType.Aleo,
|
|
12
|
+
ProtocolType.Tron,
|
|
13
|
+
];
|
|
14
|
+
export function getAddressForChain(addresses, protocol, chainName) {
|
|
15
|
+
if (!addresses?.length)
|
|
16
|
+
return undefined;
|
|
17
|
+
const chainAddress = addresses.find((address) => address.chainName === chainName)?.address;
|
|
18
|
+
if (protocol === ProtocolType.Cosmos ||
|
|
19
|
+
protocol === ProtocolType.CosmosNative) {
|
|
20
|
+
return chainAddress;
|
|
21
|
+
}
|
|
22
|
+
// Intentional fallback: non-Cosmos wallets often reuse one address across chains.
|
|
23
|
+
return chainAddress ?? addresses[0]?.address;
|
|
24
|
+
}
|
|
25
|
+
export function useWalletAddressesByProtocol(multiProvider) {
|
|
26
|
+
const { accounts } = useAccounts(multiProvider);
|
|
27
|
+
return useMemo(() => {
|
|
28
|
+
const map = new Map();
|
|
29
|
+
for (const protocol of WALLET_ADDRESS_PROTOCOLS) {
|
|
30
|
+
const account = accounts[protocol];
|
|
31
|
+
if (!account.addresses.length)
|
|
32
|
+
continue;
|
|
33
|
+
map.set(protocol, account.addresses);
|
|
34
|
+
}
|
|
35
|
+
return map;
|
|
36
|
+
}, [accounts]);
|
|
37
|
+
}
|
|
38
|
+
export function useWalletAddressForChainAndProtocol(multiProvider, chainName, protocol) {
|
|
39
|
+
const walletAddresses = useWalletAddressesByProtocol(multiProvider);
|
|
40
|
+
return useMemo(() => {
|
|
41
|
+
if (!chainName || !protocol)
|
|
42
|
+
return undefined;
|
|
43
|
+
return getAddressForChain(walletAddresses.get(protocol), protocol, chainName);
|
|
44
|
+
}, [chainName, protocol, walletAddresses]);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=walletAddresses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletAddresses.js","sourceRoot":"","sources":["../../src/walletIntegrations/walletAddresses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,EAA0B,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,MAAM,wBAAwB,GAAqC;IACjE,YAAY,CAAC,QAAQ;IACrB,YAAY,CAAC,QAAQ;IACrB,YAAY,CAAC,MAAM;IACnB,YAAY,CAAC,YAAY;IACzB,YAAY,CAAC,QAAQ;IACrB,YAAY,CAAC,KAAK;IAClB,YAAY,CAAC,IAAI;IACjB,YAAY,CAAC,IAAI;CAClB,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAChC,SAAqC,EACrC,QAAuB,EACvB,SAAqB;IAErB,IAAI,CAAC,SAAS,EAAE,MAAM;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CACjC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAC7C,EAAE,OAAO,CAAC;IACX,IACE,QAAQ,KAAK,YAAY,CAAC,MAAM;QAChC,QAAQ,KAAK,YAAY,CAAC,YAAY,EACtC,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,kFAAkF;IAClF,OAAO,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,aAAsC;IAEtC,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;IAEhD,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAgC,CAAC;QACpD,KAAK,MAAM,QAAQ,IAAI,wBAAwB,EAAE,CAAC;YAChD,MAAM,OAAO,GAAgB,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM;gBAAE,SAAS;YACxC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,aAAsC,EACtC,SAAqB,EACrB,QAAuB;IAEvB,MAAM,eAAe,GAAG,4BAA4B,CAAC,aAAa,CAAC,CAAC;IACpE,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC9C,OAAO,kBAAkB,CACvB,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAC7B,QAAQ,EACR,SAAS,CACV,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;AAC7C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperlane-xyz/widgets",
|
|
3
|
-
"version": "31.
|
|
3
|
+
"version": "31.2.0",
|
|
4
4
|
"description": "Common react components for Hyperlane projects",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Components",
|
|
@@ -23,6 +23,10 @@
|
|
|
23
23
|
"default": "./dist/index.js"
|
|
24
24
|
},
|
|
25
25
|
"./styles.css": "./dist/styles.css",
|
|
26
|
+
"./animations/*": {
|
|
27
|
+
"types": "./dist/animations/*.d.ts",
|
|
28
|
+
"default": "./dist/animations/*.js"
|
|
29
|
+
},
|
|
26
30
|
"./chains/*": {
|
|
27
31
|
"types": "./dist/chains/*.d.ts",
|
|
28
32
|
"default": "./dist/chains/*.js"
|
|
@@ -87,13 +91,13 @@
|
|
|
87
91
|
"viem": "^2.21.45",
|
|
88
92
|
"wagmi": "^2.12.26",
|
|
89
93
|
"yaml": "2.4.5",
|
|
90
|
-
"@hyperlane-xyz/aleo-sdk": "31.
|
|
91
|
-
"@hyperlane-xyz/
|
|
92
|
-
"@hyperlane-xyz/
|
|
93
|
-
"@hyperlane-xyz/
|
|
94
|
-
"@hyperlane-xyz/sdk": "
|
|
95
|
-
"@hyperlane-xyz/
|
|
96
|
-
"@hyperlane-xyz/
|
|
94
|
+
"@hyperlane-xyz/aleo-sdk": "31.2.0",
|
|
95
|
+
"@hyperlane-xyz/radix-sdk": "31.2.0",
|
|
96
|
+
"@hyperlane-xyz/cosmos-sdk": "31.2.0",
|
|
97
|
+
"@hyperlane-xyz/sdk": "31.2.0",
|
|
98
|
+
"@hyperlane-xyz/tron-sdk": "22.1.13",
|
|
99
|
+
"@hyperlane-xyz/utils": "31.2.0",
|
|
100
|
+
"@hyperlane-xyz/provider-sdk": "4.3.3"
|
|
97
101
|
},
|
|
98
102
|
"devDependencies": {
|
|
99
103
|
"@chakra-ui/react": "^2.8.2",
|
|
@@ -123,7 +127,7 @@
|
|
|
123
127
|
"tailwindcss": "^3.4.13",
|
|
124
128
|
"typescript": "6.0.2",
|
|
125
129
|
"vite": "^5.1.1",
|
|
126
|
-
"@hyperlane-xyz/tsconfig": "^31.
|
|
130
|
+
"@hyperlane-xyz/tsconfig": "^31.2.0"
|
|
127
131
|
},
|
|
128
132
|
"peerDependencies": {
|
|
129
133
|
"react": "^18",
|