@rango-dev/provider-safepal 0.63.0 → 0.63.1-next.1

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/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # [0.63.0](https://github.com/rango-exchange/rango-client/compare/provider-safepal@0.62.0...provider-safepal@0.63.0) (2026-07-28)
2
+
3
+
4
+
1
5
  # [0.62.0](https://github.com/rango-exchange/rango-client/compare/provider-safepal@0.61.0...provider-safepal@0.62.0) (2026-07-07)
2
6
 
3
7
 
package/dist/mod.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- declare const versions: () => readonly [readonly ["0.0.0", import("@rango-dev/wallets-core/legacy").LegacyProviderInterface], readonly ["1.0.0", import("@hub3js/core").Provider<Record<"evm", import("@hub3js/evm").EvmActions>>]];
1
+ declare const versions: () => readonly [readonly ["1.0.0", import("@hub3js/core").Provider<Record<"evm", import("@hub3js/evm").EvmActions>>]];
2
2
  export { versions };
3
3
  //# sourceMappingURL=mod.d.ts.map
package/dist/mod.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,QAAQ,6MAIF,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,QAAQ,uHAC8C,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,CAAC"}
package/dist/mod.js CHANGED
@@ -1,2 +1,2 @@
1
- var x=Object.defineProperty;var o=(e,t)=>x(e,"name",{value:t,configurable:!0});import{defineVersions as se}from"@hub3js/core/utils";import{LegacyNetworks as l}from"@rango-dev/wallets-core/legacy";import{canSwitchNetworkToEvm as C,chooseInstance as h,getEvmAccounts as B,subscribeToEvm as R,switchNetworkForEvm as F,WalletTypes as V}from"@rango-dev/wallets-shared";import{evmBlockchains as g,solanaBlockchain as w}from"rango-types";import{dynamicImportWithRefinedError as k,getNetworkInstance as T,Networks as I}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as M,TransactionType as N}from"rango-types";async function i(e){let t=T(e,I.ETHEREUM),r=new M,{DefaultEvmSigner:n}=await k(async()=>await import("@rango-dev/signer-evm"));return r.registerSigner(N.EVM,new n(t)),r}o(i,"getSigners");import{LegacyNetworks as d}from"@rango-dev/wallets-core/legacy";import{isEvmAddress as L}from"@rango-dev/wallets-shared";function a(){let{safepalProvider:e}=window;if(!e)return null;let t=new Map;return e&&t.set(d.ETHEREUM,e),t}o(a,"safepal");function s(){let t=a()?.get(d.ETHEREUM);if(!t)throw new Error("Safepal not injected or EVM not enabled. Please check your wallet.");return t}o(s,"evmSafepal");function f(){let e=a();if(!e)throw new Error("Trust Wallet is not injected. Please check your wallet.");return e}o(f,"getInstanceOrThrow");function u(e){let t=e.split(":")[2];return L(t)}o(u,"isValidEvmAddress");var W=V.SAFEPAL,j={type:W,defaultNetwork:l.ETHEREUM},U=a,H=o(async({instance:e,meta:t})=>{let r=h(e,t,l.ETHEREUM),n=[];if(r){let P=await B(r);n.push(P)}return n},"connect"),_=o(e=>{let t,r=h(e.instance,e.meta,l.ETHEREUM);return r&&(t=R({...e,instance:r})),()=>{t&&t()}},"subscribe"),D=F,O=C,z=i,q=o(e=>{let t=g(e),r=w(e);return{name:"SafePal",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa",BRAVE:"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa",FIREFOX:"https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet",DEFAULT:"https://www.safepal.com/download"},color:"#4A21EF",supportedChains:[...t,...r],needsNamespace:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:n=>g(n)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:n=>w(n)}]}}},"getWalletInfo"),v=o(()=>({config:j,getInstance:U,connect:H,subscribe:_,switchNetwork:D,canSwitchNetworkTo:O,getSigners:z,getWalletInfo:q}),"buildLegacyProvider");import{ProviderBuilder as ae}from"@hub3js/core";import{evmBlockchains as X,hyperliquidBlockchain as Y}from"rango-types";var c="safepal",E={name:"SafePal",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa",brave:"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa",firefox:"https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet",homepage:"https://www.safepal.com/download"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:e=>[...X(e),...Y(e)]}]}},{name:"signers",value:{getSigners:async()=>i(f())}}]};import{ActionBuilder as G,NamespaceBuilder as J}from"@hub3js/core";import{actions as m,builders as p}from"@hub3js/evm";import*as b from"@hub3js/std/builders";import{connectAndUpdateStateForMultiNetworks as K,intoConnecting as Q,intoConnectionFinished as Z,standardizeAndThrowError as $}from"@hub3js/std/operators";var[ee,S]=p.changeAccountSubscriber(s).build(),te=new G("connect").action(m.connect(s)).before(ee).before(Q).and((e,t)=>{if(t.accounts.some(r=>!u(r)))throw new Error("Non valid EVM address returned from wallet");return t}).and(K).after(Z).or(S).or($).build(),oe=b.disconnect().after(S).build(),re=p.canSwitchNetwork().action(m.canSwitchNetwork()).build(),ne=p.getChainId().action(m.getChainId(s)).build(),y=new J("EVM",c).action(te).action(oe).action(re).action(ne).build();var ie=1e3,A=o(()=>new ae(c).init(function(e){setTimeout(()=>{if(a()){let[,t]=e.state();t("installed",!0),console.debug("[safepal] instance detected.",e)}},ie)}).config("metadata",E).add("evm",y).build(),"buildProvider");var Oe=o(()=>se().version("0.0.0",v()).version("1.0.0",A()).build(),"versions");export{Oe as versions};
1
+ var E=Object.defineProperty;var o=(e,t)=>E(e,"name",{value:t,configurable:!0});import{defineVersions as z}from"@hub3js/core/utils";import{ProviderBuilder as F}from"@hub3js/core";import{evmBlockchains as M,hyperliquidBlockchain as T}from"rango-types";import{EVM_NAMESPACE as b}from"@hub3js/namespaces";import{dynamicImportWithRefinedError as A,getNetworkInstance as P}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as S,TransactionType as y}from"rango-types";async function s(e){let t=P(e,b),r=new S,{DefaultEvmSigner:h}=await A(async()=>await import("@rango-dev/signer-evm"));return r.registerSigner(y.EVM,new h(t)),r}o(s,"getSigners");import{EVM_NAMESPACE as l}from"@hub3js/namespaces";import{isEvmAddress as x}from"@rango-dev/wallets-shared";function n(){let{safepalProvider:e}=window;if(!e)return null;let t=new Map;return e&&t.set(l,e),t}o(n,"safepal");function i(){let t=n()?.get(l);if(!t)throw new Error("Safepal not injected or EVM not enabled. Please check your wallet.");return t}o(i,"evmSafepal");function d(){let e=n();if(!e)throw new Error("Trust Wallet is not injected. Please check your wallet.");return e}o(d,"getInstanceOrThrow");function p(e){let t=e.split(":")[2];return x(t)}o(p,"isValidEvmAddress");var a="safepal",f={name:"SafePal",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa",brave:"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa",firefox:"https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet",homepage:"https://www.safepal.com/download"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:e=>[...M(e),...T(e)]}]}},{name:"signers",value:{getSigners:async()=>s(d())}}]};import{ActionBuilder as I,NamespaceBuilder as N}from"@hub3js/core";import{actions as c,builders as m}from"@hub3js/evm";import*as u from"@hub3js/std/builders";import{connectAndUpdateStateForMultiNetworks as V,intoConnecting as k,intoConnectionFinished as C,standardizeAndThrowError as _}from"@hub3js/std/operators";var[j,g]=m.changeAccountSubscriber(i).build(),B=new I("connect").action(c.connect(i)).before(j).before(k).and((e,t)=>{if(t.accounts.some(r=>!p(r)))throw new Error("Non valid EVM address returned from wallet");return t}).and(V).after(C).or(g).or(_).build(),L=u.disconnect().after(g).build(),D=m.canSwitchNetwork().action(c.canSwitchNetwork()).build(),W=m.getChainId().action(c.getChainId(i)).build(),v=new N("EVM",a).action(B).action(L).action(D).action(W).build();var O=1e3,w=o(()=>new F(a).init(function(e){setTimeout(()=>{if(n()){let[,t]=e.state();t("installed",!0),console.debug("[safepal] instance detected.",e)}},O)}).config("metadata",f).add("evm",v).build(),"buildProvider");var ve=o(()=>z().version("1.0.0",w()).build(),"versions");export{ve as versions};
2
2
  //# sourceMappingURL=mod.js.map
package/dist/mod.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/mod.ts", "../src/legacy/index.ts", "../src/signer.ts", "../src/utils.ts", "../src/provider.ts", "../src/constants.ts", "../src/namespaces/evm.ts"],
4
- "sourcesContent": ["import { defineVersions } from '@hub3js/core/utils';\n\nimport { buildLegacyProvider } from './legacy/index.js';\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions()\n .version('0.0.0', buildLegacyProvider())\n .version('1.0.0', buildProvider())\n .build();\n\nexport { versions };\n", "import type {\n CanSwitchNetwork,\n Connect,\n ProviderConnectResult,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport {\n type LegacyProviderInterface,\n LegacyNetworks as Networks,\n} from '@rango-dev/wallets-core/legacy';\nimport {\n canSwitchNetworkToEvm,\n chooseInstance,\n getEvmAccounts,\n subscribeToEvm,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { evmBlockchains, solanaBlockchain } from 'rango-types';\n\nimport signer from '../signer.js';\nimport { type Provider, safepal as safepal_instance } from '../utils.js';\n\nconst WALLET = WalletTypes.SAFEPAL;\n\nexport const config = {\n type: WALLET,\n defaultNetwork: Networks.ETHEREUM,\n};\n\nexport const getInstance = safepal_instance;\nexport const connect: Connect = async ({ instance, meta }) => {\n const ethInstance = chooseInstance(instance, meta, Networks.ETHEREUM);\n\n const results: ProviderConnectResult[] = [];\n\n if (ethInstance) {\n const evmResult = await getEvmAccounts(ethInstance);\n results.push(evmResult);\n }\n\n return results;\n};\n\nexport const subscribe: Subscribe = (options) => {\n let cleanup: ReturnType<Subscribe>;\n const ethInstance = chooseInstance(\n options.instance,\n options.meta,\n Networks.ETHEREUM\n );\n\n if (ethInstance) {\n cleanup = subscribeToEvm({ ...options, instance: ethInstance });\n }\n\n return () => {\n if (cleanup) {\n cleanup();\n }\n };\n};\n\nexport const switchNetwork: SwitchNetwork = switchNetworkForEvm;\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const getSigners: (provider: Provider) => Promise<SignerFactory> =\n signer;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n const solana = solanaBlockchain(allBlockChains);\n return {\n name: 'SafePal',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',\n FIREFOX:\n 'https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet',\n DEFAULT: 'https://www.safepal.com/download',\n },\n color: '#4A21EF',\n supportedChains: [...evms, ...solana],\n needsNamespace: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(allBlockchains),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n };\n};\n\nconst buildLegacyProvider: () => LegacyProviderInterface = () => ({\n config,\n getInstance,\n connect,\n subscribe,\n switchNetwork,\n canSwitchNetworkTo,\n getSigners,\n getWalletInfo,\n});\n\nexport { buildLegacyProvider };\n", "import type { Provider } from './utils.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n Networks,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-evm')\n );\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n return signers;\n}\n", "import type { ProviderAPI as EvmProviderApi } from '@hub3js/evm';\n\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\nimport { isEvmAddress } from '@rango-dev/wallets-shared';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Provider = Record<string, any>;\nexport function safepal(): Provider | null {\n const { safepalProvider: safePalEvm } = window;\n if (!safePalEvm) {\n return null;\n }\n const instances = new Map();\n if (safePalEvm) {\n instances.set(LegacyNetworks.ETHEREUM, safePalEvm);\n }\n\n return instances;\n}\n\nexport function evmSafepal(): EvmProviderApi {\n const instances = safepal();\n const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);\n if (!evmInstance) {\n throw new Error(\n 'Safepal not injected or EVM not enabled. Please check your wallet.'\n );\n }\n return evmInstance as EvmProviderApi;\n}\nexport function getInstanceOrThrow(): Provider {\n const instances = safepal();\n\n if (!instances) {\n throw new Error('Trust Wallet is not injected. Please check your wallet.');\n }\n\n return instances;\n}\n/**\n * Return true if address is a valid EVM address.\n * Accepts:\n * - all-lowercase or all-uppercase 0x-prefixed hex (non-checksummed - allowed)\n * - checksummed (mixed-case according to EIP-55)\n */\nexport function isValidEvmAddress(address: string): boolean {\n // Pick wallet address.\n const walletAddress = address.split(':')[2];\n\n return isEvmAddress(walletAddress);\n}\n", "import { ProviderBuilder } from '@hub3js/core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { safepal as safepalInstance } from './utils.js';\n\nconst WAIT_TO_LOAD_INSTANCE_DELAY = 1000;\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n setTimeout(() => {\n if (safepalInstance()) {\n const [, setState] = context.state();\n setState('installed', true);\n console.debug('[safepal] instance detected.', context);\n }\n }, WAIT_TO_LOAD_INSTANCE_DELAY);\n })\n\n .config('metadata', metadata)\n .add('evm', evm)\n .build();\n\nexport { buildProvider };\n", "import type { ProviderMetadata } from '@hub3js/core';\n\nimport {\n type BlockchainMeta,\n evmBlockchains,\n hyperliquidBlockchain,\n} from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'safepal';\nexport const metadata: ProviderMetadata = {\n name: 'SafePal',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',\n brave:\n 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',\n firefox:\n 'https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet',\n homepage: 'https://www.safepal.com/download',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) => [\n ...evmBlockchains(allBlockchains),\n ...hyperliquidBlockchain(allBlockchains),\n ],\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { EvmActions } from '@hub3js/evm';\n\nimport { ActionBuilder, NamespaceBuilder } from '@hub3js/core';\nimport { actions, builders } from '@hub3js/evm';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport {\n connectAndUpdateStateForMultiNetworks,\n intoConnecting,\n intoConnectionFinished,\n standardizeAndThrowError,\n} from '@hub3js/std/operators';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmSafepal, isValidEvmAddress } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmSafepal)\n .build();\n\n/**\n * Important: Keep this implementation in sync with wallets/core/src/namespaces/evm/builders\n */\nconst connect = new ActionBuilder<EvmActions, 'connect'>('connect')\n .action(actions.connect(evmSafepal))\n .before(changeAccountSubscriber)\n .before(intoConnecting)\n /*\n * Validate all accounts are valid EVM addresses\n * Sometimes wallets may return non-EVM addresses - this check prevents that\n */\n .and((_, args) => {\n if (args.accounts.some((account: string) => !isValidEvmAddress(account))) {\n throw new Error('Non valid EVM address returned from wallet');\n }\n\n return args;\n })\n .and(connectAndUpdateStateForMultiNetworks)\n .after(intoConnectionFinished)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<EvmActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst canSwitchNetwork = builders\n .canSwitchNetwork()\n .action(actions.canSwitchNetwork())\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmSafepal))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canSwitchNetwork)\n .action(getChainId)\n .build();\n\nexport { evm };\n"],
5
- "mappings": "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",
6
- "names": ["defineVersions", "Networks", "canSwitchNetworkToEvm", "chooseInstance", "getEvmAccounts", "subscribeToEvm", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "solanaBlockchain", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "__name", "LegacyNetworks", "isEvmAddress", "safepal", "safePalEvm", "instances", "LegacyNetworks", "__name", "evmSafepal", "evmInstance", "getInstanceOrThrow", "isValidEvmAddress", "address", "walletAddress", "isEvmAddress", "WALLET", "WalletTypes", "config", "Networks", "getInstance", "safepal", "connect", "__name", "instance", "meta", "ethInstance", "chooseInstance", "results", "evmResult", "getEvmAccounts", "subscribe", "options", "cleanup", "subscribeToEvm", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains", "solana", "solanaBlockchain", "allBlockchains", "buildLegacyProvider", "ProviderBuilder", "evmBlockchains", "hyperliquidBlockchain", "WALLET_ID", "metadata", "allBlockchains", "evmBlockchains", "hyperliquidBlockchain", "getSigners", "getInstanceOrThrow", "ActionBuilder", "NamespaceBuilder", "actions", "builders", "commonBuilders", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmSafepal", "connect", "ActionBuilder", "actions", "intoConnecting", "_", "args", "account", "isValidEvmAddress", "connectAndUpdateStateForMultiNetworks", "intoConnectionFinished", "standardizeAndThrowError", "disconnect", "canSwitchNetwork", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "WAIT_TO_LOAD_INSTANCE_DELAY", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "safepal", "setState", "metadata", "evm", "versions", "__name", "defineVersions", "buildLegacyProvider", "buildProvider"]
3
+ "sources": ["../src/mod.ts", "../src/provider.ts", "../src/constants.ts", "../src/signer.ts", "../src/utils.ts", "../src/namespaces/evm.ts"],
4
+ "sourcesContent": ["import { defineVersions } from '@hub3js/core/utils';\n\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions().version('1.0.0', buildProvider()).build();\n\nexport { versions };\n", "import { ProviderBuilder } from '@hub3js/core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { safepal as safepalInstance } from './utils.js';\n\nconst WAIT_TO_LOAD_INSTANCE_DELAY = 1000;\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n setTimeout(() => {\n if (safepalInstance()) {\n const [, setState] = context.state();\n setState('installed', true);\n console.debug('[safepal] instance detected.', context);\n }\n }, WAIT_TO_LOAD_INSTANCE_DELAY);\n })\n\n .config('metadata', metadata)\n .add('evm', evm)\n .build();\n\nexport { buildProvider };\n", "import type { ProviderMetadata } from '@hub3js/core';\n\nimport {\n type BlockchainMeta,\n evmBlockchains,\n hyperliquidBlockchain,\n} from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'safepal';\nexport const metadata: ProviderMetadata = {\n name: 'SafePal',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',\n brave:\n 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',\n firefox:\n 'https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet',\n homepage: 'https://www.safepal.com/download',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) => [\n ...evmBlockchains(allBlockchains),\n ...hyperliquidBlockchain(allBlockchains),\n ],\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { Provider } from './utils.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport { EVM_NAMESPACE } from '@hub3js/namespaces';\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, EVM_NAMESPACE);\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-evm')\n );\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n return signers;\n}\n", "import type { ProviderAPI as EvmProviderApi } from '@hub3js/evm';\n\nimport { EVM_NAMESPACE } from '@hub3js/namespaces';\nimport { isEvmAddress } from '@rango-dev/wallets-shared';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Provider = Record<string, any>;\nexport function safepal(): Provider | null {\n const { safepalProvider: safePalEvm } = window;\n if (!safePalEvm) {\n return null;\n }\n const instances = new Map();\n if (safePalEvm) {\n instances.set(EVM_NAMESPACE, safePalEvm);\n }\n\n return instances;\n}\n\nexport function evmSafepal(): EvmProviderApi {\n const instances = safepal();\n const evmInstance = instances?.get(EVM_NAMESPACE);\n if (!evmInstance) {\n throw new Error(\n 'Safepal not injected or EVM not enabled. Please check your wallet.'\n );\n }\n return evmInstance as EvmProviderApi;\n}\nexport function getInstanceOrThrow(): Provider {\n const instances = safepal();\n\n if (!instances) {\n throw new Error('Trust Wallet is not injected. Please check your wallet.');\n }\n\n return instances;\n}\n/**\n * Return true if address is a valid EVM address.\n * Accepts:\n * - all-lowercase or all-uppercase 0x-prefixed hex (non-checksummed - allowed)\n * - checksummed (mixed-case according to EIP-55)\n */\nexport function isValidEvmAddress(address: string): boolean {\n // Pick wallet address.\n const walletAddress = address.split(':')[2];\n\n return isEvmAddress(walletAddress);\n}\n", "import type { EvmActions } from '@hub3js/evm';\n\nimport { ActionBuilder, NamespaceBuilder } from '@hub3js/core';\nimport { actions, builders } from '@hub3js/evm';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport {\n connectAndUpdateStateForMultiNetworks,\n intoConnecting,\n intoConnectionFinished,\n standardizeAndThrowError,\n} from '@hub3js/std/operators';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmSafepal, isValidEvmAddress } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmSafepal)\n .build();\n\n/**\n * Important: Keep this implementation in sync with wallets/core/src/namespaces/evm/builders\n */\nconst connect = new ActionBuilder<EvmActions, 'connect'>('connect')\n .action(actions.connect(evmSafepal))\n .before(changeAccountSubscriber)\n .before(intoConnecting)\n /*\n * Validate all accounts are valid EVM addresses\n * Sometimes wallets may return non-EVM addresses - this check prevents that\n */\n .and((_, args) => {\n if (args.accounts.some((account: string) => !isValidEvmAddress(account))) {\n throw new Error('Non valid EVM address returned from wallet');\n }\n\n return args;\n })\n .and(connectAndUpdateStateForMultiNetworks)\n .after(intoConnectionFinished)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<EvmActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst canSwitchNetwork = builders\n .canSwitchNetwork()\n .action(actions.canSwitchNetwork())\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmSafepal))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canSwitchNetwork)\n .action(getChainId)\n .build();\n\nexport { evm };\n"],
5
+ "mappings": "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",
6
+ "names": ["defineVersions", "ProviderBuilder", "evmBlockchains", "hyperliquidBlockchain", "EVM_NAMESPACE", "dynamicImportWithRefinedError", "getNetworkInstance", "DefaultSignerFactory", "TxType", "getSigners", "provider", "ethProvider", "getNetworkInstance", "EVM_NAMESPACE", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "__name", "EVM_NAMESPACE", "isEvmAddress", "safepal", "safePalEvm", "instances", "EVM_NAMESPACE", "__name", "evmSafepal", "evmInstance", "getInstanceOrThrow", "isValidEvmAddress", "address", "walletAddress", "isEvmAddress", "WALLET_ID", "metadata", "allBlockchains", "evmBlockchains", "hyperliquidBlockchain", "getSigners", "getInstanceOrThrow", "ActionBuilder", "NamespaceBuilder", "actions", "builders", "commonBuilders", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmSafepal", "connect", "ActionBuilder", "actions", "intoConnecting", "_", "args", "account", "isValidEvmAddress", "connectAndUpdateStateForMultiNetworks", "intoConnectionFinished", "standardizeAndThrowError", "disconnect", "canSwitchNetwork", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "WAIT_TO_LOAD_INSTANCE_DELAY", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "safepal", "setState", "metadata", "evm", "versions", "__name", "defineVersions", "buildProvider"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rango-dev/provider-safepal",
3
- "version": "0.63.0",
3
+ "version": "0.63.1-next.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "source": "./src/mod.ts",
@@ -14,20 +14,21 @@
14
14
  "src"
15
15
  ],
16
16
  "scripts": {
17
- "build": "node ../../scripts/build/command.mjs --path wallets/provider-safepal --inputs src/mod.ts",
17
+ "build": "yarn run rangutopia library build",
18
18
  "ts-check": "tsc --declaration --emitDeclarationOnly -p ./tsconfig.json",
19
19
  "clean": "rimraf dist",
20
20
  "format": "prettier --write '{.,src}/**/*.{ts,tsx}'",
21
21
  "lint": "eslint \"**/*.{ts,tsx}\""
22
22
  },
23
23
  "dependencies": {
24
- "@hub3js/core": "^0.60.1",
25
- "@hub3js/evm": "^0.2.1",
26
- "@hub3js/std": "^0.1.1",
27
- "@rango-dev/signer-evm": "^0.44.0",
28
- "@rango-dev/signer-solana": "^0.48.0",
29
- "@rango-dev/wallets-core": "^0.60.0",
30
- "@rango-dev/wallets-shared": "^0.61.0",
24
+ "@hub3js/core": "^0.61.0",
25
+ "@hub3js/evm": "^0.3.0",
26
+ "@hub3js/namespaces": "^0.2.2",
27
+ "@hub3js/std": "^0.2.0",
28
+ "@rango-dev/signer-evm": "^0.44.1-next.0",
29
+ "@rango-dev/signer-solana": "^0.48.1-next.0",
30
+ "@rango-dev/wallets-core": "^0.60.1-next.3",
31
+ "@rango-dev/wallets-shared": "^0.61.1-next.4",
31
32
  "rango-types": "^0.5.0"
32
33
  },
33
34
  "publishConfig": {
package/src/mod.ts CHANGED
@@ -1,12 +1,8 @@
1
1
  import { defineVersions } from '@hub3js/core/utils';
2
2
 
3
- import { buildLegacyProvider } from './legacy/index.js';
4
3
  import { buildProvider } from './provider.js';
5
4
 
6
5
  const versions = () =>
7
- defineVersions()
8
- .version('0.0.0', buildLegacyProvider())
9
- .version('1.0.0', buildProvider())
10
- .build();
6
+ defineVersions().version('1.0.0', buildProvider()).build();
11
7
 
12
8
  export { versions };
package/src/signer.ts CHANGED
@@ -1,17 +1,17 @@
1
1
  import type { Provider } from './utils.js';
2
2
  import type { SignerFactory } from 'rango-types';
3
3
 
4
+ import { EVM_NAMESPACE } from '@hub3js/namespaces';
4
5
  import {
5
6
  dynamicImportWithRefinedError,
6
7
  getNetworkInstance,
7
- Networks,
8
8
  } from '@rango-dev/wallets-shared';
9
9
  import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
10
10
 
11
11
  export default async function getSigners(
12
12
  provider: Provider
13
13
  ): Promise<SignerFactory> {
14
- const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);
14
+ const ethProvider = getNetworkInstance(provider, EVM_NAMESPACE);
15
15
  const signers = new DefaultSignerFactory();
16
16
  const { DefaultEvmSigner } = await dynamicImportWithRefinedError(
17
17
  async () => await import('@rango-dev/signer-evm')
package/src/utils.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { ProviderAPI as EvmProviderApi } from '@hub3js/evm';
2
2
 
3
- import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
3
+ import { EVM_NAMESPACE } from '@hub3js/namespaces';
4
4
  import { isEvmAddress } from '@rango-dev/wallets-shared';
5
5
 
6
6
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -12,7 +12,7 @@ export function safepal(): Provider | null {
12
12
  }
13
13
  const instances = new Map();
14
14
  if (safePalEvm) {
15
- instances.set(LegacyNetworks.ETHEREUM, safePalEvm);
15
+ instances.set(EVM_NAMESPACE, safePalEvm);
16
16
  }
17
17
 
18
18
  return instances;
@@ -20,7 +20,7 @@ export function safepal(): Provider | null {
20
20
 
21
21
  export function evmSafepal(): EvmProviderApi {
22
22
  const instances = safepal();
23
- const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);
23
+ const evmInstance = instances?.get(EVM_NAMESPACE);
24
24
  if (!evmInstance) {
25
25
  throw new Error(
26
26
  'Safepal not injected or EVM not enabled. Please check your wallet.'
@@ -1,19 +0,0 @@
1
- import type { CanSwitchNetwork, Connect, Subscribe, SwitchNetwork, WalletInfo } from '@rango-dev/wallets-shared';
2
- import type { BlockchainMeta, SignerFactory } from 'rango-types';
3
- import { type LegacyProviderInterface, LegacyNetworks as Networks } from '@rango-dev/wallets-core/legacy';
4
- import { WalletTypes } from '@rango-dev/wallets-shared';
5
- import { type Provider, safepal as safepal_instance } from '../utils.js';
6
- export declare const config: {
7
- type: WalletTypes;
8
- defaultNetwork: Networks;
9
- };
10
- export declare const getInstance: typeof safepal_instance;
11
- export declare const connect: Connect;
12
- export declare const subscribe: Subscribe;
13
- export declare const switchNetwork: SwitchNetwork;
14
- export declare const canSwitchNetworkTo: CanSwitchNetwork;
15
- export declare const getSigners: (provider: Provider) => Promise<SignerFactory>;
16
- export declare const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo;
17
- declare const buildLegacyProvider: () => LegacyProviderInterface;
18
- export { buildLegacyProvider };
19
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/legacy/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EAEP,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EACL,KAAK,uBAAuB,EAC5B,cAAc,IAAI,QAAQ,EAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAML,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,KAAK,QAAQ,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIzE,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,WAAW,yBAAmB,CAAC;AAC5C,eAAO,MAAM,OAAO,EAAE,OAWrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAiBvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,aAAmC,CAAC;AAEhE,eAAO,MAAM,kBAAkB,EAAE,gBAAwC,CAAC;AAE1E,eAAO,MAAM,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,aAAa,CAC9D,CAAC;AAET,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAuCjE,CAAC;AAEF,QAAA,MAAM,mBAAmB,EAAE,MAAM,uBAS/B,CAAC;AAEH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- {"inputs":{"src/signer.ts":{"bytes":715,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":1468,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/index.ts":{"bytes":3285,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"../signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":1391,"imports":[{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/namespaces/evm.ts":{"bytes":1853,"imports":[{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"@hub3js/evm","kind":"import-statement","external":true},{"path":"@hub3js/std/builders","kind":"import-statement","external":true},{"path":"@hub3js/std/operators","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/provider.ts":{"bytes":702,"imports":[{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"src/namespaces/evm.ts","kind":"import-statement","original":"./namespaces/evm.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/mod.ts":{"bytes":321,"imports":[{"path":"@hub3js/core/utils","kind":"import-statement","external":true},{"path":"src/legacy/index.ts","kind":"import-statement","original":"./legacy/index.js"},{"path":"src/provider.ts","kind":"import-statement","original":"./provider.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/mod.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":16311},"dist/mod.js":{"imports":[{"path":"@hub3js/core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"@hub3js/evm","kind":"import-statement","external":true},{"path":"@hub3js/std/builders","kind":"import-statement","external":true},{"path":"@hub3js/std/operators","kind":"import-statement","external":true}],"exports":["versions"],"entryPoint":"src/mod.ts","inputs":{"src/mod.ts":{"bytesInOutput":133},"src/legacy/index.ts":{"bytesInOutput":1477},"src/signer.ts":{"bytesInOutput":371},"src/utils.ts":{"bytesInOutput":614},"src/provider.ts":{"bytesInOutput":269},"src/constants.ts":{"bytesInOutput":752},"src/namespaces/evm.ts":{"bytesInOutput":788}},"bytes":4539}}}
@@ -1,127 +0,0 @@
1
- import type {
2
- CanSwitchNetwork,
3
- Connect,
4
- ProviderConnectResult,
5
- Subscribe,
6
- SwitchNetwork,
7
- WalletInfo,
8
- } from '@rango-dev/wallets-shared';
9
- import type { BlockchainMeta, SignerFactory } from 'rango-types';
10
-
11
- import {
12
- type LegacyProviderInterface,
13
- LegacyNetworks as Networks,
14
- } from '@rango-dev/wallets-core/legacy';
15
- import {
16
- canSwitchNetworkToEvm,
17
- chooseInstance,
18
- getEvmAccounts,
19
- subscribeToEvm,
20
- switchNetworkForEvm,
21
- WalletTypes,
22
- } from '@rango-dev/wallets-shared';
23
- import { evmBlockchains, solanaBlockchain } from 'rango-types';
24
-
25
- import signer from '../signer.js';
26
- import { type Provider, safepal as safepal_instance } from '../utils.js';
27
-
28
- const WALLET = WalletTypes.SAFEPAL;
29
-
30
- export const config = {
31
- type: WALLET,
32
- defaultNetwork: Networks.ETHEREUM,
33
- };
34
-
35
- export const getInstance = safepal_instance;
36
- export const connect: Connect = async ({ instance, meta }) => {
37
- const ethInstance = chooseInstance(instance, meta, Networks.ETHEREUM);
38
-
39
- const results: ProviderConnectResult[] = [];
40
-
41
- if (ethInstance) {
42
- const evmResult = await getEvmAccounts(ethInstance);
43
- results.push(evmResult);
44
- }
45
-
46
- return results;
47
- };
48
-
49
- export const subscribe: Subscribe = (options) => {
50
- let cleanup: ReturnType<Subscribe>;
51
- const ethInstance = chooseInstance(
52
- options.instance,
53
- options.meta,
54
- Networks.ETHEREUM
55
- );
56
-
57
- if (ethInstance) {
58
- cleanup = subscribeToEvm({ ...options, instance: ethInstance });
59
- }
60
-
61
- return () => {
62
- if (cleanup) {
63
- cleanup();
64
- }
65
- };
66
- };
67
-
68
- export const switchNetwork: SwitchNetwork = switchNetworkForEvm;
69
-
70
- export const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;
71
-
72
- export const getSigners: (provider: Provider) => Promise<SignerFactory> =
73
- signer;
74
-
75
- export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
76
- allBlockChains
77
- ) => {
78
- const evms = evmBlockchains(allBlockChains);
79
- const solana = solanaBlockchain(allBlockChains);
80
- return {
81
- name: 'SafePal',
82
- img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/safepal/icon.svg',
83
- installLink: {
84
- CHROME:
85
- 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',
86
- BRAVE:
87
- 'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',
88
- FIREFOX:
89
- 'https://addons.mozilla.org/en-US/firefox/addon/safepal-extension-wallet',
90
- DEFAULT: 'https://www.safepal.com/download',
91
- },
92
- color: '#4A21EF',
93
- supportedChains: [...evms, ...solana],
94
- needsNamespace: {
95
- selection: 'multiple',
96
- data: [
97
- {
98
- label: 'EVM',
99
- value: 'EVM',
100
- id: 'ETH',
101
- getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
102
- evmBlockchains(allBlockchains),
103
- },
104
- {
105
- label: 'Solana',
106
- value: 'Solana',
107
- id: 'SOLANA',
108
- getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
109
- solanaBlockchain(allBlockchains),
110
- },
111
- ],
112
- },
113
- };
114
- };
115
-
116
- const buildLegacyProvider: () => LegacyProviderInterface = () => ({
117
- config,
118
- getInstance,
119
- connect,
120
- subscribe,
121
- switchNetwork,
122
- canSwitchNetworkTo,
123
- getSigners,
124
- getWalletInfo,
125
- });
126
-
127
- export { buildLegacyProvider };