@rango-dev/provider-ledger 0.15.2-next.6 → 0.15.2-next.8
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/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/provider-ledger.build.json +1 -1
- package/package.json +3 -3
- package/src/index.ts +4 -4
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as I,d as F,e as V,f as Y,h as Z}from"./chunk-2KLLAGCE.js";import{a}from"./chunk-CVKDPNYM.js";function b(){return b=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},b.apply(this,arguments)}a(b,"_extends");var S={name:"chainId",regex:"[-:a-zA-Z0-9]{5,41}",parameters:{delimiter:":",values:{0:{name:"namespace",regex:"[-a-z0-9]{3,8}"},1:{name:"reference",regex:"[-a-zA-Z0-9]{1,32}"}}}},se={name:"accountId",regex:"[-:a-zA-Z0-9]{7,106}",parameters:{delimiter:":",values:{0:{name:"namespace",regex:"[-a-z0-9]{3,8}"},1:{name:"reference",regex:"[-a-zA-Z0-9]{1,32}"},2:{name:"address",regex:"[a-zA-Z0-9]{1,64}"}}}},A={name:"assetName",regex:"[-:a-zA-Z0-9]{5,73}",parameters:{delimiter:":",values:{0:{name:"namespace",regex:"[-a-z0-9]{3,8}"},1:{name:"reference",regex:"[-a-zA-Z0-9]{1,64}"}}}},oe={name:"assetType",regex:"[-:a-zA-Z0-9]{11,115}",parameters:{delimiter:"/",values:{0:S,1:A}}},ie={name:"assetId",regex:"[-:a-zA-Z0-9]{13,148}",parameters:{delimiter:"/",values:{0:S,1:A,2:{name:"tokenId",regex:"[-a-zA-Z0-9]{1,32}"}}}},f={2:S,10:se,19:{assetName:A,assetType:oe,assetId:ie}};function j(e,t){return e.split(t.parameters.delimiter)}a(j,"splitParams");function g(e,t){var n=j(e,t),r={};return n.forEach(function(s,i){r[t.parameters.values[i].name]=s}),r}a(g,"getParams");function l(e,t){return Object.values(t.parameters.values).map(function(n){var r=e[n.name];return typeof r=="string"?r:l(r,n)}).join(t.parameters.delimiter)}a(l,"joinParams");function v(e,t){if(!new RegExp(t.regex).test(e))return!1;var n=j(e,t);if(n.length!==Object.keys(t.parameters.values).length)return!1;var r=n.map(function(s,i){return new RegExp(t.parameters.values[i].regex).test(s)}).filter(function(s){return!!s});return r.length===n.length}a(v,"isValidId");var d=function(){function e(n){typeof n=="string"&&(n=e.parse(n)),this.namespace=n.namespace,this.reference=n.reference}a(e,"ChainId"),e.parse=a(function(r){if(!v(r,this.spec))throw new Error("Invalid "+this.spec.name+" provided: "+r);return new e(g(r,this.spec)).toJSON()},"parse"),e.format=a(function(r){return l(r,this.spec)},"format");var t=e.prototype;return t.toString=a(function(){return e.format(this.toJSON())},"toString"),t.toJSON=a(function(){return{namespace:this.namespace,reference:this.reference}},"toJSON"),e}();d.spec=f[2];var h=function(){function e(n){typeof n=="string"&&(n=e.parse(n)),this.chainId=new d(n.chainId),this.address=n.address}a(e,"AccountId"),e.parse=a(function(r){if(!v(r,this.spec))throw new Error("Invalid "+this.spec.name+" provided: "+r);var s=g(r,this.spec),i=s.namespace,c=s.reference,w=s.address,y=new d({namespace:i,reference:c});return new e({chainId:y,address:w}).toJSON()},"parse"),e.format=a(function(r){var s=new d(r.chainId),i=b({},s.toJSON(),{address:r.address});return l(i,this.spec)},"format");var t=e.prototype;return t.toString=a(function(){return e.format(this.toJSON())},"toString"),t.toJSON=a(function(){return{chainId:this.chainId.toJSON(),address:this.address}},"toJSON"),e}();h.spec=f[10];var N=function(){function e(n){typeof n=="string"&&(n=e.parse(n)),this.namespace=n.namespace,this.reference=n.reference}a(e,"AssetName"),e.parse=a(function(r){if(!v(r,this.spec))throw new Error("Invalid "+this.spec.name+" provided: "+r);return new e(g(r,this.spec)).toJSON()},"parse"),e.format=a(function(r){return l(r,this.spec)},"format");var t=e.prototype;return t.toString=a(function(){return e.format(this.toJSON())},"toString"),t.toJSON=a(function(){return{namespace:this.namespace,reference:this.reference}},"toJSON"),e}();N.spec=f[19].assetName;var ce=function(){function e(n){typeof n=="string"&&(n=e.parse(n)),this.chainId=new d(n.chainId),this.assetName=new N(n.assetName)}a(e,"AssetType"),e.parse=a(function(r){if(!v(r,this.spec))throw new Error("Invalid "+this.spec.name+" provided: "+r);return new e(g(r,this.spec)).toJSON()},"parse"),e.format=a(function(r){return l(r,this.spec)},"format");var t=e.prototype;return t.toString=a(function(){return e.format(this.toJSON())},"toString"),t.toJSON=a(function(){return{chainId:this.chainId.toJSON(),assetName:this.assetName}},"toJSON"),e}();ce.spec=f[19].assetType;var he=function(){function e(n){typeof n=="string"&&(n=e.parse(n)),this.chainId=new d(n.chainId),this.assetName=new N(n.assetName),this.tokenId=n.tokenId}a(e,"AssetId"),e.parse=a(function(r){if(!v(r,this.spec))throw new Error("Invalid "+this.spec.name+" provided: "+r);return new e(g(r,this.spec)).toJSON()},"parse"),e.format=a(function(r){return l(r,this.spec)},"format");var t=e.prototype;return t.toString=a(function(){return e.format(this.toJSON())},"toString"),t.toJSON=a(function(){return{chainId:this.chainId.toJSON(),assetName:this.assetName.toJSON(),tokenId:this.tokenId}},"toJSON"),e}();he.spec=f[19].assetId;var q=Object.defineProperty,o=a((e,t)=>q(e,"name",{value:t,configurable:!0}),"t"),m=a((e,t)=>{for(var n in t)q(e,n,{get:t[n],enumerable:!0})},"a"),ue={};m(ue,{canEagerConnect:()=>G,changeAccountSubscriber:()=>H,changeChainSubscriber:()=>U,connect:()=>R,recommended:()=>le});function B(e){let[,t]=e.state();t("network",null),t("accounts",null),t("connected",!1),t("connecting",!1)}a(B,"w");o(B,"disconnect");var me=[["disconnect",B]],$="eip155";var de={};m(de,{getAccounts:()=>E,suggestNetwork:()=>C,switchNetwork:()=>O,switchOrAddNetwork:()=>P});async function E(e){let[t,n]=await Promise.all([e.request({method:"eth_requestAccounts"}),e.request({method:"eth_chainId"})]);return{accounts:t,chainId:n}}a(E,"l");o(E,"getAccounts");async function C(e,t){return await e.request({method:"wallet_addEthereumChain",params:[t]})}a(C,"P");o(C,"suggestNetwork");async function O(e,t){return await e.request({method:"wallet_switchEthereumChain",params:[{chainId:t}]})}a(O,"N");o(O,"switchNetwork");async function P(e,t){try{let n=typeof t=="string"?t:t.chainId;await O(e,n)}catch(n){let r=n;throw typeof t!="string"&&(r.code===4902||!r.code)&&await C(e,t),n}}a(P,"y");o(P,"switchOrAddNetwork");var le=[...me];function R(e){return async(t,n)=>{let r=e();if(!r)throw new Error("Do your wallet injected correctly and is evm compatible?");n&&await P(r,n);let s=await r.request({method:"eth_chainId"}),i=await E(r);return{accounts:i.accounts.map(c=>h.format({address:c,chainId:{namespace:$,reference:s}})),network:i.chainId}}}a(R,"L");o(R,"connect");function H(e){let t;return[(n,r)=>{let s=e();if(!s)throw new Error("Trying to subscribe to your EVM wallet, but seems its instance is not available.");let[,i]=n.state();if(t=o(async c=>{if(!c||c.length===0){n.action("disconnect");return}let w=await s.request({method:"eth_chainId"}),y=c.map(ae=>h.format({address:ae,chainId:{namespace:$,reference:w}}));i("accounts",y)},"eventCallback"),s.on("accountsChanged",t),r instanceof Error)throw r},(n,r)=>{let s=e();return t&&s&&s.removeListener("accountsChanged",t),r}]}a(H,"Y");o(H,"changeAccountSubscriber");function U(e){let t;return[n=>{let r=e();if(!r)throw new Error("Trying to subscribe to your EVM wallet, but seems its instance is not available.");let[,s]=n.state();t=o(async i=>{s("network",i)},"eventCallback"),r.on("chainChanged",t)},()=>{let n=e();t&&n&&n.removeListener("chainChanged",t)}]}a(U,"$");o(U,"changeChainSubscriber");function G(e){return async()=>{let t=e();if(!t)throw new Error("Trying to eagerly connect to your EVM wallet, but seems its instance is not available.");try{return!!(await t.request({method:"eth_accounts"})).length}catch{return!1}}}a(G,"q");o(G,"canEagerConnect");var pe={};m(pe,{recommended:()=>ge});function x(e){let[,t]=e.state();t("connecting",!1)}a(x,"u");o(x,"intoConnectionFinished");var fe=[["connect",x]],ge=[...fe],ve={};m(ve,{recommended:()=>ye});var W=class{static{a(this,"i")}static{o(this,"ActionBuilder")}name;#e=new Map;#t=new Map;#n=new Map;#r=new Map;#a;constructor(e){this.name=e}and(e){return this.#e.has(this.name)||this.#e.set(this.name,[]),this.#e.get(this.name)?.push(e),this}or(e){return this.#t.has(this.name)||this.#t.set(this.name,[]),this.#t.get(this.name)?.push(e),this}before(e){return this.#r.has(this.name)||this.#r.set(this.name,[]),this.#r.get(this.name)?.push(e),this}after(e){return this.#n.has(this.name)||this.#n.set(this.name,[]),this.#n.get(this.name)?.push(e),this}action(e){return this.#a=e,this}build(){if(!this.#a)throw new Error("Your action builder should includes an action.");return{actionName:this.name,action:this.#a,before:this.#r,after:this.#n,and:this.#e,or:this.#t}}};function K(e){try{return h.parse(e),!0}catch{return!1}}a(K,"j");o(K,"isValidCaipAddress");function k(e,t){if(!t.accounts.every(K))throw new Error(`Your provider should format account addresses in CAIP-10 format. Your provided accounts: ${t.accounts}`);let[,n]=e.state();return n("accounts",t.accounts),n("network",t.network),n("connected",!0),t}a(k,"p");o(k,"connectAndUpdateStateForMultiNetworks");function M(e){let[,t]=e.state();t("connecting",!0)}a(M,"h");o(M,"intoConnecting");var we=[["connect",M]],ye=[["connect",k]],Ie={};m(Ie,{recommended:()=>be});var be=[...we],Se={};m(Se,{canEagerConnect:()=>Ne,connect:()=>Ae});var Ae=o(()=>new W("connect").and(k).before(M).after(x),"connect"),Ne=o(()=>new W("canEagerConnect"),"canEagerConnect"),J={};m(J,{base:()=>Oe,ethereum:()=>Ee,polygon:()=>Ce});var Ee={name:"ETH",logo:"https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/ETH/icon.svg"},Ce={name:"POLYGON",logo:"https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/POLYGON/icon.svg"},Oe={name:"BASE",logo:"https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/BASE/icon.svg"};var Q=Object.defineProperty,u=a((e,t)=>Q(e,"name",{value:t,configurable:!0}),"t"),p=a((e,t)=>{for(var n in t)Q(e,n,{get:t[n],enumerable:!0})},"s"),Pe={};p(Pe,{changeAccountSubscriber:()=>ee,recommended:()=>Je});function X(e){let[,t]=e.state();t("network",null),t("accounts",null),t("connected",!1),t("connecting",!1)}a(X,"C");u(X,"disconnect");var xe=[["disconnect",X]],ke="solana",Me="5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",Je=[...xe];function ee(e){let t;return[(n,r)=>{let s=e();if(!s)throw new Error("Trying to subscribe to your Solana wallet, but seems its instance is not available.");let[,i]=n.state();return t=u(c=>{if(!c){n.action("disconnect");return}i("accounts",[h.format({address:c.toString(),chainId:{namespace:ke,reference:Me}})])},"eventCallback"),s.on("accountChanged",t),r},(n,r)=>{let s=e();return t&&s&&s.off("accountChanged",t),r}]}a(ee,"j");u(ee,"changeAccountSubscriber");var Te={};p(Te,{recommended:()=>_e});function T(e){let[,t]=e.state();t("connecting",!1)}a(T,"c");u(T,"intoConnectionFinished");var Le=[["connect",T]],_e=[...Le],De={};p(De,{recommended:()=>Ve});var ze=class{static{a(this,"n")}static{u(this,"ActionBuilder")}name;#e=new Map;#t=new Map;#n=new Map;#r=new Map;#a;constructor(e){this.name=e}and(e){return this.#e.has(this.name)||this.#e.set(this.name,[]),this.#e.get(this.name)?.push(e),this}or(e){return this.#t.has(this.name)||this.#t.set(this.name,[]),this.#t.get(this.name)?.push(e),this}before(e){return this.#r.has(this.name)||this.#r.set(this.name,[]),this.#r.get(this.name)?.push(e),this}after(e){return this.#n.has(this.name)||this.#n.set(this.name,[]),this.#n.get(this.name)?.push(e),this}action(e){return this.#a=e,this}build(){if(!this.#a)throw new Error("Your action builder should includes an action.");return{actionName:this.name,action:this.#a,before:this.#r,after:this.#n,and:this.#e,or:this.#t}}};function te(e){try{return h.parse(e),!0}catch{return!1}}a(te,"E");u(te,"isValidCaipAddress");function L(e,t){if(!t.every(te))throw new Error(`Your provider should format account addresses in CAIP-10 format. Your provided accounts: ${t}`);let[,n]=e.state();return n("accounts",t),n("connected",!0),t}a(L,"a");u(L,"connectAndUpdateStateForSingleNetwork");function _(e){let[,t]=e.state();t("connecting",!0)}a(_,"d");u(_,"intoConnecting");var Fe=[["connect",_]],Ve=[["connect",L]],Ye={};p(Ye,{recommended:()=>Ze});var Ze=[...Fe],je={};p(je,{connect:()=>qe});var qe=u(()=>new ze("connect").and(L).before(_).after(T),"connect"),D={};p(D,{solana:()=>Be});var Be={name:"SOLANA",logo:"https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/SOLANA/icon.svg"};import{Networks as re,WalletTypes as Re}from"@rango-dev/wallets-shared";import"rango-types";import{DefaultSignerFactory as $e,TransactionType as ne}from"rango-types";async function z(){let e=new $e,{EthereumSigner:t}=await import("./ethereum-V2WNWA6L.js"),{SolanaSigner:n}=await import("./solana-GJWCIU6R.js");return e.registerSigner(ne.EVM,new t),e.registerSigner(ne.SOLANA,new n),e}a(z,"getSigners");var vt={type:Re.LEDGER},wt=F,yt=a(async({namespaces:e})=>{let t=[],n=e?.find(s=>s.namespace==="Solana"),r=e?.find(s=>s.namespace==="EVM");if(n)if(n.derivationPath){I(n.derivationPath);let s=await Y();t.push(s)}else throw new Error("Derivation Path can not be empty.");else if(r)if(r.derivationPath){I(r.derivationPath);let s=await V();t.push(s)}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: ${e?.map(s=>s.namespace)}`);return t},"connect"),It=a(async()=>{Z()},"disconnect"),bt=z,St=a(e=>{let t=[],n=e.find(s=>s.name===re.ETHEREUM);n&&t.push(n);let r=e.find(s=>s.name===re.SOLANA);return r&&t.push(r),{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:t,showOnMobile:!1,needsDerivationPath:{data:[{id:"metamask",label:"Metamask (m/44'/60'/0'/0/index)",namespace:"EVM",generateDerivationPath:s=>`44'/60'/0'/0/${s}`},{id:"ledgerLive",label:"LedgerLive (m/44'/60'/index'/0/0)",namespace:"EVM",generateDerivationPath:s=>`44'/60'/${s}'/0/0`},{id:"legacy",label:"Legacy (m/44'/60'/0'/index)",namespace:"EVM",generateDerivationPath:s=>`44'/60'/0'/${s}`},{id:"(m/44'/501'/index')",label:"(m/44'/501'/index')",namespace:"Solana",generateDerivationPath:s=>`44'/501'/${s}'`},{id:"(m/44'/501'/0'/index)",label:"(m/44'/501'/0'/index)",namespace:"Solana",generateDerivationPath:s=>`44'/501'/0'/${s}`}]},needsNamespace:{selection:"single",data:[{label:"EVM",value:"EVM",id:"ETH",chains:[J.ethereum]},{label:"Solana",value:"Solana",id:"SOLANA",chains:[D.solana]}]}}},"getWalletInfo");export{vt as config,yt as connect,It as disconnect,wt as getInstance,bt as getSigners,St as getWalletInfo};
|
|
1
|
+
import{a as c,d as p,e as m,f as g,h as d}from"./chunk-2KLLAGCE.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-V2WNWA6L.js"),{SolanaSigner:a}=await import("./solana-GJWCIU6R.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};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
4
|
-
"sourcesContent": ["import { IdentifierSpec } from \"./types\";\n\nconst CAIP2: IdentifierSpec = {\n name: \"chainId\",\n regex: \"[-:a-zA-Z0-9]{5,41}\",\n parameters: {\n delimiter: \":\",\n values: {\n 0: {\n name: \"namespace\",\n regex: \"[-a-z0-9]{3,8}\",\n },\n 1: {\n name: \"reference\",\n regex: \"[-a-zA-Z0-9]{1,32}\",\n },\n },\n },\n};\n\nconst CAIP10: IdentifierSpec = {\n name: \"accountId\",\n regex: \"[-:a-zA-Z0-9]{7,106}\",\n parameters: {\n delimiter: \":\",\n values: {\n 0: {\n name: \"namespace\",\n regex: \"[-a-z0-9]{3,8}\",\n },\n 1: {\n name: \"reference\",\n regex: \"[-a-zA-Z0-9]{1,32}\",\n },\n 2: {\n name: \"address\",\n regex: \"[a-zA-Z0-9]{1,64}\",\n },\n },\n },\n};\n\n// represents namespace:reference in CAIP-19\nconst AssetName: IdentifierSpec = {\n name: \"assetName\",\n regex: \"[-:a-zA-Z0-9]{5,73}\",\n parameters: {\n delimiter: \":\",\n values: {\n 0: {\n name: \"namespace\",\n regex: \"[-a-z0-9]{3,8}\",\n },\n 1: {\n name: \"reference\",\n regex: \"[-a-zA-Z0-9]{1,64}\",\n },\n },\n },\n};\n\nconst CAIP19AssetType: IdentifierSpec = {\n name: \"assetType\",\n regex: \"[-:a-zA-Z0-9]{11,115}\",\n parameters: {\n delimiter: \"/\",\n values: {\n 0: CAIP2,\n 1: AssetName,\n },\n },\n};\n\nconst CAIP19AssetId: IdentifierSpec = {\n name: \"assetId\",\n regex: \"[-:a-zA-Z0-9]{13,148}\",\n parameters: {\n delimiter: \"/\",\n values: {\n 0: CAIP2,\n 1: AssetName,\n 2: {\n name: \"tokenId\",\n regex: \"[-a-zA-Z0-9]{1,32}\",\n },\n },\n },\n};\n\nexport const CAIP = {\n \"2\": CAIP2,\n \"10\": CAIP10,\n \"19\": {\n assetName: AssetName,\n assetType: CAIP19AssetType,\n assetId: CAIP19AssetId,\n },\n};\n", "import { IdentifierSpec, Params } from \"./types\";\n\nexport function splitParams(id: string, spec: IdentifierSpec): string[] {\n return id.split(spec.parameters.delimiter);\n}\n\nexport function getParams<T>(id: string, spec: IdentifierSpec): T {\n const arr = splitParams(id, spec);\n const params = {};\n arr.forEach((value, index) => {\n params[spec.parameters.values[index].name] = value;\n });\n return params as T;\n}\n\nexport function joinParams(params: Params, spec: IdentifierSpec): string {\n return Object.values(spec.parameters.values)\n .map(parameter => {\n const param = params[parameter.name];\n return typeof param === \"string\"\n ? param\n : joinParams(param, parameter as IdentifierSpec);\n })\n .join(spec.parameters.delimiter);\n}\n\nexport function isValidId(id: string, spec: IdentifierSpec): boolean {\n // console.log(\"id\", id);\n // console.log(\"spec\", spec);\n // console.log(\"before regex\");\n if (!new RegExp(spec.regex).test(id)) return false;\n // console.log(\"after regex\");\n // console.log(\"before split\");\n const params = splitParams(id, spec);\n // console.log(\"after split\");\n // console.log(\"params\", params);\n // console.log(\"before length\");\n if (params.length !== Object.keys(spec.parameters.values).length)\n return false;\n // console.log(\"after length\");\n // console.log(\"before matches\");\n const matches = params\n .map((param, index) =>\n new RegExp(spec.parameters.values[index].regex).test(param)\n )\n .filter(x => !!x);\n if (matches.length !== params.length) return false;\n // console.log(\"after matches\");\n return true;\n}\n", "import { CAIP } from \"./spec\";\nimport { IdentifierSpec } from \"./types\";\nimport { isValidId, joinParams, getParams } from \"./utils\";\n\nexport interface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\nexport class ChainId {\n public static spec: IdentifierSpec = CAIP[\"2\"];\n\n public static parse(id: string): ChainIdParams {\n if (!isValidId(id, this.spec)) {\n throw new Error(`Invalid ${this.spec.name} provided: ${id}`);\n }\n return new ChainId(getParams<ChainIdParams>(id, this.spec)).toJSON();\n }\n\n public static format(params: ChainIdParams): string {\n return joinParams(params as any, this.spec);\n }\n\n public namespace: string;\n public reference: string;\n\n constructor(params: ChainIdParams | string) {\n if (typeof params === \"string\") {\n params = ChainId.parse(params);\n }\n\n this.namespace = params.namespace;\n this.reference = params.reference;\n }\n\n public toString(): string {\n return ChainId.format(this.toJSON());\n }\n\n public toJSON(): ChainIdParams {\n return {\n namespace: this.namespace,\n reference: this.reference,\n };\n }\n}\n", "import { ChainId, ChainIdParams } from \"./chain\";\nimport { CAIP } from \"./spec\";\nimport { IdentifierSpec } from \"./types\";\nimport { isValidId, joinParams, getParams } from \"./utils\";\n\nexport interface AccountIdSplitParams extends ChainIdParams {\n address: string;\n}\nexport interface AccountIdParams {\n chainId: string | ChainIdParams;\n address: string;\n}\n\nexport class AccountId {\n public static spec: IdentifierSpec = CAIP[\"10\"];\n\n public static parse(id: string): AccountIdParams {\n if (!isValidId(id, this.spec)) {\n throw new Error(`Invalid ${this.spec.name} provided: ${id}`);\n }\n const { namespace, reference, address } = getParams<AccountIdSplitParams>(\n id,\n this.spec\n );\n const chainId = new ChainId({ namespace, reference });\n return new AccountId({ chainId, address }).toJSON();\n }\n\n public static format(params: AccountIdParams): string {\n const chainId = new ChainId(params.chainId);\n const splitParams: AccountIdSplitParams = {\n ...chainId.toJSON(),\n address: params.address,\n };\n return joinParams(splitParams as any, this.spec);\n }\n\n public chainId: ChainId;\n public address: string;\n\n constructor(params: AccountIdParams | string) {\n if (typeof params === \"string\") {\n params = AccountId.parse(params);\n }\n\n this.chainId = new ChainId(params.chainId);\n this.address = params.address;\n }\n\n public toString(): string {\n return AccountId.format(this.toJSON());\n }\n\n public toJSON(): AccountIdParams {\n return {\n chainId: this.chainId.toJSON(),\n address: this.address,\n };\n }\n}\n", "import { CAIP } from \"./spec\";\nimport { IdentifierSpec } from \"./types\";\nimport { isValidId, joinParams, getParams } from \"./utils\";\n\nexport interface AssetNameParams {\n namespace: string;\n reference: string;\n}\n\nexport class AssetName {\n public static spec: IdentifierSpec = CAIP[\"19\"].assetName;\n\n public static parse(id: string): AssetNameParams {\n if (!isValidId(id, this.spec)) {\n throw new Error(`Invalid ${this.spec.name} provided: ${id}`);\n }\n return new AssetName(getParams<AssetNameParams>(id, this.spec)).toJSON();\n }\n\n public static format(params: AssetNameParams): string {\n return joinParams(params as any, this.spec);\n }\n\n public namespace: string;\n public reference: string;\n\n constructor(params: AssetNameParams | string) {\n if (typeof params === \"string\") {\n params = AssetName.parse(params);\n }\n\n this.namespace = params.namespace;\n this.reference = params.reference;\n }\n\n public toString(): string {\n return AssetName.format(this.toJSON());\n }\n\n public toJSON(): AssetNameParams {\n return {\n namespace: this.namespace,\n reference: this.reference,\n };\n }\n}\n", "import { AssetName, AssetNameParams } from \"./assetName\";\nimport { ChainId, ChainIdParams } from \"./chain\";\nimport { CAIP } from \"./spec\";\nimport { IdentifierSpec } from \"./types\";\nimport { isValidId, joinParams, getParams } from \"./utils\";\n\nexport interface AssetTypeParams {\n chainId: string | ChainIdParams;\n assetName: string | AssetNameParams;\n}\n\nexport class AssetType {\n public static spec: IdentifierSpec = CAIP[\"19\"].assetType;\n\n public static parse(id: string): AssetTypeParams {\n if (!isValidId(id, this.spec)) {\n throw new Error(`Invalid ${this.spec.name} provided: ${id}`);\n }\n return new AssetType(getParams<AssetTypeParams>(id, this.spec)).toJSON();\n }\n\n public static format(params: AssetTypeParams): string {\n return joinParams(params as any, this.spec);\n }\n\n public chainId: ChainId;\n public assetName: AssetName;\n\n constructor(params: AssetTypeParams | string) {\n if (typeof params === \"string\") {\n params = AssetType.parse(params);\n }\n\n this.chainId = new ChainId(params.chainId);\n this.assetName = new AssetName(params.assetName);\n }\n\n public toString(): string {\n return AssetType.format(this.toJSON());\n }\n\n public toJSON(): AssetTypeParams {\n return {\n chainId: this.chainId.toJSON(),\n assetName: this.assetName,\n };\n }\n}\n", "import { AssetName, AssetNameParams } from \"./assetName\";\nimport { ChainId, ChainIdParams } from \"./chain\";\nimport { CAIP } from \"./spec\";\nimport { IdentifierSpec } from \"./types\";\nimport { isValidId, joinParams, getParams } from \"./utils\";\n\nexport interface AssetIdParams {\n chainId: string | ChainIdParams;\n assetName: string | AssetNameParams;\n tokenId: string;\n}\n\nexport class AssetId {\n public static spec: IdentifierSpec = CAIP[\"19\"].assetId;\n\n public static parse(id: string): AssetIdParams {\n if (!isValidId(id, this.spec)) {\n throw new Error(`Invalid ${this.spec.name} provided: ${id}`);\n }\n return new AssetId(getParams<AssetIdParams>(id, this.spec)).toJSON();\n }\n\n public static format(params: AssetIdParams): string {\n return joinParams(params as any, this.spec);\n }\n\n public chainId: ChainId;\n public assetName: AssetName;\n public tokenId: string;\n\n constructor(params: AssetIdParams | string) {\n if (typeof params === \"string\") {\n params = AssetId.parse(params);\n }\n\n this.chainId = new ChainId(params.chainId);\n this.assetName = new AssetName(params.assetName);\n this.tokenId = params.tokenId;\n }\n\n public toString(): string {\n return AssetId.format(this.toJSON());\n }\n\n public toJSON(): AssetIdParams {\n return {\n chainId: this.chainId.toJSON(),\n assetName: this.assetName.toJSON(),\n tokenId: this.tokenId,\n };\n }\n}\n", "import type { EIP1193EventMap } from './eip1193.js';\nimport type { EvmActions, ProviderAPI } from './types.js';\nimport type { Context, Subscriber } from '../../hub/namespaces/mod.js';\nimport type {\n CanEagerConnect,\n SubscriberCleanUp,\n} from '../../hub/namespaces/types.js';\nimport type { CaipAccount } from '../../types/accounts.js';\nimport type { FunctionWithContext } from '../../types/actions.js';\n\nimport { AccountId } from 'caip';\n\nimport { recommended as commonRecommended } from '../common/actions.js';\n\nimport { CAIP_NAMESPACE } from './constants.js';\nimport { getAccounts, switchOrAddNetwork } from './utils.js';\n\nexport const recommended = [...commonRecommended];\n\nexport function connect(\n instance: () => ProviderAPI\n): FunctionWithContext<EvmActions['connect'], Context> {\n return async (_context, chain) => {\n const evmInstance = instance();\n\n if (!evmInstance) {\n throw new Error(\n 'Do your wallet injected correctly and is evm compatible?'\n );\n }\n\n if (chain) {\n await switchOrAddNetwork(evmInstance, chain);\n }\n\n const chainId = await evmInstance.request({ method: 'eth_chainId' });\n\n const result = await getAccounts(evmInstance);\n\n const formatAccounts = result.accounts.map(\n (account) =>\n AccountId.format({\n address: account,\n chainId: {\n namespace: CAIP_NAMESPACE,\n reference: chainId,\n },\n }) as CaipAccount\n );\n\n return {\n accounts: formatAccounts,\n network: result.chainId,\n };\n };\n}\n\nexport function changeAccountSubscriber(\n instance: () => ProviderAPI\n): [Subscriber<EvmActions>, SubscriberCleanUp<EvmActions>] {\n let eventCallback: EIP1193EventMap['accountsChanged'];\n\n // subscriber can be passed to `or`, it will get the error and should rethrow error to pass the error to next `or` or throw error.\n return [\n (context, err) => {\n const evmInstance = instance();\n\n if (!evmInstance) {\n throw new Error(\n 'Trying to subscribe to your EVM wallet, but seems its instance is not available.'\n );\n }\n\n const [, setState] = context.state();\n\n eventCallback = async (accounts) => {\n /*\n * In Phantom, when user is switching to an account which is not connected to dApp yet, it returns a null.\n * So null means we don't have access to account and we need to disconnect and let the user connect the account.\n *\n * This assumption may not work for other wallets, if that the case, we need to consider a new approach.\n */\n if (!accounts || accounts.length === 0) {\n context.action('disconnect');\n return;\n }\n\n const chainId = await evmInstance.request({ method: 'eth_chainId' });\n const formatAccounts = accounts.map((account) =>\n AccountId.format({\n address: account,\n chainId: {\n namespace: CAIP_NAMESPACE,\n reference: chainId,\n },\n })\n );\n\n setState('accounts', formatAccounts);\n };\n evmInstance.on('accountsChanged', eventCallback);\n\n if (err instanceof Error) {\n throw err;\n }\n },\n (_, err) => {\n const evmInstance = instance();\n\n if (eventCallback && evmInstance) {\n evmInstance.removeListener('accountsChanged', eventCallback);\n }\n\n return err;\n },\n ];\n}\n\nexport function changeChainSubscriber(\n instance: () => ProviderAPI\n): [Subscriber<EvmActions>, SubscriberCleanUp<EvmActions>] {\n let eventCallback: EIP1193EventMap['chainChanged'];\n\n return [\n (context) => {\n const evmInstance = instance();\n\n if (!evmInstance) {\n throw new Error(\n 'Trying to subscribe to your EVM wallet, but seems its instance is not available.'\n );\n }\n\n const [, setState] = context.state();\n\n eventCallback = async (chainId: string) => {\n setState('network', chainId);\n };\n evmInstance.on('chainChanged', eventCallback);\n },\n () => {\n const evmInstance = instance();\n\n if (eventCallback && evmInstance) {\n evmInstance.removeListener('chainChanged', eventCallback);\n }\n },\n ];\n}\n\nexport function canEagerConnect(\n instance: () => ProviderAPI | undefined\n): CanEagerConnect<EvmActions> {\n return async () => {\n const evmInstance = instance();\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 };\n}\n", "import type { Context } from '../../hub/namespaces/mod.js';\n\nexport function disconnect(context: Context): void {\n const [, setState] = context.state();\n setState('network', null);\n setState('accounts', null);\n setState('connected', false);\n setState('connecting', false);\n}\n\nexport const recommended = [['disconnect', disconnect] as const];\n", "export const CAIP_NAMESPACE = 'eip155';\nexport const CAIP_ETHEREUM_CHAIN_ID = '1';\n", "import type { Chain, ChainId, ProviderAPI } from './types.js';\n\nexport async function getAccounts(provider: ProviderAPI) {\n const [accounts, chainId] = await Promise.all([\n provider.request({ method: 'eth_requestAccounts' }),\n provider.request({ method: 'eth_chainId' }),\n ]);\n\n return {\n accounts,\n chainId,\n };\n}\n\nexport async function suggestNetwork(instance: ProviderAPI, chain: Chain) {\n return await instance.request({\n method: 'wallet_addEthereumChain',\n params: [chain],\n });\n}\n\nexport async function switchNetwork(instance: ProviderAPI, chainId: ChainId) {\n return await instance.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: chainId }],\n });\n}\n\nexport async function switchOrAddNetwork(\n instance: ProviderAPI,\n chain: ChainId | Chain\n) {\n try {\n const chainId = typeof chain === 'string' ? chain : chain.chainId;\n await switchNetwork(instance, chainId);\n } catch (switchError) {\n const error = switchError as { code: number };\n\n const NOT_FOUND_CHAIN_ERROR_CODE = 4902;\n if (\n typeof chain !== 'string' &&\n (error.code === NOT_FOUND_CHAIN_ERROR_CODE || !error.code)\n ) {\n /*\n * Note: on WalletConnect `code` is undefined so we have to use !switchError.code as fallback.\n * This error code indicates that the chain has not been added to wallet.\n */\n await suggestNetwork(instance, chain);\n }\n throw switchError;\n }\n}\n", "import { recommended as commonRecommended } from '../common/after.js';\n\nexport const recommended = [...commonRecommended];\n", "import type { Context } from '../../hub/namespaces/mod.js';\n\nexport function intoConnectionFinished(context: Context) {\n const [, setState] = context.state();\n setState('connecting', false);\n}\n\nexport const recommended = [['connect', intoConnectionFinished] as const];\n", "import { connectAndUpdateStateForMultiNetworks } from '../common/mod.js';\n\nexport const recommended = [\n ['connect', connectAndUpdateStateForMultiNetworks] as const,\n];\n", "import type { StoreApi } from 'zustand/vanilla';\n\nimport { createStore as createZustandStore } from 'zustand/vanilla';\n\nimport { extend, type Store } from './extend.js';\nimport { hubStore, type HubStore } from './hub.js';\nimport { namespacesStore, type NamespaceStore } from './namespaces.js';\nimport { providersStore, type ProviderStore } from './providers.js';\n\n/************ State ************/\n\nexport interface State {\n hub: HubStore;\n providers: ProviderStore;\n namespaces: NamespaceStore;\n}\n\nexport type RawStore = StoreApi<State>;\n\nexport const createStore = (): Store => {\n const store = createZustandStore<State>((...api) => {\n return {\n hub: hubStore(...api),\n providers: providersStore(...api),\n namespaces: namespacesStore(...api),\n };\n });\n\n return extend(store);\n};\n", "/************ Namespace ************/\n\nimport type { StateCreator } from 'zustand';\n\nimport { produce } from 'immer';\n\nimport {\n ConsumableEvents,\n type NamespaceConnectedEvent,\n type NamespaceDisconnectedEvent,\n type NamespaceSwitchedAccountEvent,\n type NamespaceSwitchedNetworkEvent,\n} from './events.js';\nimport { namespaceStateSelector, type State } from './mod.js';\n\n// Currently, namespace doesn't has any config.\nexport type NamespaceConfig = object;\n\nexport interface NamespaceData {\n accounts: null | string[];\n network: null | string;\n connected: boolean;\n connecting: boolean;\n}\n\ninterface NamespaceInfo {\n providerId: string;\n namespaceId: string;\n}\n\ninterface NamespaceItem {\n info: NamespaceInfo;\n data: NamespaceData;\n error: unknown;\n}\n\ntype NamespaceState = {\n events: InstanceType<typeof ConsumableEvents>;\n list: Record<string, NamespaceItem>;\n};\n\ninterface NamespaceActions {\n addNamespace: (id: string, config: NamespaceInfo) => void;\n updateStatus: <K extends keyof NamespaceData>(\n id: string,\n key: K,\n value: NamespaceData[K]\n ) => void;\n\n _produceEventsWhenUpdatingStatus: <K extends keyof NamespaceData>(\n namespace: NamespaceItem,\n id: string,\n key: K,\n value: NamespaceData[K]\n ) => void;\n}\ninterface NamespaceSelectors {\n getNamespaceData(storeId: string): NamespaceData;\n}\n\nexport type NamespaceStore = NamespaceState &\n NamespaceActions &\n NamespaceSelectors;\ntype NamespaceStateCreator = StateCreator<State, [], [], NamespaceStore>;\n\nconst namespacesStore: NamespaceStateCreator = (set, get) => ({\n events: new ConsumableEvents(),\n\n list: {},\n addNamespace: (id, info) => {\n const data: NamespaceData = {\n accounts: null,\n network: null,\n connected: false,\n connecting: false,\n };\n\n const item = {\n data,\n error: '',\n info,\n };\n\n set(\n produce((state: State) => {\n state.namespaces.list[id] = item;\n })\n );\n },\n updateStatus: (id, key, value) => {\n const ns = get().namespaces.list[id];\n if (!ns) {\n throw new Error(`No namespace with '${id}' found.`);\n }\n\n get().namespaces._produceEventsWhenUpdatingStatus(ns, id, key, value);\n\n // Updating state\n set(\n produce((state: State) => {\n state.namespaces.list[id].data[key] = value;\n })\n );\n },\n getNamespaceData(storeId) {\n return namespaceStateSelector(get(), storeId);\n },\n\n _produceEventsWhenUpdatingStatus: (namespace, id, key, value) => {\n if (key === 'accounts') {\n // check for both null and empty array\n const isAccountsEmpty =\n Object.is(value, null) || (Array.isArray(value) && value.length === 0);\n\n if (isAccountsEmpty) {\n const currentConnectedStatus = get().namespaces.list[id].data.connected;\n if (currentConnectedStatus) {\n const event: NamespaceDisconnectedEvent = {\n type: 'namespace_disconnected',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n };\n\n get().namespaces.events.push(event);\n }\n // Skip emitting disconnect event, if the `connected` is false\n } else {\n const currentAccounts = get().namespaces.list[id].data.accounts;\n\n if (!currentAccounts) {\n const event: NamespaceConnectedEvent = {\n type: 'namespace_connected',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n accounts: value as string[],\n };\n\n get().namespaces.events.push(event);\n } else {\n const areSameAccounts =\n currentAccounts.sort().toString() ===\n (value as string[]).sort().toString();\n\n if (!areSameAccounts) {\n const event: NamespaceSwitchedAccountEvent = {\n type: 'namespace_account_switched',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n previousAccounts: currentAccounts,\n accounts: value as string[],\n };\n\n get().namespaces.events.push(event);\n }\n }\n }\n } else if (key === 'network') {\n const currentNetwork = get().namespaces.list[id].data.network;\n\n const event: NamespaceSwitchedNetworkEvent = {\n type: 'namespace_network_switched',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n network: value as string,\n previousNetwork: currentNetwork,\n };\n\n get().namespaces.events.push(event);\n }\n },\n});\n\nexport { namespacesStore };\n", "import type { Namespace } from '../../namespaces/common/types.js';\nimport type { State as InternalProviderState } from '../provider/mod.js';\nimport type { StateCreator } from 'zustand';\n\nimport { produce } from 'immer';\n\nimport { ConsumableEvents, type ProviderDetectedEvent } from './events.js';\nimport { guessProviderStateSelector, type State } from './mod.js';\n\ntype Browsers = 'firefox' | 'chrome' | 'edge' | 'brave' | 'homepage';\ntype Property<N extends string, V> = { name: N; value: V };\ntype DetachedInstances = Property<'detached', Namespace[]>;\n\nexport type ProviderInfo = {\n name: string;\n icon: string;\n extensions: Partial<Record<Browsers, string>>;\n properties?: DetachedInstances[];\n};\n\nexport interface ProviderConfig {\n info: ProviderInfo;\n}\n\ninterface ProviderData {\n installed: boolean;\n}\n\ninterface ProviderItem {\n config: ProviderConfig;\n data: ProviderData;\n error: unknown;\n}\n\ntype ProviderState = {\n events: ConsumableEvents;\n list: Record<string, ProviderItem>;\n};\ninterface ProviderActions {\n addProvider: (id: string, config: ProviderConfig) => void;\n updateStatus: <K extends keyof ProviderData>(\n id: string,\n key: K,\n value: ProviderData[K]\n ) => void;\n\n _produceEventsWhenUpdatingStatus: <K extends keyof ProviderData>(\n provider: ProviderItem,\n id: string,\n key: K,\n value: ProviderData[K]\n ) => void;\n}\n\ninterface ProviderSelectors {\n /**\n * Provider has a limited state to itself, to be compatible with legacy, we try to produce same object as legacy\n * which includes namespace state as well.\n */\n guessNamespacesState: (id: string) => InternalProviderState;\n}\n\nexport type ProviderStore = ProviderState & ProviderActions & ProviderSelectors;\ntype ProvidersStateCreator = StateCreator<State, [], [], ProviderStore>;\n\nconst providersStore: ProvidersStateCreator = (set, get) => ({\n events: new ConsumableEvents(),\n\n list: {},\n addProvider: (id, config) => {\n const item = {\n data: {\n installed: false,\n },\n error: '',\n config,\n };\n\n set(\n produce((state: State) => {\n state.providers.list[id] = item;\n })\n );\n },\n updateStatus: (id, key, value) => {\n const provider = get().providers.list[id];\n if (!provider) {\n throw new Error(`No namespace namespace with '${id}' found.`);\n }\n\n get().providers._produceEventsWhenUpdatingStatus(provider, id, key, value);\n\n set(\n produce((state: State) => {\n state.providers.list[id].data[key] = value;\n })\n );\n },\n guessNamespacesState: (providerId: string): InternalProviderState => {\n return guessProviderStateSelector(get(), providerId);\n },\n\n _produceEventsWhenUpdatingStatus: (_provider, id, key, _value) => {\n if (key === 'installed') {\n const event: ProviderDetectedEvent = {\n type: 'provider_detected',\n provider: id,\n };\n\n get().providers.events.push(event);\n }\n },\n});\n\nexport { providersStore };\n", "import type { Actions, Context, Operators } from '../hub/namespaces/types.js';\nimport type { AnyFunction, FunctionWithContext } from '../types/actions.js';\n\nexport interface ActionByBuilder<T, Context> {\n actionName: keyof T;\n and: Operators<T>;\n or: Operators<T>;\n after: Operators<T>;\n before: Operators<T>;\n action: FunctionWithContext<T[keyof T], Context>;\n}\n\n/*\n * TODO:\n * Currently, to use this builder you will write something like this:\n * new ActionBuilder<EvmActions, 'disconnect'>('disconnect').after(....)\n *\n * I couldn't figure it out to be able typescript infer the constructor value as key of actions.\n * Ideal usage:\n * new ActionBuilder<EvmActions>('disconnect').after(....)\n *\n */\nexport class ActionBuilder<T extends Actions<T>, K extends keyof T> {\n readonly name: K;\n #and: Operators<T> = new Map();\n #or: Operators<T> = new Map();\n #after: Operators<T> = new Map();\n #before: Operators<T> = new Map();\n #action: FunctionWithContext<T[keyof T], Context<T>> | undefined;\n\n constructor(name: K) {\n this.name = name;\n }\n\n public and(action: FunctionWithContext<AnyFunction, Context<T>>) {\n if (!this.#and.has(this.name)) {\n this.#and.set(this.name, []);\n }\n this.#and.get(this.name)?.push(action);\n return this;\n }\n\n public or(action: FunctionWithContext<AnyFunction, Context<T>>) {\n if (!this.#or.has(this.name)) {\n this.#or.set(this.name, []);\n }\n this.#or.get(this.name)?.push(action);\n return this;\n }\n\n public before(action: FunctionWithContext<AnyFunction, Context<T>>) {\n if (!this.#before.has(this.name)) {\n this.#before.set(this.name, []);\n }\n this.#before.get(this.name)?.push(action);\n return this;\n }\n\n public after(action: FunctionWithContext<AnyFunction, Context<T>>) {\n if (!this.#after.has(this.name)) {\n this.#after.set(this.name, []);\n }\n this.#after.get(this.name)?.push(action);\n return this;\n }\n\n public action(action: FunctionWithContext<T[keyof T], Context<T>>) {\n this.#action = action;\n return this;\n }\n\n public build(): ActionByBuilder<T, Context<T>> {\n if (!this.#action) {\n throw new Error('Your action builder should includes an action.');\n }\n\n return {\n actionName: this.name,\n action: this.#action,\n before: this.#before,\n after: this.#after,\n and: this.#and,\n or: this.#or,\n };\n }\n}\n", "/*\n * It is not a good idea to re-export all of CAIP because if they have a breaking change, we will break as well.\n * It would be better to create an abstraction over them and export our own interface to ensure it is under our control.\n */\nexport * as CAIP from 'caip';\n\nexport { generateStoreId } from '../hub/helpers.js';\nexport * from './versions.js';\n", "import { AccountId } from 'caip';\n\nexport function isValidCaipAddress(address: string): boolean {\n try {\n AccountId.parse(address);\n return true;\n } catch {\n return false;\n }\n}\n", "import type {\n Accounts,\n AccountsWithActiveChain,\n} from './../../types/accounts.js';\nimport type { Context } from '../../hub/namespaces/mod.js';\n\nimport { isValidCaipAddress } from './helpers.js';\n\nexport function connectAndUpdateStateForSingleNetwork(\n context: Context,\n accounts: Accounts\n) {\n if (!accounts.every(isValidCaipAddress)) {\n throw new Error(\n `Your provider should format account addresses in CAIP-10 format. Your provided accounts: ${accounts}`\n );\n }\n\n const [, setState] = context.state();\n setState('accounts', accounts);\n setState('connected', true);\n return accounts;\n}\n\nexport function connectAndUpdateStateForMultiNetworks(\n context: Context,\n accounts: AccountsWithActiveChain\n) {\n if (!accounts.accounts.every(isValidCaipAddress)) {\n throw new Error(\n `Your provider should format account addresses in CAIP-10 format. Your provided accounts: ${accounts.accounts}`\n );\n }\n\n const [, setState] = context.state();\n setState('accounts', accounts.accounts);\n setState('network', accounts.network);\n setState('connected', true);\n return accounts;\n}\n\nexport const recommended = [];\n", "import type { Context } from '../../hub/namespaces/mod.js';\n\nexport function intoConnecting(context: Context) {\n const [, setState] = context.state();\n setState('connecting', true);\n}\n\n// Please consider if you are going to add something here, make sure it works on all namespaces.\nexport const recommended = [['connect', intoConnecting] as const];\n", "import { beforeRecommended } from '../common/mod.js';\n\nexport const recommended = [...beforeRecommended];\n", "import type { EvmActions } from './types.js';\n\nimport { ActionBuilder } from '../../mod.js';\nimport {\n connectAndUpdateStateForMultiNetworks,\n intoConnecting,\n intoConnectionFinished,\n} from '../common/mod.js';\n\nexport const connect = () =>\n new ActionBuilder<EvmActions, 'connect'>('connect')\n .and(connectAndUpdateStateForMultiNetworks)\n .before(intoConnecting)\n .after(intoConnectionFinished);\n\nexport const canEagerConnect = () =>\n new ActionBuilder<EvmActions, 'canEagerConnect'>('canEagerConnect');\n", "import type { Chain } from '../common/types.js';\n\nexport const ethereum: Chain = {\n name: 'ETH',\n logo: 'https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/ETH/icon.svg',\n};\nexport const polygon: Chain = {\n name: 'POLYGON',\n logo: 'https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/POLYGON/icon.svg',\n};\nexport const base: Chain = {\n name: 'BASE',\n logo: 'https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/BASE/icon.svg',\n};\n", "import type { ProviderAPI, SolanaActions } from './types.js';\nimport type { Subscriber } from '../../hub/namespaces/mod.js';\nimport type { SubscriberCleanUp } from '../../hub/namespaces/types.js';\nimport type { AnyFunction } from '../../types/actions.js';\n\nimport { AccountId } from 'caip';\n\nimport { recommended as commonRecommended } from '../common/actions.js';\n\nimport { CAIP_NAMESPACE, CAIP_SOLANA_CHAIN_ID } from './constants.js';\n\nexport const recommended = [...commonRecommended];\n\nexport function changeAccountSubscriber(\n instance: () => ProviderAPI | undefined\n): [Subscriber<SolanaActions>, SubscriberCleanUp<SolanaActions>] {\n let eventCallback: AnyFunction;\n\n // subscriber can be passed to `or`, it will get the error and should rethrow error to pass the error to next `or` or throw error.\n return [\n (context, err) => {\n const solanaInstance = instance();\n\n if (!solanaInstance) {\n throw new Error(\n 'Trying to subscribe to your Solana wallet, but seems its instance is not available.'\n );\n }\n\n const [, setState] = context.state();\n\n eventCallback = (publicKey) => {\n /*\n * In Phantom, when user is switching to an account which is not connected to dApp yet, it returns a null.\n * So null means we don't have access to account and we 0 need to disconnect and let the user connect the account.\n */\n if (!publicKey) {\n context.action('disconnect');\n return;\n }\n\n setState('accounts', [\n AccountId.format({\n address: publicKey.toString(),\n chainId: {\n namespace: CAIP_NAMESPACE,\n reference: CAIP_SOLANA_CHAIN_ID,\n },\n }),\n ]);\n };\n solanaInstance.on('accountChanged', eventCallback);\n\n return err;\n },\n (_context, err) => {\n const solanaInstance = instance();\n\n if (eventCallback && solanaInstance) {\n solanaInstance.off('accountChanged', eventCallback);\n }\n\n return err;\n },\n ];\n}\n", "import type { Context } from '../../hub/namespaces/mod.js';\n\nexport function disconnect(context: Context): void {\n const [, setState] = context.state();\n setState('network', null);\n setState('accounts', null);\n setState('connected', false);\n setState('connecting', false);\n}\n\nexport const recommended = [['disconnect', disconnect] as const];\n", "export const CAIP_NAMESPACE = 'solana';\nexport const CAIP_SOLANA_CHAIN_ID = '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp';\n", "import { recommended as commonRecommended } from '../common/after.js';\n\nexport const recommended = [...commonRecommended];\n", "import type { Context } from '../../hub/namespaces/mod.js';\n\nexport function intoConnectionFinished(context: Context) {\n const [, setState] = context.state();\n setState('connecting', false);\n}\n\nexport const recommended = [['connect', intoConnectionFinished] as const];\n", "import { connectAndUpdateStateForSingleNetwork } from '../common/mod.js';\n\nexport const recommended = [\n ['connect', connectAndUpdateStateForSingleNetwork] as const,\n];\n", "import type { StoreApi } from 'zustand/vanilla';\n\nimport { createStore as createZustandStore } from 'zustand/vanilla';\n\nimport { extend, type Store } from './extend.js';\nimport { hubStore, type HubStore } from './hub.js';\nimport { namespacesStore, type NamespaceStore } from './namespaces.js';\nimport { providersStore, type ProviderStore } from './providers.js';\n\n/************ State ************/\n\nexport interface State {\n hub: HubStore;\n providers: ProviderStore;\n namespaces: NamespaceStore;\n}\n\nexport type RawStore = StoreApi<State>;\n\nexport const createStore = (): Store => {\n const store = createZustandStore<State>((...api) => {\n return {\n hub: hubStore(...api),\n providers: providersStore(...api),\n namespaces: namespacesStore(...api),\n };\n });\n\n return extend(store);\n};\n", "/************ Namespace ************/\n\nimport type { StateCreator } from 'zustand';\n\nimport { produce } from 'immer';\n\nimport {\n ConsumableEvents,\n type NamespaceConnectedEvent,\n type NamespaceDisconnectedEvent,\n type NamespaceSwitchedAccountEvent,\n type NamespaceSwitchedNetworkEvent,\n} from './events.js';\nimport { namespaceStateSelector, type State } from './mod.js';\n\n// Currently, namespace doesn't has any config.\nexport type NamespaceConfig = object;\n\nexport interface NamespaceData {\n accounts: null | string[];\n network: null | string;\n connected: boolean;\n connecting: boolean;\n}\n\ninterface NamespaceInfo {\n providerId: string;\n namespaceId: string;\n}\n\ninterface NamespaceItem {\n info: NamespaceInfo;\n data: NamespaceData;\n error: unknown;\n}\n\ntype NamespaceState = {\n events: InstanceType<typeof ConsumableEvents>;\n list: Record<string, NamespaceItem>;\n};\n\ninterface NamespaceActions {\n addNamespace: (id: string, config: NamespaceInfo) => void;\n updateStatus: <K extends keyof NamespaceData>(\n id: string,\n key: K,\n value: NamespaceData[K]\n ) => void;\n\n _produceEventsWhenUpdatingStatus: <K extends keyof NamespaceData>(\n namespace: NamespaceItem,\n id: string,\n key: K,\n value: NamespaceData[K]\n ) => void;\n}\ninterface NamespaceSelectors {\n getNamespaceData(storeId: string): NamespaceData;\n}\n\nexport type NamespaceStore = NamespaceState &\n NamespaceActions &\n NamespaceSelectors;\ntype NamespaceStateCreator = StateCreator<State, [], [], NamespaceStore>;\n\nconst namespacesStore: NamespaceStateCreator = (set, get) => ({\n events: new ConsumableEvents(),\n\n list: {},\n addNamespace: (id, info) => {\n const data: NamespaceData = {\n accounts: null,\n network: null,\n connected: false,\n connecting: false,\n };\n\n const item = {\n data,\n error: '',\n info,\n };\n\n set(\n produce((state: State) => {\n state.namespaces.list[id] = item;\n })\n );\n },\n updateStatus: (id, key, value) => {\n const ns = get().namespaces.list[id];\n if (!ns) {\n throw new Error(`No namespace with '${id}' found.`);\n }\n\n get().namespaces._produceEventsWhenUpdatingStatus(ns, id, key, value);\n\n // Updating state\n set(\n produce((state: State) => {\n state.namespaces.list[id].data[key] = value;\n })\n );\n },\n getNamespaceData(storeId) {\n return namespaceStateSelector(get(), storeId);\n },\n\n _produceEventsWhenUpdatingStatus: (namespace, id, key, value) => {\n if (key === 'accounts') {\n // check for both null and empty array\n const isAccountsEmpty =\n Object.is(value, null) || (Array.isArray(value) && value.length === 0);\n\n if (isAccountsEmpty) {\n const currentConnectedStatus = get().namespaces.list[id].data.connected;\n if (currentConnectedStatus) {\n const event: NamespaceDisconnectedEvent = {\n type: 'namespace_disconnected',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n };\n\n get().namespaces.events.push(event);\n }\n // Skip emitting disconnect event, if the `connected` is false\n } else {\n const currentAccounts = get().namespaces.list[id].data.accounts;\n\n if (!currentAccounts) {\n const event: NamespaceConnectedEvent = {\n type: 'namespace_connected',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n accounts: value as string[],\n };\n\n get().namespaces.events.push(event);\n } else {\n const areSameAccounts =\n currentAccounts.sort().toString() ===\n (value as string[]).sort().toString();\n\n if (!areSameAccounts) {\n const event: NamespaceSwitchedAccountEvent = {\n type: 'namespace_account_switched',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n previousAccounts: currentAccounts,\n accounts: value as string[],\n };\n\n get().namespaces.events.push(event);\n }\n }\n }\n } else if (key === 'network') {\n const currentNetwork = get().namespaces.list[id].data.network;\n\n const event: NamespaceSwitchedNetworkEvent = {\n type: 'namespace_network_switched',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n network: value as string,\n previousNetwork: currentNetwork,\n };\n\n get().namespaces.events.push(event);\n }\n },\n});\n\nexport { namespacesStore };\n", "import type { Namespace } from '../../namespaces/common/types.js';\nimport type { State as InternalProviderState } from '../provider/mod.js';\nimport type { StateCreator } from 'zustand';\n\nimport { produce } from 'immer';\n\nimport { ConsumableEvents, type ProviderDetectedEvent } from './events.js';\nimport { guessProviderStateSelector, type State } from './mod.js';\n\ntype Browsers = 'firefox' | 'chrome' | 'edge' | 'brave' | 'homepage';\ntype Property<N extends string, V> = { name: N; value: V };\ntype DetachedInstances = Property<'detached', Namespace[]>;\n\nexport type ProviderInfo = {\n name: string;\n icon: string;\n extensions: Partial<Record<Browsers, string>>;\n properties?: DetachedInstances[];\n};\n\nexport interface ProviderConfig {\n info: ProviderInfo;\n}\n\ninterface ProviderData {\n installed: boolean;\n}\n\ninterface ProviderItem {\n config: ProviderConfig;\n data: ProviderData;\n error: unknown;\n}\n\ntype ProviderState = {\n events: ConsumableEvents;\n list: Record<string, ProviderItem>;\n};\ninterface ProviderActions {\n addProvider: (id: string, config: ProviderConfig) => void;\n updateStatus: <K extends keyof ProviderData>(\n id: string,\n key: K,\n value: ProviderData[K]\n ) => void;\n\n _produceEventsWhenUpdatingStatus: <K extends keyof ProviderData>(\n provider: ProviderItem,\n id: string,\n key: K,\n value: ProviderData[K]\n ) => void;\n}\n\ninterface ProviderSelectors {\n /**\n * Provider has a limited state to itself, to be compatible with legacy, we try to produce same object as legacy\n * which includes namespace state as well.\n */\n guessNamespacesState: (id: string) => InternalProviderState;\n}\n\nexport type ProviderStore = ProviderState & ProviderActions & ProviderSelectors;\ntype ProvidersStateCreator = StateCreator<State, [], [], ProviderStore>;\n\nconst providersStore: ProvidersStateCreator = (set, get) => ({\n events: new ConsumableEvents(),\n\n list: {},\n addProvider: (id, config) => {\n const item = {\n data: {\n installed: false,\n },\n error: '',\n config,\n };\n\n set(\n produce((state: State) => {\n state.providers.list[id] = item;\n })\n );\n },\n updateStatus: (id, key, value) => {\n const provider = get().providers.list[id];\n if (!provider) {\n throw new Error(`No namespace namespace with '${id}' found.`);\n }\n\n get().providers._produceEventsWhenUpdatingStatus(provider, id, key, value);\n\n set(\n produce((state: State) => {\n state.providers.list[id].data[key] = value;\n })\n );\n },\n guessNamespacesState: (providerId: string): InternalProviderState => {\n return guessProviderStateSelector(get(), providerId);\n },\n\n _produceEventsWhenUpdatingStatus: (_provider, id, key, _value) => {\n if (key === 'installed') {\n const event: ProviderDetectedEvent = {\n type: 'provider_detected',\n provider: id,\n };\n\n get().providers.events.push(event);\n }\n },\n});\n\nexport { providersStore };\n", "import type { Actions, Context, Operators } from '../hub/namespaces/types.js';\nimport type { AnyFunction, FunctionWithContext } from '../types/actions.js';\n\nexport interface ActionByBuilder<T, Context> {\n actionName: keyof T;\n and: Operators<T>;\n or: Operators<T>;\n after: Operators<T>;\n before: Operators<T>;\n action: FunctionWithContext<T[keyof T], Context>;\n}\n\n/*\n * TODO:\n * Currently, to use this builder you will write something like this:\n * new ActionBuilder<EvmActions, 'disconnect'>('disconnect').after(....)\n *\n * I couldn't figure it out to be able typescript infer the constructor value as key of actions.\n * Ideal usage:\n * new ActionBuilder<EvmActions>('disconnect').after(....)\n *\n */\nexport class ActionBuilder<T extends Actions<T>, K extends keyof T> {\n readonly name: K;\n #and: Operators<T> = new Map();\n #or: Operators<T> = new Map();\n #after: Operators<T> = new Map();\n #before: Operators<T> = new Map();\n #action: FunctionWithContext<T[keyof T], Context<T>> | undefined;\n\n constructor(name: K) {\n this.name = name;\n }\n\n public and(action: FunctionWithContext<AnyFunction, Context<T>>) {\n if (!this.#and.has(this.name)) {\n this.#and.set(this.name, []);\n }\n this.#and.get(this.name)?.push(action);\n return this;\n }\n\n public or(action: FunctionWithContext<AnyFunction, Context<T>>) {\n if (!this.#or.has(this.name)) {\n this.#or.set(this.name, []);\n }\n this.#or.get(this.name)?.push(action);\n return this;\n }\n\n public before(action: FunctionWithContext<AnyFunction, Context<T>>) {\n if (!this.#before.has(this.name)) {\n this.#before.set(this.name, []);\n }\n this.#before.get(this.name)?.push(action);\n return this;\n }\n\n public after(action: FunctionWithContext<AnyFunction, Context<T>>) {\n if (!this.#after.has(this.name)) {\n this.#after.set(this.name, []);\n }\n this.#after.get(this.name)?.push(action);\n return this;\n }\n\n public action(action: FunctionWithContext<T[keyof T], Context<T>>) {\n this.#action = action;\n return this;\n }\n\n public build(): ActionByBuilder<T, Context<T>> {\n if (!this.#action) {\n throw new Error('Your action builder should includes an action.');\n }\n\n return {\n actionName: this.name,\n action: this.#action,\n before: this.#before,\n after: this.#after,\n and: this.#and,\n or: this.#or,\n };\n }\n}\n", "/*\n * It is not a good idea to re-export all of CAIP because if they have a breaking change, we will break as well.\n * It would be better to create an abstraction over them and export our own interface to ensure it is under our control.\n */\nexport * as CAIP from 'caip';\n\nexport { generateStoreId } from '../hub/helpers.js';\nexport * from './versions.js';\n", "import { AccountId } from 'caip';\n\nexport function isValidCaipAddress(address: string): boolean {\n try {\n AccountId.parse(address);\n return true;\n } catch {\n return false;\n }\n}\n", "import type {\n Accounts,\n AccountsWithActiveChain,\n} from './../../types/accounts.js';\nimport type { Context } from '../../hub/namespaces/mod.js';\n\nimport { isValidCaipAddress } from './helpers.js';\n\nexport function connectAndUpdateStateForSingleNetwork(\n context: Context,\n accounts: Accounts\n) {\n if (!accounts.every(isValidCaipAddress)) {\n throw new Error(\n `Your provider should format account addresses in CAIP-10 format. Your provided accounts: ${accounts}`\n );\n }\n\n const [, setState] = context.state();\n setState('accounts', accounts);\n setState('connected', true);\n return accounts;\n}\n\nexport function connectAndUpdateStateForMultiNetworks(\n context: Context,\n accounts: AccountsWithActiveChain\n) {\n if (!accounts.accounts.every(isValidCaipAddress)) {\n throw new Error(\n `Your provider should format account addresses in CAIP-10 format. Your provided accounts: ${accounts.accounts}`\n );\n }\n\n const [, setState] = context.state();\n setState('accounts', accounts.accounts);\n setState('network', accounts.network);\n setState('connected', true);\n return accounts;\n}\n\nexport const recommended = [];\n", "import type { Context } from '../../hub/namespaces/mod.js';\n\nexport function intoConnecting(context: Context) {\n const [, setState] = context.state();\n setState('connecting', true);\n}\n\n// Please consider if you are going to add something here, make sure it works on all namespaces.\nexport const recommended = [['connect', intoConnecting] as const];\n", "import { recommended as commonRecommended } from '../common/before.js';\n\nexport const recommended = [...commonRecommended];\n", "import type { SolanaActions } from './types.js';\n\nimport { ActionBuilder } from '../../mod.js';\nimport {\n connectAndUpdateStateForSingleNetwork,\n intoConnecting,\n intoConnectionFinished,\n} from '../common/mod.js';\n\nexport const connect = () =>\n new ActionBuilder<SolanaActions, 'connect'>('connect')\n .and(connectAndUpdateStateForSingleNetwork)\n .before(intoConnecting)\n .after(intoConnectionFinished);\n", "import type { Chain } from '../common/types.js';\n\nexport const solana: Chain = {\n name: 'SOLANA',\n logo: 'https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/SOLANA/icon.svg',\n};\n", "import type {\n Connect,\n Disconnect,\n ProviderConnectResult,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\n\nimport { chains as evmChains } from '@rango-dev/wallets-core/namespaces/evm';\nimport { chains as solanaChains } from '@rango-dev/wallets-core/namespaces/solana';\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 chains: [evmChains.ethereum],\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n chains: [solanaChains.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": "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",
|
|
6
|
-
"names": ["
|
|
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"]
|
|
7
7
|
}
|