@rango-dev/provider-xdefi 0.61.2-next.6 → 0.62.1-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # [0.62.0](https://github.com/rango-exchange/rango-client/compare/provider-xdefi@0.61.1...provider-xdefi@0.62.0) (2026-05-31)
2
+
3
+
4
+
1
5
  ## [0.61.1](https://github.com/rango-exchange/rango-client/compare/provider-xdefi@0.61.0...provider-xdefi@0.61.1) (2026-05-02)
2
6
 
3
7
 
@@ -1,5 +1,4 @@
1
1
  import { Networks } from '@rango-dev/wallets-shared';
2
2
  export declare const SUPPORTED_NETWORKS: string[];
3
3
  export declare const SUPPORTED_ETH_CHAINS: Networks[];
4
- export declare const SUPPORTED_COSMOS_CHAINS: Networks[];
5
4
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAET,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,kBAAkB,UAAuC,CAAC;AACvE,eAAO,MAAM,oBAAoB,YAOhC,CAAC;AACF,eAAO,MAAM,uBAAuB,YAWnC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAET,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,kBAAkB,UAAuC,CAAC;AACvE,eAAO,MAAM,oBAAoB,YAOhC,CAAC"}
package/dist/helpers.d.ts CHANGED
@@ -1,8 +1,14 @@
1
1
  import type { Network, ProviderConnectResult } from '@rango-dev/wallets-shared';
2
- type Provider = Map<Network, any>;
2
+ interface XfiInstance {
3
+ request: (payload: {
4
+ method: string;
5
+ params: unknown[];
6
+ }, callback: (error: unknown, result: unknown) => void) => void;
7
+ }
8
+ type Provider = Map<Network, XfiInstance>;
3
9
  export declare function xdefi(): Map<any, any> | null;
4
10
  export declare function getEthChainsInstance(netowrk: Network | null): Network | null;
5
11
  export declare function getNonEvmAccounts(instances: Provider): Promise<ProviderConnectResult[]>;
6
- export declare function xdefiTransfer(blockchain: string, ticker: string, from: string, amount: string, decimals: number, recipientAddress: string | null, provider: any, method: string, memo?: string): Promise<string>;
12
+ export declare function xdefiTransfer(blockchain: string, ticker: string, from: string, amount: string, decimals: number, recipientAddress: string | null, provider: XfiInstance, method: string, memo?: string): Promise<string>;
7
13
  export {};
8
14
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAOhF,KAAK,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAElC,wBAAgB,KAAK,yBAqCpB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAO5E;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,QAAQ,GAClB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAsClC;AAED,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,QAAQ,EAAE,GAAG,EACb,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAyBjB"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAOhF,UAAU,WAAW;IACnB,OAAO,EAAE,CACP,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,EAAE,CAAA;KAAE,EAC9C,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,KAChD,IAAI,CAAC;CACX;AAED,KAAK,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAE1C,wBAAgB,KAAK,yBAkCpB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAO5E;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,QAAQ,GAClB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CA0ClC;AAUD,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { LegacyNetworkProviderMap } from '@rango-dev/wallets-core/legacy';
1
2
  import type { CanEagerConnect, CanSwitchNetwork, Connect, Subscribe, SwitchNetwork, WalletInfo } from '@rango-dev/wallets-shared';
2
3
  import { Networks, WalletTypes } from '@rango-dev/wallets-shared';
3
4
  import { type BlockchainMeta, type SignerFactory } from 'rango-types';
@@ -11,7 +12,7 @@ export declare const connect: Connect;
11
12
  export declare const subscribe: Subscribe;
12
13
  export declare const switchNetwork: SwitchNetwork;
13
14
  export declare const canSwitchNetworkTo: CanSwitchNetwork;
14
- export declare const getSigners: (provider: any) => Promise<SignerFactory>;
15
+ export declare const getSigners: (provider: LegacyNetworkProviderMap) => Promise<SignerFactory>;
15
16
  export declare const canEagerConnect: CanEagerConnect;
16
17
  export declare const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo;
17
18
  export { SUPPORTED_ETH_CHAINS } from './constants.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,OAAO,EAEP,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAQL,QAAQ,EAER,WAAW,EAEZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAItE,OAAO,EAAqB,KAAK,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAM3E,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,WAAW,wBAAkB,CAAC;AAE3C,eAAO,MAAM,OAAO,EAAE,OAuCrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SA8BvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,aAAmC,CAAC;AAEhE,eAAO,MAAM,kBAAkB,EAAE,gBAAwC,CAAC;AAE1E,eAAO,MAAM,UAAU,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,aAAa,CAAU,CAAC;AAE5E,eAAO,MAAM,eAAe,EAAE,eAM7B,CAAC;AACF,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAgCjE,CAAC;AAGF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,OAAO,EAEP,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAOL,QAAQ,EAER,WAAW,EAEZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGtE,OAAO,EAAqB,KAAK,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAM3E,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,WAAW,wBAAkB,CAAC;AAE3C,eAAO,MAAM,OAAO,EAAE,OAYrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SA8BvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,aAAmC,CAAC;AAEhE,eAAO,MAAM,kBAAkB,EAAE,gBAAwC,CAAC;AAE1E,eAAO,MAAM,UAAU,EAAE,CACvB,QAAQ,EAAE,wBAAwB,KAC/B,OAAO,CAAC,aAAa,CAAU,CAAC;AAErC,eAAO,MAAM,eAAe,EAAE,eAM7B,CAAC;AACF,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAuBjE,CAAC;AAGF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var b=Object.defineProperty;var s=(r,e)=>b(r,"name",{value:e,configurable:!0});import{canEagerlyConnectToEvm as z,canSwitchNetworkToEvm as Z,chooseInstance as h,getBlockChainNameFromId as $,getCosmosAccounts as Q,getEvmAccounts as ee,getSolanaAccounts as re,Networks as f,switchNetworkForEvm as te,WalletTypes as ne,XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS as oe}from"@rango-dev/wallets-shared";import"rango-types";import{cosmosBlockchains as se,isCosmosBlockchain as ie}from"rango-types";import{Networks as i,XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS as H}from"@rango-dev/wallets-shared";var A=H,w=[i.POLYGON,i.ETHEREUM,i.BSC,i.AVAX_CCHAIN,i.FANTOM,i.ARBITRUM],y=[i.COSMOS,i.AKASH,i.AXELAR,i.CRYPTO_ORG,i.JUNO,i.KUJIRA,i.MARS,i.OSMOSIS,i.STARGAZE,i.STRIDE];import{Networks as g}from"@rango-dev/wallets-shared";import{SignerError as U,SignerErrorCode as D}from"rango-types";function R(){let{xfi:r}=window;if(!r)return null;let e=new Map;return r.bitcoin&&e.set(g.BTC,r.bitcoin),r.litecoin&&e.set(g.LTC,r.litecoin),r.thorchain&&e.set(g.THORCHAIN,r.thorchain),r.bitcoincash&&e.set(g.BCH,r.bitcoincash),r.ethereum&&e.set(g.ETHEREUM,r.ethereum),r.dogecoin&&e.set(g.DOGE,r.dogecoin),r.solana&&e.set(g.SOLANA,r.solana),r.mayachain&&e.set(g.MAYA,r.mayachain),r.keplr&&e.set(g.COSMOS,r.keplr),e}s(R,"xdefi");async function k(r){let n=A.filter(o=>o!==g.ETHEREUM).filter(o=>r.get(o)!==void 0).map(async o=>new Promise((a,c)=>{r.get(o).request({method:"request_accounts",params:[]},(l,p)=>{if(l)return c(l),l;a({accounts:p,chainId:o})})}));return await Promise.all(n)}s(k,"getNonEvmAccounts");async function v(r,e,n,t,o,a,c,m,l){return new Promise(function(p,u){let d={asset:{chain:r,symbol:e,ticker:e},from:n,amount:{amount:t,decimals:o},memo:l};a&&(d.recipient=a),c.request({method:m,params:[d]},(E,M)=>{E?u(new U(D.SEND_TX_ERROR,void 0,E)):p(M)})})}s(v,"xdefiTransfer");import{dynamicImportWithRefinedError as J,getNetworkInstance as x,Networks as _}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as j,TransactionType as N}from"rango-types";import{dynamicImportWithRefinedError as L,getNetworkInstance as B,Networks as F}from"@rango-dev/wallets-shared";import{SignerError as W,SignerErrorCode as G}from"rango-types";var S=class{static{s(this,"CustomCosmosSigner")}provider;constructor(e){this.provider=e}async signMessage(e,n,t){try{if(!t)throw Error("ChainId is required");let{signature:o}=await this.provider.signArbitrary(t,n,e);return o}catch(o){throw new W(G.SIGN_TX_ERROR,void 0,o)}}async signAndSendTx(e){let{executeCosmosTransaction:n}=await L(async()=>await import("@rango-dev/signer-cosmos"));if(e.rawTransfer===null){let t=B(this.provider,F.COSMOS);return{hash:await n(e,t)}}throw Error("raw transfer is not null for cosmos transactions")}};import{DefaultSolanaSigner as X}from"@rango-dev/signer-solana";import q from"bs58";var T=class extends X{static{s(this,"CustomSolanaSigner")}constructor(e){super(e)}async signMessage(e){let n=new TextEncoder().encode(e),{signature:t}=await this.provider.signMessage(n);return q.encode(t)}};import{getNetworkInstance as O,Networks as V,XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS as K}from"@rango-dev/wallets-shared";import{SignerError as I,SignerErrorCode as Y}from"rango-types";var P=class{static{s(this,"CustomTransferSigner")}provider;constructor(e){this.provider=e}async signMessage(){throw I.UnimplementedError("signMessage")}async signAndSendTx(e){let{blockchain:n}=e.asset;if(!K.includes(n))throw new Error(`blockchain: ${n} transfer not implemented yet.`);return n===V.BTC?await this.#e(e):await this.#r(e)}async#e(e){let{asset:n,psbt:t}=e;if(!t)throw new Error("No PSBT found to sign. Ensure a valid PSBT is provided.");let o=O(this.provider,n.blockchain),a={};t.inputsToSign.forEach(m=>{a[m.address]=m.signingIndexes});let c=await o.request({method:"sign_psbt",params:{psbt:t.unsignedPsbtBase64,signInputs:a,allowedSignHash:1,broadcast:!0}}).catch(m=>{throw new I(Y.SEND_TX_ERROR,void 0,m)});if(c.status==="success")return{hash:c.result.txId};throw new Error("The operation (sign and broadcast) failed on your wallet.",{cause:c})}async#r(e){let{blockchain:n}=e.asset,t=O(this.provider,n),{method:o,memo:a,recipientAddress:c,decimals:m,amount:l,fromWalletAddress:p,asset:u}=e;return{hash:await v(n,u.ticker,p,l,m,c,t,o,a??void 0)}}};async function C(r){let e=x(r,_.ETHEREUM),n=x(r,_.SOLANA),t=new j,{DefaultEvmSigner:o}=await J(async()=>await import("@rango-dev/signer-evm"));return t.registerSigner(N.EVM,new o(e)),t.registerSigner(N.SOLANA,new T(n)),t.registerSigner(N.COSMOS,new S(r)),t.registerSigner(N.TRANSFER,new P(r)),t}s(C,"getSigners");var ae=f.ETHEREUM,ce=ne.XDEFI,Xe={type:ce,defaultNetwork:ae},qe=R,Ve=s(async({instance:r,meta:e})=>{let n=h(r,e,f.ETHEREUM),t=h(r,e,f.SOLANA),o=h(r,e,f.COSMOS),a=await ee(n),c=await k(r),m=await re({instance:t,meta:e}),l=[];if(o){let p=e.filter(E=>ie(E)&&y.includes(E.name)),u=f.COSMOS,d=await Q({instance:o,meta:p,network:u});Array.isArray(d)?l.push(...d):l.push(d)}return[a,...c,m,...l]},"connect"),Ke=s(({instance:r,meta:e,updateChainId:n,connect:t})=>{let o=s(c=>{let m=$(c,e)||f.Unknown;n(c),t(m)},"handleChainChanged"),a=h(r,e,f.ETHEREUM);return a?.on?.("chainChanged",o),()=>{a?.off?.("chainChanged",o)}},"subscribe"),Ye=te,Je=Z,je=C,ze=s(async({instance:r,meta:e})=>{let n=h(r,e,f.ETHEREUM);return n?z({instance:n,meta:e}):Promise.resolve(!1)},"canEagerConnect"),Ze=s(r=>{let e=se(r).filter(t=>!!t.info&&y.includes(t.name)),n=[...r.filter(t=>[...w,...oe,f.SOLANA].includes(t.name)),...e];return{name:"Ctrl",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/xdefi/icon.svg",installLink:{CHROME:"https://chromewebstore.google.com/detail/ctrl-wallet/hmeobnfnfcmdkdcmlblgagmfpfboieaf",BRAVE:"https://chromewebstore.google.com/detail/ctrl-wallet/hmeobnfnfcmdkdcmlblgagmfpfboieaf",DEFAULT:"https://ctrl.xyz/"},color:"#0646c7",supportedChains:n}},"getWalletInfo");export{w as SUPPORTED_ETH_CHAINS,ze as canEagerConnect,Je as canSwitchNetworkTo,Xe as config,Ve as connect,qe as getInstance,je as getSigners,Ze as getWalletInfo,Ke as subscribe,Ye as switchNetwork};
