@reown/appkit-utils
Version:
The full stack toolkit to build onchain app UX.
80 lines • 2.68 kB
JavaScript
export const DEFAULT_METHODS = {
solana: [
'solana_signMessage',
'solana_signTransaction',
'solana_requestAccounts',
'solana_getAccounts',
'solana_signAllTransactions',
'solana_signAndSendTransaction'
],
eip155: [
'eth_accounts',
'eth_requestAccounts',
'eth_sendRawTransaction',
'eth_sign',
'eth_signTransaction',
'eth_signTypedData',
'eth_signTypedData_v3',
'eth_signTypedData_v4',
'eth_sendTransaction',
'personal_sign',
'wallet_switchEthereumChain',
'wallet_addEthereumChain',
'wallet_getPermissions',
'wallet_requestPermissions',
'wallet_registerOnboarding',
'wallet_watchAsset',
'wallet_scanQRCode',
'wallet_getCallsStatus',
'wallet_showCallsStatus',
'wallet_sendCalls',
'wallet_getCapabilities',
'wallet_grantPermissions',
'wallet_revokePermissions',
'wallet_getAssets'
],
bip122: ['sendTransfer', 'signMessage', 'signPsbt', 'getAccountAddresses']
};
const solanaChainIds = {
mainnet: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',
deprecatedMainnet: '4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ',
devnet: 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1',
deprecatedDevnet: '8E9rvCKLFQia2Y35HXjjpWzj8weVo44K'
};
export function getMethodsByChainNamespace(chainNamespace) {
return DEFAULT_METHODS[chainNamespace] || [];
}
export function createDefaultNamespace(chainNamespace) {
return {
methods: getMethodsByChainNamespace(chainNamespace),
events: ['accountsChanged', 'chainChanged'],
chains: [],
rpcMap: {}
};
}
export function createNamespaces(caipNetworks) {
return caipNetworks.reduce((acc, chain) => {
const { id, chainNamespace, rpcUrls } = chain;
const rpcUrl = rpcUrls.default.http[0];
if (!acc[chainNamespace]) {
acc[chainNamespace] = createDefaultNamespace(chainNamespace);
}
const caipNetworkId = `${chainNamespace}:${id}`;
const namespace = acc[chainNamespace];
namespace?.chains.push(caipNetworkId);
switch (caipNetworkId) {
case solanaChainIds.mainnet:
namespace.chains.push(solanaChainIds.deprecatedMainnet);
break;
case solanaChainIds.devnet:
namespace.chains.push(solanaChainIds.deprecatedDevnet);
break;
default:
}
if (namespace?.rpcMap && rpcUrl) {
namespace.rpcMap[id] = rpcUrl;
}
return acc;
}, {});
}
//# sourceMappingURL=WCNamespaceUtil.js.map