@rango-dev/provider-coinbase 0.63.0 → 0.63.1-next.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/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # [0.63.0](https://github.com/rango-exchange/rango-client/compare/provider-coinbase@0.62.0...provider-coinbase@0.63.0) (2026-07-28)
2
+
3
+
4
+
1
5
  # [0.62.0](https://github.com/rango-exchange/rango-client/compare/provider-coinbase@0.61.0...provider-coinbase@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<"solana", import("@hub3js/solana").SolanaActions> & Record<"evm", import("@hub3js/evm").EvmActions>>]];
1
+ declare const versions: () => readonly [readonly ["1.0.0", import("@hub3js/core").Provider<Record<"solana", import("@hub3js/solana").SolanaActions> & 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,wQAIF,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,kLAC8C,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,CAAC"}
package/dist/mod.js CHANGED
@@ -1,2 +1,2 @@
1
- var D=Object.defineProperty;var o=(n,e)=>D(n,"name",{value:e,configurable:!0});import{defineVersions as Wn}from"@hub3js/core/utils";import{LegacyNetworks as r}from"@rango-dev/wallets-core/legacy";import{canEagerlyConnectToEvm as K,canSwitchNetworkToEvm as Q,chooseInstance as b,getEvmAccounts as X,switchNetworkForEvm as Y,WalletTypes as Z}from"@rango-dev/wallets-shared";import{evmBlockchains as T,isEvmBlockchain as $,isSolanaBlockchain as nn,solanaBlockchain as M}from"rango-types";import{dynamicImportWithRefinedError as G,getNetworkInstance as k,Networks as P}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as J,TransactionType as I}from"rango-types";import{DefaultSolanaSigner as q}from"@rango-dev/signer-solana";import z from"bs58";var h=class extends q{static{o(this,"CustomSolanaSigner")}constructor(e){super(e)}async signMessage(e){let{signature:t}=await this.provider.signMessage(e);return z.encode(t)}};async function u(n){let e=k(n,P.ETHEREUM),t=k(n,P.SOLANA),a=new J,{DefaultEvmSigner:s}=await G(async()=>await import("@rango-dev/signer-evm"));return a.registerSigner(I.EVM,new s(e)),a.registerSigner(I.SOLANA,new h(t)),a}o(u,"getSigners");import{LegacyNetworks as p}from"@rango-dev/wallets-core/legacy";function m(){let{coinbaseWalletExtension:n,coinbaseSolana:e}=window;if(!e&&!n)return null;let t=new Map;return n&&t.set(p.ETHEREUM,n),e&&t.set(p.SOLANA,e),t}o(m,"coinbase");function c(){let e=m()?.get(p.ETHEREUM);if(!e)throw new Error("Coinbase not injected or EVM not enabled. Please check your wallet.");return e}o(c,"evmCoinbase");function i(){let e=m()?.get(p.SOLANA);if(!e)throw new Error("Coinbase not injected or Solana not enabled. Please check your wallet.");return e}o(i,"solanaCoinbase");function x(){let n=m();if(!n)throw new Error("Coinbase is not injected. Please check your wallet.");return n}o(x,"getInstanceOrThrow");async function N(n){return await n.connect(),{accounts:[n.publicKey.toString()],chainId:p.SOLANA}}o(N,"getSolanaAccounts");var en=Z.COINBASE,on={type:en,defaultNetwork:r.ETHEREUM},tn=m,an=o(async({instance:n,meta:e})=>{let t=b(n,e,r.ETHEREUM),a=[];if(t){let l=await X(t);a.push(l)}let s=i();if(s){let l=await N(s);a.push(l)}return a},"connect"),rn=o(n=>{let e=b(n.instance,n.meta,r.ETHEREUM),t=b(n.instance,n.meta,r.SOLANA),{connect:a,updateAccounts:s,state:l,updateChainId:S,meta:A}=n,C=o(f=>{let g=A.filter($).find(v=>v.name===r.ETHEREUM)?.chainId;l.connected&&(l.network!=r.ETHEREUM&&g&&S(g),s(f))},"handleEvmAccountsChanged"),y=o(async f=>{l.network!=r.SOLANA&&S(A.filter(nn)[0].chainId);let g=r.SOLANA;if(f){let v=f.toString();s([v])}else a(g)},"handleSolanaAccountChanged");return e?.on?.("accountsChanged",C),t?.on?.("accountChanged",y),()=>{e?.off?.("accountsChanged",C),t?.off?.("accountChanged",y)}},"subscribe"),cn=Y,sn=Q,ln=u,mn=o(async({instance:n,meta:e})=>{let t=b(n,e,r.ETHEREUM);return t?K({instance:t,meta:e}):Promise.resolve(!1)},"canEagerConnect"),dn=o(n=>{let e=T(n),t=M(n);return{name:"Coinbase",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coinbase/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad",BRAVE:"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad",DEFAULT:"https://www.coinbase.com/wallet"},color:"#2a62f5",supportedChains:[...e,...t],needsNamespace:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:a=>T(a)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:a=>M(a)}]}}},"getWalletInfo"),L=o(()=>({config:on,getInstance:tn,connect:an,subscribe:rn,switchNetwork:cn,canSwitchNetworkTo:sn,getSigners:ln,getWalletInfo:dn,canEagerConnect:mn}),"buildLegacyProvider");import{ProviderBuilder as Fn}from"@hub3js/core";import{evmBlockchains as un,hyperliquidBlockchain as pn,solanaBlockchain as fn}from"rango-types";var d="coinbase",B={name:"Coinbase",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coinbase/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad",brave:"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad",homepage:"https://www.coinbase.com/wallet"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:n=>[...un(n),...pn(n)]},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:n=>fn(n)}]}},{name:"signers",value:{getSigners:async()=>u(x())}}]};import{ActionBuilder as gn,NamespaceBuilder as hn}from"@hub3js/core";import{actions as w,builders as E,utils as bn}from"@hub3js/evm";import*as R from"@hub3js/std/builders";import{connectAndUpdateStateForMultiNetworks as wn,intoConnecting as En,intoConnectionFinished as vn,standardizeAndThrowError as Sn}from"@hub3js/std/operators";var[An,j]=E.changeAccountSubscriber(c).format(async(n,e)=>{let t=await n.request({method:"eth_chainId"});return bn.formatAccountsToCAIP([e[0]],t)}).build(),Cn=new gn("connect").action(w.connect(c)).and((n,e)=>({...e,accounts:[e.accounts[0]]})).and(wn).before(En).before(An).or(j).or(Sn).after(vn).build(),yn=R.disconnect().before(()=>{c().disconnect()}).after(j).build(),kn=E.canEagerConnect().action(w.canEagerConnect(c)).build(),Pn=E.canSwitchNetwork().action(w.canSwitchNetwork()).build(),In=E.getChainId().action(w.getChainId(c)).build(),O=new hn("EVM",d).action(Cn).action(yn).action(kn).action(Pn).action(In).build();import{ActionBuilder as U,NamespaceBuilder as Nn}from"@hub3js/core";import{actions as Tn,builders as Mn}from"@hub3js/solana";import*as _ from"@hub3js/std/builders";import{connectAndUpdateStateForSingleNetwork as Ln,intoConnecting as Bn,intoConnectionFinished as Rn,standardizeAndThrowError as jn}from"@hub3js/std/operators";var xn=o(async()=>{let n=c();if(!i())throw new Error("Trying to eagerly connect to your wallet, but seems its solana instance is not available.");if(!n)throw new Error("Trying to eagerly connect to your EVM wallet, but seems its instance is not available.");try{return!!(await n.request({method:"eth_accounts"})).length}catch{return!1}},"canEagerConnectAction"),H={canEagerConnectAction:xn};var[On,F]=Mn.changeAccountSubscriber(i).build(),Hn=new U("connect").action(Tn.connect(i)).and((n,e)=>[e[0]]).and(Ln).before(Bn).before(On).after(Rn).or(F).or(jn).build(),Un=_.disconnect().before(()=>{i().disconnect()}).after(F).build(),_n=new U("canEagerConnect").action(H.canEagerConnectAction).build(),W=new Nn("Solana",d).action(Hn).action(Un).action(_n).build();var V=o(()=>new Fn(d).init(function(n){let[,e]=n.state();m()&&(e("installed",!0),console.debug("[coinbase] instance detected.",n))}).config("metadata",B).add("solana",W).add("evm",O).build(),"buildProvider");var Ue=o(()=>Wn().version("0.0.0",L()).version("1.0.0",V()).build(),"versions");export{Ue as versions};
1
+ var k=Object.defineProperty;var e=(n,o)=>k(n,"name",{value:o,configurable:!0});import{defineVersions as un}from"@hub3js/core/utils";import{ProviderBuilder as dn}from"@hub3js/core";import{evmBlockchains as V,hyperliquidBlockchain as D,solanaBlockchain as F}from"rango-types";import{EVM_NAMESPACE as B,SOLANA_NAMESPACE as L}from"@hub3js/namespaces";import{dynamicImportWithRefinedError as _,getNetworkInstance as p}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as j,TransactionType as f}from"rango-types";import{DefaultSolanaSigner as N}from"@rango-dev/signer-solana";import T from"bs58";var s=class extends N{static{e(this,"CustomSolanaSigner")}constructor(o){super(o)}async signMessage(o){let{signature:t}=await this.provider.signMessage(o);return T.encode(t)}};async function u(n){let o=p(n,B),t=p(n,L),d=new j,{DefaultEvmSigner:M}=await _(async()=>await import("@rango-dev/signer-evm"));return d.registerSigner(f.EVM,new M(o)),d.registerSigner(f.SOLANA,new s(t)),d}e(u,"getSigners");import{EVM_NAMESPACE as b,SOLANA_NAMESPACE as g}from"@hub3js/namespaces";function c(){let{coinbaseWalletExtension:n,coinbaseSolana:o}=window;if(!o&&!n)return null;let t=new Map;return n&&t.set(b,n),o&&t.set(g,o),t}e(c,"coinbase");function r(){let o=c()?.get(b);if(!o)throw new Error("Coinbase not injected or EVM not enabled. Please check your wallet.");return o}e(r,"evmCoinbase");function a(){let o=c()?.get(g);if(!o)throw new Error("Coinbase not injected or Solana not enabled. Please check your wallet.");return o}e(a,"solanaCoinbase");function h(){let n=c();if(!n)throw new Error("Coinbase is not injected. Please check your wallet.");return n}e(h,"getInstanceOrThrow");var i="coinbase",w={name:"Coinbase",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coinbase/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad",brave:"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad",homepage:"https://www.coinbase.com/wallet"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:n=>[...V(n),...D(n)]},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:n=>F(n)}]}},{name:"signers",value:{getSigners:async()=>u(h())}}]};import{ActionBuilder as O,NamespaceBuilder as W}from"@hub3js/core";import{actions as m,builders as l,utils as q}from"@hub3js/evm";import*as A from"@hub3js/std/builders";import{connectAndUpdateStateForMultiNetworks as z,intoConnecting as U,intoConnectionFinished as H,standardizeAndThrowError as R}from"@hub3js/std/operators";var[G,v]=l.changeAccountSubscriber(r).format(async(n,o)=>{let t=await n.request({method:"eth_chainId"});return q.formatAccountsToCAIP([o[0]],t)}).build(),J=new O("connect").action(m.connect(r)).and((n,o)=>({...o,accounts:[o.accounts[0]]})).and(z).before(U).before(G).or(v).or(R).after(H).build(),K=A.disconnect().before(()=>{r().disconnect()}).after(v).build(),Q=l.canEagerConnect().action(m.canEagerConnect(r)).build(),X=l.canSwitchNetwork().action(m.canSwitchNetwork()).build(),Y=l.getChainId().action(m.getChainId(r)).build(),E=new W("EVM",i).action(J).action(K).action(Q).action(X).action(Y).build();import{ActionBuilder as y,NamespaceBuilder as $}from"@hub3js/core";import{actions as nn,builders as on}from"@hub3js/solana";import*as C from"@hub3js/std/builders";import{connectAndUpdateStateForSingleNetwork as en,intoConnecting as tn,intoConnectionFinished as rn,standardizeAndThrowError as an}from"@hub3js/std/operators";var Z=e(async()=>{let n=r();if(!a())throw new Error("Trying to eagerly connect to your wallet, but seems its solana instance is not available.");if(!n)throw new Error("Trying to eagerly connect to your EVM wallet, but seems its instance is not available.");try{return!!(await n.request({method:"eth_accounts"})).length}catch{return!1}},"canEagerConnectAction"),S={canEagerConnectAction:Z};var[cn,P]=on.changeAccountSubscriber(a).build(),sn=new y("connect").action(nn.connect(a)).and((n,o)=>[o[0]]).and(en).before(tn).before(cn).after(rn).or(P).or(an).build(),mn=C.disconnect().before(()=>{a().disconnect()}).after(P).build(),ln=new y("canEagerConnect").action(S.canEagerConnectAction).build(),x=new $("Solana",i).action(sn).action(mn).action(ln).build();var I=e(()=>new dn(i).init(function(n){let[,o]=n.state();c()&&(o("installed",!0),console.debug("[coinbase] instance detected.",n))}).config("metadata",w).add("solana",x).add("evm",E).build(),"buildProvider");var eo=e(()=>un().version("1.0.0",I()).build(),"versions");export{eo 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/signers/solana-signer.ts", "../src/utils.ts", "../src/provider.ts", "../src/constants.ts", "../src/namespaces/evm.ts", "../src/namespaces/solana.ts", "../src/actions/solana.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 { Provider } from '../utils.js';\nimport type {\n CanEagerConnect,\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 canEagerlyConnectToEvm,\n canSwitchNetworkToEvm,\n chooseInstance,\n getEvmAccounts,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport {\n evmBlockchains,\n isEvmBlockchain,\n isSolanaBlockchain,\n solanaBlockchain,\n} from 'rango-types';\n\nimport signer from '../signer.js';\nimport {\n coinbase as coinbase_instance,\n getSolanaAccounts,\n solanaCoinbase,\n} from '../utils.js';\n\nconst WALLET = WalletTypes.COINBASE;\n\nexport const config = {\n type: WALLET,\n defaultNetwork: Networks.ETHEREUM,\n};\n\nexport const getInstance = coinbase_instance;\nexport const connect: Connect = async ({ instance, meta }) => {\n /*\n * Note: We need to get `chainId` here, because for the first time\n * after opening the browser, wallet is locked, and don't give us accounts and chainId\n * on `check` phase, so `network` will be null. For this case we need to get chainId\n * whenever we are requesting accounts.\n */\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n const results: ProviderConnectResult[] = [];\n\n if (evm_instance) {\n const evm = await getEvmAccounts(evm_instance);\n results.push(evm);\n }\n\n const solanaInstance = solanaCoinbase();\n if (solanaInstance) {\n const solanaResults = await getSolanaAccounts(solanaInstance);\n results.push(solanaResults);\n }\n\n return results;\n};\n\nexport const subscribe: Subscribe = (options) => {\n const ethInstance = chooseInstance(\n options.instance,\n options.meta,\n Networks.ETHEREUM\n );\n const solanaInstance = chooseInstance(\n options.instance,\n options.meta,\n Networks.SOLANA\n );\n const { connect, updateAccounts, state, updateChainId, meta } = options;\n const handleEvmAccountsChanged = (addresses: string[]) => {\n const eth_chainId = meta\n .filter(isEvmBlockchain)\n .find((blockchain) => blockchain.name === Networks.ETHEREUM)?.chainId;\n if (state.connected) {\n if (state.network != Networks.ETHEREUM && eth_chainId) {\n updateChainId(eth_chainId);\n }\n updateAccounts(addresses);\n }\n };\n\n const handleSolanaAccountChanged = async (publicKey: string) => {\n if (state.network != Networks.SOLANA) {\n updateChainId(meta.filter(isSolanaBlockchain)[0].chainId);\n }\n const network = Networks.SOLANA;\n if (publicKey) {\n const account = publicKey.toString();\n updateAccounts([account]);\n } else {\n connect(network);\n }\n };\n ethInstance?.on?.('accountsChanged', handleEvmAccountsChanged);\n\n solanaInstance?.on?.('accountChanged', handleSolanaAccountChanged);\n\n return () => {\n ethInstance?.off?.('accountsChanged', handleEvmAccountsChanged);\n\n solanaInstance?.off?.('accountChanged', handleSolanaAccountChanged);\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 canEagerConnect: CanEagerConnect = async ({ instance, meta }) => {\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n if (evm_instance) {\n return canEagerlyConnectToEvm({ instance: evm_instance, meta });\n }\n return Promise.resolve(false);\n};\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n const solana = solanaBlockchain(allBlockChains);\n return {\n name: 'Coinbase',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coinbase/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',\n DEFAULT: 'https://www.coinbase.com/wallet',\n },\n color: '#2a62f5',\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 canEagerConnect,\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\nimport { CustomSolanaSigner } from './signers/solana-signer.js';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const solProvider = getNetworkInstance(provider, Networks.SOLANA);\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 signers.registerSigner(TxType.SOLANA, new CustomSolanaSigner(solProvider));\n return signers;\n}\n", "import { DefaultSolanaSigner } from '@rango-dev/signer-solana';\nimport base58 from 'bs58';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype SolanaExternalProvider = any;\n\nexport class CustomSolanaSigner extends DefaultSolanaSigner {\n constructor(provider: SolanaExternalProvider) {\n super(provider);\n }\n\n async signMessage(msg: string): Promise<string> {\n const { signature } = await this.provider.signMessage(msg);\n return base58.encode(signature);\n }\n}\n", "import type { ProviderAPI as EvmProviderApi } from '@hub3js/evm';\nimport type { ProviderAPI as SolanaProviderApi } from '@hub3js/solana';\nimport type { ProviderConnectResult } from '@rango-dev/wallets-shared';\n\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Provider = Record<string, any>;\n\nexport function coinbase(): Provider | null {\n const { coinbaseWalletExtension, coinbaseSolana } = window;\n\n if (!coinbaseSolana && !coinbaseWalletExtension) {\n return null;\n }\n\n const instances = new Map();\n\n if (coinbaseWalletExtension) {\n instances.set(LegacyNetworks.ETHEREUM, coinbaseWalletExtension);\n }\n\n if (coinbaseSolana) {\n instances.set(LegacyNetworks.SOLANA, coinbaseSolana);\n }\n\n return instances;\n}\n\nexport function evmCoinbase(): EvmProviderApi {\n const instances = coinbase();\n\n const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);\n\n if (!evmInstance) {\n throw new Error(\n 'Coinbase not injected or EVM not enabled. Please check your wallet.'\n );\n }\n\n return evmInstance as EvmProviderApi;\n}\n\nexport function solanaCoinbase(): SolanaProviderApi {\n const instance = coinbase();\n const solanaInstance = instance?.get(LegacyNetworks.SOLANA);\n\n if (!solanaInstance) {\n throw new Error(\n 'Coinbase not injected or Solana not enabled. Please check your wallet.'\n );\n }\n\n return solanaInstance as SolanaProviderApi;\n}\nexport function getInstanceOrThrow(): Provider {\n const instances = coinbase();\n\n if (!instances) {\n throw new Error('Coinbase is not injected. Please check your wallet.');\n }\n\n return instances;\n}\nexport async function getSolanaAccounts(\n instance: Provider\n): Promise<ProviderConnectResult> {\n await instance.connect();\n const account = instance.publicKey.toString();\n\n return {\n accounts: [account],\n chainId: LegacyNetworks.SOLANA,\n };\n}\n", "import { ProviderBuilder } from '@hub3js/core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { solana } from './namespaces/solana.js';\nimport { coinbase as coinbaseInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (coinbaseInstance()) {\n setState('installed', true);\n console.debug('[coinbase] instance detected.', context);\n }\n })\n .config('metadata', metadata)\n .add('solana', solana)\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 solanaBlockchain,\n} from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'coinbase';\n\nexport const metadata: ProviderMetadata = {\n name: 'Coinbase',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coinbase/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',\n brave:\n 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',\n homepage: 'https://www.coinbase.com/wallet',\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 label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\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, utils } 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 { evmCoinbase } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmCoinbase)\n /*\n * Coinbase returns an array of connected accounts with the active one first.\n * Since we only need the active account, we take the first element as a workaround.\n */\n .format(async (instance, accounts) => {\n const chainId = await instance.request({ method: 'eth_chainId' });\n return utils.formatAccountsToCAIP([accounts[0]], chainId);\n })\n .build();\n\nconst connect = new ActionBuilder<EvmActions, 'connect'>('connect')\n .action(actions.connect(evmCoinbase))\n /*\n * Coinbase Wallet's `connect` returns a list where the currently selected account\n * is always the first item. We're directly taking this first item as the active account.\n *\n * ***NOTE***: Please keep it synced with `wallets/core/src/namespaces/solana/builders.ts`.\n *\n */\n .and((_, connectResult) => ({\n ...connectResult,\n accounts: [connectResult.accounts[0]],\n }))\n .and(connectAndUpdateStateForMultiNetworks)\n .before(intoConnecting)\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .after(intoConnectionFinished)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<EvmActions>()\n .before(() => {\n /*\n * Coinbase sometimes stays connected and causes the page to refresh.\n * This ensures we also disconnect from the wallet to prevent that behavior.\n */\n evmCoinbase().disconnect();\n })\n .after(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = builders\n .canEagerConnect()\n .action(actions.canEagerConnect(evmCoinbase))\n .build();\n\nconst canSwitchNetwork = builders\n .canSwitchNetwork()\n .action(actions.canSwitchNetwork())\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmCoinbase))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .action(canSwitchNetwork)\n .action(getChainId)\n .build();\n\nexport { evm };\n", "import type { SolanaActions } from '@hub3js/solana';\n\nimport { ActionBuilder, NamespaceBuilder } from '@hub3js/core';\nimport { actions, builders } from '@hub3js/solana';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport {\n connectAndUpdateStateForSingleNetwork,\n intoConnecting,\n intoConnectionFinished,\n standardizeAndThrowError,\n} from '@hub3js/std/operators';\n\nimport { solanaActions } from '../actions/solana.js';\nimport { WALLET_ID } from '../constants.js';\nimport { solanaCoinbase } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(solanaCoinbase)\n .build();\n\nconst connect = new ActionBuilder<SolanaActions, 'connect'>('connect')\n .action(actions.connect(solanaCoinbase))\n /*\n * Coinbase Wallet's `connect` returns a list where the currently selected account\n * is always the first item. We're directly taking this first item as the active account.\n */\n .and((_, connectResult) => [connectResult[0]])\n .and(connectAndUpdateStateForSingleNetwork)\n .before(intoConnecting)\n .before(changeAccountSubscriber)\n .after(intoConnectionFinished)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<SolanaActions>()\n .before(() => {\n /*\n * Coinbase sometimes stays connected and causes the page to refresh.\n * This ensures we also disconnect from the wallet to prevent that behavior.\n */\n solanaCoinbase().disconnect();\n })\n .after(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = new ActionBuilder<SolanaActions, 'canEagerConnect'>(\n 'canEagerConnect'\n)\n .action(solanaActions.canEagerConnectAction)\n .build();\n\nconst solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .build();\n\nexport { solana };\n", "import { evmCoinbase, solanaCoinbase } from '../utils.js';\n\n/*\n * Coinbase does not provide an eager connection mechanism for its Solana wallet.\n * The only workaround is to use the EVM-based eager connect approach.\n * However, this will only work if the EVM namespace has been connected at least once before.\n * If either wallet instance is unavailable, we throw an error.\n */\nconst canEagerConnectAction = async () => {\n const evmInstance = evmCoinbase();\n const solanaInstance = solanaCoinbase();\n // Making sure that the Solana instance is available first to prevent errors.\n if (!solanaInstance) {\n throw new Error(\n 'Trying to eagerly connect to your wallet, but seems its solana instance is not available.'\n );\n }\n if (!evmInstance) {\n throw new Error(\n 'Trying to eagerly connect to your EVM wallet, but seems its instance is not available.'\n );\n }\n\n try {\n const accounts: string[] = await evmInstance.request({\n method: 'eth_accounts',\n });\n if (accounts.length) {\n return true;\n }\n return false;\n } catch {\n return false;\n }\n};\nexport const solanaActions = { canEagerConnectAction };\n"],
5
- "mappings": "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",
6
- "names": ["defineVersions", "Networks", "canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "chooseInstance", "getEvmAccounts", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "isEvmBlockchain", "isSolanaBlockchain", "solanaBlockchain", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "DefaultSolanaSigner", "base58", "CustomSolanaSigner", "DefaultSolanaSigner", "__name", "provider", "msg", "signature", "base58", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "solProvider", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "CustomSolanaSigner", "__name", "LegacyNetworks", "coinbase", "coinbaseWalletExtension", "coinbaseSolana", "instances", "LegacyNetworks", "__name", "evmCoinbase", "evmInstance", "solanaCoinbase", "solanaInstance", "getInstanceOrThrow", "getSolanaAccounts", "instance", "WALLET", "WalletTypes", "config", "Networks", "getInstance", "coinbase", "connect", "__name", "instance", "meta", "evm_instance", "chooseInstance", "results", "evm", "getEvmAccounts", "solanaInstance", "solanaCoinbase", "solanaResults", "getSolanaAccounts", "subscribe", "options", "ethInstance", "updateAccounts", "state", "updateChainId", "handleEvmAccountsChanged", "addresses", "eth_chainId", "isEvmBlockchain", "blockchain", "handleSolanaAccountChanged", "publicKey", "isSolanaBlockchain", "network", "account", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "canEagerConnect", "canEagerlyConnectToEvm", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains", "solana", "solanaBlockchain", "allBlockchains", "buildLegacyProvider", "ProviderBuilder", "evmBlockchains", "hyperliquidBlockchain", "solanaBlockchain", "WALLET_ID", "metadata", "allBlockchains", "evmBlockchains", "hyperliquidBlockchain", "solanaBlockchain", "getSigners", "getInstanceOrThrow", "ActionBuilder", "NamespaceBuilder", "actions", "builders", "utils", "commonBuilders", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmCoinbase", "instance", "accounts", "chainId", "utils", "connect", "ActionBuilder", "actions", "_", "connectResult", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "standardizeAndThrowError", "intoConnectionFinished", "disconnect", "canEagerConnect", "canSwitchNetwork", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "ActionBuilder", "NamespaceBuilder", "actions", "builders", "commonBuilders", "connectAndUpdateStateForSingleNetwork", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "canEagerConnectAction", "__name", "evmInstance", "evmCoinbase", "solanaCoinbase", "solanaActions", "changeAccountSubscriber", "changeAccountCleanup", "builders", "solanaCoinbase", "connect", "ActionBuilder", "actions", "_", "connectResult", "connectAndUpdateStateForSingleNetwork", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "disconnect", "canEagerConnect", "solanaActions", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "coinbase", "metadata", "solana", "evm", "versions", "__name", "defineVersions", "buildLegacyProvider", "buildProvider"]
3
+ "sources": ["../src/mod.ts", "../src/provider.ts", "../src/constants.ts", "../src/signer.ts", "../src/signers/solana-signer.ts", "../src/utils.ts", "../src/namespaces/evm.ts", "../src/namespaces/solana.ts", "../src/actions/solana.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 { solana } from './namespaces/solana.js';\nimport { coinbase as coinbaseInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (coinbaseInstance()) {\n setState('installed', true);\n console.debug('[coinbase] instance detected.', context);\n }\n })\n .config('metadata', metadata)\n .add('solana', solana)\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 solanaBlockchain,\n} from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'coinbase';\n\nexport const metadata: ProviderMetadata = {\n name: 'Coinbase',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coinbase/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',\n brave:\n 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',\n homepage: 'https://www.coinbase.com/wallet',\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 label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\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, SOLANA_NAMESPACE } from '@hub3js/namespaces';\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { CustomSolanaSigner } from './signers/solana-signer.js';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, EVM_NAMESPACE);\n const solProvider = getNetworkInstance(provider, SOLANA_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 signers.registerSigner(TxType.SOLANA, new CustomSolanaSigner(solProvider));\n return signers;\n}\n", "import { DefaultSolanaSigner } from '@rango-dev/signer-solana';\nimport base58 from 'bs58';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype SolanaExternalProvider = any;\n\nexport class CustomSolanaSigner extends DefaultSolanaSigner {\n constructor(provider: SolanaExternalProvider) {\n super(provider);\n }\n\n async signMessage(msg: string): Promise<string> {\n const { signature } = await this.provider.signMessage(msg);\n return base58.encode(signature);\n }\n}\n", "import type { ProviderAPI as EvmProviderApi } from '@hub3js/evm';\nimport type { ProviderAPI as SolanaProviderApi } from '@hub3js/solana';\n\nimport { EVM_NAMESPACE, SOLANA_NAMESPACE } from '@hub3js/namespaces';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Provider = Record<string, any>;\n\nexport function coinbase(): Provider | null {\n const { coinbaseWalletExtension, coinbaseSolana } = window;\n\n if (!coinbaseSolana && !coinbaseWalletExtension) {\n return null;\n }\n\n const instances = new Map();\n\n if (coinbaseWalletExtension) {\n instances.set(EVM_NAMESPACE, coinbaseWalletExtension);\n }\n\n if (coinbaseSolana) {\n instances.set(SOLANA_NAMESPACE, coinbaseSolana);\n }\n\n return instances;\n}\n\nexport function evmCoinbase(): EvmProviderApi {\n const instances = coinbase();\n\n const evmInstance = instances?.get(EVM_NAMESPACE);\n\n if (!evmInstance) {\n throw new Error(\n 'Coinbase not injected or EVM not enabled. Please check your wallet.'\n );\n }\n\n return evmInstance as EvmProviderApi;\n}\n\nexport function solanaCoinbase(): SolanaProviderApi {\n const instance = coinbase();\n const solanaInstance = instance?.get(SOLANA_NAMESPACE);\n\n if (!solanaInstance) {\n throw new Error(\n 'Coinbase not injected or Solana not enabled. Please check your wallet.'\n );\n }\n\n return solanaInstance as SolanaProviderApi;\n}\nexport function getInstanceOrThrow(): Provider {\n const instances = coinbase();\n\n if (!instances) {\n throw new Error('Coinbase is not injected. Please check your wallet.');\n }\n\n return instances;\n}\n", "import type { EvmActions } from '@hub3js/evm';\n\nimport { ActionBuilder, NamespaceBuilder } from '@hub3js/core';\nimport { actions, builders, utils } 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 { evmCoinbase } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmCoinbase)\n /*\n * Coinbase returns an array of connected accounts with the active one first.\n * Since we only need the active account, we take the first element as a workaround.\n */\n .format(async (instance, accounts) => {\n const chainId = await instance.request({ method: 'eth_chainId' });\n return utils.formatAccountsToCAIP([accounts[0]], chainId);\n })\n .build();\n\nconst connect = new ActionBuilder<EvmActions, 'connect'>('connect')\n .action(actions.connect(evmCoinbase))\n /*\n * Coinbase Wallet's `connect` returns a list where the currently selected account\n * is always the first item. We're directly taking this first item as the active account.\n *\n * ***NOTE***: Please keep it synced with `wallets/core/src/namespaces/solana/builders.ts`.\n *\n */\n .and((_, connectResult) => ({\n ...connectResult,\n accounts: [connectResult.accounts[0]],\n }))\n .and(connectAndUpdateStateForMultiNetworks)\n .before(intoConnecting)\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .after(intoConnectionFinished)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<EvmActions>()\n .before(() => {\n /*\n * Coinbase sometimes stays connected and causes the page to refresh.\n * This ensures we also disconnect from the wallet to prevent that behavior.\n */\n evmCoinbase().disconnect();\n })\n .after(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = builders\n .canEagerConnect()\n .action(actions.canEagerConnect(evmCoinbase))\n .build();\n\nconst canSwitchNetwork = builders\n .canSwitchNetwork()\n .action(actions.canSwitchNetwork())\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmCoinbase))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .action(canSwitchNetwork)\n .action(getChainId)\n .build();\n\nexport { evm };\n", "import type { SolanaActions } from '@hub3js/solana';\n\nimport { ActionBuilder, NamespaceBuilder } from '@hub3js/core';\nimport { actions, builders } from '@hub3js/solana';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport {\n connectAndUpdateStateForSingleNetwork,\n intoConnecting,\n intoConnectionFinished,\n standardizeAndThrowError,\n} from '@hub3js/std/operators';\n\nimport { solanaActions } from '../actions/solana.js';\nimport { WALLET_ID } from '../constants.js';\nimport { solanaCoinbase } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(solanaCoinbase)\n .build();\n\nconst connect = new ActionBuilder<SolanaActions, 'connect'>('connect')\n .action(actions.connect(solanaCoinbase))\n /*\n * Coinbase Wallet's `connect` returns a list where the currently selected account\n * is always the first item. We're directly taking this first item as the active account.\n */\n .and((_, connectResult) => [connectResult[0]])\n .and(connectAndUpdateStateForSingleNetwork)\n .before(intoConnecting)\n .before(changeAccountSubscriber)\n .after(intoConnectionFinished)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<SolanaActions>()\n .before(() => {\n /*\n * Coinbase sometimes stays connected and causes the page to refresh.\n * This ensures we also disconnect from the wallet to prevent that behavior.\n */\n solanaCoinbase().disconnect();\n })\n .after(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = new ActionBuilder<SolanaActions, 'canEagerConnect'>(\n 'canEagerConnect'\n)\n .action(solanaActions.canEagerConnectAction)\n .build();\n\nconst solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .build();\n\nexport { solana };\n", "import { evmCoinbase, solanaCoinbase } from '../utils.js';\n\n/*\n * Coinbase does not provide an eager connection mechanism for its Solana wallet.\n * The only workaround is to use the EVM-based eager connect approach.\n * However, this will only work if the EVM namespace has been connected at least once before.\n * If either wallet instance is unavailable, we throw an error.\n */\nconst canEagerConnectAction = async () => {\n const evmInstance = evmCoinbase();\n const solanaInstance = solanaCoinbase();\n // Making sure that the Solana instance is available first to prevent errors.\n if (!solanaInstance) {\n throw new Error(\n 'Trying to eagerly connect to your wallet, but seems its solana instance is not available.'\n );\n }\n if (!evmInstance) {\n throw new Error(\n 'Trying to eagerly connect to your EVM wallet, but seems its instance is not available.'\n );\n }\n\n try {\n const accounts: string[] = await evmInstance.request({\n method: 'eth_accounts',\n });\n if (accounts.length) {\n return true;\n }\n return false;\n } catch {\n return false;\n }\n};\nexport const solanaActions = { canEagerConnectAction };\n"],
5
+ "mappings": "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",
6
+ "names": ["defineVersions", "ProviderBuilder", "evmBlockchains", "hyperliquidBlockchain", "solanaBlockchain", "EVM_NAMESPACE", "SOLANA_NAMESPACE", "dynamicImportWithRefinedError", "getNetworkInstance", "DefaultSignerFactory", "TxType", "DefaultSolanaSigner", "base58", "CustomSolanaSigner", "DefaultSolanaSigner", "__name", "provider", "msg", "signature", "base58", "getSigners", "provider", "ethProvider", "getNetworkInstance", "EVM_NAMESPACE", "solProvider", "SOLANA_NAMESPACE", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "CustomSolanaSigner", "__name", "EVM_NAMESPACE", "SOLANA_NAMESPACE", "coinbase", "coinbaseWalletExtension", "coinbaseSolana", "instances", "EVM_NAMESPACE", "SOLANA_NAMESPACE", "__name", "evmCoinbase", "evmInstance", "solanaCoinbase", "solanaInstance", "getInstanceOrThrow", "WALLET_ID", "metadata", "allBlockchains", "evmBlockchains", "hyperliquidBlockchain", "solanaBlockchain", "getSigners", "getInstanceOrThrow", "ActionBuilder", "NamespaceBuilder", "actions", "builders", "utils", "commonBuilders", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmCoinbase", "instance", "accounts", "chainId", "utils", "connect", "ActionBuilder", "actions", "_", "connectResult", "connectAndUpdateStateForMultiNetworks", "intoConnecting", "standardizeAndThrowError", "intoConnectionFinished", "disconnect", "canEagerConnect", "canSwitchNetwork", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "ActionBuilder", "NamespaceBuilder", "actions", "builders", "commonBuilders", "connectAndUpdateStateForSingleNetwork", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "canEagerConnectAction", "__name", "evmInstance", "evmCoinbase", "solanaCoinbase", "solanaActions", "changeAccountSubscriber", "changeAccountCleanup", "builders", "solanaCoinbase", "connect", "ActionBuilder", "actions", "_", "connectResult", "connectAndUpdateStateForSingleNetwork", "intoConnecting", "intoConnectionFinished", "standardizeAndThrowError", "disconnect", "canEagerConnect", "solanaActions", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "coinbase", "metadata", "solana", "evm", "versions", "__name", "defineVersions", "buildProvider"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"src/signers/solana-signer.ts":{"bytes":488,"imports":[{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":928,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signers/solana-signer.ts","kind":"import-statement","original":"./signers/solana-signer.js"},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":1931,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/index.ts":{"bytes":5133,"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":1549,"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":2524,"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/actions/solana.ts":{"bytes":1155,"imports":[{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/namespaces/solana.ts":{"bytes":1880,"imports":[{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"@hub3js/solana","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/actions/solana.ts","kind":"import-statement","original":"../actions/solana.js"},{"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":664,"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/namespaces/solana.ts","kind":"import-statement","original":"./namespaces/solana.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":27505},"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-solana","kind":"import-statement","external":true},{"path":"bs58","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":"@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},{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"@hub3js/solana","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":2130},"src/signer.ts":{"bytesInOutput":423},"src/signers/solana-signer.ts":{"bytesInOutput":259},"src/utils.ts":{"bytesInOutput":821},"src/provider.ts":{"bytesInOutput":256},"src/constants.ts":{"bytesInOutput":773},"src/namespaces/evm.ts":{"bytesInOutput":955},"src/namespaces/solana.ts":{"bytesInOutput":690},"src/actions/solana.ts":{"bytesInOutput":391}},"bytes":6966}}}
1
+ {"inputs":{"src/signers/solana-signer.ts":{"bytes":488,"imports":[{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":983,"imports":[{"path":"@hub3js/namespaces","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/signers/solana-signer.ts","kind":"import-statement","original":"./signers/solana-signer.js"},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":1579,"imports":[{"path":"@hub3js/namespaces","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":1549,"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":2524,"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/actions/solana.ts":{"bytes":1155,"imports":[{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/namespaces/solana.ts":{"bytes":1880,"imports":[{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"@hub3js/solana","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/actions/solana.ts","kind":"import-statement","original":"../actions/solana.js"},{"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":664,"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/namespaces/solana.ts","kind":"import-statement","original":"./namespaces/solana.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/mod.ts":{"bytes":209,"imports":[{"path":"@hub3js/core/utils","kind":"import-statement","external":true},{"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":18415},"dist/mod.js":{"imports":[{"path":"@hub3js/core/utils","kind":"import-statement","external":true},{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@hub3js/namespaces","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-solana","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"@hub3js/namespaces","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},{"path":"@hub3js/core","kind":"import-statement","external":true},{"path":"@hub3js/solana","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":112},"src/provider.ts":{"bytesInOutput":256},"src/constants.ts":{"bytesInOutput":767},"src/signer.ts":{"bytesInOutput":466},"src/signers/solana-signer.ts":{"bytesInOutput":259},"src/utils.ts":{"bytesInOutput":675},"src/namespaces/evm.ts":{"bytesInOutput":929},"src/namespaces/solana.ts":{"bytesInOutput":688},"src/actions/solana.ts":{"bytesInOutput":389}},"bytes":4676}}}
package/dist/utils.d.ts CHANGED
@@ -1,10 +1,8 @@
1
1
  import type { ProviderAPI as EvmProviderApi } from '@hub3js/evm';
2
2
  import type { ProviderAPI as SolanaProviderApi } from '@hub3js/solana';
3
- import type { ProviderConnectResult } from '@rango-dev/wallets-shared';
4
3
  export type Provider = Record<string, any>;
5
4
  export declare function coinbase(): Provider | null;
6
5
  export declare function evmCoinbase(): EvmProviderApi;
7
6
  export declare function solanaCoinbase(): SolanaProviderApi;
8
7
  export declare function getInstanceOrThrow(): Provider;
9
- export declare function getSolanaAccounts(instance: Provider): Promise<ProviderConnectResult>;
10
8
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAKvE,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE3C,wBAAgB,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAkB1C;AAED,wBAAgB,WAAW,IAAI,cAAc,CAY5C;AAED,wBAAgB,cAAc,IAAI,iBAAiB,CAWlD;AACD,wBAAgB,kBAAkB,IAAI,QAAQ,CAQ7C;AACD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,qBAAqB,CAAC,CAQhC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKvE,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE3C,wBAAgB,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAkB1C;AAED,wBAAgB,WAAW,IAAI,cAAc,CAY5C;AAED,wBAAgB,cAAc,IAAI,iBAAiB,CAWlD;AACD,wBAAgB,kBAAkB,IAAI,QAAQ,CAQ7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rango-dev/provider-coinbase",
3
- "version": "0.63.0",
3
+ "version": "0.63.1-next.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "source": "./src/mod.ts",
@@ -21,14 +21,15 @@
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/solana": "^0.2.1",
27
- "@hub3js/std": "^0.1.1",
24
+ "@hub3js/core": "^0.61.0",
25
+ "@hub3js/evm": "^0.3.0",
26
+ "@hub3js/namespaces": "^0.2.2",
27
+ "@hub3js/solana": "^0.3.0",
28
+ "@hub3js/std": "^0.2.0",
28
29
  "@rango-dev/signer-evm": "^0.44.0",
29
30
  "@rango-dev/signer-solana": "^0.48.0",
30
- "@rango-dev/wallets-core": "^0.60.0",
31
- "@rango-dev/wallets-shared": "^0.61.0",
31
+ "@rango-dev/wallets-core": "^0.60.1-next.2",
32
+ "@rango-dev/wallets-shared": "^0.61.1-next.3",
32
33
  "bs58": "^5.0.0",
33
34
  "rango-types": "^0.5.0"
34
35
  },
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,10 +1,10 @@
1
1
  import type { Provider } from './utils.js';
2
2
  import type { SignerFactory } from 'rango-types';
3
3
 
4
+ import { EVM_NAMESPACE, SOLANA_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
 
@@ -13,8 +13,8 @@ import { CustomSolanaSigner } from './signers/solana-signer.js';
13
13
  export default async function getSigners(
14
14
  provider: Provider
15
15
  ): Promise<SignerFactory> {
16
- const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);
17
- const solProvider = getNetworkInstance(provider, Networks.SOLANA);
16
+ const ethProvider = getNetworkInstance(provider, EVM_NAMESPACE);
17
+ const solProvider = getNetworkInstance(provider, SOLANA_NAMESPACE);
18
18
  const signers = new DefaultSignerFactory();
19
19
  const { DefaultEvmSigner } = await dynamicImportWithRefinedError(
20
20
  async () => await import('@rango-dev/signer-evm')
package/src/utils.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  import type { ProviderAPI as EvmProviderApi } from '@hub3js/evm';
2
2
  import type { ProviderAPI as SolanaProviderApi } from '@hub3js/solana';
3
- import type { ProviderConnectResult } from '@rango-dev/wallets-shared';
4
3
 
5
- import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
4
+ import { EVM_NAMESPACE, SOLANA_NAMESPACE } from '@hub3js/namespaces';
6
5
 
7
6
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
7
  export type Provider = Record<string, any>;
@@ -17,11 +16,11 @@ export function coinbase(): Provider | null {
17
16
  const instances = new Map();
18
17
 
19
18
  if (coinbaseWalletExtension) {
20
- instances.set(LegacyNetworks.ETHEREUM, coinbaseWalletExtension);
19
+ instances.set(EVM_NAMESPACE, coinbaseWalletExtension);
21
20
  }
22
21
 
23
22
  if (coinbaseSolana) {
24
- instances.set(LegacyNetworks.SOLANA, coinbaseSolana);
23
+ instances.set(SOLANA_NAMESPACE, coinbaseSolana);
25
24
  }
26
25
 
27
26
  return instances;
@@ -30,7 +29,7 @@ export function coinbase(): Provider | null {
30
29
  export function evmCoinbase(): EvmProviderApi {
31
30
  const instances = coinbase();
32
31
 
33
- const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);
32
+ const evmInstance = instances?.get(EVM_NAMESPACE);
34
33
 
35
34
  if (!evmInstance) {
36
35
  throw new Error(
@@ -43,7 +42,7 @@ export function evmCoinbase(): EvmProviderApi {
43
42
 
44
43
  export function solanaCoinbase(): SolanaProviderApi {
45
44
  const instance = coinbase();
46
- const solanaInstance = instance?.get(LegacyNetworks.SOLANA);
45
+ const solanaInstance = instance?.get(SOLANA_NAMESPACE);
47
46
 
48
47
  if (!solanaInstance) {
49
48
  throw new Error(
@@ -62,14 +61,3 @@ export function getInstanceOrThrow(): Provider {
62
61
 
63
62
  return instances;
64
63
  }
65
- export async function getSolanaAccounts(
66
- instance: Provider
67
- ): Promise<ProviderConnectResult> {
68
- await instance.connect();
69
- const account = instance.publicKey.toString();
70
-
71
- return {
72
- accounts: [account],
73
- chainId: LegacyNetworks.SOLANA,
74
- };
75
- }
@@ -1,21 +0,0 @@
1
- import type { Provider } from '../utils.js';
2
- import type { CanEagerConnect, CanSwitchNetwork, Connect, Subscribe, SwitchNetwork, WalletInfo } from '@rango-dev/wallets-shared';
3
- import type { BlockchainMeta, SignerFactory } from 'rango-types';
4
- import { type LegacyProviderInterface, LegacyNetworks as Networks } from '@rango-dev/wallets-core/legacy';
5
- import { WalletTypes } from '@rango-dev/wallets-shared';
6
- import { coinbase as coinbase_instance } from '../utils.js';
7
- export declare const config: {
8
- type: WalletTypes;
9
- defaultNetwork: Networks;
10
- };
11
- export declare const getInstance: typeof coinbase_instance;
12
- export declare const connect: Connect;
13
- export declare const subscribe: Subscribe;
14
- export declare const switchNetwork: SwitchNetwork;
15
- export declare const canSwitchNetworkTo: CanSwitchNetwork;
16
- export declare const getSigners: (provider: Provider) => Promise<SignerFactory>;
17
- export declare const canEagerConnect: CanEagerConnect;
18
- export declare const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo;
19
- declare const buildLegacyProvider: () => LegacyProviderInterface;
20
- export { buildLegacyProvider };
21
- //# 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,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EACV,eAAe,EACf,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;AASnC,OAAO,EACL,QAAQ,IAAI,iBAAiB,EAG9B,MAAM,aAAa,CAAC;AAIrB,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,WAAW,0BAAoB,CAAC;AAC7C,eAAO,MAAM,OAAO,EAAE,OAsBrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SA6CvB,CAAC;AACF,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,eAAe,EAAE,eAM7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAqCjE,CAAC;AAEF,QAAA,MAAM,mBAAmB,EAAE,MAAM,uBAU/B,CAAC;AAEH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1,183 +0,0 @@
1
- import type { Provider } from '../utils.js';
2
- import type {
3
- CanEagerConnect,
4
- CanSwitchNetwork,
5
- Connect,
6
- ProviderConnectResult,
7
- Subscribe,
8
- SwitchNetwork,
9
- WalletInfo,
10
- } from '@rango-dev/wallets-shared';
11
- import type { BlockchainMeta, SignerFactory } from 'rango-types';
12
-
13
- import {
14
- type LegacyProviderInterface,
15
- LegacyNetworks as Networks,
16
- } from '@rango-dev/wallets-core/legacy';
17
- import {
18
- canEagerlyConnectToEvm,
19
- canSwitchNetworkToEvm,
20
- chooseInstance,
21
- getEvmAccounts,
22
- switchNetworkForEvm,
23
- WalletTypes,
24
- } from '@rango-dev/wallets-shared';
25
- import {
26
- evmBlockchains,
27
- isEvmBlockchain,
28
- isSolanaBlockchain,
29
- solanaBlockchain,
30
- } from 'rango-types';
31
-
32
- import signer from '../signer.js';
33
- import {
34
- coinbase as coinbase_instance,
35
- getSolanaAccounts,
36
- solanaCoinbase,
37
- } from '../utils.js';
38
-
39
- const WALLET = WalletTypes.COINBASE;
40
-
41
- export const config = {
42
- type: WALLET,
43
- defaultNetwork: Networks.ETHEREUM,
44
- };
45
-
46
- export const getInstance = coinbase_instance;
47
- export const connect: Connect = async ({ instance, meta }) => {
48
- /*
49
- * Note: We need to get `chainId` here, because for the first time
50
- * after opening the browser, wallet is locked, and don't give us accounts and chainId
51
- * on `check` phase, so `network` will be null. For this case we need to get chainId
52
- * whenever we are requesting accounts.
53
- */
54
- const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);
55
- const results: ProviderConnectResult[] = [];
56
-
57
- if (evm_instance) {
58
- const evm = await getEvmAccounts(evm_instance);
59
- results.push(evm);
60
- }
61
-
62
- const solanaInstance = solanaCoinbase();
63
- if (solanaInstance) {
64
- const solanaResults = await getSolanaAccounts(solanaInstance);
65
- results.push(solanaResults);
66
- }
67
-
68
- return results;
69
- };
70
-
71
- export const subscribe: Subscribe = (options) => {
72
- const ethInstance = chooseInstance(
73
- options.instance,
74
- options.meta,
75
- Networks.ETHEREUM
76
- );
77
- const solanaInstance = chooseInstance(
78
- options.instance,
79
- options.meta,
80
- Networks.SOLANA
81
- );
82
- const { connect, updateAccounts, state, updateChainId, meta } = options;
83
- const handleEvmAccountsChanged = (addresses: string[]) => {
84
- const eth_chainId = meta
85
- .filter(isEvmBlockchain)
86
- .find((blockchain) => blockchain.name === Networks.ETHEREUM)?.chainId;
87
- if (state.connected) {
88
- if (state.network != Networks.ETHEREUM && eth_chainId) {
89
- updateChainId(eth_chainId);
90
- }
91
- updateAccounts(addresses);
92
- }
93
- };
94
-
95
- const handleSolanaAccountChanged = async (publicKey: string) => {
96
- if (state.network != Networks.SOLANA) {
97
- updateChainId(meta.filter(isSolanaBlockchain)[0].chainId);
98
- }
99
- const network = Networks.SOLANA;
100
- if (publicKey) {
101
- const account = publicKey.toString();
102
- updateAccounts([account]);
103
- } else {
104
- connect(network);
105
- }
106
- };
107
- ethInstance?.on?.('accountsChanged', handleEvmAccountsChanged);
108
-
109
- solanaInstance?.on?.('accountChanged', handleSolanaAccountChanged);
110
-
111
- return () => {
112
- ethInstance?.off?.('accountsChanged', handleEvmAccountsChanged);
113
-
114
- solanaInstance?.off?.('accountChanged', handleSolanaAccountChanged);
115
- };
116
- };
117
- export const switchNetwork: SwitchNetwork = switchNetworkForEvm;
118
-
119
- export const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;
120
-
121
- export const getSigners: (provider: Provider) => Promise<SignerFactory> =
122
- signer;
123
-
124
- export const canEagerConnect: CanEagerConnect = async ({ instance, meta }) => {
125
- const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);
126
- if (evm_instance) {
127
- return canEagerlyConnectToEvm({ instance: evm_instance, meta });
128
- }
129
- return Promise.resolve(false);
130
- };
131
-
132
- export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
133
- allBlockChains
134
- ) => {
135
- const evms = evmBlockchains(allBlockChains);
136
- const solana = solanaBlockchain(allBlockChains);
137
- return {
138
- name: 'Coinbase',
139
- img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coinbase/icon.svg',
140
- installLink: {
141
- CHROME:
142
- 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',
143
- BRAVE:
144
- 'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',
145
- DEFAULT: 'https://www.coinbase.com/wallet',
146
- },
147
- color: '#2a62f5',
148
- supportedChains: [...evms, ...solana],
149
- needsNamespace: {
150
- selection: 'multiple',
151
- data: [
152
- {
153
- label: 'EVM',
154
- value: 'EVM',
155
- id: 'ETH',
156
- getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
157
- evmBlockchains(allBlockchains),
158
- },
159
- {
160
- label: 'Solana',
161
- value: 'Solana',
162
- id: 'SOLANA',
163
- getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
164
- solanaBlockchain(allBlockchains),
165
- },
166
- ],
167
- },
168
- };
169
- };
170
-
171
- const buildLegacyProvider: () => LegacyProviderInterface = () => ({
172
- config,
173
- getInstance,
174
- connect,
175
- subscribe,
176
- switchNetwork,
177
- canSwitchNetworkTo,
178
- getSigners,
179
- getWalletInfo,
180
- canEagerConnect,
181
- });
182
-
183
- export { buildLegacyProvider };