1
+ var _=Object.defineProperty;var s=(r,e)=>_(r,"name",{value:e,configurable:!0});import{canEagerlyConnectToEvm as V,canSwitchNetworkToEvm as q,chooseInstance as h,getBlockChainNameFromId as G,getEvmAccounts as K,getSolanaAccounts as Y,Networks as l,switchNetworkForEvm as $,WalletTypes as z,XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS as j}from"@rango-dev/wallets-shared";import"rango-types";import{Networks as f,XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS as M}from"@rango-dev/wallets-shared";var y=M,u=[f.POLYGON,f.ETHEREUM,f.BSC,f.AVAX_CCHAIN,f.FANTOM,f.ARBITRUM];import{Networks as m}from"@rango-dev/wallets-shared";import{SignerError as H,SignerErrorCode as O}from"rango-types";function k(){let{xfi:r}=window;if(!r)return null;let e=new Map;return r.bitcoin&&e.set(m.BTC,r.bitcoin),r.litecoin&&e.set(m.LTC,r.litecoin),r.thorchain&&e.set(m.THORCHAIN,r.thorchain),r.bitcoincash&&e.set(m.BCH,r.bitcoincash),r.ethereum&&e.set(m.ETHEREUM,r.ethereum),r.dogecoin&&e.set(m.DOGE,r.dogecoin),r.solana&&e.set(m.SOLANA,r.solana),r.mayachain&&e.set(m.MAYA,r.mayachain),e}s(k,"xdefi");async function v(r){let t=y.filter(n=>n!==m.ETHEREUM).filter(n=>r.get(n)!==void 0).map(async n=>new Promise((a,i)=>{let c=r.get(n);if(!c){i(new Error(`No XDeFi instance for network ${n}`));return}c.request({method:"request_accounts",params:[]},(g,d)=>{if(g){i(g);return}a({accounts:d,chainId:n})})}));return await Promise.all(t)}s(v,"getNonEvmAccounts");async function A(r,e,t,o,n,a,i,c,g){return new Promise(function(d,p){let T={asset:{chain:r,symbol:e,ticker:e},from:t,amount:{amount:o,decimals:n},memo:g};a&&(T.recipient=a),i.request({method:c,params:[T]},(P,I)=>{P?p(new H(O.SEND_TX_ERROR,void 0,P)):d(I)})})}s(A,"xdefiTransfer");import{dynamicImportWithRefinedError as W,getNetworkInstance as b,Networks as x}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as X,TransactionType as N}from"rango-types";import{DefaultSolanaSigner as U}from"@rango-dev/signer-solana";import D from"bs58";var E=class extends U{static{s(this,"CustomSolanaSigner")}constructor(e){super(e)}async signMessage(e){let t=new TextEncoder().encode(e),{signature:o}=await this.provider.signMessage(t);return D.encode(o)}};import{getNetworkInstance as C,Networks as L,XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS as F}from"@rango-dev/wallets-shared";import{SignerError as R,SignerErrorCode as B}from"rango-types";var w=class{static{s(this,"CustomTransferSigner")}provider;constructor(e){this.provider=e}async signMessage(){throw R.UnimplementedError("signMessage")}async signAndSendTx(e){let{blockchain:t}=e.asset;if(!F.includes(t))throw new Error(`blockchain: ${t} transfer not implemented yet.`);return t===L.BTC?await this.#e(e):await this.#r(e)}async#e(e){let{asset:t,psbt:o}=e;if(!o)throw new Error("No PSBT found to sign. Ensure a valid PSBT is provided.");let n=C(this.provider,t.blockchain),a={};o.inputsToSign.forEach(c=>{a[c.address]=c.signingIndexes});let i=await n.request({method:"sign_psbt",params:{psbt:o.unsignedPsbtBase64,signInputs:a,allowedSignHash:1,broadcast:!0}}).catch(c=>{throw new R(B.SEND_TX_ERROR,void 0,c)});if(i.status==="success")return{hash:i.result.txId};throw new Error("The operation (sign and broadcast) failed on your wallet.",{cause:i})}async#r(e){let{blockchain:t}=e.asset,o=C(this.provider,t),{method:n,memo:a,recipientAddress:i,decimals:c,amount:g,fromWalletAddress:d,asset:p}=e;return{hash:await A(t,p.ticker,d,g,c,i,o,n,a??void 0)}}};async function S(r){let e=b(r,x.ETHEREUM),t=b(r,x.SOLANA),o=new X,{DefaultEvmSigner:n}=await W(async()=>await import("@rango-dev/signer-evm"));return o.registerSigner(N.EVM,new n(e)),o.registerSigner(N.SOLANA,new E(t)),o.registerSigner(N.TRANSFER,new w(r)),o}s(S,"getSigners");var J=l.ETHEREUM,Q=z.XDEFI,Ce={type:Q,defaultNetwork:J},Re=k,be=s(async({instance:r,meta:e})=>{let t=h(r,e,l.ETHEREUM),o=h(r,e,l.SOLANA),n=await K(t),a=await v(r),i=await Y({instance:o,meta:e});return[n,...a,i]},"connect"),xe=s(({instance:r,meta:e,updateChainId:t,connect:o})=>{let n=s(i=>{let c=G(i,e)||l.Unknown;t(i),o(c)},"handleChainChanged"),a=h(r,e,l.ETHEREUM);return a?.on?.("chainChanged",n),()=>{a?.off?.("chainChanged",n)}},"subscribe"),Ie=$,_e=q,Me=S,He=s(async({instance:r,meta:e})=>{let t=h(r,e,l.ETHEREUM);return t?V({instance:t,meta:e}):Promise.resolve(!1)},"canEagerConnect"),Oe=s(r=>{let e=r.filter(t=>[...u,...j,l.SOLANA].includes(t.name));return{name:"Ctrl",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/xdefi/icon.svg",installLink:{CHROME:"https://chromewebstore.google.com/detail/ctrl-wallet/hmeobnfnfcmdkdcmlblgagmfpfboieaf",BRAVE:"https://chromewebstore.google.com/detail/ctrl-wallet/hmeobnfnfcmdkdcmlblgagmfpfboieaf",DEFAULT:"https://ctrl.xyz/"},color:"#0646c7",supportedChains:e}},"getWalletInfo");export{u as SUPPORTED_ETH_CHAINS,He as canEagerConnect,_e as canSwitchNetworkTo,Ce as config,be as connect,Re as getInstance,Me as getSigners,Oe as getWalletInfo,xe as subscribe,Ie as switchNetwork};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts", "../src/constants.ts", "../src/helpers.ts", "../src/signer.ts", "../src/cosmos-signer.ts", "../src/solana-signer.ts", "../src/utxo-signer.ts"],
4
- "sourcesContent": ["import type {\n CanEagerConnect,\n CanSwitchNetwork,\n Connect,\n ProviderConnectResult,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\n\nimport {\n canEagerlyConnectToEvm,\n canSwitchNetworkToEvm,\n chooseInstance,\n getBlockChainNameFromId,\n getCosmosAccounts,\n getEvmAccounts,\n getSolanaAccounts,\n Networks,\n switchNetworkForEvm,\n WalletTypes,\n XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS,\n} from '@rango-dev/wallets-shared';\nimport { type BlockchainMeta, type SignerFactory } from 'rango-types';\nimport { cosmosBlockchains, isCosmosBlockchain } from 'rango-types';\n\nimport { SUPPORTED_COSMOS_CHAINS, SUPPORTED_ETH_CHAINS } from './constants.js';\nimport { getNonEvmAccounts, xdefi as xdefi_instances } from './helpers.js';\nimport signer from './signer.js';\n\nconst DEFAULT_NETWORK = Networks.ETHEREUM;\nconst WALLET = WalletTypes.XDEFI;\n\nexport const config = {\n type: WALLET,\n defaultNetwork: DEFAULT_NETWORK,\n};\n\nexport const getInstance = xdefi_instances;\n\nexport const connect: Connect = async ({ instance, meta }) => {\n const ethInstance = chooseInstance(instance, meta, Networks.ETHEREUM);\n const solInstance = chooseInstance(instance, meta, Networks.SOLANA);\n const cosmosInstance = chooseInstance(instance, meta, Networks.COSMOS);\n\n const evmResult = await getEvmAccounts(ethInstance);\n const nonEvmResults = await getNonEvmAccounts(instance);\n const solanaAccounts = await getSolanaAccounts({\n instance: solInstance,\n meta,\n });\n\n const cosmosAccounts: ProviderConnectResult[] = [];\n if (cosmosInstance) {\n const cosmosBlockchainMeta = meta.filter(\n (blockchainMeta: BlockchainMeta) =>\n isCosmosBlockchain(blockchainMeta) &&\n SUPPORTED_COSMOS_CHAINS.includes(blockchainMeta.name as Networks)\n );\n const requestedNetwork = Networks.COSMOS;\n\n const cosmosResult = await getCosmosAccounts({\n instance: cosmosInstance,\n meta: cosmosBlockchainMeta,\n network: requestedNetwork,\n });\n if (Array.isArray(cosmosResult)) {\n cosmosAccounts.push(...cosmosResult);\n } else {\n cosmosAccounts.push(cosmosResult);\n }\n }\n\n return [\n evmResult,\n ...nonEvmResults,\n solanaAccounts as ProviderConnectResult,\n ...cosmosAccounts,\n ];\n};\n\nexport const subscribe: Subscribe = ({\n instance,\n meta,\n updateChainId,\n connect,\n}) => {\n const handleChainChanged = (chainId: string) => {\n const network = getBlockChainNameFromId(chainId, meta) || Networks.Unknown;\n /*\n *TODO:\n *We are calling `connect` here because signer can't detect\n *currect network, I guess the bug is in our signer and it\n *gets the wrong network by calling a wrong method or something.\n *Anyways, this works for now, maybe we can reconsider it in future\n *Whenever we refactored the signer code as well.\n */\n\n /*\n * we need to update `network` first, if not, it will goes through\n * the switching network and will open unneccessary pop ups.\n */\n updateChainId(chainId);\n connect(network);\n };\n const eth = chooseInstance(instance, meta, Networks.ETHEREUM);\n eth?.on?.('chainChanged', handleChainChanged);\n\n return () => {\n eth?.off?.('chainChanged', handleChainChanged);\n };\n};\n\nexport const switchNetwork: SwitchNetwork = switchNetworkForEvm;\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const getSigners: (provider: any) => Promise<SignerFactory> = signer;\n\nexport const canEagerConnect: CanEagerConnect = async ({ instance, meta }) => {\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n if (evm_instance) {\n return canEagerlyConnectToEvm({ instance: evm_instance, meta });\n }\n return Promise.resolve(false);\n};\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const supportedCosmosChains = cosmosBlockchains(allBlockChains).filter(\n (blockchainMeta: BlockchainMeta) =>\n !!blockchainMeta.info &&\n SUPPORTED_COSMOS_CHAINS.includes(blockchainMeta.name as Networks)\n );\n\n const supportedChains = [\n ...allBlockChains.filter((blockchainMeta) =>\n [\n ...SUPPORTED_ETH_CHAINS,\n ...XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS,\n Networks.SOLANA,\n ].includes(blockchainMeta.name as Networks)\n ),\n ...supportedCosmosChains,\n ];\n return {\n name: 'Ctrl',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/xdefi/icon.svg',\n installLink: {\n CHROME:\n 'https://chromewebstore.google.com/detail/ctrl-wallet/hmeobnfnfcmdkdcmlblgagmfpfboieaf',\n BRAVE:\n 'https://chromewebstore.google.com/detail/ctrl-wallet/hmeobnfnfcmdkdcmlblgagmfpfboieaf',\n DEFAULT: 'https://ctrl.xyz/',\n },\n color: '#0646c7',\n supportedChains,\n };\n};\n\n// it is required in /examples/queue-manager-demo\nexport { SUPPORTED_ETH_CHAINS } from './constants.js';\n", "import {\n Networks,\n XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS,\n} from '@rango-dev/wallets-shared';\n\nexport const SUPPORTED_NETWORKS = XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS;\nexport const SUPPORTED_ETH_CHAINS = [\n Networks.POLYGON,\n Networks.ETHEREUM,\n Networks.BSC,\n Networks.AVAX_CCHAIN,\n Networks.FANTOM,\n Networks.ARBITRUM,\n];\nexport const SUPPORTED_COSMOS_CHAINS = [\n Networks.COSMOS,\n Networks.AKASH,\n Networks.AXELAR,\n Networks.CRYPTO_ORG,\n Networks.JUNO,\n Networks.KUJIRA,\n Networks.MARS,\n Networks.OSMOSIS,\n Networks.STARGAZE,\n Networks.STRIDE,\n];\n", "import type { Network, ProviderConnectResult } from '@rango-dev/wallets-shared';\n\nimport { Networks } from '@rango-dev/wallets-shared';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\nimport { SUPPORTED_ETH_CHAINS, SUPPORTED_NETWORKS } from './constants.js';\n\ntype Provider = Map<Network, any>;\n\nexport function xdefi() {\n const { xfi } = window;\n\n if (!xfi) {\n return null;\n }\n\n const instances = new Map();\n if (xfi.bitcoin) {\n instances.set(Networks.BTC, xfi.bitcoin);\n }\n if (xfi.litecoin) {\n instances.set(Networks.LTC, xfi.litecoin);\n }\n if (xfi.thorchain) {\n instances.set(Networks.THORCHAIN, xfi.thorchain);\n }\n if (xfi.bitcoincash) {\n instances.set(Networks.BCH, xfi.bitcoincash);\n }\n if (xfi.ethereum) {\n instances.set(Networks.ETHEREUM, xfi.ethereum);\n }\n if (xfi.dogecoin) {\n instances.set(Networks.DOGE, xfi.dogecoin);\n }\n if (xfi.solana) {\n instances.set(Networks.SOLANA, xfi.solana);\n }\n if (xfi.mayachain) {\n instances.set(Networks.MAYA, xfi.mayachain);\n }\n if (xfi.keplr) {\n instances.set(Networks.COSMOS, xfi.keplr);\n }\n\n return instances;\n}\n\nexport function getEthChainsInstance(netowrk: Network | null): Network | null {\n if (!netowrk) {\n return null;\n }\n return SUPPORTED_ETH_CHAINS.includes(netowrk as Networks)\n ? Networks.ETHEREUM\n : null;\n}\n\nexport async function getNonEvmAccounts(\n instances: Provider\n): Promise<ProviderConnectResult[]> {\n const nonEvmNetworks = SUPPORTED_NETWORKS.filter(\n (net: Network) => net !== Networks.ETHEREUM\n );\n const promises: Promise<ProviderConnectResult>[] = nonEvmNetworks\n .filter(\n (network: Network) =>\n // Ensure the instance is defined\n instances.get(network) !== undefined\n )\n .map(async (network: Network) => {\n return new Promise((resolve, reject) => {\n const instance = instances.get(network);\n instance.request(\n {\n method: 'request_accounts',\n params: [],\n },\n (error: any, accounts: any) => {\n if (error) {\n reject(error);\n return error;\n }\n\n const result = {\n accounts,\n chainId: network,\n };\n\n resolve(result);\n }\n );\n });\n });\n\n const results = await Promise.all(promises);\n\n return results;\n}\n\nexport async function xdefiTransfer(\n blockchain: string,\n ticker: string,\n from: string,\n amount: string,\n decimals: number,\n recipientAddress: string | null,\n provider: any,\n method: string,\n memo?: string\n): Promise<string> {\n return new Promise(function (resolve, reject) {\n const params = {\n asset: { chain: blockchain, symbol: ticker, ticker: ticker },\n from: from,\n amount: { amount: amount, decimals: decimals },\n memo: memo,\n } as any;\n if (recipientAddress) {\n params.recipient = recipientAddress;\n }\n\n provider.request(\n { method: method, params: [params] },\n (error: any, result: any) => {\n if (error) {\n reject(\n new SignerError(SignerErrorCode.SEND_TX_ERROR, undefined, error)\n );\n } else {\n resolve(result);\n }\n }\n );\n });\n}\n", "import type { LegacyNetworkProviderMap } from '@rango-dev/wallets-core/legacy';\nimport type { SignerFactory } from 'rango-types';\n\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n Networks,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { CustomCosmosSigner } from './cosmos-signer.js';\nimport { CustomSolanaSigner } from './solana-signer.js';\nimport { CustomTransferSigner } from './utxo-signer.js';\n\nexport default async function getSigners(\n provider: LegacyNetworkProviderMap\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const solProvider = getNetworkInstance(provider, Networks.SOLANA);\n\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-evm')\n );\n\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n signers.registerSigner(TxType.SOLANA, new CustomSolanaSigner(solProvider));\n // passed provider for transfer as it comprises several signers\n signers.registerSigner(TxType.COSMOS, new CustomCosmosSigner(provider));\n // passed provider for transfer as it comprises several signers\n signers.registerSigner(TxType.TRANSFER, new CustomTransferSigner(provider));\n return signers;\n}\n", "import type { ProviderAPI } from '@rango-dev/wallets-core/namespaces/cosmos';\nimport type { CosmosTransaction, GenericSigner } from 'rango-types';\n\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n Networks,\n} from '@rango-dev/wallets-shared';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\ntype CosmosExternalProvider = ProviderAPI;\n\nexport class CustomCosmosSigner implements GenericSigner<CosmosTransaction> {\n private provider: CosmosExternalProvider;\n constructor(provider: CosmosExternalProvider) {\n this.provider = provider;\n }\n\n async signMessage(\n msg: string,\n address: string,\n chainId: string | null\n ): Promise<string> {\n try {\n if (!chainId) {\n throw Error('ChainId is required');\n }\n const { signature } = await this.provider.signArbitrary(\n chainId,\n address,\n msg\n );\n return signature;\n } catch (error) {\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);\n }\n }\n async signAndSendTx(tx: CosmosTransaction): Promise<{ hash: string }> {\n const { executeCosmosTransaction } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-cosmos')\n );\n\n if (tx.rawTransfer === null) {\n const cosmosProvider = getNetworkInstance(this.provider, Networks.COSMOS);\n const hash = await executeCosmosTransaction(tx, cosmosProvider);\n return { hash };\n }\n throw Error('raw transfer is not null for cosmos transactions');\n }\n}\n", "import { DefaultSolanaSigner } from '@rango-dev/signer-solana';\nimport base58 from 'bs58';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype SolanaExternalProvider = any;\n\nexport class CustomSolanaSigner extends DefaultSolanaSigner {\n constructor(provider: SolanaExternalProvider) {\n super(provider);\n }\n\n async signMessage(msg: string): Promise<string> {\n const encodedMessage = new TextEncoder().encode(msg);\n const { signature } = await this.provider.signMessage(encodedMessage);\n return base58.encode(signature);\n }\n}\n", "import type { GenericSigner, Transfer } from 'rango-types';\n\nimport {\n getNetworkInstance,\n Networks,\n XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS,\n} from '@rango-dev/wallets-shared';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\nimport { xdefiTransfer } from './helpers.js';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype TransferExternalProvider = any;\n\nexport class CustomTransferSigner implements GenericSigner<Transfer> {\n private provider: TransferExternalProvider;\n constructor(provider: TransferExternalProvider) {\n this.provider = provider;\n }\n\n async signMessage(): Promise<string> {\n throw SignerError.UnimplementedError('signMessage');\n }\n\n async signAndSendTx(tx: Transfer): Promise<{ hash: string }> {\n const { blockchain } = tx.asset;\n\n // Everything except ETH\n if (\n !XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS.includes(blockchain as Networks)\n ) {\n throw new Error(\n `blockchain: ${blockchain} transfer not implemented yet.`\n );\n }\n\n if (blockchain === Networks.BTC) {\n return await this.#signPsbt(tx);\n }\n\n return await this.#signTransferObject(tx);\n }\n\n // Interface for PSBT: https://developers.ctrl.xyz/developers/extension-bitcoin#sign-psbt-partially-signed-bitcoin-transaction\n async #signPsbt(tx: Transfer): Promise<{ hash: string }> {\n const { asset, psbt } = tx;\n\n if (!psbt) {\n throw new Error(\n 'No PSBT found to sign. Ensure a valid PSBT is provided.'\n );\n }\n\n const provider = getNetworkInstance(this.provider, asset.blockchain);\n\n const signInputs: { [key: string]: number[] } = {};\n psbt.inputsToSign.forEach((input) => {\n signInputs[input.address] = input.signingIndexes;\n });\n\n const response = await provider\n .request({\n method: 'sign_psbt',\n params: {\n psbt: psbt.unsignedPsbtBase64,\n signInputs,\n allowedSignHash: 1,\n broadcast: true,\n },\n })\n .catch((error: unknown) => {\n throw new SignerError(SignerErrorCode.SEND_TX_ERROR, undefined, error);\n });\n\n /*\n * `status` is useful for callback style (e.g. `(err, res) => void`) form of `xfi.request`.\n * here we are using the promise interface, so it should be always `success` when reach here.\n *\n * just for ensuring unexpected behaviors will be handled, we can keep this.\n *\n * @see https://docs.xverse.app/sats-connect/wallet-methods/request-methods#response-format-and-error-handling\n */\n if (response.status === 'success') {\n return { hash: response.result.txId };\n }\n\n throw new Error(\n 'The operation (sign and broadcast) failed on your wallet.',\n { cause: response }\n );\n }\n\n async #signTransferObject(tx: Transfer): Promise<{ hash: string }> {\n const { blockchain } = tx.asset;\n\n const transferProvider = getNetworkInstance(this.provider, blockchain);\n\n const {\n method,\n memo,\n recipientAddress,\n decimals,\n amount,\n fromWalletAddress: from,\n asset,\n } = tx;\n\n const hash = await xdefiTransfer(\n blockchain,\n asset.ticker,\n from,\n amount,\n decimals,\n recipientAddress,\n transferProvider,\n method,\n memo ?? undefined\n );\n return { hash };\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "chooseInstance", "getBlockChainNameFromId", "getCosmosAccounts", "getEvmAccounts", "getSolanaAccounts", "Networks", "switchNetworkForEvm", "WalletTypes", "XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS", "cosmosBlockchains", "isCosmosBlockchain", "Networks", "XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS", "SUPPORTED_NETWORKS", "SUPPORTED_ETH_CHAINS", "SUPPORTED_COSMOS_CHAINS", "Networks", "SignerError", "SignerErrorCode", "xdefi", "xfi", "instances", "Networks", "__name", "getNonEvmAccounts", "instances", "promises", "SUPPORTED_NETWORKS", "net", "Networks", "network", "resolve", "reject", "error", "accounts", "__name", "xdefiTransfer", "blockchain", "ticker", "from", "amount", "decimals", "recipientAddress", "provider", "method", "memo", "params", "result", "SignerError", "SignerErrorCode", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "SignerError", "SignerErrorCode", "CustomCosmosSigner", "__name", "provider", "msg", "address", "chainId", "signature", "error", "SignerError", "SignerErrorCode", "tx", "executeCosmosTransaction", "dynamicImportWithRefinedError", "cosmosProvider", "getNetworkInstance", "Networks", "DefaultSolanaSigner", "base58", "CustomSolanaSigner", "DefaultSolanaSigner", "__name", "provider", "msg", "encodedMessage", "signature", "base58", "getNetworkInstance", "Networks", "XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS", "SignerError", "SignerErrorCode", "CustomTransferSigner", "__name", "provider", "SignerError", "tx", "blockchain", "XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS", "Networks", "#signPsbt", "#signTransferObject", "asset", "psbt", "getNetworkInstance", "signInputs", "input", "response", "error", "SignerErrorCode", "transferProvider", "method", "memo", "recipientAddress", "decimals", "amount", "from", "xdefiTransfer", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "solProvider", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "CustomSolanaSigner", "CustomCosmosSigner", "CustomTransferSigner", "__name", "DEFAULT_NETWORK", "Networks", "WALLET", "WalletTypes", "config", "getInstance", "xdefi", "connect", "__name", "instance", "meta", "ethInstance", "chooseInstance", "solInstance", "cosmosInstance", "evmResult", "getEvmAccounts", "nonEvmResults", "getNonEvmAccounts", "solanaAccounts", "getSolanaAccounts", "cosmosAccounts", "cosmosBlockchainMeta", "blockchainMeta", "isCosmosBlockchain", "SUPPORTED_COSMOS_CHAINS", "requestedNetwork", "cosmosResult", "getCosmosAccounts", "subscribe", "updateChainId", "handleChainChanged", "chainId", "network", "getBlockChainNameFromId", "eth", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "canEagerConnect", "evm_instance", "canEagerlyConnectToEvm", "getWalletInfo", "allBlockChains", "supportedCosmosChains", "cosmosBlockchains", "supportedChains", "SUPPORTED_ETH_CHAINS", "XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS"]
3
+ "sources": ["../src/index.ts", "../src/constants.ts", "../src/helpers.ts", "../src/signer.ts", "../src/solana-signer.ts", "../src/utxo-signer.ts"],
4
+ "sourcesContent": ["import type { LegacyNetworkProviderMap } from '@rango-dev/wallets-core/legacy';\nimport type {\n CanEagerConnect,\n CanSwitchNetwork,\n Connect,\n ProviderConnectResult,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\n\nimport {\n canEagerlyConnectToEvm,\n canSwitchNetworkToEvm,\n chooseInstance,\n getBlockChainNameFromId,\n getEvmAccounts,\n getSolanaAccounts,\n Networks,\n switchNetworkForEvm,\n WalletTypes,\n XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS,\n} from '@rango-dev/wallets-shared';\nimport { type BlockchainMeta, type SignerFactory } from 'rango-types';\n\nimport { SUPPORTED_ETH_CHAINS } from './constants.js';\nimport { getNonEvmAccounts, xdefi as xdefi_instances } from './helpers.js';\nimport signer from './signer.js';\n\nconst DEFAULT_NETWORK = Networks.ETHEREUM;\nconst WALLET = WalletTypes.XDEFI;\n\nexport const config = {\n type: WALLET,\n defaultNetwork: DEFAULT_NETWORK,\n};\n\nexport const getInstance = xdefi_instances;\n\nexport const connect: Connect = async ({ instance, meta }) => {\n const ethInstance = chooseInstance(instance, meta, Networks.ETHEREUM);\n const solInstance = chooseInstance(instance, meta, Networks.SOLANA);\n\n const evmResult = await getEvmAccounts(ethInstance);\n const nonEvmResults = await getNonEvmAccounts(instance);\n const solanaAccounts = await getSolanaAccounts({\n instance: solInstance,\n meta,\n });\n\n return [evmResult, ...nonEvmResults, solanaAccounts as ProviderConnectResult];\n};\n\nexport const subscribe: Subscribe = ({\n instance,\n meta,\n updateChainId,\n connect,\n}) => {\n const handleChainChanged = (chainId: string) => {\n const network = getBlockChainNameFromId(chainId, meta) || Networks.Unknown;\n /*\n *TODO:\n *We are calling `connect` here because signer can't detect\n *currect network, I guess the bug is in our signer and it\n *gets the wrong network by calling a wrong method or something.\n *Anyways, this works for now, maybe we can reconsider it in future\n *Whenever we refactored the signer code as well.\n */\n\n /*\n * we need to update `network` first, if not, it will goes through\n * the switching network and will open unneccessary pop ups.\n */\n updateChainId(chainId);\n connect(network);\n };\n const eth = chooseInstance(instance, meta, Networks.ETHEREUM);\n eth?.on?.('chainChanged', handleChainChanged);\n\n return () => {\n eth?.off?.('chainChanged', handleChainChanged);\n };\n};\n\nexport const switchNetwork: SwitchNetwork = switchNetworkForEvm;\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const getSigners: (\n provider: LegacyNetworkProviderMap\n) => Promise<SignerFactory> = signer;\n\nexport const canEagerConnect: CanEagerConnect = async ({ instance, meta }) => {\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n if (evm_instance) {\n return canEagerlyConnectToEvm({ instance: evm_instance, meta });\n }\n return Promise.resolve(false);\n};\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const supportedChains = allBlockChains.filter((blockchainMeta) =>\n [\n ...SUPPORTED_ETH_CHAINS,\n ...XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS,\n Networks.SOLANA,\n ].includes(blockchainMeta.name as Networks)\n );\n return {\n name: 'Ctrl',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/xdefi/icon.svg',\n installLink: {\n CHROME:\n 'https://chromewebstore.google.com/detail/ctrl-wallet/hmeobnfnfcmdkdcmlblgagmfpfboieaf',\n BRAVE:\n 'https://chromewebstore.google.com/detail/ctrl-wallet/hmeobnfnfcmdkdcmlblgagmfpfboieaf',\n DEFAULT: 'https://ctrl.xyz/',\n },\n color: '#0646c7',\n supportedChains,\n };\n};\n\n// it is required in /examples/queue-manager-demo\nexport { SUPPORTED_ETH_CHAINS } from './constants.js';\n", "import {\n Networks,\n XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS,\n} from '@rango-dev/wallets-shared';\n\nexport const SUPPORTED_NETWORKS = XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS;\nexport const SUPPORTED_ETH_CHAINS = [\n Networks.POLYGON,\n Networks.ETHEREUM,\n Networks.BSC,\n Networks.AVAX_CCHAIN,\n Networks.FANTOM,\n Networks.ARBITRUM,\n];\n", "import type { Network, ProviderConnectResult } from '@rango-dev/wallets-shared';\n\nimport { Networks } from '@rango-dev/wallets-shared';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\nimport { SUPPORTED_ETH_CHAINS, SUPPORTED_NETWORKS } from './constants.js';\n\ninterface XfiInstance {\n request: (\n payload: { method: string; params: unknown[] },\n callback: (error: unknown, result: unknown) => void\n ) => void;\n}\n\ntype Provider = Map<Network, XfiInstance>;\n\nexport function xdefi() {\n const { xfi } = window;\n\n if (!xfi) {\n return null;\n }\n\n const instances = new Map();\n if (xfi.bitcoin) {\n instances.set(Networks.BTC, xfi.bitcoin);\n }\n if (xfi.litecoin) {\n instances.set(Networks.LTC, xfi.litecoin);\n }\n if (xfi.thorchain) {\n instances.set(Networks.THORCHAIN, xfi.thorchain);\n }\n if (xfi.bitcoincash) {\n instances.set(Networks.BCH, xfi.bitcoincash);\n }\n if (xfi.ethereum) {\n instances.set(Networks.ETHEREUM, xfi.ethereum);\n }\n if (xfi.dogecoin) {\n instances.set(Networks.DOGE, xfi.dogecoin);\n }\n if (xfi.solana) {\n instances.set(Networks.SOLANA, xfi.solana);\n }\n if (xfi.mayachain) {\n instances.set(Networks.MAYA, xfi.mayachain);\n }\n\n return instances;\n}\n\nexport function getEthChainsInstance(netowrk: Network | null): Network | null {\n if (!netowrk) {\n return null;\n }\n return SUPPORTED_ETH_CHAINS.includes(netowrk as Networks)\n ? Networks.ETHEREUM\n : null;\n}\n\nexport async function getNonEvmAccounts(\n instances: Provider\n): Promise<ProviderConnectResult[]> {\n const nonEvmNetworks = SUPPORTED_NETWORKS.filter(\n (net: Network) => net !== Networks.ETHEREUM\n );\n const promises: Promise<ProviderConnectResult>[] = nonEvmNetworks\n .filter(\n (network: Network) =>\n // Ensure the instance is defined\n instances.get(network) !== undefined\n )\n .map(async (network: Network) => {\n return new Promise<ProviderConnectResult>((resolve, reject) => {\n const instance = instances.get(network);\n if (!instance) {\n reject(new Error(`No XDeFi instance for network ${network}`));\n return;\n }\n instance.request(\n {\n method: 'request_accounts',\n params: [],\n },\n (error, accounts) => {\n if (error) {\n reject(error);\n return;\n }\n\n const result = {\n accounts: accounts as string[],\n chainId: network,\n };\n\n resolve(result);\n }\n );\n });\n });\n\n const results = await Promise.all(promises);\n\n return results;\n}\n\ninterface XdefiTransferParams {\n asset: { chain: string; symbol: string; ticker: string };\n from: string;\n amount: { amount: string; decimals: number };\n memo?: string;\n recipient?: string;\n}\n\nexport async function xdefiTransfer(\n blockchain: string,\n ticker: string,\n from: string,\n amount: string,\n decimals: number,\n recipientAddress: string | null,\n provider: XfiInstance,\n method: string,\n memo?: string\n): Promise<string> {\n return new Promise(function (resolve, reject) {\n const params: XdefiTransferParams = {\n asset: { chain: blockchain, symbol: ticker, ticker: ticker },\n from: from,\n amount: { amount: amount, decimals: decimals },\n memo: memo,\n };\n if (recipientAddress) {\n params.recipient = recipientAddress;\n }\n\n provider.request({ method: method, params: [params] }, (error, result) => {\n if (error) {\n reject(\n new SignerError(SignerErrorCode.SEND_TX_ERROR, undefined, error)\n );\n } else {\n resolve(result as string);\n }\n });\n });\n}\n", "import type { LegacyNetworkProviderMap } from '@rango-dev/wallets-core/legacy';\nimport type { SignerFactory } from 'rango-types';\n\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n Networks,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { CustomSolanaSigner } from './solana-signer.js';\nimport { CustomTransferSigner } from './utxo-signer.js';\n\nexport default async function getSigners(\n provider: LegacyNetworkProviderMap\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const solProvider = getNetworkInstance(provider, Networks.SOLANA);\n\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-evm')\n );\n\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n signers.registerSigner(TxType.SOLANA, new CustomSolanaSigner(solProvider));\n // passed provider for transfer as it comprises several signers\n signers.registerSigner(TxType.TRANSFER, new CustomTransferSigner(provider));\n return signers;\n}\n", "import { DefaultSolanaSigner } from '@rango-dev/signer-solana';\nimport base58 from 'bs58';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype SolanaExternalProvider = any;\n\nexport class CustomSolanaSigner extends DefaultSolanaSigner {\n constructor(provider: SolanaExternalProvider) {\n super(provider);\n }\n\n async signMessage(msg: string): Promise<string> {\n const encodedMessage = new TextEncoder().encode(msg);\n const { signature } = await this.provider.signMessage(encodedMessage);\n return base58.encode(signature);\n }\n}\n", "import type { GenericSigner, Transfer } from 'rango-types';\n\nimport {\n getNetworkInstance,\n Networks,\n XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS,\n} from '@rango-dev/wallets-shared';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\nimport { xdefiTransfer } from './helpers.js';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype TransferExternalProvider = any;\n\nexport class CustomTransferSigner implements GenericSigner<Transfer> {\n private provider: TransferExternalProvider;\n constructor(provider: TransferExternalProvider) {\n this.provider = provider;\n }\n\n async signMessage(): Promise<string> {\n throw SignerError.UnimplementedError('signMessage');\n }\n\n async signAndSendTx(tx: Transfer): Promise<{ hash: string }> {\n const { blockchain } = tx.asset;\n\n // Everything except ETH\n if (\n !XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS.includes(blockchain as Networks)\n ) {\n throw new Error(\n `blockchain: ${blockchain} transfer not implemented yet.`\n );\n }\n\n if (blockchain === Networks.BTC) {\n return await this.#signPsbt(tx);\n }\n\n return await this.#signTransferObject(tx);\n }\n\n // Interface for PSBT: https://developers.ctrl.xyz/developers/extension-bitcoin#sign-psbt-partially-signed-bitcoin-transaction\n async #signPsbt(tx: Transfer): Promise<{ hash: string }> {\n const { asset, psbt } = tx;\n\n if (!psbt) {\n throw new Error(\n 'No PSBT found to sign. Ensure a valid PSBT is provided.'\n );\n }\n\n const provider = getNetworkInstance(this.provider, asset.blockchain);\n\n const signInputs: { [key: string]: number[] } = {};\n psbt.inputsToSign.forEach((input) => {\n signInputs[input.address] = input.signingIndexes;\n });\n\n const response = await provider\n .request({\n method: 'sign_psbt',\n params: {\n psbt: psbt.unsignedPsbtBase64,\n signInputs,\n allowedSignHash: 1,\n broadcast: true,\n },\n })\n .catch((error: unknown) => {\n throw new SignerError(SignerErrorCode.SEND_TX_ERROR, undefined, error);\n });\n\n /*\n * `status` is useful for callback style (e.g. `(err, res) => void`) form of `xfi.request`.\n * here we are using the promise interface, so it should be always `success` when reach here.\n *\n * just for ensuring unexpected behaviors will be handled, we can keep this.\n *\n * @see https://docs.xverse.app/sats-connect/wallet-methods/request-methods#response-format-and-error-handling\n */\n if (response.status === 'success') {\n return { hash: response.result.txId };\n }\n\n throw new Error(\n 'The operation (sign and broadcast) failed on your wallet.',\n { cause: response }\n );\n }\n\n async #signTransferObject(tx: Transfer): Promise<{ hash: string }> {\n const { blockchain } = tx.asset;\n\n const transferProvider = getNetworkInstance(this.provider, blockchain);\n\n const {\n method,\n memo,\n recipientAddress,\n decimals,\n amount,\n fromWalletAddress: from,\n asset,\n } = tx;\n\n const hash = await xdefiTransfer(\n blockchain,\n asset.ticker,\n from,\n amount,\n decimals,\n recipientAddress,\n transferProvider,\n method,\n memo ?? undefined\n );\n return { hash };\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "chooseInstance", "getBlockChainNameFromId", "getEvmAccounts", "getSolanaAccounts", "Networks", "switchNetworkForEvm", "WalletTypes", "XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS", "Networks", "XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS", "SUPPORTED_NETWORKS", "SUPPORTED_ETH_CHAINS", "Networks", "SignerError", "SignerErrorCode", "xdefi", "xfi", "instances", "Networks", "__name", "getNonEvmAccounts", "instances", "promises", "SUPPORTED_NETWORKS", "net", "Networks", "network", "resolve", "reject", "instance", "error", "accounts", "__name", "xdefiTransfer", "blockchain", "ticker", "from", "amount", "decimals", "recipientAddress", "provider", "method", "memo", "params", "result", "SignerError", "SignerErrorCode", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "DefaultSolanaSigner", "base58", "CustomSolanaSigner", "DefaultSolanaSigner", "__name", "provider", "msg", "encodedMessage", "signature", "base58", "getNetworkInstance", "Networks", "XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS", "SignerError", "SignerErrorCode", "CustomTransferSigner", "__name", "provider", "SignerError", "tx", "blockchain", "XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS", "Networks", "#signPsbt", "#signTransferObject", "asset", "psbt", "getNetworkInstance", "signInputs", "input", "response", "error", "SignerErrorCode", "transferProvider", "method", "memo", "recipientAddress", "decimals", "amount", "from", "xdefiTransfer", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "solProvider", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "CustomSolanaSigner", "CustomTransferSigner", "__name", "DEFAULT_NETWORK", "Networks", "WALLET", "WalletTypes", "config", "getInstance", "xdefi", "connect", "__name", "instance", "meta", "ethInstance", "chooseInstance", "solInstance", "evmResult", "getEvmAccounts", "nonEvmResults", "getNonEvmAccounts", "solanaAccounts", "getSolanaAccounts", "subscribe", "updateChainId", "handleChainChanged", "chainId", "network", "getBlockChainNameFromId", "eth", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "canEagerConnect", "evm_instance", "canEagerlyConnectToEvm", "getWalletInfo", "allBlockChains", "supportedChains", "blockchainMeta", "SUPPORTED_ETH_CHAINS", "XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"src/constants.ts":{"bytes":568,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true}],"format":"esm"},"src/helpers.ts":{"bytes":3253,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/cosmos-signer.ts":{"bytes":1527,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-cosmos","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/solana-signer.ts":{"bytes":557,"imports":[{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utxo-signer.ts":{"bytes":3325,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/helpers.ts","kind":"import-statement","original":"./helpers.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":1374,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/cosmos-signer.ts","kind":"import-statement","original":"./cosmos-signer.js"},{"path":"src/solana-signer.ts","kind":"import-statement","original":"./solana-signer.js"},{"path":"src/utxo-signer.ts","kind":"import-statement","original":"./utxo-signer.js"},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":4917,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"src/helpers.ts","kind":"import-statement","original":"./helpers.js"},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":25918},"dist/index.js":{"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-cosmos","kind":"dynamic-import","external":true},{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true}],"exports":["SUPPORTED_ETH_CHAINS","canEagerConnect","canSwitchNetworkTo","config","connect","getInstance","getSigners","getWalletInfo","subscribe","switchNetwork"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":1695},"src/constants.ts":{"bytesInOutput":264},"src/helpers.ts":{"bytesInOutput":1104},"src/signer.ts":{"bytesInOutput":497},"src/cosmos-signer.ts":{"bytesInOutput":711},"src/solana-signer.ts":{"bytesInOutput":290},"src/utxo-signer.ts":{"bytesInOutput":1245}},"bytes":6119}}}
1
+ {"inputs":{"src/constants.ts":{"bytes":332,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true}],"format":"esm"},"src/helpers.ts":{"bytes":3693,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/solana-signer.ts":{"bytes":557,"imports":[{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utxo-signer.ts":{"bytes":3325,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/helpers.ts","kind":"import-statement","original":"./helpers.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":1176,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/solana-signer.ts","kind":"import-statement","original":"./solana-signer.js"},{"path":"src/utxo-signer.ts","kind":"import-statement","original":"./utxo-signer.js"},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":3868,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"src/helpers.ts","kind":"import-statement","original":"./helpers.js"},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":21245},"dist/index.js":{"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true}],"exports":["SUPPORTED_ETH_CHAINS","canEagerConnect","canSwitchNetworkTo","config","connect","getInstance","getSigners","getWalletInfo","subscribe","switchNetwork"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":1355},"src/constants.ts":{"bytesInOutput":168},"src/helpers.ts":{"bytesInOutput":1143},"src/signer.ts":{"bytesInOutput":461},"src/solana-signer.ts":{"bytesInOutput":290},"src/utxo-signer.ts":{"bytesInOutput":1245}},"bytes":4975}}}
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAajD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,wBAAwB,GACjC,OAAO,CAAC,aAAa,CAAC,CAgBxB"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAYjD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,wBAAwB,GACjC,OAAO,CAAC,aAAa,CAAC,CAcxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rango-dev/provider-xdefi",
3
- "version": "0.61.2-next.6",
3
+ "version": "0.62.1-next.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "source": "./src/index.ts",
@@ -21,11 +21,10 @@
21
21
  "lint": "eslint \"**/*.{ts,tsx}\""
