@rango-dev/provider-ledger 0.33.1-next.2 → 0.33.1-next.3

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.
@@ -1,4 +1,5 @@
1
1
  import type { ProviderMetadata } from '@hub3js/core';
2
2
  export declare const HEXADECIMAL_BASE = 16;
3
3
  export declare const WALLET_ID = "ledger";
4
+ export declare const ETHEREUM_CHAIN_ID: string;
4
5
  export declare const metadata: ProviderMetadata;
package/dist/mod.d.ts CHANGED
@@ -1,2 +1,3 @@
1
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
+ export { WALLET_ID } from './constants.js';
package/dist/mod.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as e,m as P}from"./chunk-CVKDPNYM.js";import{defineVersions as Pt}from"@hub3js/core/utils";import{ProviderBuilder as yt}from"@hub3js/core";import{CAIP_ETHEREUM_CHAIN_ID as at,isEvmNamespace as it}from"@hub3js/evm";import{isSolanaNamespace as st}from"@hub3js/solana";import{getChainIdFromCaip2ChainId as ct}from"@hub3js/std/utils";import{DefaultSignerFactory as ot,TransactionType as H}from"rango-types";import{DEFAULT_ETHEREUM_RPC_URL as K}from"@rango-dev/wallets-shared";import{JsonRpcProvider as J,Transaction as R}from"ethers";import{SignerError as Q,SignerErrorCode as Y}from"rango-types";var I="";function w(t){I=t}e(w,"setDerivationPath");function s(){return I}e(s,"getDerivationPath");import{EVM_NAMESPACE as $,SOLANA_NAMESPACE as W}from"@hub3js/namespaces";import{CAIP_SOLANA_CHAIN_ID as b}from"@hub3js/solana";import{ETHEREUM_CHAIN_ID as C}from"@rango-dev/wallets-shared";import X from"bs58";function D(){let t=new Map;return t.set($,{chainId:C}),t.set(W,{chainId:b}),t}e(D,"ledger");var L={21781:"The device is locked",25871:"Related application is not ready on your device",27013:"Action denied by user"};function q(t){return L[t]?L[t]:P(t)?P(t):`Ledger device unknown error 0x${t.toString(N)}`}e(q,"getLedgerErrorMessage");function d(t){return t?.statusCode?new Error(q(t.statusCode)):t?.code==="INSUFFICIENT_FUNDS"?new Error("Insufficient funds for transaction"):t}e(d,"getLedgerError");function A(t,r){throw d(r)}e(A,"standardizeAndThrowLedgerError");async function _(){try{let t=await m(),r=(await import("./Eth-57SIE6C4.js")).default,n=new r(t),a=s(),o=[],i=await n.getAddress(a,!1,!0);return o.push(i.address),{accounts:o,chainId:C,derivationPath:a}}catch(t){throw d(t)}finally{await u()}}e(_,"getEthereumAccounts");async function M(){try{let t=await m(),r=(await import("./Solana-UB4SGWQ3.js")).default,n=new r(t),a=s(),o=[],i=await n.getAddress(a);return o.push(X.encode(i.address)),{accounts:o,chainId:b,derivationPath:a}}catch(t){throw d(t)}finally{await u()}}e(M,"getSolanaAccounts");var f=null;async function m(){return f=await(await import("./TransportWebHID-YWGJOL6M.js")).default.create(),f}e(m,"transportConnect");async function u(){f&&(await f.close(),f=null)}e(u,"transportDisconnect");var E=class{static{e(this,"EthereumSigner")}async signMessage(r){try{let n=await m(),a=(await import("./Eth-57SIE6C4.js")).default,i=await new a(n).signPersonalMessage(s(),Buffer.from(r).toString("hex")),c=(i.v-27).toString(16);return c.length<2&&(c="0"+c),"0x"+i.r+i.s+c}catch(n){throw new Q(Y.SIGN_TX_ERROR,void 0,n)}}async signAndSendTx(r,n,a){try{let o=new J(K),i=await o.getTransactionCount(n),c={to:r.to,gasPrice:r.gasPrice,gasLimit:r.gasLimit,nonce:i,chainId:a,data:r.data,value:r.value,maxPriorityFeePerGas:r.maxPriorityFeePerGas,maxFeePerGas:r.maxFeePerGas},p=R.from(c).unsignedSerialized.substring(2),g=await m(),h=await import("./Eth-57SIE6C4.js"),S=h.default,x=new S(g),O=await h.ledgerService.resolveTransaction(p,{},{}),y=await x.signTransaction(s(),p,O),j=R.from({...c,signature:{r:"0x"+y.r,s:"0x"+y.s,v:parseInt(y.v)}}).serialized;return{hash:(await o.broadcastTransaction(j)).hash}}catch(o){throw d(o)}finally{await u()}}};import{generalSolanaTransactionExecutor as Z}from"@rango-dev/signer-solana";import{PublicKey as tt}from"@solana/web3.js";import{SignerError as rt,SignerErrorCode as et}from"rango-types";function nt(t){return"version"in t}e(nt,"isVersionedTransaction");var v=class{static{e(this,"SolanaSigner")}async signMessage(r){try{let n=await m(),a=(await import("./Solana-UB4SGWQ3.js")).default;return(await new a(n).signOffchainMessage(s(),Buffer.from(r))).signature.toString()}catch(n){throw new rt(et.SIGN_TX_ERROR,void 0,n)}}async signAndSendTx(r){try{return{hash:await Z(r,e(async o=>{let i=await m(),c=(await import("./Solana-UB4SGWQ3.js")).default,p=new c(i),g;nt(o)?g=await p.signTransaction(s(),o.message.serialize()):g=await p.signTransaction(s(),o.serialize());let h=await p.getAddress(s()),S=new tt(h.address);return o.addSignature(S,Buffer.from(g.signature)),o.serialize()},"DefaultSolanaSigner"))}}catch(n){throw d(n)}finally{await u()}}};async function T(){let t=new ot;return t.registerSigner(H.EVM,new E),t.registerSigner(H.SOLANA,new v),t}e(T,"getSigners");var N=16,l="ledger",B={name:"Ledger",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/ledger/icon.svg",extensions:{homepage:"https://support.ledger.com/hc/en-us/articles/4404389606417-Download-and-install-Ledger-Live?docs=true"},properties:[{name:"namespaces",value:{selection:"single",data:[{label:"Ethereum",value:"EVM",id:"ETH",isChainSupported:t=>it(t)&&ct(t)===at},{label:"Solana",value:"Solana",id:"SOLANA",isChainSupported:st}]}},{name:"derivationPath",value:{data:[{id:"metamask",label:"Metamask (m/44'/60'/0'/0/index)",namespace:"EVM",generateDerivationPath:t=>`44'/60'/0'/0/${t}`},{id:"ledgerLive",label:"LedgerLive (m/44'/60'/index'/0/0)",namespace:"EVM",generateDerivationPath:t=>`44'/60'/${t}'/0/0`},{id:"legacy",label:"Legacy (m/44'/60'/0'/index)",namespace:"EVM",generateDerivationPath:t=>`44'/60'/0'/${t}`},{id:"(m/44'/501'/index')",label:"(m/44'/501'/index')",namespace:"Solana",generateDerivationPath:t=>`44'/501'/${t}'`},{id:"(m/44'/501'/0'/index)",label:"(m/44'/501'/0'/index)",namespace:"Solana",generateDerivationPath:t=>`44'/501'/0'/${t}`}]}},{name:"signers",value:{getSigners:async()=>T()}}]};import{NamespaceBuilder as mt}from"@hub3js/core";import{builders as F,CAIP_NAMESPACE as dt}from"@hub3js/evm";import*as V from"@hub3js/std/builders";import{ETHEREUM_CHAIN_ID as pt}from"@rango-dev/wallets-shared";import{AccountId as ut}from"caip";var lt=F.connect().action(async function(t,r,n){if(!n?.derivationPath)throw new Error("Derivation Path can not be empty.");w(n.derivationPath);let a=await _();return{accounts:a.accounts.map(i=>ut.format({address:i,chainId:{namespace:dt,reference:a.chainId}})),network:a.chainId}}).or(A).build(),gt=V.disconnect().build(),ft=F.getChainId().action(()=>pt).build(),k=new mt("EVM",l).action(lt).action(gt).action(ft).build();import{NamespaceBuilder as ht}from"@hub3js/core";import{builders as wt,CAIP_NAMESPACE as At}from"@hub3js/solana";import*as z from"@hub3js/std/builders";import{AccountId as Et}from"caip";var vt=wt.connect().action(async function(t,r){if(!r?.derivationPath)throw new Error("Derivation Path can not be empty.");w(r.derivationPath);let n=await M();return n.accounts.map(o=>Et.format({address:o,chainId:{namespace:At,reference:n.chainId}}))}).or(A).build(),St=z.disconnect().build(),G=new ht("Solana",l).action(vt).action(St).build();var U=e(()=>new yt(l).init(function(t){let[,r]=t.state();D()&&r("installed",!0)}).config("metadata",B).add("solana",G).add("evm",k).build(),"buildProvider");var Dr=e(()=>Pt().version("1.0.0",U()).build(),"versions");export{Dr as versions};
1
+ import{a as e,m as T}from"./chunk-CVKDPNYM.js";import{defineVersions as yt}from"@hub3js/core/utils";import{ProviderBuilder as St}from"@hub3js/core";import{CAIP_ETHEREUM_CHAIN_ID as B,isEvmNamespace as it}from"@hub3js/evm";import{isSolanaNamespace as st}from"@hub3js/solana";import{getChainIdFromCaip2ChainId as ct}from"@hub3js/std/utils";import{DefaultSignerFactory as at,TransactionType as H}from"rango-types";import{DEFAULT_ETHEREUM_RPC_URL as J}from"@rango-dev/signer-evm";import{JsonRpcProvider as Q,Transaction as R}from"ethers";import{SignerError as Y,SignerErrorCode as Z}from"rango-types";var b="";function A(t){b=t}e(A,"setDerivationPath");function s(){return b}e(s,"getDerivationPath");import{EVM_NAMESPACE as W,SOLANA_NAMESPACE as X}from"@hub3js/namespaces";import{CAIP_SOLANA_CHAIN_ID as C}from"@hub3js/solana";import q from"bs58";function _(){let t=new Map;return t.set(W,{chainId:h}),t.set(X,{chainId:C}),t}e(_,"ledger");var D={21781:"The device is locked",25871:"Related application is not ready on your device",27013:"Action denied by user"};function K(t){return D[t]?D[t]:T(t)?T(t):`Ledger device unknown error 0x${t.toString(x)}`}e(K,"getLedgerErrorMessage");function d(t){return t?.statusCode?new Error(K(t.statusCode)):t?.code==="INSUFFICIENT_FUNDS"?new Error("Insufficient funds for transaction"):t}e(d,"getLedgerError");function E(t,r){throw d(r)}e(E,"standardizeAndThrowLedgerError");async function M(){try{let t=await m(),r=(await import("./Eth-57SIE6C4.js")).default,n=new r(t),a=s(),o=[],i=await n.getAddress(a,!1,!0);return o.push(i.address),{accounts:o,chainId:h,derivationPath:a}}catch(t){throw d(t)}finally{await l()}}e(M,"getEthereumAccounts");async function N(){try{let t=await m(),r=(await import("./Solana-UB4SGWQ3.js")).default,n=new r(t),a=s(),o=[],i=await n.getAddress(a);return o.push(q.encode(i.address)),{accounts:o,chainId:C,derivationPath:a}}catch(t){throw d(t)}finally{await l()}}e(N,"getSolanaAccounts");var f=null;async function m(){return f=await(await import("./TransportWebHID-YWGJOL6M.js")).default.create(),f}e(m,"transportConnect");async function l(){f&&(await f.close(),f=null)}e(l,"transportDisconnect");var v=class{static{e(this,"EthereumSigner")}async signMessage(r){try{let n=await m(),a=(await import("./Eth-57SIE6C4.js")).default,i=await new a(n).signPersonalMessage(s(),Buffer.from(r).toString("hex")),c=(i.v-27).toString(16);return c.length<2&&(c="0"+c),"0x"+i.r+i.s+c}catch(n){throw new Y(Z.SIGN_TX_ERROR,void 0,n)}}async signAndSendTx(r,n,a){try{let o=new Q(J),i=await o.getTransactionCount(n),c={to:r.to,gasPrice:r.gasPrice,gasLimit:r.gasLimit,nonce:i,chainId:a,data:r.data,value:r.value,maxPriorityFeePerGas:r.maxPriorityFeePerGas,maxFeePerGas:r.maxFeePerGas},u=R.from(c).unsignedSerialized.substring(2),g=await m(),w=await import("./Eth-57SIE6C4.js"),y=w.default,L=new y(g),$=await w.ledgerService.resolveTransaction(u,{},{}),P=await L.signTransaction(s(),u,$),j=R.from({...c,signature:{r:"0x"+P.r,s:"0x"+P.s,v:parseInt(P.v)}}).serialized;return{hash:(await o.broadcastTransaction(j)).hash}}catch(o){throw d(o)}finally{await l()}}};import{generalSolanaTransactionExecutor as tt}from"@rango-dev/signer-solana";import{PublicKey as rt}from"@solana/web3.js";import{SignerError as et,SignerErrorCode as nt}from"rango-types";function ot(t){return"version"in t}e(ot,"isVersionedTransaction");var S=class{static{e(this,"SolanaSigner")}async signMessage(r){try{let n=await m(),a=(await import("./Solana-UB4SGWQ3.js")).default;return(await new a(n).signOffchainMessage(s(),Buffer.from(r))).signature.toString()}catch(n){throw new et(nt.SIGN_TX_ERROR,void 0,n)}}async signAndSendTx(r){try{return{hash:await tt(r,e(async o=>{let i=await m(),c=(await import("./Solana-UB4SGWQ3.js")).default,u=new c(i),g;ot(o)?g=await u.signTransaction(s(),o.message.serialize()):g=await u.signTransaction(s(),o.serialize());let w=await u.getAddress(s()),y=new rt(w.address);return o.addSignature(y,Buffer.from(g.signature)),o.serialize()},"DefaultSolanaSigner"))}}catch(n){throw d(n)}finally{await l()}}};async function I(){let t=new at;return t.registerSigner(H.EVM,new v),t.registerSigner(H.SOLANA,new S),t}e(I,"getSigners");var x=16,p="ledger",h=`0x${Number(B).toString(x)}`,F={name:"Ledger",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/ledger/icon.svg",extensions:{homepage:"https://support.ledger.com/hc/en-us/articles/4404389606417-Download-and-install-Ledger-Live?docs=true"},properties:[{name:"namespaces",value:{selection:"single",data:[{label:"Ethereum",value:"EVM",id:"ETH",isChainSupported:t=>it(t)&&ct(t)===B},{label:"Solana",value:"Solana",id:"SOLANA",isChainSupported:st}]}},{name:"derivationPath",value:{data:[{id:"metamask",label:"Metamask (m/44'/60'/0'/0/index)",namespace:"EVM",generateDerivationPath:t=>`44'/60'/0'/0/${t}`},{id:"ledgerLive",label:"LedgerLive (m/44'/60'/index'/0/0)",namespace:"EVM",generateDerivationPath:t=>`44'/60'/${t}'/0/0`},{id:"legacy",label:"Legacy (m/44'/60'/0'/index)",namespace:"EVM",generateDerivationPath:t=>`44'/60'/0'/${t}`},{id:"(m/44'/501'/index')",label:"(m/44'/501'/index')",namespace:"Solana",generateDerivationPath:t=>`44'/501'/${t}'`},{id:"(m/44'/501'/0'/index)",label:"(m/44'/501'/0'/index)",namespace:"Solana",generateDerivationPath:t=>`44'/501'/0'/${t}`}]}},{name:"signers",value:{getSigners:async()=>I()}}]};import{NamespaceBuilder as mt}from"@hub3js/core";import{builders as V,CAIP_NAMESPACE as dt}from"@hub3js/evm";import*as k from"@hub3js/std/builders";import{AccountId as pt}from"caip";var ut=V.connect().action(async function(t,r,n){if(!n?.derivationPath)throw new Error("Derivation Path can not be empty.");A(n.derivationPath);let a=await M();return{accounts:a.accounts.map(i=>pt.format({address:i,chainId:{namespace:dt,reference:a.chainId}})),network:a.chainId}}).or(E).build(),lt=k.disconnect().build(),gt=V.getChainId().action(()=>h).build(),z=new mt("EVM",p).action(ut).action(lt).action(gt).build();import{NamespaceBuilder as ft}from"@hub3js/core";import{builders as ht,CAIP_NAMESPACE as wt}from"@hub3js/solana";import*as G from"@hub3js/std/builders";import{AccountId as At}from"caip";var Et=ht.connect().action(async function(t,r){if(!r?.derivationPath)throw new Error("Derivation Path can not be empty.");A(r.derivationPath);let n=await N();return n.accounts.map(o=>At.format({address:o,chainId:{namespace:wt,reference:n.chainId}}))}).or(E).build(),vt=G.disconnect().build(),U=new ft("Solana",p).action(Et).action(vt).build();var O=e(()=>new St(p).init(function(t){let[,r]=t.state();_()&&r("installed",!0)}).config("metadata",F).add("solana",U).add("evm",z).build(),"buildProvider");var Lr=e(()=>yt().version("1.0.0",O()).build(),"versions");export{p as WALLET_ID,Lr 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
3
  "sources": ["../src/mod.ts", "../src/provider.ts", "../src/constants.ts", "../src/signer.ts", "../src/signers/ethereum.ts", "../src/state.ts", "../src/utils.ts", "../src/signers/solana.ts", "../src/namespaces/evm.ts", "../src/namespaces/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 { ledger as ledgerInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (ledgerInstance()) {\n setState('installed', true);\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 { CAIP_ETHEREUM_CHAIN_ID, isEvmNamespace } from '@hub3js/evm';\nimport { isSolanaNamespace } from '@hub3js/solana';\nimport { getChainIdFromCaip2ChainId } from '@hub3js/std/utils';\n\nimport getSigners from './signer.js';\n\nexport const HEXADECIMAL_BASE = 16;\nexport const WALLET_ID = 'ledger';\n\nexport const metadata: ProviderMetadata = {\n name: 'Ledger',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/ledger/icon.svg',\n extensions: {\n homepage:\n 'https://support.ledger.com/hc/en-us/articles/4404389606417-Download-and-install-Ledger-Live?docs=true',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'single',\n data: [\n {\n label: 'Ethereum',\n value: 'EVM',\n id: 'ETH',\n isChainSupported: (chainId: string) =>\n isEvmNamespace(chainId) &&\n getChainIdFromCaip2ChainId(chainId) === CAIP_ETHEREUM_CHAIN_ID,\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n isChainSupported: isSolanaNamespace,\n },\n ],\n },\n },\n {\n name: 'derivationPath',\n value: {\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 {\n name: 'signers',\n value: { getSigners: async () => getSigners() },\n },\n ],\n};\n", "import type { SignerFactory } from 'rango-types';\n\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { EthereumSigner } from './signers/ethereum';\nimport { SolanaSigner } from './signers/solana';\n\nexport default async function getSigners(): Promise<SignerFactory> {\n const signers = new DefaultSignerFactory();\n signers.registerSigner(TxType.EVM, new EthereumSigner());\n signers.registerSigner(TxType.SOLANA, new SolanaSigner());\n return signers;\n}\n", "import type { TransactionLike } from 'ethers';\nimport type { GenericSigner } from 'rango-types';\nimport type { EvmTransaction } from 'rango-types/mainApi';\n\nimport { DEFAULT_ETHEREUM_RPC_URL } from '@rango-dev/wallets-shared';\nimport { JsonRpcProvider, Transaction } from 'ethers';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\nimport { getDerivationPath } from '../state.js';\nimport {\n getLedgerError,\n transportConnect,\n transportDisconnect,\n} from '../utils.js';\n\nexport class EthereumSigner implements GenericSigner<EvmTransaction> {\n async signMessage(msg: string): Promise<string> {\n try {\n const transport = await transportConnect();\n const LedgerAppEth = (await import('@ledgerhq/hw-app-eth')).default;\n const eth = new LedgerAppEth(transport);\n\n const result = await eth.signPersonalMessage(\n getDerivationPath(),\n Buffer.from(msg).toString('hex')\n );\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n let v = (result['v'] - 27).toString(16);\n if (v.length < 2) {\n v = '0' + v;\n }\n return '0x' + result['r'] + result['s'] + v;\n } catch (error) {\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);\n }\n }\n\n async signAndSendTx(\n tx: EvmTransaction,\n fromAddress: string,\n chainId: string | null\n ): Promise<{ hash: string }> {\n try {\n const provider = new JsonRpcProvider(DEFAULT_ETHEREUM_RPC_URL); // Provider to broadcast transaction\n\n const transactionCount = await provider.getTransactionCount(fromAddress); // Get nonce\n\n const transaction: TransactionLike<string> = {\n to: tx.to,\n gasPrice: tx.gasPrice,\n gasLimit: tx.gasLimit,\n nonce: transactionCount,\n chainId: chainId,\n data: tx.data,\n value: tx.value,\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas,\n maxFeePerGas: tx.maxFeePerGas,\n };\n\n const unsignedTx =\n Transaction.from(transaction).unsignedSerialized.substring(2); // Create unsigned transaction\n\n const transport = await transportConnect();\n const LedgerHqAppEth = await import('@ledgerhq/hw-app-eth');\n\n const LedgerAppEth = LedgerHqAppEth.default;\n const eth = new LedgerAppEth(transport);\n\n const resolution = await LedgerHqAppEth.ledgerService.resolveTransaction(\n unsignedTx,\n {},\n {}\n ); // metadata necessary to allow the device to clear sign information\n const signature = await eth.signTransaction(\n getDerivationPath(),\n unsignedTx,\n resolution\n );\n\n const signedTx = Transaction.from({\n ...transaction,\n signature: {\n r: '0x' + signature.r,\n s: '0x' + signature.s,\n v: parseInt(signature.v),\n },\n }).serialized;\n\n const broadcastResult = await provider.broadcastTransaction(signedTx);\n\n return { hash: broadcastResult.hash };\n } catch (error) {\n throw getLedgerError(error);\n } finally {\n await transportDisconnect();\n }\n }\n}\n", "// 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 { EVM_NAMESPACE, SOLANA_NAMESPACE } from '@hub3js/namespaces';\nimport { CAIP_SOLANA_CHAIN_ID } from '@hub3js/solana';\nimport { getAltStatusMessage } from '@ledgerhq/errors';\nimport {\n ETHEREUM_CHAIN_ID,\n type ProviderConnectResult,\n} from '@rango-dev/wallets-shared';\nimport bs58 from 'bs58';\n\nimport { HEXADECIMAL_BASE } from './constants.js';\nimport { getDerivationPath } from './state.js';\n\nexport type Provider = Map<string, unknown>;\n\nexport function ledger(): Provider | null {\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(EVM_NAMESPACE, { chainId: ETHEREUM_CHAIN_ID });\n instances.set(SOLANA_NAMESPACE, { chainId: CAIP_SOLANA_CHAIN_ID });\n\n return instances;\n}\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 standardizeAndThrowLedgerError(_: unknown, error: unknown) {\n throw getLedgerError(error);\n}\n\nexport async function getEthereumAccounts(): Promise<ProviderConnectResult> {\n try {\n const transport = await transportConnect();\n const LedgerAppEth = (await import('@ledgerhq/hw-app-eth')).default;\n const eth = new LedgerAppEth(transport);\n const derivationPath = getDerivationPath();\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: unknown) {\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 LedgerAppSolana = (await import('@ledgerhq/hw-app-solana')).default;\n const solana = new LedgerAppSolana(transport);\n const derivationPath = getDerivationPath();\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: CAIP_SOLANA_CHAIN_ID,\n derivationPath,\n };\n } catch (error: unknown) {\n throw getLedgerError(error);\n } finally {\n await transportDisconnect();\n }\n}\n\nlet transportConnection: Transport | null = null;\n\nexport async function transportConnect() {\n const TransportWebHID = (await import('@ledgerhq/hw-transport-webhid'))\n .default;\n\n transportConnection = await TransportWebHID.create();\n\n return transportConnection;\n}\n\nexport async function transportDisconnect() {\n if (transportConnection) {\n await transportConnection.close();\n transportConnection = null;\n }\n}\n", "import type { SolanaWeb3Signer } from '@rango-dev/signer-solana';\nimport type { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport type { GenericSigner, SolanaTransaction } from 'rango-types';\n\nimport { generalSolanaTransactionExecutor } from '@rango-dev/signer-solana';\nimport { PublicKey } from '@solana/web3.js';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\nimport { getDerivationPath } from '../state.js';\nimport {\n getLedgerError,\n transportConnect,\n transportDisconnect,\n} from '../utils.js';\n\nexport function isVersionedTransaction(\n transaction: Transaction | VersionedTransaction\n): transaction is VersionedTransaction {\n return 'version' in transaction;\n}\n\nexport class SolanaSigner implements GenericSigner<SolanaTransaction> {\n async signMessage(msg: string): Promise<string> {\n try {\n const transport = await transportConnect();\n const LedgerAppSolana = (await import('@ledgerhq/hw-app-solana')).default;\n const solana = new LedgerAppSolana(transport);\n\n const result = await solana.signOffchainMessage(\n getDerivationPath(),\n Buffer.from(msg)\n );\n return result.signature.toString();\n } catch (error) {\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);\n }\n }\n\n async signAndSendTx(tx: SolanaTransaction): Promise<{ hash: string }> {\n try {\n const DefaultSolanaSigner: SolanaWeb3Signer = async (\n solanaWeb3Transaction: Transaction | VersionedTransaction\n ) => {\n const transport = await transportConnect();\n const LedgerAppSolana = (await import('@ledgerhq/hw-app-solana'))\n .default;\n const solana = new LedgerAppSolana(transport);\n\n let signResult;\n if (isVersionedTransaction(solanaWeb3Transaction)) {\n signResult = await solana.signTransaction(\n getDerivationPath(),\n solanaWeb3Transaction.message.serialize() as Buffer\n );\n } else {\n signResult = await solana.signTransaction(\n getDerivationPath(),\n solanaWeb3Transaction.serialize()\n );\n }\n\n const addressResult = await solana.getAddress(getDerivationPath());\n\n const publicKey = new PublicKey(addressResult.address);\n\n solanaWeb3Transaction.addSignature(\n publicKey,\n Buffer.from(signResult.signature)\n );\n\n const serializedTx = solanaWeb3Transaction.serialize();\n\n return serializedTx;\n };\n const hash = await generalSolanaTransactionExecutor(\n tx,\n DefaultSolanaSigner\n );\n return { hash };\n } catch (error) {\n throw getLedgerError(error);\n } finally {\n await transportDisconnect();\n }\n }\n}\n", "import type { EvmActions } from '@hub3js/evm';\nimport type { CaipAccount } from '@hub3js/std/types';\n\nimport { NamespaceBuilder } from '@hub3js/core';\nimport { builders, CAIP_NAMESPACE } from '@hub3js/evm';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport { ETHEREUM_CHAIN_ID } from '@rango-dev/wallets-shared';\nimport { AccountId } from 'caip';\n\nimport { WALLET_ID } from '../constants.js';\nimport { setDerivationPath } from '../state.js';\nimport {\n getEthereumAccounts,\n standardizeAndThrowLedgerError,\n} from '../utils.js';\n\nconst connect = builders\n .connect()\n .action(async function (_context, _chain, options) {\n if (!options?.derivationPath) {\n throw new Error('Derivation Path can not be empty.');\n }\n\n setDerivationPath(options.derivationPath);\n\n const result = await getEthereumAccounts();\n\n const formatAccounts = result.accounts.map(\n (account) =>\n AccountId.format({\n address: account,\n chainId: {\n namespace: CAIP_NAMESPACE,\n reference: result.chainId,\n },\n }) as CaipAccount\n );\n\n return {\n accounts: formatAccounts,\n network: result.chainId,\n };\n })\n .or(standardizeAndThrowLedgerError)\n .build();\n\nconst disconnect = commonBuilders.disconnect<EvmActions>().build();\n\nconst getChainId = builders\n .getChainId()\n .action(() => ETHEREUM_CHAIN_ID)\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(getChainId)\n .build();\n\nexport { evm };\n", "import type { SolanaActions } from '@hub3js/solana';\nimport type { CaipAccount } from '@hub3js/std/types';\n\nimport { NamespaceBuilder } from '@hub3js/core';\nimport { builders, CAIP_NAMESPACE } from '@hub3js/solana';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport { AccountId } from 'caip';\n\nimport { WALLET_ID } from '../constants.js';\nimport { setDerivationPath } from '../state.js';\nimport { getSolanaAccounts, standardizeAndThrowLedgerError } from '../utils.js';\n\nconst connect = builders\n .connect()\n .action(async function (_context, options) {\n if (!options?.derivationPath) {\n throw new Error('Derivation Path can not be empty.');\n }\n\n setDerivationPath(options.derivationPath);\n\n const result = await getSolanaAccounts();\n\n const formatAccounts = result.accounts.map(\n (account) =>\n AccountId.format({\n address: account,\n chainId: {\n namespace: CAIP_NAMESPACE,\n reference: result.chainId,\n },\n }) as CaipAccount\n );\n\n return formatAccounts;\n })\n .or(standardizeAndThrowLedgerError)\n .build();\n\nconst disconnect = commonBuilders.disconnect<SolanaActions>().build();\n\nconst solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .build();\n\nexport { solana };\n"],
5
- "mappings": "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",
6
- "names": ["defineVersions", "ProviderBuilder", "CAIP_ETHEREUM_CHAIN_ID", "isEvmNamespace", "isSolanaNamespace", "getChainIdFromCaip2ChainId", "DefaultSignerFactory", "TxType", "DEFAULT_ETHEREUM_RPC_URL", "JsonRpcProvider", "Transaction", "SignerError", "SignerErrorCode", "derivationPath", "setDerivationPath", "path", "__name", "getDerivationPath", "EVM_NAMESPACE", "SOLANA_NAMESPACE", "CAIP_SOLANA_CHAIN_ID", "ETHEREUM_CHAIN_ID", "bs58", "ledger", "instances", "EVM_NAMESPACE", "ETHEREUM_CHAIN_ID", "SOLANA_NAMESPACE", "CAIP_SOLANA_CHAIN_ID", "__name", "ledgerFrequentErrorMessages", "getLedgerErrorMessage", "statusCode", "getAltStatusMessage", "HEXADECIMAL_BASE", "getLedgerError", "error", "standardizeAndThrowLedgerError", "_", "getEthereumAccounts", "transport", "transportConnect", "LedgerAppEth", "eth", "derivationPath", "getDerivationPath", "accounts", "result", "transportDisconnect", "getSolanaAccounts", "LedgerAppSolana", "solana", "bs58", "transportConnection", "EthereumSigner", "__name", "msg", "transport", "transportConnect", "LedgerAppEth", "result", "getDerivationPath", "v", "error", "SignerError", "SignerErrorCode", "tx", "fromAddress", "chainId", "provider", "JsonRpcProvider", "DEFAULT_ETHEREUM_RPC_URL", "transactionCount", "transaction", "unsignedTx", "Transaction", "LedgerHqAppEth", "eth", "resolution", "signature", "signedTx", "getLedgerError", "transportDisconnect", "generalSolanaTransactionExecutor", "PublicKey", "SignerError", "SignerErrorCode", "isVersionedTransaction", "transaction", "__name", "SolanaSigner", "msg", "transport", "transportConnect", "LedgerAppSolana", "getDerivationPath", "error", "SignerError", "SignerErrorCode", "tx", "generalSolanaTransactionExecutor", "solanaWeb3Transaction", "solana", "signResult", "addressResult", "publicKey", "PublicKey", "getLedgerError", "transportDisconnect", "getSigners", "signers", "DefaultSignerFactory", "TxType", "EthereumSigner", "SolanaSigner", "__name", "HEXADECIMAL_BASE", "WALLET_ID", "metadata", "chainId", "isEvmNamespace", "getChainIdFromCaip2ChainId", "CAIP_ETHEREUM_CHAIN_ID", "isSolanaNamespace", "index", "getSigners", "NamespaceBuilder", "builders", "CAIP_NAMESPACE", "commonBuilders", "ETHEREUM_CHAIN_ID", "AccountId", "connect", "builders", "_context", "_chain", "options", "setDerivationPath", "result", "getEthereumAccounts", "account", "AccountId", "CAIP_NAMESPACE", "standardizeAndThrowLedgerError", "disconnect", "getChainId", "ETHEREUM_CHAIN_ID", "evm", "NamespaceBuilder", "WALLET_ID", "NamespaceBuilder", "builders", "CAIP_NAMESPACE", "commonBuilders", "AccountId", "connect", "builders", "_context", "options", "setDerivationPath", "result", "getSolanaAccounts", "account", "AccountId", "CAIP_NAMESPACE", "standardizeAndThrowLedgerError", "disconnect", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "ledger", "metadata", "solana", "evm", "versions", "__name", "defineVersions", "buildProvider"]
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 };\nexport { WALLET_ID } from './constants.js';\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 { ledger as ledgerInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (ledgerInstance()) {\n setState('installed', true);\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 { CAIP_ETHEREUM_CHAIN_ID, isEvmNamespace } from '@hub3js/evm';\nimport { isSolanaNamespace } from '@hub3js/solana';\nimport { getChainIdFromCaip2ChainId } from '@hub3js/std/utils';\n\nimport getSigners from './signer.js';\n\nexport const HEXADECIMAL_BASE = 16;\nexport const WALLET_ID = 'ledger';\n\nexport const ETHEREUM_CHAIN_ID = `0x${Number(CAIP_ETHEREUM_CHAIN_ID).toString(\n HEXADECIMAL_BASE\n)}`;\n\nexport const metadata: ProviderMetadata = {\n name: 'Ledger',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/ledger/icon.svg',\n extensions: {\n homepage:\n 'https://support.ledger.com/hc/en-us/articles/4404389606417-Download-and-install-Ledger-Live?docs=true',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'single',\n data: [\n {\n label: 'Ethereum',\n value: 'EVM',\n id: 'ETH',\n isChainSupported: (chainId: string) =>\n isEvmNamespace(chainId) &&\n getChainIdFromCaip2ChainId(chainId) === CAIP_ETHEREUM_CHAIN_ID,\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n isChainSupported: isSolanaNamespace,\n },\n ],\n },\n },\n {\n name: 'derivationPath',\n value: {\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 {\n name: 'signers',\n value: { getSigners: async () => getSigners() },\n },\n ],\n};\n", "import type { SignerFactory } from 'rango-types';\n\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { EthereumSigner } from './signers/ethereum';\nimport { SolanaSigner } from './signers/solana';\n\nexport default async function getSigners(): Promise<SignerFactory> {\n const signers = new DefaultSignerFactory();\n signers.registerSigner(TxType.EVM, new EthereumSigner());\n signers.registerSigner(TxType.SOLANA, new SolanaSigner());\n return signers;\n}\n", "import type { TransactionLike } from 'ethers';\nimport type { GenericSigner } from 'rango-types';\nimport type { EvmTransaction } from 'rango-types/mainApi';\n\nimport { DEFAULT_ETHEREUM_RPC_URL } from '@rango-dev/signer-evm';\nimport { JsonRpcProvider, Transaction } from 'ethers';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\nimport { getDerivationPath } from '../state.js';\nimport {\n getLedgerError,\n transportConnect,\n transportDisconnect,\n} from '../utils.js';\n\nexport class EthereumSigner implements GenericSigner<EvmTransaction> {\n async signMessage(msg: string): Promise<string> {\n try {\n const transport = await transportConnect();\n const LedgerAppEth = (await import('@ledgerhq/hw-app-eth')).default;\n const eth = new LedgerAppEth(transport);\n\n const result = await eth.signPersonalMessage(\n getDerivationPath(),\n Buffer.from(msg).toString('hex')\n );\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n let v = (result['v'] - 27).toString(16);\n if (v.length < 2) {\n v = '0' + v;\n }\n return '0x' + result['r'] + result['s'] + v;\n } catch (error) {\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);\n }\n }\n\n async signAndSendTx(\n tx: EvmTransaction,\n fromAddress: string,\n chainId: string | null\n ): Promise<{ hash: string }> {\n try {\n const provider = new JsonRpcProvider(DEFAULT_ETHEREUM_RPC_URL); // Provider to broadcast transaction\n\n const transactionCount = await provider.getTransactionCount(fromAddress); // Get nonce\n\n const transaction: TransactionLike<string> = {\n to: tx.to,\n gasPrice: tx.gasPrice,\n gasLimit: tx.gasLimit,\n nonce: transactionCount,\n chainId: chainId,\n data: tx.data,\n value: tx.value,\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas,\n maxFeePerGas: tx.maxFeePerGas,\n };\n\n const unsignedTx =\n Transaction.from(transaction).unsignedSerialized.substring(2); // Create unsigned transaction\n\n const transport = await transportConnect();\n const LedgerHqAppEth = await import('@ledgerhq/hw-app-eth');\n\n const LedgerAppEth = LedgerHqAppEth.default;\n const eth = new LedgerAppEth(transport);\n\n const resolution = await LedgerHqAppEth.ledgerService.resolveTransaction(\n unsignedTx,\n {},\n {}\n ); // metadata necessary to allow the device to clear sign information\n const signature = await eth.signTransaction(\n getDerivationPath(),\n unsignedTx,\n resolution\n );\n\n const signedTx = Transaction.from({\n ...transaction,\n signature: {\n r: '0x' + signature.r,\n s: '0x' + signature.s,\n v: parseInt(signature.v),\n },\n }).serialized;\n\n const broadcastResult = await provider.broadcastTransaction(signedTx);\n\n return { hash: broadcastResult.hash };\n } catch (error) {\n throw getLedgerError(error);\n } finally {\n await transportDisconnect();\n }\n }\n}\n", "// 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 { EVM_NAMESPACE, SOLANA_NAMESPACE } from '@hub3js/namespaces';\nimport { CAIP_SOLANA_CHAIN_ID } from '@hub3js/solana';\nimport { getAltStatusMessage } from '@ledgerhq/errors';\nimport bs58 from 'bs58';\n\nimport { ETHEREUM_CHAIN_ID, HEXADECIMAL_BASE } from './constants.js';\nimport { getDerivationPath } from './state.js';\n\nexport type Provider = Map<string, unknown>;\n\ntype DeviceAccounts = {\n accounts: string[];\n chainId: string;\n derivationPath: string;\n};\n\nexport function ledger(): Provider | null {\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(EVM_NAMESPACE, { chainId: ETHEREUM_CHAIN_ID });\n instances.set(SOLANA_NAMESPACE, { chainId: CAIP_SOLANA_CHAIN_ID });\n\n return instances;\n}\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 standardizeAndThrowLedgerError(_: unknown, error: unknown) {\n throw getLedgerError(error);\n}\n\nexport async function getEthereumAccounts(): Promise<DeviceAccounts> {\n try {\n const transport = await transportConnect();\n const LedgerAppEth = (await import('@ledgerhq/hw-app-eth')).default;\n const eth = new LedgerAppEth(transport);\n const derivationPath = getDerivationPath();\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: unknown) {\n throw getLedgerError(error);\n } finally {\n await transportDisconnect();\n }\n}\n\nexport async function getSolanaAccounts(): Promise<DeviceAccounts> {\n try {\n const transport = await transportConnect();\n const LedgerAppSolana = (await import('@ledgerhq/hw-app-solana')).default;\n const solana = new LedgerAppSolana(transport);\n const derivationPath = getDerivationPath();\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: CAIP_SOLANA_CHAIN_ID,\n derivationPath,\n };\n } catch (error: unknown) {\n throw getLedgerError(error);\n } finally {\n await transportDisconnect();\n }\n}\n\nlet transportConnection: Transport | null = null;\n\nexport async function transportConnect() {\n const TransportWebHID = (await import('@ledgerhq/hw-transport-webhid'))\n .default;\n\n transportConnection = await TransportWebHID.create();\n\n return transportConnection;\n}\n\nexport async function transportDisconnect() {\n if (transportConnection) {\n await transportConnection.close();\n transportConnection = null;\n }\n}\n", "import type { SolanaWeb3Signer } from '@rango-dev/signer-solana';\nimport type { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport type { GenericSigner, SolanaTransaction } from 'rango-types';\n\nimport { generalSolanaTransactionExecutor } from '@rango-dev/signer-solana';\nimport { PublicKey } from '@solana/web3.js';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\nimport { getDerivationPath } from '../state.js';\nimport {\n getLedgerError,\n transportConnect,\n transportDisconnect,\n} from '../utils.js';\n\nexport function isVersionedTransaction(\n transaction: Transaction | VersionedTransaction\n): transaction is VersionedTransaction {\n return 'version' in transaction;\n}\n\nexport class SolanaSigner implements GenericSigner<SolanaTransaction> {\n async signMessage(msg: string): Promise<string> {\n try {\n const transport = await transportConnect();\n const LedgerAppSolana = (await import('@ledgerhq/hw-app-solana')).default;\n const solana = new LedgerAppSolana(transport);\n\n const result = await solana.signOffchainMessage(\n getDerivationPath(),\n Buffer.from(msg)\n );\n return result.signature.toString();\n } catch (error) {\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);\n }\n }\n\n async signAndSendTx(tx: SolanaTransaction): Promise<{ hash: string }> {\n try {\n const DefaultSolanaSigner: SolanaWeb3Signer = async (\n solanaWeb3Transaction: Transaction | VersionedTransaction\n ) => {\n const transport = await transportConnect();\n const LedgerAppSolana = (await import('@ledgerhq/hw-app-solana'))\n .default;\n const solana = new LedgerAppSolana(transport);\n\n let signResult;\n if (isVersionedTransaction(solanaWeb3Transaction)) {\n signResult = await solana.signTransaction(\n getDerivationPath(),\n solanaWeb3Transaction.message.serialize() as Buffer\n );\n } else {\n signResult = await solana.signTransaction(\n getDerivationPath(),\n solanaWeb3Transaction.serialize()\n );\n }\n\n const addressResult = await solana.getAddress(getDerivationPath());\n\n const publicKey = new PublicKey(addressResult.address);\n\n solanaWeb3Transaction.addSignature(\n publicKey,\n Buffer.from(signResult.signature)\n );\n\n const serializedTx = solanaWeb3Transaction.serialize();\n\n return serializedTx;\n };\n const hash = await generalSolanaTransactionExecutor(\n tx,\n DefaultSolanaSigner\n );\n return { hash };\n } catch (error) {\n throw getLedgerError(error);\n } finally {\n await transportDisconnect();\n }\n }\n}\n", "import type { EvmActions } from '@hub3js/evm';\nimport type { CaipAccount } from '@hub3js/std/types';\n\nimport { NamespaceBuilder } from '@hub3js/core';\nimport { builders, CAIP_NAMESPACE } from '@hub3js/evm';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport { AccountId } from 'caip';\n\nimport { ETHEREUM_CHAIN_ID, WALLET_ID } from '../constants.js';\nimport { setDerivationPath } from '../state.js';\nimport {\n getEthereumAccounts,\n standardizeAndThrowLedgerError,\n} from '../utils.js';\n\nconst connect = builders\n .connect()\n .action(async function (_context, _chain, options) {\n if (!options?.derivationPath) {\n throw new Error('Derivation Path can not be empty.');\n }\n\n setDerivationPath(options.derivationPath);\n\n const result = await getEthereumAccounts();\n\n const formatAccounts = result.accounts.map(\n (account) =>\n AccountId.format({\n address: account,\n chainId: {\n namespace: CAIP_NAMESPACE,\n reference: result.chainId,\n },\n }) as CaipAccount\n );\n\n return {\n accounts: formatAccounts,\n network: result.chainId,\n };\n })\n .or(standardizeAndThrowLedgerError)\n .build();\n\nconst disconnect = commonBuilders.disconnect<EvmActions>().build();\n\nconst getChainId = builders\n .getChainId()\n .action(() => ETHEREUM_CHAIN_ID)\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(getChainId)\n .build();\n\nexport { evm };\n", "import type { SolanaActions } from '@hub3js/solana';\nimport type { CaipAccount } from '@hub3js/std/types';\n\nimport { NamespaceBuilder } from '@hub3js/core';\nimport { builders, CAIP_NAMESPACE } from '@hub3js/solana';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport { AccountId } from 'caip';\n\nimport { WALLET_ID } from '../constants.js';\nimport { setDerivationPath } from '../state.js';\nimport { getSolanaAccounts, standardizeAndThrowLedgerError } from '../utils.js';\n\nconst connect = builders\n .connect()\n .action(async function (_context, options) {\n if (!options?.derivationPath) {\n throw new Error('Derivation Path can not be empty.');\n }\n\n setDerivationPath(options.derivationPath);\n\n const result = await getSolanaAccounts();\n\n const formatAccounts = result.accounts.map(\n (account) =>\n AccountId.format({\n address: account,\n chainId: {\n namespace: CAIP_NAMESPACE,\n reference: result.chainId,\n },\n }) as CaipAccount\n );\n\n return formatAccounts;\n })\n .or(standardizeAndThrowLedgerError)\n .build();\n\nconst disconnect = commonBuilders.disconnect<SolanaActions>().build();\n\nconst solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .build();\n\nexport { solana };\n"],
5
+ "mappings": "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",
6
+ "names": ["defineVersions", "ProviderBuilder", "CAIP_ETHEREUM_CHAIN_ID", "isEvmNamespace", "isSolanaNamespace", "getChainIdFromCaip2ChainId", "DefaultSignerFactory", "TxType", "DEFAULT_ETHEREUM_RPC_URL", "JsonRpcProvider", "Transaction", "SignerError", "SignerErrorCode", "derivationPath", "setDerivationPath", "path", "__name", "getDerivationPath", "EVM_NAMESPACE", "SOLANA_NAMESPACE", "CAIP_SOLANA_CHAIN_ID", "bs58", "ledger", "instances", "EVM_NAMESPACE", "ETHEREUM_CHAIN_ID", "SOLANA_NAMESPACE", "CAIP_SOLANA_CHAIN_ID", "__name", "ledgerFrequentErrorMessages", "getLedgerErrorMessage", "statusCode", "getAltStatusMessage", "HEXADECIMAL_BASE", "getLedgerError", "error", "standardizeAndThrowLedgerError", "_", "getEthereumAccounts", "transport", "transportConnect", "LedgerAppEth", "eth", "derivationPath", "getDerivationPath", "accounts", "result", "transportDisconnect", "getSolanaAccounts", "LedgerAppSolana", "solana", "bs58", "transportConnection", "EthereumSigner", "__name", "msg", "transport", "transportConnect", "LedgerAppEth", "result", "getDerivationPath", "v", "error", "SignerError", "SignerErrorCode", "tx", "fromAddress", "chainId", "provider", "JsonRpcProvider", "DEFAULT_ETHEREUM_RPC_URL", "transactionCount", "transaction", "unsignedTx", "Transaction", "LedgerHqAppEth", "eth", "resolution", "signature", "signedTx", "getLedgerError", "transportDisconnect", "generalSolanaTransactionExecutor", "PublicKey", "SignerError", "SignerErrorCode", "isVersionedTransaction", "transaction", "__name", "SolanaSigner", "msg", "transport", "transportConnect", "LedgerAppSolana", "getDerivationPath", "error", "SignerError", "SignerErrorCode", "tx", "generalSolanaTransactionExecutor", "solanaWeb3Transaction", "solana", "signResult", "addressResult", "publicKey", "PublicKey", "getLedgerError", "transportDisconnect", "getSigners", "signers", "DefaultSignerFactory", "TxType", "EthereumSigner", "SolanaSigner", "__name", "HEXADECIMAL_BASE", "WALLET_ID", "ETHEREUM_CHAIN_ID", "CAIP_ETHEREUM_CHAIN_ID", "metadata", "chainId", "isEvmNamespace", "getChainIdFromCaip2ChainId", "isSolanaNamespace", "index", "getSigners", "NamespaceBuilder", "builders", "CAIP_NAMESPACE", "commonBuilders", "AccountId", "connect", "builders", "_context", "_chain", "options", "setDerivationPath", "result", "getEthereumAccounts", "account", "AccountId", "CAIP_NAMESPACE", "standardizeAndThrowLedgerError", "disconnect", "getChainId", "ETHEREUM_CHAIN_ID", "evm", "NamespaceBuilder", "WALLET_ID", "NamespaceBuilder", "builders", "CAIP_NAMESPACE", "commonBuilders", "AccountId", "connect", "builders", "_context", "options", "setDerivationPath", "result", "getSolanaAccounts", "account", "AccountId", "CAIP_NAMESPACE", "standardizeAndThrowLedgerError", "disconnect", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "ledger", "metadata", "solana", "evm", "versions", "__name", "defineVersions", "buildProvider"]
7
7
  }
package/dist/utils.d.ts CHANGED
@@ -1,10 +1,15 @@
1
1
  import type Transport from '@ledgerhq/hw-transport';
2
- import { type ProviderConnectResult } from '@rango-dev/wallets-shared';
3
2
  export type Provider = Map<string, unknown>;
3
+ type DeviceAccounts = {
4
+ accounts: string[];
5
+ chainId: string;
6
+ derivationPath: string;
7
+ };
4
8
  export declare function ledger(): Provider | null;
5
9
  export declare function getLedgerError(error: any): any;
6
10
  export declare function standardizeAndThrowLedgerError(_: unknown, error: unknown): void;
7
- export declare function getEthereumAccounts(): Promise<ProviderConnectResult>;
8
- export declare function getSolanaAccounts(): Promise<ProviderConnectResult>;
11
+ export declare function getEthereumAccounts(): Promise<DeviceAccounts>;
12
+ export declare function getSolanaAccounts(): Promise<DeviceAccounts>;
9
13
  export declare function transportConnect(): Promise<Transport>;
10
14
  export declare function transportDisconnect(): Promise<void>;
15
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rango-dev/provider-ledger",
3
- "version": "0.33.1-next.2",
3
+ "version": "0.33.1-next.3",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "source": "./src/mod.ts",
@@ -22,19 +22,19 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@hub3js/core": "^0.61.1",
25
- "@hub3js/evm": "^0.3.3",
26
- "@hub3js/namespaces": "^0.2.5",
27
- "@hub3js/solana": "^0.3.3",
28
- "@hub3js/std": "^0.2.3",
25
+ "@hub3js/evm": "^0.4.0",
26
+ "@hub3js/namespaces": "^0.3.0",
27
+ "@hub3js/solana": "^0.4.0",
28
+ "@hub3js/std": "^0.3.0",
29
29
  "@ledgerhq/errors": "^6.16.4",
30
30
  "@ledgerhq/hw-app-eth": "^6.36.0",
31
31
  "@ledgerhq/hw-app-solana": "^7.1.6",
32
32
  "@ledgerhq/hw-transport-webhid": "^6.28.6",
33
33
  "@ledgerhq/types-cryptoassets": "^7.11.0",
34
34
  "@ledgerhq/types-devices": "^6.24.0",
35
+ "@rango-dev/signer-evm": "^0.45.1-next.0",
35
36
  "@rango-dev/signer-solana": "^0.49.0",
36
- "@rango-dev/wallets-core": "^0.61.0",
37
- "@rango-dev/wallets-shared": "^0.62.1-next.2",
37
+ "@rango-dev/wallets-core": "^0.61.1-next.0",
38
38
  "@solana/web3.js": "^1.91.4",
39
39
  "@types/w3c-web-hid": "^1.0.2",
40
40
  "bs58": "^5.0.0",
package/src/constants.ts CHANGED
@@ -9,6 +9,10 @@ import getSigners from './signer.js';
9
9
  export const HEXADECIMAL_BASE = 16;
10
10
  export const WALLET_ID = 'ledger';
11
11
 
12
+ export const ETHEREUM_CHAIN_ID = `0x${Number(CAIP_ETHEREUM_CHAIN_ID).toString(
13
+ HEXADECIMAL_BASE
14
+ )}`;
15
+
12
16
  export const metadata: ProviderMetadata = {
13
17
  name: 'Ledger',
14
18
  icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/ledger/icon.svg',
package/src/mod.ts CHANGED
@@ -6,3 +6,4 @@ const versions = () =>
6
6
  defineVersions().version('1.0.0', buildProvider()).build();
7
7
 
8
8
  export { versions };
9
+ export { WALLET_ID } from './constants.js';
@@ -4,10 +4,9 @@ import type { CaipAccount } from '@hub3js/std/types';
4
4
  import { NamespaceBuilder } from '@hub3js/core';
5
5
  import { builders, CAIP_NAMESPACE } from '@hub3js/evm';
6
6
  import * as commonBuilders from '@hub3js/std/builders';
7
- import { ETHEREUM_CHAIN_ID } from '@rango-dev/wallets-shared';
8
7
  import { AccountId } from 'caip';
9
8
 
10
- import { WALLET_ID } from '../constants.js';
9
+ import { ETHEREUM_CHAIN_ID, WALLET_ID } from '../constants.js';
11
10
  import { setDerivationPath } from '../state.js';
12
11
  import {
13
12
  getEthereumAccounts,
@@ -2,7 +2,7 @@ import type { TransactionLike } from 'ethers';
2
2
  import type { GenericSigner } from 'rango-types';
3
3
  import type { EvmTransaction } from 'rango-types/mainApi';
4
4
 
5
- import { DEFAULT_ETHEREUM_RPC_URL } from '@rango-dev/wallets-shared';
5
+ import { DEFAULT_ETHEREUM_RPC_URL } from '@rango-dev/signer-evm';
6
6
  import { JsonRpcProvider, Transaction } from 'ethers';
7
7
  import { SignerError, SignerErrorCode } from 'rango-types';
8
8
 
package/src/utils.ts CHANGED
@@ -3,17 +3,19 @@ import type Transport from '@ledgerhq/hw-transport';
3
3
  import { EVM_NAMESPACE, SOLANA_NAMESPACE } from '@hub3js/namespaces';
4
4
  import { CAIP_SOLANA_CHAIN_ID } from '@hub3js/solana';
5
5
  import { getAltStatusMessage } from '@ledgerhq/errors';
6
- import {
7
- ETHEREUM_CHAIN_ID,
8
- type ProviderConnectResult,
9
- } from '@rango-dev/wallets-shared';
10
6
  import bs58 from 'bs58';
11
7
 
12
- import { HEXADECIMAL_BASE } from './constants.js';
8
+ import { ETHEREUM_CHAIN_ID, HEXADECIMAL_BASE } from './constants.js';
13
9
  import { getDerivationPath } from './state.js';
14
10
 
15
11
  export type Provider = Map<string, unknown>;
16
12
 
13
+ type DeviceAccounts = {
14
+ accounts: string[];
15
+ chainId: string;
16
+ derivationPath: string;
17
+ };
18
+
17
19
  export function ledger(): Provider | null {
18
20
  /*
19
21
  * Instances have a required property which is `chainId` and is using in swap execution.
@@ -61,7 +63,7 @@ export function standardizeAndThrowLedgerError(_: unknown, error: unknown) {
61
63
  throw getLedgerError(error);
62
64
  }
63
65
 
64
- export async function getEthereumAccounts(): Promise<ProviderConnectResult> {
66
+ export async function getEthereumAccounts(): Promise<DeviceAccounts> {
65
67
  try {
66
68
  const transport = await transportConnect();
67
69
  const LedgerAppEth = (await import('@ledgerhq/hw-app-eth')).default;
@@ -85,7 +87,7 @@ export async function getEthereumAccounts(): Promise<ProviderConnectResult> {
85
87
  }
86
88
  }
87
89
 
88
- export async function getSolanaAccounts(): Promise<ProviderConnectResult> {
90
+ export async function getSolanaAccounts(): Promise<DeviceAccounts> {
89
91
  try {
90
92
  const transport = await transportConnect();
91
93
  const LedgerAppSolana = (await import('@ledgerhq/hw-app-solana')).default;