@rango-dev/provider-trustwallet 0.44.2-next.8 → 0.45.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.
@@ -0,0 +1,4 @@
1
+ import { type ProviderInfo } from '@rango-dev/wallets-core';
2
+ export declare const WALLET_ID = "trust-wallet";
3
+ export declare const info: ProviderInfo;
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAO5D,eAAO,MAAM,SAAS,iBAAiB,CAAC;AAExC,eAAO,MAAM,IAAI,EAAE,YAkClB,CAAC"}
@@ -1,7 +1,8 @@
1
- import type { CanEagerConnect, CanSwitchNetwork, Connect, Subscribe, SwitchNetwork, WalletInfo } from '@rango-dev/wallets-shared';
1
+ import type { CanSwitchNetwork, Connect, Subscribe, SwitchNetwork, WalletInfo } from '@rango-dev/wallets-shared';
2
2
  import type { BlockchainMeta, SignerFactory } from 'rango-types';
3
+ import { type LegacyProviderInterface } from '@rango-dev/wallets-core/legacy';
3
4
  import { WalletTypes } from '@rango-dev/wallets-shared';
4
- import { trustWallet as trustwallet_instance } from './helpers.js';
5
+ import { type Provider, trustWallet as trustwallet_instance } from '../utils.js';
5
6
  export declare const config: {
6
7
  type: WalletTypes;
7
8
  };
@@ -10,7 +11,8 @@ export declare const connect: Connect;
10
11
  export declare const subscribe: Subscribe;
11
12
  export declare const switchNetwork: SwitchNetwork;
12
13
  export declare const canSwitchNetworkTo: CanSwitchNetwork;
13
- export declare const getSigners: (provider: any) => Promise<SignerFactory>;
14
- export declare const canEagerConnect: CanEagerConnect;
14
+ export declare const getSigners: (provider: Provider) => Promise<SignerFactory>;
15
15
  export declare const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo;