22
22
  },
23
23
  "dependencies": {
24
- "@rango-dev/signer-cosmos": "^0.39.2-next.3",
25
- "@rango-dev/signer-evm": "^0.41.2-next.2",
26
- "@rango-dev/signer-solana": "^0.47.2-next.2",
27
- "@rango-dev/wallets-core": "^0.58.2-next.4",
28
- "@rango-dev/wallets-shared": "^0.59.2-next.5",
24
+ "@rango-dev/signer-evm": "^0.42.0",
25
+ "@rango-dev/signer-solana": "^0.48.0",
26
+ "@rango-dev/wallets-core": "^0.59.1-next.0",
27
+ "@rango-dev/wallets-shared": "^0.60.1-next.0",
29
28
  "bs58": "^5.0.0",
30
29
  "rango-types": "^0.5.0"
31
30
  },
package/src/constants.ts CHANGED
@@ -12,15 +12,3 @@ export const SUPPORTED_ETH_CHAINS = [
12
12
  Networks.FANTOM,
13
13
  Networks.ARBITRUM,
14
14
  ];
15
- export const SUPPORTED_COSMOS_CHAINS = [
16
- Networks.COSMOS,
17
- Networks.AKASH,
18
- Networks.AXELAR,
19
- Networks.CRYPTO_ORG,
20
- Networks.JUNO,
21
- Networks.KUJIRA,
22
- Networks.MARS,
23
- Networks.OSMOSIS,
24
- Networks.STARGAZE,
25
- Networks.STRIDE,
26
- ];
package/src/helpers.ts CHANGED
@@ -5,7 +5,14 @@ import { SignerError, SignerErrorCode } from 'rango-types';
5
5
 
