@rango-dev/provider-xdefi 0.62.0 → 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 +4 -0
- package/dist/constants.d.ts +0 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/helpers.d.ts +8 -2
- package/dist/helpers.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/provider-xdefi.build.json +1 -1
- package/dist/signer.d.ts.map +1 -1
- package/package.json +3 -4
- package/src/constants.ts +0 -12
- package/src/helpers.ts +35 -22
- package/src/index.ts +12 -47
- package/src/signer.ts +0 -3
- package/dist/cosmos-signer.d.ts +0 -13
- package/dist/cosmos-signer.d.ts.map +0 -1
- package/src/cosmos-signer.ts +0 -50
package/CHANGELOG.md
CHANGED
package/dist/constants.d.ts
CHANGED
package/dist/constants.d.ts.map
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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:
|
|
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
|
package/dist/helpers.d.ts.map
CHANGED
|
@@ -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,
|
|
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:
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
|
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/
|
|
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": "+
|
|
6
|
-
"names": ["canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "chooseInstance", "getBlockChainNameFromId", "
|
|
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":
|
|
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}}}
|
package/dist/signer.d.ts.map
CHANGED
|
@@ -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;
|
|
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.62.0",
|
|
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.40.0",
|
|
25
24
|
"@rango-dev/signer-evm": "^0.42.0",
|
|
26
25
|
"@rango-dev/signer-solana": "^0.48.0",
|
|
27
|
-
"@rango-dev/wallets-core": "^0.59.0",
|
|
28
|
-
"@rango-dev/wallets-shared": "^0.60.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
|
-
|
|
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
|
|
86
|
+
(error, accounts) => {
|
|
79
87
|
if (error) {
|
|
80
88
|
reject(error);
|
|
81
|
-
return
|
|
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:
|
|
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
|
-
}
|
|
133
|
+
};
|
|
118
134
|
if (recipientAddress) {
|
|
119
135
|
params.recipient = recipientAddress;
|
|
120
136
|
}
|
|
121
137
|
|
|
122
|
-
provider.request(
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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 {
|
|
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
|
-
|
|
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: (
|
|
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
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
}
|
package/dist/cosmos-signer.d.ts
DELETED
|
@@ -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"}
|
package/src/cosmos-signer.ts
DELETED
|
@@ -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
|
-
}
|