@rango-dev/provider-ledger 0.18.1-next.3 → 0.19.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.19.0](https://github.com/rango-exchange/rango-client/compare/provider-ledger@0.18.0...provider-ledger@0.19.0) (2025-08-05)
2
+
3
+
4
+
1
5
  # [0.18.0](https://github.com/rango-exchange/rango-client/compare/provider-ledger@0.17.0...provider-ledger@0.18.0) (2025-07-22)
2
6
 
3
7
 
@@ -0,0 +1,2 @@
1
+ import{a as r,m as c}from"./chunk-CVKDPNYM.js";var d="";function E(t){d=t}r(E,"setDerivationPath");function u(){return d}r(u,"getDerivationPath");import{ETHEREUM_CHAIN_ID as l,Networks as a,retryLazyImport as f}from"@rango-dev/wallets-shared";import m from"bs58";var y=16,p={21781:"The device is locked",25871:"Related application is not ready on your device",27013:"Action denied by user"};function A(t){return p[t]?p[t]:c(t)?c(t):`Ledger device unknown error 0x${t.toString(y)}`}r(A,"getLedgerErrorMessage");function g(t){return t?.statusCode?new Error(A(t.statusCode)):t?.code==="INSUFFICIENT_FUNDS"?new Error("Insufficient funds for transaction"):t}r(g,"getLedgerError");function N(){let t=new Map;return t.set(a.ETHEREUM,{chainId:l}),t.set(a.SOLANA,{chainId:a.SOLANA}),t}r(N,"getLedgerInstance");async function C(){try{let t=await w(),n=u(),s=new(await f(async()=>await import("./Eth-5PCPPYSI.js"))).default(t),e=[],i=await s.getAddress(n,!1,!0);return e.push(i.address),{accounts:e,chainId:l,derivationPath:n}}catch(t){throw g(t)}finally{await h()}}r(C,"getEthereumAccounts");async function D(){try{let t=await w(),n=u(),s=new(await f(async()=>await import("./Solana-NJS3LWGA.js"))).default(t),e=[],i=await s.getAddress(n);return e.push(m.encode(i.address)),{accounts:e,chainId:a.SOLANA,derivationPath:n}}catch(t){throw g(t)}finally{await h()}}r(D,"getSolanaAccounts");var o=null;async function w(){return o=await(await import("./TransportWebHID-JLT4ETY3.js")).default.create(),o}r(w,"transportConnect");async function h(){o&&(await o.close(),o=null)}r(h,"transportDisconnect");export{E as a,u as b,g as c,N as d,C as e,D as f,w as g,h};
2
+ //# sourceMappingURL=chunk-DCWKMLDG.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/state.ts", "../src/helpers.ts"],
4
+ "sourcesContent": ["// We keep derivationPath here because we need to maintain it for signing transactions after it is set in connect method\nlet derivationPath = '';\n\nexport function setDerivationPath(path: string) {\n derivationPath = path;\n}\n\nexport function getDerivationPath() {\n return derivationPath;\n}\n", "import type Transport from '@ledgerhq/hw-transport';\n\nimport { getAltStatusMessage } from '@ledgerhq/errors';\nimport {\n ETHEREUM_CHAIN_ID,\n Networks,\n type ProviderConnectResult,\n retryLazyImport,\n} from '@rango-dev/wallets-shared';\nimport bs58 from 'bs58';\n\nimport { getDerivationPath } from './state.js';\n\nexport const HEXADECIMAL_BASE = 16;\n\nconst ledgerFrequentErrorMessages: { [statusCode: number]: string } = {\n 0x5515: 'The device is locked',\n 0x650f: 'Related application is not ready on your device',\n 0x6985: 'Action denied by user',\n};\n\nfunction getLedgerErrorMessage(statusCode: number): string {\n if (ledgerFrequentErrorMessages[statusCode]) {\n return ledgerFrequentErrorMessages[statusCode];\n } else if (getAltStatusMessage(statusCode)) {\n return getAltStatusMessage(statusCode) as string;\n }\n\n return `Ledger device unknown error 0x${statusCode.toString(\n HEXADECIMAL_BASE\n )}`; // Hexadecimal numbers are more commonly recognized and utilized for representing ledger error codes\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getLedgerError(error: any) {\n if (error?.statusCode) {\n return new Error(getLedgerErrorMessage(error.statusCode));\n }\n\n if (error?.code === 'INSUFFICIENT_FUNDS') {\n return new Error('Insufficient funds for transaction');\n }\n return error;\n}\n\nexport function getLedgerInstance() {\n /*\n * Instances have a required property which is `chainId` and is using in swap execution.\n * Here we are setting it as Ethereum always since we are supporting only eth for now.\n */\n const instances = new Map();\n\n instances.set(Networks.ETHEREUM, { chainId: ETHEREUM_CHAIN_ID });\n instances.set(Networks.SOLANA, { chainId: Networks.SOLANA });\n\n return instances;\n}\n\nexport async function getEthereumAccounts(): Promise<ProviderConnectResult> {\n try {\n const transport = await transportConnect();\n const derivationPath = getDerivationPath();\n\n const eth = new (\n await retryLazyImport(async () => await import('@ledgerhq/hw-app-eth'))\n ).default(transport);\n\n const accounts: string[] = [];\n\n const result = await eth.getAddress(derivationPath, false, true);\n accounts.push(result.address);\n\n return {\n accounts: accounts,\n chainId: ETHEREUM_CHAIN_ID,\n derivationPath,\n };\n } catch (error) {\n throw getLedgerError(error);\n } finally {\n await transportDisconnect();\n }\n}\n\nexport async function getSolanaAccounts(): Promise<ProviderConnectResult> {\n try {\n const transport = await transportConnect();\n const derivationPath = getDerivationPath();\n\n const solana = new (\n await retryLazyImport(async () => await import('@ledgerhq/hw-app-solana'))\n ).default(transport);\n\n const accounts: string[] = [];\n\n const result = await solana.getAddress(derivationPath);\n accounts.push(bs58.encode(result.address));\n\n return {\n accounts: accounts,\n chainId: Networks.SOLANA,\n derivationPath,\n };\n } catch (error) {\n throw getLedgerError(error);\n } finally {\n await transportDisconnect();\n }\n}\n\nlet transportConnection: Transport | null = null;\n\nexport async function transportConnect() {\n transportConnection = await (\n await import('@ledgerhq/hw-transport-webhid')\n ).default.create();\n\n return transportConnection;\n}\n\nexport async function transportDisconnect() {\n if (transportConnection) {\n await transportConnection.close();\n transportConnection = null;\n }\n}\n"],
5
+ "mappings": "+CACA,IAAIA,EAAiB,GAEd,SAASC,EAAkBC,EAAc,CAC9CF,EAAiBE,CACnB,CAFgBC,EAAAF,EAAA,qBAIT,SAASG,GAAoB,CAClC,OAAOJ,CACT,CAFgBG,EAAAC,EAAA,qBCJhB,OACE,qBAAAC,EACA,YAAAC,EAEA,mBAAAC,MACK,4BACP,OAAOC,MAAU,OAIV,IAAMC,EAAmB,GAE1BC,EAAgE,CACpE,MAAQ,uBACR,MAAQ,kDACR,MAAQ,uBACV,EAEA,SAASC,EAAsBC,EAA4B,CACzD,OAAIF,EAA4BE,CAAU,EACjCF,EAA4BE,CAAU,EACpCC,EAAoBD,CAAU,EAChCC,EAAoBD,CAAU,EAGhC,iCAAiCA,EAAW,SACjDH,CACF,CAAC,EACH,CAVSK,EAAAH,EAAA,yBAaF,SAASI,EAAeC,EAAY,CACzC,OAAIA,GAAO,WACF,IAAI,MAAML,EAAsBK,EAAM,UAAU,CAAC,EAGtDA,GAAO,OAAS,qBACX,IAAI,MAAM,oCAAoC,EAEhDA,CACT,CATgBF,EAAAC,EAAA,kBAWT,SAASE,GAAoB,CAKlC,IAAMC,EAAY,IAAI,IAEtB,OAAAA,EAAU,IAAIC,EAAS,SAAU,CAAE,QAASC,CAAkB,CAAC,EAC/DF,EAAU,IAAIC,EAAS,OAAQ,CAAE,QAASA,EAAS,MAAO,CAAC,EAEpDD,CACT,CAXgBJ,EAAAG,EAAA,qBAahB,eAAsBI,GAAsD,CAC1E,GAAI,CACF,IAAMC,EAAY,MAAMC,EAAiB,EACnCC,EAAiBC,EAAkB,EAEnCC,EAAM,IACV,MAAMC,EAAgB,SAAY,KAAM,QAAO,mBAAsB,CAAC,GACtE,QAAQL,CAAS,EAEbM,EAAqB,CAAC,EAEtBC,EAAS,MAAMH,EAAI,WAAWF,EAAgB,GAAO,EAAI,EAC/D,OAAAI,EAAS,KAAKC,EAAO,OAAO,EAErB,CACL,SAAUD,EACV,QAASR,EACT,eAAAI,CACF,CACF,OAASR,EAAO,CACd,MAAMD,EAAeC,CAAK,CAC5B,QAAE,CACA,MAAMc,EAAoB,CAC5B,CACF,CAxBsBhB,EAAAO,EAAA,uBA0BtB,eAAsBU,GAAoD,CACxE,GAAI,CACF,IAAMT,EAAY,MAAMC,EAAiB,EACnCC,EAAiBC,EAAkB,EAEnCO,EAAS,IACb,MAAML,EAAgB,SAAY,KAAM,QAAO,sBAAyB,CAAC,GACzE,QAAQL,CAAS,EAEbM,EAAqB,CAAC,EAEtBC,EAAS,MAAMG,EAAO,WAAWR,CAAc,EACrD,OAAAI,EAAS,KAAKK,EAAK,OAAOJ,EAAO,OAAO,CAAC,EAElC,CACL,SAAUD,EACV,QAAST,EAAS,OAClB,eAAAK,CACF,CACF,OAASR,EAAO,CACd,MAAMD,EAAeC,CAAK,CAC5B,QAAE,CACA,MAAMc,EAAoB,CAC5B,CACF,CAxBsBhB,EAAAiB,EAAA,qBA0BtB,IAAIG,EAAwC,KAE5C,eAAsBX,GAAmB,CACvC,OAAAW,EAAsB,MACpB,KAAM,QAAO,+BAA+B,GAC5C,QAAQ,OAAO,EAEVA,CACT,CANsBpB,EAAAS,EAAA,oBAQtB,eAAsBO,GAAsB,CACtCI,IACF,MAAMA,EAAoB,MAAM,EAChCA,EAAsB,KAE1B,CALsBpB,EAAAgB,EAAA",
6
+ "names": ["derivationPath", "setDerivationPath", "path", "__name", "getDerivationPath", "ETHEREUM_CHAIN_ID", "Networks", "retryLazyImport", "bs58", "HEXADECIMAL_BASE", "ledgerFrequentErrorMessages", "getLedgerErrorMessage", "statusCode", "getAltStatusMessage", "__name", "getLedgerError", "error", "getLedgerInstance", "instances", "Networks", "ETHEREUM_CHAIN_ID", "getEthereumAccounts", "transport", "transportConnect", "derivationPath", "getDerivationPath", "eth", "retryLazyImport", "accounts", "result", "transportDisconnect", "getSolanaAccounts", "solana", "bs58", "transportConnection"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{m as d,n as o}from"./chunk-HLLU77MH.js";import"./chunk-5QSDSOWH.js";import{b as s,c as h,g as i,h as l}from"./chunk-XYQB3WYG.js";import{a as p}from"./chunk-CVKDPNYM.js";import{DEFAULT_ETHEREUM_RPC_URL as P}from"@rango-dev/wallets-shared";import{JsonRpcProvider as y,Transaction as f}from"ethers";import{SignerError as E,SignerErrorCode as R}from"rango-types";var u=class{static{p(this,"EthereumSigner")}async signMessage(r){try{let a=await i(),t=await new o(a).signPersonalMessage(s(),Buffer.from(r).toString("hex")),n=(t.v-27).toString(16);return n.length<2&&(n="0"+n),"0x"+t.r+t.s+n}catch(a){throw new E(R.SIGN_TX_ERROR,void 0,a)}}async signAndSendTx(r,a,c){try{let t=new y(P),n=await t.getTransactionCount(a),g={to:r.to,gasPrice:r.gasPrice,gasLimit:r.gasLimit,nonce:n,chainId:c,data:r.data,value:r.value,maxPriorityFeePerGas:r.maxPriorityFeePerGas,maxFeePerGas:r.maxFeePerGas},m=f.from(g).unsignedSerialized.substring(2),T=await d.resolveTransaction(m,{},{}),v=await i(),e=await new o(v).signTransaction(s(),m,T),w=f.from({...g,signature:{r:"0x"+e.r,s:"0x"+e.s,v:parseInt(e.v)}}).serialized;return{hash:(await t.broadcastTransaction(w)).hash}}catch(t){throw h(t)}finally{await l()}}};export{u as EthereumSigner};
2
- //# sourceMappingURL=ethereum-YR2W5SM2.js.map
1
+ import{m as d,n as o}from"./chunk-HLLU77MH.js";import"./chunk-5QSDSOWH.js";import{b as s,c as h,g as i,h as l}from"./chunk-DCWKMLDG.js";import{a as p}from"./chunk-CVKDPNYM.js";import{DEFAULT_ETHEREUM_RPC_URL as P}from"@rango-dev/wallets-shared";import{JsonRpcProvider as y,Transaction as f}from"ethers";import{SignerError as E,SignerErrorCode as R}from"rango-types";var u=class{static{p(this,"EthereumSigner")}async signMessage(r){try{let a=await i(),t=await new o(a).signPersonalMessage(s(),Buffer.from(r).toString("hex")),n=(t.v-27).toString(16);return n.length<2&&(n="0"+n),"0x"+t.r+t.s+n}catch(a){throw new E(R.SIGN_TX_ERROR,void 0,a)}}async signAndSendTx(r,a,c){try{let t=new y(P),n=await t.getTransactionCount(a),g={to:r.to,gasPrice:r.gasPrice,gasLimit:r.gasLimit,nonce:n,chainId:c,data:r.data,value:r.value,maxPriorityFeePerGas:r.maxPriorityFeePerGas,maxFeePerGas:r.maxFeePerGas},m=f.from(g).unsignedSerialized.substring(2),T=await d.resolveTransaction(m,{},{}),v=await i(),e=await new o(v).signTransaction(s(),m,T),w=f.from({...g,signature:{r:"0x"+e.r,s:"0x"+e.s,v:parseInt(e.v)}}).serialized;return{hash:(await t.broadcastTransaction(w)).hash}}catch(t){throw h(t)}finally{await l()}}};export{u as EthereumSigner};
2
+ //# sourceMappingURL=ethereum-X7JPA2J3.js.map
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as c,d as p,e as m,f as g,h as d}from"./chunk-XYQB3WYG.js";import{a as r}from"./chunk-CVKDPNYM.js";import{Networks as i,WalletTypes as y}from"@rango-dev/wallets-shared";import"rango-types";import{DefaultSignerFactory as u,TransactionType as h}from"rango-types";async function l(){let t=new u,{EthereumSigner:n}=await import("./ethereum-YR2W5SM2.js"),{SolanaSigner:a}=await import("./solana-KA6FNSW3.js");return t.registerSigner(h.EVM,new n),t.registerSigner(h.SOLANA,new a),t}r(l,"getSigners");var M={type:y.LEDGER},L=p,b=r(async({namespaces:t})=>{let n=[],a=t?.find(e=>e.namespace==="Solana"),o=t?.find(e=>e.namespace==="EVM");if(a)if(a.derivationPath){c(a.derivationPath);let e=await g();n.push(e)}else throw new Error("Derivation Path can not be empty.");else if(o)if(o.derivationPath){c(o.derivationPath);let e=await m();n.push(e)}else throw new Error("Derivation Path can not be empty.");else throw new Error(`It appears that you have selected a namespace that is not yet supported by our system. Your namespaces: ${t?.map(e=>e.namespace)}`);return n},"connect"),k=r(async()=>{d()},"disconnect"),A=l,T=r(t=>{let n=[],a=t.find(e=>e.name===i.ETHEREUM);a&&n.push(a);let o=t.find(e=>e.name===i.SOLANA);return o&&n.push(o),{name:"Ledger",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/ledger/icon.svg",installLink:{DEFAULT:"https://support.ledger.com/hc/en-us/articles/4404389606417-Download-and-install-Ledger-Live?docs=true"},color:"black",supportedChains:n,showOnMobile:!1,needsDerivationPath:{data:[{id:"metamask",label:"Metamask (m/44'/60'/0'/0/index)",namespace:"EVM",generateDerivationPath:e=>`44'/60'/0'/0/${e}`},{id:"ledgerLive",label:"LedgerLive (m/44'/60'/index'/0/0)",namespace:"EVM",generateDerivationPath:e=>`44'/60'/${e}'/0/0`},{id:"legacy",label:"Legacy (m/44'/60'/0'/index)",namespace:"EVM",generateDerivationPath:e=>`44'/60'/0'/${e}`},{id:"(m/44'/501'/index')",label:"(m/44'/501'/index')",namespace:"Solana",generateDerivationPath:e=>`44'/501'/${e}'`},{id:"(m/44'/501'/0'/index)",label:"(m/44'/501'/0'/index)",namespace:"Solana",generateDerivationPath:e=>`44'/501'/0'/${e}`}]},needsNamespace:{selection:"single",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:e=>e.filter(s=>s.name===i.ETHEREUM)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:e=>e.filter(s=>s.name===i.SOLANA)}]}}},"getWalletInfo");export{M as config,b as connect,k as disconnect,L as getInstance,A as getSigners,T as getWalletInfo};
1
+ import{a as c,d as p,e as m,f as g,h as d}from"./chunk-DCWKMLDG.js";import{a as r}from"./chunk-CVKDPNYM.js";import{Networks as i,WalletTypes as f}from"@rango-dev/wallets-shared";import"rango-types";import{retryLazyImport as h}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as y,TransactionType as u}from"rango-types";async function l(){let t=new y,{EthereumSigner:a}=await h(async()=>await import("./ethereum-X7JPA2J3.js")),{SolanaSigner:n}=await h(async()=>await import("./solana-IAFAKOIV.js"));return t.registerSigner(u.EVM,new a),t.registerSigner(u.SOLANA,new n),t}r(l,"getSigners");var b={type:f.LEDGER},k=p,A=r(async({namespaces:t})=>{let a=[],n=t?.find(e=>e.namespace==="Solana"),o=t?.find(e=>e.namespace==="EVM");if(n)if(n.derivationPath){c(n.derivationPath);let e=await g();a.push(e)}else throw new Error("Derivation Path can not be empty.");else if(o)if(o.derivationPath){c(o.derivationPath);let e=await m();a.push(e)}else throw new Error("Derivation Path can not be empty.");else throw new Error(`It appears that you have selected a namespace that is not yet supported by our system. Your namespaces: ${t?.map(e=>e.namespace)}`);return a},"connect"),T=r(async()=>{d()},"disconnect"),I=l,N=r(t=>{let a=[],n=t.find(e=>e.name===i.ETHEREUM);n&&a.push(n);let o=t.find(e=>e.name===i.SOLANA);return o&&a.push(o),{name:"Ledger",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/ledger/icon.svg",installLink:{DEFAULT:"https://support.ledger.com/hc/en-us/articles/4404389606417-Download-and-install-Ledger-Live?docs=true"},color:"black",supportedChains:a,showOnMobile:!1,needsDerivationPath:{data:[{id:"metamask",label:"Metamask (m/44'/60'/0'/0/index)",namespace:"EVM",generateDerivationPath:e=>`44'/60'/0'/0/${e}`},{id:"ledgerLive",label:"LedgerLive (m/44'/60'/index'/0/0)",namespace:"EVM",generateDerivationPath:e=>`44'/60'/${e}'/0/0`},{id:"legacy",label:"Legacy (m/44'/60'/0'/index)",namespace:"EVM",generateDerivationPath:e=>`44'/60'/0'/${e}`},{id:"(m/44'/501'/index')",label:"(m/44'/501'/index')",namespace:"Solana",generateDerivationPath:e=>`44'/501'/${e}'`},{id:"(m/44'/501'/0'/index)",label:"(m/44'/501'/0'/index)",namespace:"Solana",generateDerivationPath:e=>`44'/501'/0'/${e}`}]},needsNamespace:{selection:"single",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:e=>e.filter(s=>s.name===i.ETHEREUM)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:e=>e.filter(s=>s.name===i.SOLANA)}]}}},"getWalletInfo");export{b as config,A as connect,T as disconnect,k as getInstance,I as getSigners,N as getWalletInfo};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/signer.ts"],
4
- "sourcesContent": ["import type {\n Connect,\n Disconnect,\n ProviderConnectResult,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\n\nimport { Networks, WalletTypes } from '@rango-dev/wallets-shared';\nimport { type BlockchainMeta, type SignerFactory } from 'rango-types';\n\nimport {\n getEthereumAccounts,\n getLedgerInstance,\n getSolanaAccounts,\n transportDisconnect,\n} from './helpers.js';\nimport signer from './signer.js';\nimport { setDerivationPath } from './state.js';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype InstanceType = any;\n\nexport const config = {\n type: WalletTypes.LEDGER,\n};\n\nexport const getInstance = getLedgerInstance;\nexport const connect: Connect = async ({ namespaces }) => {\n const results: ProviderConnectResult[] = [];\n\n const solanaNamespace = namespaces?.find(\n (namespaceItem) => namespaceItem.namespace === 'Solana'\n );\n const evmNamespace = namespaces?.find(\n (namespaceItem) => namespaceItem.namespace === 'EVM'\n );\n\n if (solanaNamespace) {\n if (solanaNamespace.derivationPath) {\n setDerivationPath(solanaNamespace.derivationPath);\n const accounts = await getSolanaAccounts();\n results.push(accounts);\n } else {\n throw new Error('Derivation Path can not be empty.');\n }\n } else if (evmNamespace) {\n if (evmNamespace.derivationPath) {\n setDerivationPath(evmNamespace.derivationPath);\n const accounts = await getEthereumAccounts();\n results.push(accounts);\n } else {\n throw new Error('Derivation Path can not be empty.');\n }\n } else {\n throw new Error(\n `It appears that you have selected a namespace that is not yet supported by our system. Your namespaces: ${namespaces?.map(\n (namespaceItem) => namespaceItem.namespace\n )}`\n );\n }\n\n return results;\n};\n\nexport const disconnect: Disconnect = async () => {\n void transportDisconnect();\n};\n\nexport const getSigners: (provider: InstanceType) => Promise<SignerFactory> =\n signer;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const supportedChains: BlockchainMeta[] = [];\n\n const ethereumBlockchain = allBlockChains.find(\n (chain) => chain.name === Networks.ETHEREUM\n );\n if (ethereumBlockchain) {\n supportedChains.push(ethereumBlockchain);\n }\n\n const solanaBlockchain = allBlockChains.find(\n (chain) => chain.name === Networks.SOLANA\n );\n if (solanaBlockchain) {\n supportedChains.push(solanaBlockchain);\n }\n\n return {\n name: 'Ledger',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/ledger/icon.svg',\n installLink: {\n DEFAULT:\n 'https://support.ledger.com/hc/en-us/articles/4404389606417-Download-and-install-Ledger-Live?docs=true',\n },\n color: 'black',\n supportedChains,\n showOnMobile: false,\n needsDerivationPath: {\n data: [\n {\n id: 'metamask',\n label: `Metamask (m/44'/60'/0'/0/index)`,\n namespace: 'EVM',\n generateDerivationPath: (index: string) => `44'/60'/0'/0/${index}`,\n },\n {\n id: 'ledgerLive',\n label: `LedgerLive (m/44'/60'/index'/0/0)`,\n namespace: 'EVM',\n generateDerivationPath: (index: string) => `44'/60'/${index}'/0/0`,\n },\n {\n id: 'legacy',\n label: `Legacy (m/44'/60'/0'/index)`,\n namespace: 'EVM',\n generateDerivationPath: (index: string) => `44'/60'/0'/${index}`,\n },\n {\n id: `(m/44'/501'/index')`,\n label: `(m/44'/501'/index')`,\n namespace: 'Solana',\n generateDerivationPath: (index: string) => `44'/501'/${index}'`,\n },\n {\n id: `(m/44'/501'/0'/index)`,\n label: `(m/44'/501'/0'/index)`,\n namespace: 'Solana',\n generateDerivationPath: (index: string) => `44'/501'/0'/${index}`,\n },\n ],\n },\n\n needsNamespace: {\n selection: 'single',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n allBlockchains.filter((chain) => chain.name === Networks.ETHEREUM),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n allBlockchains.filter((chain) => chain.name === Networks.SOLANA),\n },\n ],\n },\n };\n};\n", "import type { SignerFactory } from 'rango-types';\n\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(): Promise<SignerFactory> {\n const signers = new DefaultSignerFactory();\n const { EthereumSigner } = await import('./signers/ethereum.js');\n const { SolanaSigner } = await import('./signers/solana.js');\n signers.registerSigner(TxType.EVM, new EthereumSigner());\n signers.registerSigner(TxType.SOLANA, new SolanaSigner());\n return signers;\n}\n"],
5
- "mappings": "4GAOA,OAAS,YAAAA,EAAU,eAAAC,MAAmB,4BACtC,MAAwD,cCNxD,OAAS,wBAAAC,EAAsB,mBAAmBC,MAAc,cAEhE,eAAOC,GAA4D,CACjE,IAAMC,EAAU,IAAIC,EACd,CAAE,eAAAC,CAAe,EAAI,KAAM,QAAO,wBAAuB,EACzD,CAAE,aAAAC,CAAa,EAAI,KAAM,QAAO,sBAAqB,EAC3D,OAAAH,EAAQ,eAAeI,EAAO,IAAK,IAAIF,CAAgB,EACvDF,EAAQ,eAAeI,EAAO,OAAQ,IAAID,CAAc,EACjDH,CACT,CAP8BK,EAAAN,EAAA,cDkBvB,IAAMO,EAAS,CACpB,KAAMC,EAAY,MACpB,EAEaC,EAAcC,EACdC,EAAmBC,EAAA,MAAO,CAAE,WAAAC,CAAW,IAAM,CACxD,IAAMC,EAAmC,CAAC,EAEpCC,EAAkBF,GAAY,KACjCG,GAAkBA,EAAc,YAAc,QACjD,EACMC,EAAeJ,GAAY,KAC9BG,GAAkBA,EAAc,YAAc,KACjD,EAEA,GAAID,EACF,GAAIA,EAAgB,eAAgB,CAClCG,EAAkBH,EAAgB,cAAc,EAChD,IAAMI,EAAW,MAAMC,EAAkB,EACzCN,EAAQ,KAAKK,CAAQ,CACvB,KACE,OAAM,IAAI,MAAM,mCAAmC,UAE5CF,EACT,GAAIA,EAAa,eAAgB,CAC/BC,EAAkBD,EAAa,cAAc,EAC7C,IAAME,EAAW,MAAME,EAAoB,EAC3CP,EAAQ,KAAKK,CAAQ,CACvB,KACE,OAAM,IAAI,MAAM,mCAAmC,MAGrD,OAAM,IAAI,MACR,2GAA2GN,GAAY,IACpHG,GAAkBA,EAAc,SACnC,CAAC,EACH,EAGF,OAAOF,CACT,EAnCgC,WAqCnBQ,EAAyBV,EAAA,SAAY,CAC3CW,EAAoB,CAC3B,EAFsC,cAIzBC,EACXA,EAEWC,EAAkEb,EAC7Ec,GACG,CACH,IAAMC,EAAoC,CAAC,EAErCC,EAAqBF,EAAe,KACvCG,GAAUA,EAAM,OAASC,EAAS,QACrC,EACIF,GACFD,EAAgB,KAAKC,CAAkB,EAGzC,IAAMG,EAAmBL,EAAe,KACrCG,GAAUA,EAAM,OAASC,EAAS,MACrC,EACA,OAAIC,GACFJ,EAAgB,KAAKI,CAAgB,EAGhC,CACL,KAAM,SACN,IAAK,uFACL,YAAa,CACX,QACE,uGACJ,EACA,MAAO,QACP,gBAAAJ,EACA,aAAc,GACd,oBAAqB,CACnB,KAAM,CACJ,CACE,GAAI,WACJ,MAAO,kCACP,UAAW,MACX,uBAAyBK,GAAkB,gBAAgBA,CAAK,EAClE,EACA,CACE,GAAI,aACJ,MAAO,oCACP,UAAW,MACX,uBAAyBA,GAAkB,WAAWA,CAAK,OAC7D,EACA,CACE,GAAI,SACJ,MAAO,8BACP,UAAW,MACX,uBAAyBA,GAAkB,cAAcA,CAAK,EAChE,EACA,CACE,GAAI,sBACJ,MAAO,sBACP,UAAW,SACX,uBAAyBA,GAAkB,YAAYA,CAAK,GAC9D,EACA,CACE,GAAI,wBACJ,MAAO,wBACP,UAAW,SACX,uBAAyBA,GAAkB,eAAeA,CAAK,EACjE,CACF,CACF,EAEA,eAAgB,CACd,UAAW,SACX,KAAM,CACJ,CACE,MAAO,MACP,MAAO,MACP,GAAI,MACJ,mBAAqBC,GACnBA,EAAe,OAAQJ,GAAUA,EAAM,OAASC,EAAS,QAAQ,CACrE,EACA,CACE,MAAO,SACP,MAAO,SACP,GAAI,SACJ,mBAAqBG,GACnBA,EAAe,OAAQJ,GAAUA,EAAM,OAASC,EAAS,MAAM,CACnE,CACF,CACF,CACF,CACF,EApF+E",
6
- "names": ["Networks", "WalletTypes", "DefaultSignerFactory", "TxType", "getSigners", "signers", "DefaultSignerFactory", "EthereumSigner", "SolanaSigner", "TxType", "__name", "config", "WalletTypes", "getInstance", "getLedgerInstance", "connect", "__name", "namespaces", "results", "solanaNamespace", "namespaceItem", "evmNamespace", "setDerivationPath", "accounts", "getSolanaAccounts", "getEthereumAccounts", "disconnect", "transportDisconnect", "getSigners", "getWalletInfo", "allBlockChains", "supportedChains", "ethereumBlockchain", "chain", "Networks", "solanaBlockchain", "index", "allBlockchains"]
4
+ "sourcesContent": ["import type {\n Connect,\n Disconnect,\n ProviderConnectResult,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\n\nimport { Networks, WalletTypes } from '@rango-dev/wallets-shared';\nimport { type BlockchainMeta, type SignerFactory } from 'rango-types';\n\nimport {\n getEthereumAccounts,\n getLedgerInstance,\n getSolanaAccounts,\n transportDisconnect,\n} from './helpers.js';\nimport signer from './signer.js';\nimport { setDerivationPath } from './state.js';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype InstanceType = any;\n\nexport const config = {\n type: WalletTypes.LEDGER,\n};\n\nexport const getInstance = getLedgerInstance;\nexport const connect: Connect = async ({ namespaces }) => {\n const results: ProviderConnectResult[] = [];\n\n const solanaNamespace = namespaces?.find(\n (namespaceItem) => namespaceItem.namespace === 'Solana'\n );\n const evmNamespace = namespaces?.find(\n (namespaceItem) => namespaceItem.namespace === 'EVM'\n );\n\n if (solanaNamespace) {\n if (solanaNamespace.derivationPath) {\n setDerivationPath(solanaNamespace.derivationPath);\n const accounts = await getSolanaAccounts();\n results.push(accounts);\n } else {\n throw new Error('Derivation Path can not be empty.');\n }\n } else if (evmNamespace) {\n if (evmNamespace.derivationPath) {\n setDerivationPath(evmNamespace.derivationPath);\n const accounts = await getEthereumAccounts();\n results.push(accounts);\n } else {\n throw new Error('Derivation Path can not be empty.');\n }\n } else {\n throw new Error(\n `It appears that you have selected a namespace that is not yet supported by our system. Your namespaces: ${namespaces?.map(\n (namespaceItem) => namespaceItem.namespace\n )}`\n );\n }\n\n return results;\n};\n\nexport const disconnect: Disconnect = async () => {\n void transportDisconnect();\n};\n\nexport const getSigners: (provider: InstanceType) => Promise<SignerFactory> =\n signer;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const supportedChains: BlockchainMeta[] = [];\n\n const ethereumBlockchain = allBlockChains.find(\n (chain) => chain.name === Networks.ETHEREUM\n );\n if (ethereumBlockchain) {\n supportedChains.push(ethereumBlockchain);\n }\n\n const solanaBlockchain = allBlockChains.find(\n (chain) => chain.name === Networks.SOLANA\n );\n if (solanaBlockchain) {\n supportedChains.push(solanaBlockchain);\n }\n\n return {\n name: 'Ledger',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/ledger/icon.svg',\n installLink: {\n DEFAULT:\n 'https://support.ledger.com/hc/en-us/articles/4404389606417-Download-and-install-Ledger-Live?docs=true',\n },\n color: 'black',\n supportedChains,\n showOnMobile: false,\n needsDerivationPath: {\n data: [\n {\n id: 'metamask',\n label: `Metamask (m/44'/60'/0'/0/index)`,\n namespace: 'EVM',\n generateDerivationPath: (index: string) => `44'/60'/0'/0/${index}`,\n },\n {\n id: 'ledgerLive',\n label: `LedgerLive (m/44'/60'/index'/0/0)`,\n namespace: 'EVM',\n generateDerivationPath: (index: string) => `44'/60'/${index}'/0/0`,\n },\n {\n id: 'legacy',\n label: `Legacy (m/44'/60'/0'/index)`,\n namespace: 'EVM',\n generateDerivationPath: (index: string) => `44'/60'/0'/${index}`,\n },\n {\n id: `(m/44'/501'/index')`,\n label: `(m/44'/501'/index')`,\n namespace: 'Solana',\n generateDerivationPath: (index: string) => `44'/501'/${index}'`,\n },\n {\n id: `(m/44'/501'/0'/index)`,\n label: `(m/44'/501'/0'/index)`,\n namespace: 'Solana',\n generateDerivationPath: (index: string) => `44'/501'/0'/${index}`,\n },\n ],\n },\n\n needsNamespace: {\n selection: 'single',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n allBlockchains.filter((chain) => chain.name === Networks.ETHEREUM),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n allBlockchains.filter((chain) => chain.name === Networks.SOLANA),\n },\n ],\n },\n };\n};\n", "import type { SignerFactory } from 'rango-types';\n\nimport { retryLazyImport } from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(): Promise<SignerFactory> {\n const signers = new DefaultSignerFactory();\n const { EthereumSigner } = await retryLazyImport(\n async () => await import('./signers/ethereum.js')\n );\n const { SolanaSigner } = await retryLazyImport(\n async () => await import('./signers/solana.js')\n );\n signers.registerSigner(TxType.EVM, new EthereumSigner());\n signers.registerSigner(TxType.SOLANA, new SolanaSigner());\n return signers;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Networks", "WalletTypes", "retryLazyImport", "DefaultSignerFactory", "TxType", "getSigners", "signers", "DefaultSignerFactory", "EthereumSigner", "retryLazyImport", "SolanaSigner", "TxType", "__name", "config", "WalletTypes", "getInstance", "getLedgerInstance", "connect", "__name", "namespaces", "results", "solanaNamespace", "namespaceItem", "evmNamespace", "setDerivationPath", "accounts", "getSolanaAccounts", "getEthereumAccounts", "disconnect", "transportDisconnect", "getSigners", "getWalletInfo", "allBlockChains", "supportedChains", "ethereumBlockchain", "chain", "Networks", "solanaBlockchain", "index", "allBlockchains"]
7
7
  }