6
6
  import { SUPPORTED_ETH_CHAINS, SUPPORTED_NETWORKS } from './constants.js';
7
7
 
8
- type Provider = Map<Network, any>;
8
+ interface XfiInstance {
9
+ request: (
10
+ payload: { method: string; params: unknown[] },
11
+ callback: (error: unknown, result: unknown) => void
12
+ ) => void;
13
+ }
14
+
15
+ type Provider = Map<Network, XfiInstance>;
9
16
 
10
17
  export function xdefi() {
11
18
  const { xfi } = window;
@@ -39,9 +46,6 @@ export function xdefi() {
39
46
  if (xfi.mayachain) {
40
47
  instances.set(Networks.MAYA, xfi.mayachain);
41
48
  }
42
- if (xfi.keplr) {
43
- instances.set(Networks.COSMOS, xfi.keplr);
44
- }
45
49
 
46
50
  return instances;
47
51
  }
@@ -68,21 +72,25 @@ export async function getNonEvmAccounts(
68
72
  instances.get(network) !== undefined
69
73
  )
70
74
  .map(async (network: Network) => {
71
- return new Promise((resolve, reject) => {
75
+ return new Promise<ProviderConnectResult>((resolve, reject) => {
72
76
  const instance = instances.get(network);
77
+ if (!instance) {
78
+ reject(new Error(`No XDeFi instance for network ${network}`));
79
+ return;
80
+ }
73
81
  instance.request(
74
82
  {
75
83
  method: 'request_accounts',
76
84
  params: [],
77
85
  },
78
- (error: any, accounts: any) => {
86
+ (error, accounts) => {
79
87
  if (error) {
80
88
  reject(error);
81
- return error;
89
+ return;
82
90
  }
83
91
 
84
92
  const result = {
85
- accounts,
93
+ accounts: accounts as string[],
86
94
  chainId: network,
87
95
  };
88
96
 
@@ -97,6 +105,14 @@ export async function getNonEvmAccounts(
97
105
  return results;
98
106
  }
99
107
 
108
+ interface XdefiTransferParams {
109
+ asset: { chain: string; symbol: string; ticker: string };
110
+ from: string;
111
+ amount: { amount: string; decimals: number };
112
+ memo?: string;
113
+ recipient?: string;
114
+ }
115
+
100
116
  export async function xdefiTransfer(
101
117
  blockchain: string,
102
118
  ticker: string,
@@ -104,32 +120,29 @@ export async function xdefiTransfer(
104
120
  amount: string,
105
121
  decimals: number,
106
122
  recipientAddress: string | null,
107
- provider: any,
123
+ provider: XfiInstance,
108
124
  method: string,
109
125
  memo?: string
110
126
  ): Promise<string> {
111
127
  return new Promise(function (resolve, reject) {
112
- const params = {
128
+ const params: XdefiTransferParams = {
113
129
  asset: { chain: blockchain, symbol: ticker, ticker: ticker },
114
130
  from: from,
115
131
  amount: { amount: amount, decimals: decimals },
116
132
  memo: memo,
117
- } as any;
133
+ };
118
134
  if (recipientAddress) {
119
135
  params.recipient = recipientAddress;
120
136
  }
121
137
 
122
- provider.request(
123
- { method: method, params: [params] },
124
- (error: any, result: any) => {
125
- if (error) {
126
- reject(
127
- new SignerError(SignerErrorCode.SEND_TX_ERROR, undefined, error)
128
- );
129
- } else {
130
- resolve(result);
131
- }
138
+ provider.request({ method: method, params: [params] }, (error, result) => {
139
+ if (error) {
140
+ reject(
141
+ new SignerError(SignerErrorCode.SEND_TX_ERROR, undefined, error)
142
+ );
143
+ } else {
144
+ resolve(result as string);
132
145
  }
133
- );
146
+ });
134
147
  });
135
148
  }
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { LegacyNetworkProviderMap } from '@rango-dev/wallets-core/legacy';
1
2
  import type {
2
3
  CanEagerConnect,
3
4
  CanSwitchNetwork,
@@ -13,7 +14,6 @@ import {
13
14
  canSwitchNetworkToEvm,
14
15
  chooseInstance,
15
16
  getBlockChainNameFromId,
16
- getCosmosAccounts,
17
17
  getEvmAccounts,
18
18
  getSolanaAccounts,
19
19
  Networks,
@@ -22,9 +22,8 @@ import {
22
22
  XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS,
23
23
  } from '@rango-dev/wallets-shared';
24
24
  import { type BlockchainMeta, type SignerFactory } from 'rango-types';
25
- import { cosmosBlockchains, isCosmosBlockchain } from 'rango-types';
26
25
 
27
- import { SUPPORTED_COSMOS_CHAINS, SUPPORTED_ETH_CHAINS } from './constants.js';
26
+ import { SUPPORTED_ETH_CHAINS } from './constants.js';
28
27
  import { getNonEvmAccounts, xdefi as xdefi_instances } from './helpers.js';
29
28
  import signer from './signer.js';
30
29
 
@@ -41,7 +40,6 @@ export const getInstance = xdefi_instances;
41
40
  export const connect: Connect = async ({ instance, meta }) => {
42
41
  const ethInstance = chooseInstance(instance, meta, Networks.ETHEREUM);
43
42
  const solInstance = chooseInstance(instance, meta, Networks.SOLANA);
44
- const cosmosInstance = chooseInstance(instance, meta, Networks.COSMOS);
45
43
 
46
44
  const evmResult = await getEvmAccounts(ethInstance);
47
45
  const nonEvmResults = await getNonEvmAccounts(instance);
@@ -50,33 +48,7 @@ export const connect: Connect = async ({ instance, meta }) => {
50
48
  meta,
51
49
  });
52
50
 
53
- const cosmosAccounts: ProviderConnectResult[] = [];
54
- if (cosmosInstance) {
55
- const cosmosBlockchainMeta = meta.filter(
56
- (blockchainMeta: BlockchainMeta) =>
57
- isCosmosBlockchain(blockchainMeta) &&
58
- SUPPORTED_COSMOS_CHAINS.includes(blockchainMeta.name as Networks)
59
- );
60
- const requestedNetwork = Networks.COSMOS;
61
-
62
- const cosmosResult = await getCosmosAccounts({
63
- instance: cosmosInstance,
64
- meta: cosmosBlockchainMeta,
65
- network: requestedNetwork,
66
- });
67
- if (Array.isArray(cosmosResult)) {
68
- cosmosAccounts.push(...cosmosResult);
69
- } else {
70
- cosmosAccounts.push(cosmosResult);
71
- }
72
- }
73
-
74
- return [
75
- evmResult,
76
- ...nonEvmResults,
77
- solanaAccounts as ProviderConnectResult,
78
- ...cosmosAccounts,
79
- ];
51
+ return [evmResult, ...nonEvmResults, solanaAccounts as ProviderConnectResult];
80
52
  };
81
53
 
82
54
  export const subscribe: Subscribe = ({
@@ -115,7 +87,9 @@ export const switchNetwork: SwitchNetwork = switchNetworkForEvm;
115
87
 
116
88
  export const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;
117
89
 
118
- export const getSigners: (provider: any) => Promise<SignerFactory> = signer;
90
+ export const getSigners: (
91
+ provider: LegacyNetworkProviderMap
92
+ ) => Promise<SignerFactory> = signer;
119
93
 
120
94
  export const canEagerConnect: CanEagerConnect = async ({ instance, meta }) => {
121
95
  const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);
@@ -127,22 +101,13 @@ export const canEagerConnect: CanEagerConnect = async ({ instance, meta }) => {
127
101
  export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
128
102
  allBlockChains
129
103
  ) => {
130
- const supportedCosmosChains = cosmosBlockchains(allBlockChains).filter(
131
- (blockchainMeta: BlockchainMeta) =>
132
- !!blockchainMeta.info &&
133
- SUPPORTED_COSMOS_CHAINS.includes(blockchainMeta.name as Networks)
104
+ const supportedChains = allBlockChains.filter((blockchainMeta) =>
105
+ [
106
+ ...SUPPORTED_ETH_CHAINS,
107
+ ...XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS,
108
+ Networks.SOLANA,
109
+ ].includes(blockchainMeta.name as Networks)
134
110
  );
135
-
136
- const supportedChains = [
137
- ...allBlockChains.filter((blockchainMeta) =>
138
- [
139
- ...SUPPORTED_ETH_CHAINS,
140
- ...XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS,
141
- Networks.SOLANA,
142
- ].includes(blockchainMeta.name as Networks)
143
- ),
144
- ...supportedCosmosChains,
145
- ];
146
111
  return {
147
112
  name: 'Ctrl',
148
113
  img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/xdefi/icon.svg',
package/src/signer.ts CHANGED
@@ -8,7 +8,6 @@ import {
8
8
  } from '@rango-dev/wallets-shared';
9
9
  import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
10
10
 
11
- import { CustomCosmosSigner } from './cosmos-signer.js';
12
11
  import { CustomSolanaSigner } from './solana-signer.js';
13
12
  import { CustomTransferSigner } from './utxo-signer.js';
14
13
 
@@ -26,8 +25,6 @@ export default async function getSigners(
26
25
  signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));
27
26
  signers.registerSigner(TxType.SOLANA, new CustomSolanaSigner(solProvider));
28
27
  // passed provider for transfer as it comprises several signers
29
- signers.registerSigner(TxType.COSMOS, new CustomCosmosSigner(provider));
30
- // passed provider for transfer as it comprises several signers
31
28
  signers.registerSigner(TxType.TRANSFER, new CustomTransferSigner(provider));
32
29
  return signers;
33
30
  }
@@ -1,13 +0,0 @@
1
- import type { ProviderAPI } from '@rango-dev/wallets-core/namespaces/cosmos';
2
- import type { CosmosTransaction, GenericSigner } from 'rango-types';
3
- type CosmosExternalProvider = ProviderAPI;
4
- export declare class CustomCosmosSigner implements GenericSigner<CosmosTransaction> {
5
- private provider;
6
- constructor(provider: CosmosExternalProvider);
7
- signMessage(msg: string, address: string, chainId: string | null): Promise<string>;
8
- signAndSendTx(tx: CosmosTransaction): Promise<{
9
- hash: string;
10
- }>;
11
- }
12
- export {};
13
- //# sourceMappingURL=cosmos-signer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cosmos-signer.d.ts","sourceRoot":"","sources":["../src/cosmos-signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AASpE,KAAK,sBAAsB,GAAG,WAAW,CAAC;AAE1C,qBAAa,kBAAmB,YAAW,aAAa,CAAC,iBAAiB,CAAC;IACzE,OAAO,CAAC,QAAQ,CAAyB;gBAC7B,QAAQ,EAAE,sBAAsB;IAItC,WAAW,CACf,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,MAAM,CAAC;IAeZ,aAAa,CAAC,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAYtE"}
@@ -1,50 +0,0 @@
1
- import type { ProviderAPI } from '@rango-dev/wallets-core/namespaces/cosmos';
2
- import type { CosmosTransaction, GenericSigner } from 'rango-types';
3
-
4
- import {
5
- dynamicImportWithRefinedError,
6
- getNetworkInstance,
7
- Networks,
8
- } from '@rango-dev/wallets-shared';
9
- import { SignerError, SignerErrorCode } from 'rango-types';
10
-
11
- type CosmosExternalProvider = ProviderAPI;
12
-
13
- export class CustomCosmosSigner implements GenericSigner<CosmosTransaction> {
14
- private provider: CosmosExternalProvider;
15
- constructor(provider: CosmosExternalProvider) {
16
- this.provider = provider;
17
- }
18
-
19
- async signMessage(
20
- msg: string,
21
- address: string,
22
- chainId: string | null
23
- ): Promise<string> {
24
- try {
25
- if (!chainId) {
26
- throw Error('ChainId is required');
27
- }
28
- const { signature } = await this.provider.signArbitrary(
29
- chainId,
30
- address,
31
- msg
32
- );
33
- return signature;
34
- } catch (error) {
35
- throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);
36
- }
37
- }
38
- async signAndSendTx(tx: CosmosTransaction): Promise<{ hash: string }> {
39
- const { executeCosmosTransaction } = await dynamicImportWithRefinedError(
40
- async () => await import('@rango-dev/signer-cosmos')
41
- );
42
-
43
- if (tx.rawTransfer === null) {
44
- const cosmosProvider = getNetworkInstance(this.provider, Networks.COSMOS);
45
- const hash = await executeCosmosTransaction(tx, cosmosProvider);
46
- return { hash };
47
- }
48
- throw Error('raw transfer is not null for cosmos transactions');
49
- }
50
- }