16
+ declare const buildLegacyProvider: () => LegacyProviderInterface;
17
+ export { buildLegacyProvider };
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/legacy/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAKL,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,KAAK,QAAQ,EACb,WAAW,IAAI,oBAAoB,EACpC,MAAM,aAAa,CAAC;AAMrB,eAAO,MAAM,MAAM;;CAElB,CAAC;AAEF,eAAO,MAAM,WAAW,6BAAuB,CAAC;AAGhD,eAAO,MAAM,OAAO,EAAE,OAMrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAA0B,CAAC;AAEnD,eAAO,MAAM,aAAa,EAAE,aAAmC,CAAC;AAEhE,eAAO,MAAM,kBAAkB,EAAE,gBAAwC,CAAC;AAE1E,eAAO,MAAM,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,aAAa,CAC9D,CAAC;AAET,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAsCjE,CAAC;AAEF,QAAA,MAAM,mBAAmB,EAAE,MAAM,uBAS/B,CAAC;AAEH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Provider } from '../utils.js';
2
+ import type { SignerFactory } from 'rango-types';
3
+ export default function getSigners(provider: Provider): Promise<SignerFactory>;
4
+ //# sourceMappingURL=signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/legacy/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,aAAa,CAAC,CAYxB"}
package/dist/mod.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ declare const versions: () => import("@rango-dev/wallets-core/utils").VersionedProviders;
2
+ export { versions };
3
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,QAAQ,kEAIF,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,CAAC"}
package/dist/mod.js ADDED
@@ -0,0 +1,2 @@
1
+ var L=Object.defineProperty;var o=(e,t)=>L(e,"name",{value:t,configurable:!0});import{defineVersions as se}from"@rango-dev/wallets-core/utils";import"@rango-dev/wallets-core/legacy";import{canSwitchNetworkToEvm as W,getEvmAccounts as N,subscribeToEvm as I,switchNetworkForEvm as M,WalletTypes as B}from"@rango-dev/wallets-shared";import{evmBlockchains as g,solanaBlockchain as f}from"rango-types";import{LegacyNetworks as i}from"@rango-dev/wallets-core/legacy";function a(){let{trustwallet:e}=window;if(!e||!(e?.isTrust||e?.isTrustWallet))return null;let t=new Map;t.set(i.ETHEREUM,e);let{solana:r}=e;return r&&r.isTrustWallet&&t.set(i.SOLANA,r),t}o(a,"trustWallet");function c(){let t=a()?.get(i.ETHEREUM);if(!t)throw new Error("TrustWallet not injected or EVM not enabled. Please check your wallet.");return t}o(c,"evmTrustWallet");function l(){let t=a()?.get(i.SOLANA);if(!t)throw new Error("TrustWallet not injected or Solana not enabled. Please check your wallet.");return t}o(l,"solanaTrustWallet");import{LegacyNetworks as p}from"@rango-dev/wallets-core/legacy";import{getNetworkInstance as d}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as x,TransactionType as u}from"rango-types";async function m(e){let t=d(e,p.ETHEREUM),r=d(e,p.SOLANA),n=new x,{DefaultEvmSigner:P}=await import("@rango-dev/signer-evm"),{DefaultSolanaSigner:k}=await import("@rango-dev/signer-solana");return n.registerSigner(u.EVM,new P(t)),n.registerSigner(u.SOLANA,new k(r)),n}o(m,"getSigners");var C=B.TRUST_WALLET,j={type:C},V=a,D=o(async({instance:e})=>{let{accounts:t,chainId:r}=await N(e);return{accounts:t,chainId:r}},"connect"),F=I,O=M,R=W,H=m,_=o(e=>{let t=g(e),r=f(e);return{name:"Trust Wallet",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/trustwallet/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph",BRAVE:"https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph",DEFAULT:"https://trustwallet.com/browser-extension"},color:"#ffffff",supportedChains:[...t,...r],needsNamespace:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:n=>g(n)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:n=>f(n)}]}}},"getWalletInfo"),w=o(()=>({config:j,getInstance:V,connect:D,subscribe:F,switchNetwork:O,canSwitchNetworkTo:R,getSigners:H,getWalletInfo:_}),"buildLegacyProvider");import{ProviderBuilder as ae}from"@rango-dev/wallets-core";import"@rango-dev/wallets-core";import{evmBlockchains as U,solanaBlockchain as z}from"rango-types";var s="trust-wallet",b={name:"Trust Wallet",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/trustwallet/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph",brave:"https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph",homepage:"https://trustwallet.com/browser-extension"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:e=>U(e)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:e=>z(e)}]}}]};import{NamespaceBuilder as q}from"@rango-dev/wallets-core";import{builders as G,standardizeAndThrowError as J}from"@rango-dev/wallets-core/namespaces/common";import{actions as h,builders as K}from"@rango-dev/wallets-core/namespaces/evm";var[Q,v]=h.changeAccountSubscriber(c),X=K.connect().action(h.connect(c)).before(Q).or(v).or(J).build(),Y=G.disconnect().after(v).build(),S=new q("EVM",s).action(X).action(Y).build();import{NamespaceBuilder as Z}from"@rango-dev/wallets-core";import{builders as $,standardizeAndThrowError as ee}from"@rango-dev/wallets-core/namespaces/common";import{actions as A,builders as te}from"@rango-dev/wallets-core/namespaces/solana";var[oe,E]=A.changeAccountSubscriber(l),re=te.connect().action(A.connect(l)).before(oe).or(E).or(ee).build(),ne=$.disconnect().after(E).build(),y=new Z("Solana",s).action(re).action(ne).build();var T=o(()=>new ae(s).init(function(e){let[,t]=e.state();a()&&(t("installed",!0),console.debug("[trustwallet] instance detected.",e))}).config("info",b).add("evm",S).add("solana",y).build(),"buildProvider");var Ke=o(()=>se().version("0.0.0",w()).version("1.0.0",T()).build(),"versions");export{Ke as versions};
2
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/mod.ts", "../src/legacy/index.ts", "../src/utils.ts", "../src/legacy/signer.ts", "../src/provider.ts", "../src/constants.ts", "../src/namespaces/evm.ts", "../src/namespaces/solana.ts"],
4
+ "sourcesContent": ["import { defineVersions } from '@rango-dev/wallets-core/utils';\n\nimport { buildLegacyProvider } from './legacy/index.js';\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions()\n .version('0.0.0', buildLegacyProvider())\n .version('1.0.0', buildProvider())\n .build();\n\nexport { versions };\n", "import type {\n CanSwitchNetwork,\n Connect,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport { type LegacyProviderInterface } from '@rango-dev/wallets-core/legacy';\nimport {\n canSwitchNetworkToEvm,\n getEvmAccounts,\n subscribeToEvm,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { evmBlockchains, solanaBlockchain } from 'rango-types';\n\nimport {\n type Provider,\n trustWallet as trustwallet_instance,\n} from '../utils.js';\n\nimport signer from './signer.js';\n\nconst WALLET = WalletTypes.TRUST_WALLET;\n\nexport const config = {\n type: WALLET,\n};\n\nexport const getInstance = trustwallet_instance;\n\n// doc: https://developer.trustwallet.com/trust-wallet-browser-extension/extension-guide\nexport const connect: Connect = async ({ instance }) => {\n const { accounts, chainId } = await getEvmAccounts(instance);\n return {\n accounts,\n chainId,\n };\n};\n\nexport const subscribe: Subscribe = subscribeToEvm;\n\nexport const switchNetwork: SwitchNetwork = switchNetworkForEvm;\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const getSigners: (provider: Provider) => Promise<SignerFactory> =\n signer;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n const solana = solanaBlockchain(allBlockChains);\n\n return {\n name: 'Trust Wallet',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/trustwallet/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',\n DEFAULT: 'https://trustwallet.com/browser-extension',\n },\n color: '#ffffff',\n supportedChains: [...evms, ...solana],\n needsNamespace: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(allBlockchains),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n };\n};\n\nconst buildLegacyProvider: () => LegacyProviderInterface = () => ({\n config,\n getInstance,\n connect,\n subscribe,\n switchNetwork,\n canSwitchNetworkTo,\n getSigners,\n getWalletInfo,\n});\n\nexport { buildLegacyProvider };\n", "import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';\nimport type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Provider = Record<string, any>;\nexport function trustWallet(): Provider | null {\n const { trustwallet } = window;\n\n if (!trustwallet || !(trustwallet?.isTrust || trustwallet?.isTrustWallet)) {\n return null;\n }\n\n const instances = new Map();\n\n instances.set(LegacyNetworks.ETHEREUM, trustwallet);\n const { solana } = trustwallet;\n if (solana && solana.isTrustWallet) {\n instances.set(LegacyNetworks.SOLANA, solana);\n }\n\n return instances;\n}\n\nexport function evmTrustWallet(): EvmProviderApi {\n const instances = trustWallet();\n\n const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);\n\n if (!evmInstance) {\n throw new Error(\n 'TrustWallet not injected or EVM not enabled. Please check your wallet.'\n );\n }\n\n return evmInstance as EvmProviderApi;\n}\n\nexport function solanaTrustWallet(): SolanaProviderApi {\n const instance = trustWallet();\n const solanaInstance = instance?.get(LegacyNetworks.SOLANA);\n\n if (!solanaInstance) {\n throw new Error(\n 'TrustWallet not injected or Solana not enabled. Please check your wallet.'\n );\n }\n\n return solanaInstance as SolanaProviderApi;\n}\n", "import type { Provider } from '../utils.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport { LegacyNetworks as Networks } from '@rango-dev/wallets-core/legacy';\nimport { getNetworkInstance } from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: Provider\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 import('@rango-dev/signer-evm');\n const { DefaultSolanaSigner } = await import('@rango-dev/signer-solana');\n\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n signers.registerSigner(TxType.SOLANA, new DefaultSolanaSigner(solProvider));\n\n return signers;\n}\n", "import { ProviderBuilder } from '@rango-dev/wallets-core';\n\nimport { info, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { solana } from './namespaces/solana.js';\nimport { trustWallet as trustwalletInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (trustwalletInstance()) {\n setState('installed', true);\n console.debug('[trustwallet] instance detected.', context);\n }\n })\n .config('info', info)\n .add('evm', evm)\n .add('solana', solana)\n .build();\n\nexport { buildProvider };\n", "import { type ProviderInfo } from '@rango-dev/wallets-core';\nimport {\n type BlockchainMeta,\n evmBlockchains,\n solanaBlockchain,\n} from 'rango-types';\n\nexport const WALLET_ID = 'trust-wallet';\n\nexport const info: ProviderInfo = {\n name: 'Trust Wallet',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/trustwallet/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',\n brave:\n 'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',\n homepage: 'https://trustwallet.com/browser-extension',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(allBlockchains),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n },\n ],\n};\n", "import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport { actions, builders } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmTrustWallet } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] =\n actions.changeAccountSubscriber(evmTrustWallet);\n\nconst connect = builders\n .connect()\n .action(actions.connect(evmTrustWallet))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<EvmActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .build();\n\nexport { evm };\n", "import type { SolanaActions } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport { actions, builders } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { WALLET_ID } from '../constants.js';\nimport { solanaTrustWallet } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] =\n actions.changeAccountSubscriber(solanaTrustWallet);\n\nconst connect = builders\n .connect()\n .action(actions.connect(solanaTrustWallet))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<SolanaActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .build();\n\nexport { solana };\n"],
5
+ "mappings": "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",
6
+ "names": ["defineVersions", "canSwitchNetworkToEvm", "getEvmAccounts", "subscribeToEvm", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "solanaBlockchain", "LegacyNetworks", "trustWallet", "trustwallet", "instances", "LegacyNetworks", "solana", "__name", "evmTrustWallet", "evmInstance", "solanaTrustWallet", "solanaInstance", "Networks", "getNetworkInstance", "DefaultSignerFactory", "TxType", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "solProvider", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "DefaultSolanaSigner", "TxType", "__name", "WALLET", "WalletTypes", "config", "getInstance", "trustWallet", "connect", "__name", "instance", "accounts", "chainId", "getEvmAccounts", "subscribe", "subscribeToEvm", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains", "solana", "solanaBlockchain", "allBlockchains", "buildLegacyProvider", "ProviderBuilder", "evmBlockchains", "solanaBlockchain", "WALLET_ID", "info", "allBlockchains", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "actions", "builders", "changeAccountSubscriber", "changeAccountCleanup", "actions", "evmTrustWallet", "connect", "builders", "standardizeAndThrowError", "disconnect", "commonBuilders", "evm", "NamespaceBuilder", "WALLET_ID", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "actions", "builders", "changeAccountSubscriber", "changeAccountCleanup", "actions", "solanaTrustWallet", "connect", "builders", "standardizeAndThrowError", "disconnect", "commonBuilders", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "trustWallet", "info", "evm", "solana", "versions", "__name", "defineVersions", "buildLegacyProvider", "buildProvider"]
7
+ }
@@ -0,0 +1,4 @@
1
+ import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';
2
+ declare const evm: import("@rango-dev/wallets-core").ProxiedNamespace<EvmActions>;
3
+ export { evm };
4
+ //# sourceMappingURL=evm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evm.d.ts","sourceRoot":"","sources":["../../src/namespaces/evm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AA4BzE,QAAA,MAAM,GAAG,gEAGC,CAAC;AAEX,OAAO,EAAE,GAAG,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SolanaActions } from '@rango-dev/wallets-core/namespaces/solana';
2
+ declare const solana: import("@rango-dev/wallets-core").ProxiedNamespace<SolanaActions>;
3
+ export { solana };
4
+ //# sourceMappingURL=solana.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/namespaces/solana.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AA4B/E,QAAA,MAAM,MAAM,mEAGF,CAAC;AAEX,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"inputs":{"src/helpers.ts":{"bytes":193,"imports":[{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":571,"imports":[{"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},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":1930,"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":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":4696},"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-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true}],"exports":["canEagerConnect","canSwitchNetworkTo","config","connect","getInstance","getSigners","getWalletInfo","subscribe","switchNetwork"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":835},"src/helpers.ts":{"bytesInOutput":106},"src/signer.ts":{"bytesInOutput":318}},"bytes":1537}}}
1
+ {"inputs":{"src/utils.ts":{"bytes":1461,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/signer.ts":{"bytes":915,"imports":[{"path":"@rango-dev/wallets-core/legacy","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},{"path":"@rango-dev/signer-solana","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/index.ts":{"bytes":2725,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"src/legacy/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":1242,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true}],"format":"esm"},"src/namespaces/evm.ts":{"bytes":959,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/namespaces/solana.ts":{"bytes":992,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/solana","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/provider.ts":{"bytes":675,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"src/namespaces/evm.ts","kind":"import-statement","original":"./namespaces/evm.js"},{"path":"src/namespaces/solana.ts","kind":"import-statement","original":"./namespaces/solana.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/mod.ts":{"bytes":332,"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"src/legacy/index.ts","kind":"import-statement","original":"./legacy/index.js"},{"path":"src/provider.ts","kind":"import-statement","original":"./provider.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/mod.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":15359},"dist/mod.js":{"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","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-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","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},{"path":"@rango-dev/signer-solana","kind":"dynamic-import","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/solana","kind":"import-statement","external":true}],"exports":["versions"],"entryPoint":"src/mod.ts","inputs":{"src/mod.ts":{"bytesInOutput":144},"src/legacy/index.ts":{"bytesInOutput":1205},"src/utils.ts":{"bytesInOutput":608},"src/legacy/signer.ts":{"bytesInOutput":485},"src/provider.ts":{"bytesInOutput":266},"src/constants.ts":{"bytesInOutput":702},"src/namespaces/evm.ts":{"bytesInOutput":419},"src/namespaces/solana.ts":{"bytesInOutput":435}},"bytes":4399}}}
@@ -0,0 +1,3 @@
1
+ declare const buildProvider: () => import("@rango-dev/wallets-core").Provider;
2
+ export { buildProvider };
3
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,aAAa,kDAaP,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
2
+ import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
3
+ export type Provider = Record<string, any>;
4
+ export declare function trustWallet(): Provider | null;
5
+ export declare function evmTrustWallet(): EvmProviderApi;
6
+ export declare function solanaTrustWallet(): SolanaProviderApi;
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAKlG,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC3C,wBAAgB,WAAW,IAAI,QAAQ,GAAG,IAAI,CAgB7C;AAED,wBAAgB,cAAc,IAAI,cAAc,CAY/C;AAED,wBAAgB,iBAAiB,IAAI,iBAAiB,CAWrD"}
package/package.json CHANGED
@@ -1,29 +1,29 @@
1
1
  {
2
2
  "name": "@rango-dev/provider-trustwallet",
3
- "version": "0.44.2-next.8",
3
+ "version": "0.45.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
- "source": "./src/index.ts",
7
- "main": "./dist/index.js",
6
+ "source": "./src/mod.ts",
7
+ "main": "./dist/mod.js",
8
8
  "exports": {
9
- ".": "./dist/index.js"
9
+ ".": "./dist/mod.js"
10
10
  },
11
- "typings": "dist/index.d.ts",
11
+ "typings": "dist/mod.d.ts",
12
12
  "files": [
13
13
  "dist",
14
14
  "src"
15
15
  ],
16
16
  "scripts": {
17
- "build": "node ../../scripts/build/command.mjs --path wallets/provider-trustwallet",
17
+ "build": "node ../../scripts/build/command.mjs --path wallets/provider-trustwallet --inputs src/mod.ts",
18
18
  "ts-check": "tsc --declaration --emitDeclarationOnly -p ./tsconfig.json",
19
19
  "clean": "rimraf dist",
20
20
  "format": "prettier --write '{.,src}/**/*.{ts,tsx}'",
21
21
  "lint": "eslint \"**/*.{ts,tsx}\""
22
22
  },
23
23
  "dependencies": {
24
- "@rango-dev/signer-evm": "^0.35.1-next.3",
25
- "@rango-dev/wallets-shared": "^0.44.2-next.8",
26
- "rango-types": "^0.1.84"
24
+ "@rango-dev/signer-evm": "^0.36.0",
25
+ "@rango-dev/wallets-shared": "^0.45.0",
26
+ "rango-types": "^0.1.85"
27
27
  },
28
28
  "publishConfig": {
29
29
  "access": "public"
package/readme.md CHANGED
@@ -1 +1,31 @@
1
- # @rango-dev/provider-trustwallet
1
+ # Trust Wallet
2
+ Trust Wallet integration for hub.
3
+ [Homepage](https://trustwallet.com/) | [Docs](https://developer.trustwallet.com/developer/develop-for-trust/browser-extension)
4
+
5
+
6
+ ## Implementation notes/limitations
7
+
8
+ ### Group
9
+
10
+ #### ⚠️ EVM & Solana
11
+ Trust Wallet supports both EVM and Solana, but **simultaneous connections across namespaces are unreliable**.
12
+
13
+ ### Feature
14
+
15
+ #### ⚠️ Switch Account
16
+ When connected to a **single namespace**:
17
+ - Switching **from a private key wallet to a full wallet** triggers a **switch account event**.
18
+ - Switching **from a full wallet to a private key wallet** emits **no event**.
19
+
20
+ When connected to **both namespaces simultaneously**:
21
+ - Only the **first connected namespace** (e.g., EVM or Solana) properly receives events.
22
+ - The **second namespace** does **not** receive `accountsChanged` events.
23
+
24
+ #### ⚠️ Auto Connect
25
+ - **Auto connect is not supported**:
26
+ - On **Solana**, there is no silent reconnection mechanism.
27
+ - On **EVM**, the wallet always opens a popup when the dApp is not already connected.
28
+
29
+ ---
30
+
31
+ More wallet information can be found in [readme.md](../readme.md).
@@ -0,0 +1,44 @@
1
+ import { type ProviderInfo } from '@rango-dev/wallets-core';
2
+ import {
3
+ type BlockchainMeta,
4
+ evmBlockchains,
5
+ solanaBlockchain,
6
+ } from 'rango-types';
7
+
8
+ export const WALLET_ID = 'trust-wallet';
9
+
10
+ export const info: ProviderInfo = {
11
+ name: 'Trust Wallet',
12
+ icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/trustwallet/icon.svg',
13
+ extensions: {
14
+ chrome:
15
+ 'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',
16
+ brave:
17
+ 'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',
18
+ homepage: 'https://trustwallet.com/browser-extension',
19
+ },
20
+ properties: [
21
+ {
22
+ name: 'namespaces',
23
+ value: {
24
+ selection: 'multiple',
25
+ data: [
26
+ {
27
+ label: 'EVM',
28
+ value: 'EVM',
29
+ id: 'ETH',
30
+ getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
31
+ evmBlockchains(allBlockchains),
32
+ },
33
+ {
34
+ label: 'Solana',
35
+ value: 'Solana',
36
+ id: 'SOLANA',
37
+ getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
38
+ solanaBlockchain(allBlockchains),
39
+ },
40
+ ],
41
+ },
42
+ },
43
+ ],
44
+ };
@@ -1,5 +1,4 @@
1
1
  import type {
2
- CanEagerConnect,
3
2
  CanSwitchNetwork,
4
3
  Connect,
5
4
  Subscribe,
@@ -8,17 +7,21 @@ import type {
8
7
  } from '@rango-dev/wallets-shared';
9
8
  import type { BlockchainMeta, SignerFactory } from 'rango-types';
10
9
 
10
+ import { type LegacyProviderInterface } from '@rango-dev/wallets-core/legacy';
11
11
  import {
12
- canEagerlyConnectToEvm,
13
12
  canSwitchNetworkToEvm,
14
13
  getEvmAccounts,
15
14
  subscribeToEvm,
16
15
  switchNetworkForEvm,
17
16
  WalletTypes,
18
17
  } from '@rango-dev/wallets-shared';
19
- import { evmBlockchains } from 'rango-types';
18
+ import { evmBlockchains, solanaBlockchain } from 'rango-types';
19
+
20
+ import {
21
+ type Provider,
22
+ trustWallet as trustwallet_instance,
23
+ } from '../utils.js';
20
24
 
21
- import { trustWallet as trustwallet_instance } from './helpers.js';
22
25
  import signer from './signer.js';
23
26
 
24
27
  const WALLET = WalletTypes.TRUST_WALLET;
@@ -44,14 +47,15 @@ export const switchNetwork: SwitchNetwork = switchNetworkForEvm;
44
47
 
45
48
  export const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;
46
49
 
47
- export const getSigners: (provider: any) => Promise<SignerFactory> = signer;
48
-
49
- export const canEagerConnect: CanEagerConnect = canEagerlyConnectToEvm;
50
+ export const getSigners: (provider: Provider) => Promise<SignerFactory> =
51
+ signer;
50
52
 
51
53
  export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
52
54
  allBlockChains
53
55
  ) => {
54
56
  const evms = evmBlockchains(allBlockChains);
57
+ const solana = solanaBlockchain(allBlockChains);
58
+
55
59
  return {
56
60
  name: 'Trust Wallet',
57
61
  img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/trustwallet/icon.svg',
@@ -63,6 +67,38 @@ export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
63
67
  DEFAULT: 'https://trustwallet.com/browser-extension',
64
68
  },
65
69
  color: '#ffffff',
66
- supportedChains: evms,
70
+ supportedChains: [...evms, ...solana],
71
+ needsNamespace: {
72
+ selection: 'multiple',
73
+ data: [
74
+ {
75
+ label: 'EVM',
76
+ value: 'EVM',
77
+ id: 'ETH',
78
+ getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
79
+ evmBlockchains(allBlockchains),
80
+ },
81
+ {
82
+ label: 'Solana',
83
+ value: 'Solana',
84
+ id: 'SOLANA',
85
+ getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
86
+ solanaBlockchain(allBlockchains),
87
+ },
88
+ ],
89
+ },
67
90
  };
68
91
  };
92
+
93
+ const buildLegacyProvider: () => LegacyProviderInterface = () => ({
94
+ config,
95
+ getInstance,
96
+ connect,
97
+ subscribe,
98
+ switchNetwork,
99
+ canSwitchNetworkTo,
100
+ getSigners,
101
+ getWalletInfo,
102
+ });
103
+
104
+ export { buildLegacyProvider };
@@ -1,14 +1,22 @@
1
+ import type { Provider } from '../utils.js';
1
2
  import type { SignerFactory } from 'rango-types';
2
3
 
3
- import { getNetworkInstance, Networks } from '@rango-dev/wallets-shared';
4
+ import { LegacyNetworks as Networks } from '@rango-dev/wallets-core/legacy';
5
+ import { getNetworkInstance } from '@rango-dev/wallets-shared';
4
6
  import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
5
7
 
6
8
  export default async function getSigners(
7
- provider: any
9
+ provider: Provider
8
10
  ): Promise<SignerFactory> {
9
11
  const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);
12
+ const solProvider = getNetworkInstance(provider, Networks.SOLANA);
13
+
10
14
  const signers = new DefaultSignerFactory();
11
15
  const { DefaultEvmSigner } = await import('@rango-dev/signer-evm');
16
+ const { DefaultSolanaSigner } = await import('@rango-dev/signer-solana');
17
+
12
18
  signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));
19
+ signers.registerSigner(TxType.SOLANA, new DefaultSolanaSigner(solProvider));
20
+
13
21
  return signers;
14
22
  }
package/src/mod.ts ADDED
@@ -0,0 +1,12 @@
1
+ import { defineVersions } from '@rango-dev/wallets-core/utils';
2
+
3
+ import { buildLegacyProvider } from './legacy/index.js';
4
+ import { buildProvider } from './provider.js';
5
+
6
+ const versions = () =>
7
+ defineVersions()
8
+ .version('0.0.0', buildLegacyProvider())
9
+ .version('1.0.0', buildProvider())
10
+ .build();
11
+
12
+ export { versions };
@@ -0,0 +1,34 @@
1
+ import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';
2
+
3
+ import { NamespaceBuilder } from '@rango-dev/wallets-core';
4
+ import {
5
+ builders as commonBuilders,
6
+ standardizeAndThrowError,
7
+ } from '@rango-dev/wallets-core/namespaces/common';
8
+ import { actions, builders } from '@rango-dev/wallets-core/namespaces/evm';
9
+
10
+ import { WALLET_ID } from '../constants.js';
11
+ import { evmTrustWallet } from '../utils.js';
12
+
13
+ const [changeAccountSubscriber, changeAccountCleanup] =
14
+ actions.changeAccountSubscriber(evmTrustWallet);
15
+
16
+ const connect = builders
17
+ .connect()
18
+ .action(actions.connect(evmTrustWallet))
19
+ .before(changeAccountSubscriber)
20
+ .or(changeAccountCleanup)
21
+ .or(standardizeAndThrowError)
22
+ .build();
23
+
24
+ const disconnect = commonBuilders
25
+ .disconnect<EvmActions>()
26
+ .after(changeAccountCleanup)
27
+ .build();
28
+
29
+ const evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)
30
+ .action(connect)
31
+ .action(disconnect)
32
+ .build();
33
+
34
+ export { evm };
@@ -0,0 +1,34 @@
1
+ import type { SolanaActions } from '@rango-dev/wallets-core/namespaces/solana';
2
+
3
+ import { NamespaceBuilder } from '@rango-dev/wallets-core';
4
+ import {
5
+ builders as commonBuilders,
6
+ standardizeAndThrowError,
7
+ } from '@rango-dev/wallets-core/namespaces/common';
8
+ import { actions, builders } from '@rango-dev/wallets-core/namespaces/solana';
9
+
10
+ import { WALLET_ID } from '../constants.js';
11
+ import { solanaTrustWallet } from '../utils.js';
12
+
13
+ const [changeAccountSubscriber, changeAccountCleanup] =
14
+ actions.changeAccountSubscriber(solanaTrustWallet);
15
+
16
+ const connect = builders
17
+ .connect()
18
+ .action(actions.connect(solanaTrustWallet))
19
+ .before(changeAccountSubscriber)
20
+ .or(changeAccountCleanup)
21
+ .or(standardizeAndThrowError)
22
+ .build();
23
+
24
+ const disconnect = commonBuilders
25
+ .disconnect<SolanaActions>()
26
+ .after(changeAccountCleanup)
27
+ .build();
28
+
29
+ const solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)
30
+ .action(connect)
31
+ .action(disconnect)
32
+ .build();
33
+
34
+ export { solana };
@@ -0,0 +1,23 @@
1
+ import { ProviderBuilder } from '@rango-dev/wallets-core';
2
+
3
+ import { info, WALLET_ID } from './constants.js';
4
+ import { evm } from './namespaces/evm.js';
5
+ import { solana } from './namespaces/solana.js';
6
+ import { trustWallet as trustwalletInstance } from './utils.js';
7
+
8
+ const buildProvider = () =>
9
+ new ProviderBuilder(WALLET_ID)
10
+ .init(function (context) {
11
+ const [, setState] = context.state();
12
+
13
+ if (trustwalletInstance()) {
14
+ setState('installed', true);
15
+ console.debug('[trustwallet] instance detected.', context);
16
+ }
17
+ })
18
+ .config('info', info)
19
+ .add('evm', evm)
20
+ .add('solana', solana)
21
+ .build();
22
+
23
+ export { buildProvider };
package/src/utils.ts ADDED
@@ -0,0 +1,51 @@
1
+ import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
2
+ import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
3
+
4
+ import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
5
+
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ export type Provider = Record<string, any>;
8
+ export function trustWallet(): Provider | null {
9
+ const { trustwallet } = window;
10
+
11
+ if (!trustwallet || !(trustwallet?.isTrust || trustwallet?.isTrustWallet)) {
12
+ return null;
13
+ }
14
+
15
+ const instances = new Map();
16
+
17
+ instances.set(LegacyNetworks.ETHEREUM, trustwallet);
18
+ const { solana } = trustwallet;
19
+ if (solana && solana.isTrustWallet) {
20
+ instances.set(LegacyNetworks.SOLANA, solana);
21
+ }
22
+
23
+ return instances;
24
+ }
25
+
26
+ export function evmTrustWallet(): EvmProviderApi {
27
+ const instances = trustWallet();
28
+
29
+ const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);
30
+
31
+ if (!evmInstance) {
32
+ throw new Error(
33
+ 'TrustWallet not injected or EVM not enabled. Please check your wallet.'
34
+ );
35
+ }
36
+
37
+ return evmInstance as EvmProviderApi;
38
+ }
39
+
40
+ export function solanaTrustWallet(): SolanaProviderApi {
41
+ const instance = trustWallet();
42
+ const solanaInstance = instance?.get(LegacyNetworks.SOLANA);
43
+
44
+ if (!solanaInstance) {
45
+ throw new Error(
46
+ 'TrustWallet not injected or Solana not enabled. Please check your wallet.'
47
+ );
48
+ }
49
+
50
+ return solanaInstance as SolanaProviderApi;
51
+ }
package/dist/helpers.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare function trustWallet(): any;
2
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,QAO1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAML,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAKnE,eAAO,MAAM,MAAM;;CAElB,CAAC;AAEF,eAAO,MAAM,WAAW,6BAAuB,CAAC;AAGhD,eAAO,MAAM,OAAO,EAAE,OAMrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAA0B,CAAC;AAEnD,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,eAAwC,CAAC;AAEvE,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAiBjE,CAAC"}
package/dist/index.js DELETED
@@ -1,2 +0,0 @@
1
- var a=Object.defineProperty;var o=(t,e)=>a(t,"name",{value:e,configurable:!0});import{canEagerlyConnectToEvm as m,canSwitchNetworkToEvm as w,getEvmAccounts as u,subscribeToEvm as h,switchNetworkForEvm as f,WalletTypes as b}from"@rango-dev/wallets-shared";import{evmBlockchains as d}from"rango-types";function c(){let{trustwallet:t}=window;return t&&(t?.isTrust||t?.isTrustWallet)?t:null}o(c,"trustWallet");import{getNetworkInstance as i,Networks as l}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as p,TransactionType as g}from"rango-types";async function n(t){let e=i(t,l.ETHEREUM),r=new p,{DefaultEvmSigner:s}=await import("@rango-dev/signer-evm");return r.registerSigner(g.EVM,new s(e)),r}o(n,"getSigners");var y=b.TRUST_WALLET,L={type:y},A=c,B=o(async({instance:t})=>{let{accounts:e,chainId:r}=await u(t);return{accounts:e,chainId:r}},"connect"),M=h,j=f,R=w,D=n,P=m,U=o(t=>{let e=d(t);return{name:"Trust Wallet",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/trustwallet/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph",BRAVE:"https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph",DEFAULT:"https://trustwallet.com/browser-extension"},color:"#ffffff",supportedChains:e}},"getWalletInfo");export{P as canEagerConnect,R as canSwitchNetworkTo,L as config,B as connect,A as getInstance,D as getSigners,U as getWalletInfo,M as subscribe,j as switchNetwork};
2
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/index.ts", "../src/helpers.ts", "../src/signer.ts"],
4
- "sourcesContent": ["import type {\n CanEagerConnect,\n CanSwitchNetwork,\n Connect,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport {\n canEagerlyConnectToEvm,\n canSwitchNetworkToEvm,\n getEvmAccounts,\n subscribeToEvm,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { evmBlockchains } from 'rango-types';\n\nimport { trustWallet as trustwallet_instance } from './helpers.js';\nimport signer from './signer.js';\n\nconst WALLET = WalletTypes.TRUST_WALLET;\n\nexport const config = {\n type: WALLET,\n};\n\nexport const getInstance = trustwallet_instance;\n\n// doc: https://developer.trustwallet.com/trust-wallet-browser-extension/extension-guide\nexport const connect: Connect = async ({ instance }) => {\n const { accounts, chainId } = await getEvmAccounts(instance);\n return {\n accounts,\n chainId,\n };\n};\n\nexport const subscribe: Subscribe = subscribeToEvm;\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 = canEagerlyConnectToEvm;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n return {\n name: 'Trust Wallet',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/trustwallet/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',\n DEFAULT: 'https://trustwallet.com/browser-extension',\n },\n color: '#ffffff',\n supportedChains: evms,\n };\n};\n", "export function trustWallet() {\n const { trustwallet } = window;\n \n if (!!trustwallet && (trustwallet?.isTrust || trustwallet?.isTrustWallet)) {\n return trustwallet;\n }\n return null;\n}\n", "import type { SignerFactory } from 'rango-types';\n\nimport { getNetworkInstance, Networks } from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: any\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await import('@rango-dev/signer-evm');\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n return signers;\n}\n"],
5
- "mappings": "+EAUA,OACE,0BAAAA,EACA,yBAAAC,EACA,kBAAAC,EACA,kBAAAC,EACA,uBAAAC,EACA,eAAAC,MACK,4BACP,OAAS,kBAAAC,MAAsB,cClBxB,SAASC,GAAc,CAC5B,GAAM,CAAE,YAAAC,CAAY,EAAI,OAExB,OAAMA,IAAgBA,GAAa,SAAWA,GAAa,eAClDA,EAEF,IACT,CAPgBC,EAAAF,EAAA,eCEhB,OAAS,sBAAAG,EAAoB,YAAAC,MAAgB,4BAC7C,OAAS,wBAAAC,EAAsB,mBAAmBC,MAAc,cAEhE,eAAOC,EACLC,EACwB,CACxB,IAAMC,EAAcC,EAAmBF,EAAUG,EAAS,QAAQ,EAC5DC,EAAU,IAAIC,EACd,CAAE,iBAAAC,CAAiB,EAAI,KAAM,QAAO,uBAAuB,EACjE,OAAAF,EAAQ,eAAeG,EAAO,IAAK,IAAID,EAAiBL,CAAW,CAAC,EAC7DG,CACT,CAR8BI,EAAAT,EAAA,cFkB9B,IAAMU,EAASC,EAAY,aAEdC,EAAS,CACpB,KAAMF,CACR,EAEaG,EAAcC,EAGdC,EAAmBC,EAAA,MAAO,CAAE,SAAAC,CAAS,IAAM,CACtD,GAAM,CAAE,SAAAC,EAAU,QAAAC,CAAQ,EAAI,MAAMC,EAAeH,CAAQ,EAC3D,MAAO,CACL,SAAAC,EACA,QAAAC,CACF,CACF,EANgC,WAQnBE,EAAuBC,EAEvBC,EAA+BC,EAE/BC,EAAuCC,EAEvCC,EAAwDA,EAExDC,EAAmCC,EAEnCC,EAAkEd,EAC7Ee,GACG,CACH,IAAMC,EAAOC,EAAeF,CAAc,EAC1C,MAAO,CACL,KAAM,eACN,IAAK,4FACL,YAAa,CACX,OACE,0FACF,MACE,0FACF,QAAS,2CACX,EACA,MAAO,UACP,gBAAiBC,CACnB,CACF,EAjB+E",
6
- "names": ["canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "getEvmAccounts", "subscribeToEvm", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "trustWallet", "trustwallet", "__name", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "TxType", "__name", "WALLET", "WalletTypes", "config", "getInstance", "trustWallet", "connect", "__name", "instance", "accounts", "chainId", "getEvmAccounts", "subscribe", "subscribeToEvm", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "canEagerConnect", "canEagerlyConnectToEvm", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains"]
7
- }
package/dist/signer.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import type { SignerFactory } from 'rango-types';
2
- export default function getSigners(provider: any): Promise<SignerFactory>;
3
- //# sourceMappingURL=signer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAKjD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,GAAG,GACZ,OAAO,CAAC,aAAa,CAAC,CAMxB"}
package/src/helpers.ts DELETED
@@ -1,8 +0,0 @@
1
- export function trustWallet() {
2
- const { trustwallet } = window;
3
-
4
- if (!!trustwallet && (trustwallet?.isTrust || trustwallet?.isTrustWallet)) {
5
- return trustwallet;
6
- }
7
- return null;
8
- }