@rango-dev/provider-tron-link 0.57.1-next.0 → 0.57.1-next.2

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
+ export declare const tronActions: {
2
+ canEagerConnectAction: () => any;
3
+ };
4
+ //# sourceMappingURL=tron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../src/actions/tron.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,WAAW;;CAA4B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { TronChangeAccountEvent } from '../types.js';
2
+ import { ChangeAccountSubscriberBuilder } from '@rango-dev/wallets-core/namespaces/common';
3
+ import { type ProviderAPI, type TronActions } from '@rango-dev/wallets-core/namespaces/tron';
4
+ export declare const changeAccountSubscriber: (getInstance: () => ProviderAPI) => ChangeAccountSubscriberBuilder<MessageEvent<TronChangeAccountEvent>, ProviderAPI, TronActions>;
5
+ export declare const tronBuilders: {
6
+ changeAccountSubscriber: (getInstance: () => ProviderAPI) => ChangeAccountSubscriberBuilder<MessageEvent<TronChangeAccountEvent>, ProviderAPI, TronActions>;
7
+ };
8
+ //# sourceMappingURL=tron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../src/builders/tron.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAEjB,MAAM,yCAAyC,CAAC;AAIjD,eAAO,MAAM,uBAAuB,gBAAiB,MAAM,WAAW,mGA4BhE,CAAC;AAEP,eAAO,MAAM,YAAY;2CA9B4B,MAAM,WAAW;CA8Bf,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type ProviderMetadata } from '@rango-dev/wallets-core';
2
+ export declare const WALLET_ID = "tron-link";
3
+ export declare const TronOKRequestCode = 200;
4
+ export declare const TRONLINK_INJECTION_DELAY = 1000;
5
+ export declare const metadata: ProviderMetadata;
6
+ //# 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,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAMhE,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,QAAQ,EAAE,gBA+BtB,CAAC"}
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":"AAIA,QAAA,MAAM,QAAQ,kEAC8C,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,CAAC"}
package/dist/mod.js ADDED
@@ -0,0 +1,2 @@
1
+ var b=Object.defineProperty;var r=(e,o)=>b(e,"name",{value:o,configurable:!0});import{defineVersions as q}from"@rango-dev/wallets-core/utils";import{ProviderBuilder as W}from"@rango-dev/wallets-core";import"@rango-dev/wallets-core";import{tronBlockchain as L}from"rango-types";import{LegacyNetworks as k}from"@rango-dev/wallets-core/legacy";import{dynamicImportWithRefinedError as v,getNetworkInstance as A}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as P,TransactionType as E}from"rango-types";async function s(e){let o=A(e,k.TRON),t=new P,{DefaultTronSigner:h}=await v(async()=>await import("@rango-dev/signer-tron"));return t.registerSigner(E.TRON,new h(o)),t}r(s,"getSigners");import{LegacyNetworks as c}from"@rango-dev/wallets-core/legacy";function i(){let e=new Map,{tronLink:o}=window;return o?(e.set(c.TRON,o),e):null}r(i,"tronlink");function m(){let e=i();if(!e)throw new Error("TronLink is not injected. Please check your wallet.");return e}r(m,"getInstanceOrThrow");function n(){let o=i()?.get(c.TRON);if(!o)throw new Error("TronLink not injected or Tron not enabled. Please check your wallet.");return o}r(n,"tronTronlink");var a="tron-link",d=200,p=1e3,l={name:"TronLink",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/tronlink/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec",brave:"https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec",homepage:"https://www.tronlink.org"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"Tron",value:"Tron",id:"TRON",getSupportedChains:e=>L(e)}]}},{name:"signers",value:{getSigners:async()=>s(m())}}]};import{NamespaceBuilder as S}from"@rango-dev/wallets-core";import{builders as O,standardizeAndThrowError as R}from"@rango-dev/wallets-core/namespaces/common";import{utils as _}from"@rango-dev/wallets-core/namespaces/tron";import{builders as g}from"@rango-dev/wallets-core/namespaces/tron";var I=r(()=>{let e=n();if(!e)throw new Error("Trying to eagerly connect to your wallet, but seems its tron instance is not available.");return e.ready},"canEagerConnectAction"),u={canEagerConnectAction:I};import{ChangeAccountSubscriberBuilder as N}from"@rango-dev/wallets-core/namespaces/common";import{utils as x}from"@rango-dev/wallets-core/namespaces/tron";var C=r(e=>new N().getInstance(e).onSwitchAccount((o,t)=>{if(!o.payload?.data?.isTronLink||o.payload.data.message.action!=="accountsChanged"){o.preventDefault();return}(!o.payload?.data?.message.data.address||!n().ready)&&(o.preventDefault(),t.action("connect"))}).format(async(o,t)=>x.formatAccountsToCAIP([t.data.message.data.address])).addEventListener((o,t)=>{window.addEventListener("message",t)}).removeEventListener((o,t)=>{window.removeEventListener("message",t)}),"changeAccountSubscriber"),f={changeAccountSubscriber:C};var[B,T]=f.changeAccountSubscriber(n).build(),D=g.connect().action(async()=>{let e=n(),o=await e.request({method:"tron_requestAccounts"});if(!o)throw new Error("Please unlock your TronLink extension first.");if(o?.code&&o.message&&o.code!==d)throw new Error(o.message);return _.formatAccountsToCAIP([e.tronWeb.defaultAddress.base58])}).before(B).or(R).or(T).build(),j=g.canEagerConnect().action(u.canEagerConnectAction).build(),M=O.disconnect().after(T).build(),w=new S("Tron",a).action(D).action(M).action(j).build();var y=r(()=>new W(a).init(function(e){let[,o]=e.state();setTimeout(()=>{i()&&(o("installed",!0),console.debug("[tron-link] instance detected.",e))},p)}).config("metadata",l).add("tron",w).build(),"buildProvider");var Io=r(()=>q().version("1.0.0",y()).build(),"versions");export{Io as versions};
2
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/mod.ts", "../src/provider.ts", "../src/constants.ts", "../src/signer.ts", "../src/utils.ts", "../src/namespaces/tron.ts", "../src/actions/tron.ts", "../src/builders/tron.ts"],
4
+ "sourcesContent": ["import { defineVersions } from '@rango-dev/wallets-core/utils';\n\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions().version('1.0.0', buildProvider()).build();\n\nexport { versions };\n", "import { ProviderBuilder } from '@rango-dev/wallets-core';\n\nimport { metadata, TRONLINK_INJECTION_DELAY, WALLET_ID } from './constants.js';\nimport { tron } from './namespaces/tron.js';\nimport { tronlink } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n setTimeout(() => {\n if (tronlink()) {\n setState('installed', true);\n console.debug('[tron-link] instance detected.', context);\n }\n }, TRONLINK_INJECTION_DELAY);\n })\n .config('metadata', metadata)\n .add('tron', tron)\n .build();\n\nexport { buildProvider };\n", "import { type ProviderMetadata } from '@rango-dev/wallets-core';\nimport { type BlockchainMeta, tronBlockchain } from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'tron-link';\nexport const TronOKRequestCode = 200;\nexport const TRONLINK_INJECTION_DELAY = 1000;\nexport const metadata: ProviderMetadata = {\n name: 'TronLink',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/tronlink/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',\n brave:\n 'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',\n homepage: 'https://www.tronlink.org',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'Tron',\n value: 'Tron',\n id: 'TRON',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n tronBlockchain(allBlockchains),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { SignerFactory } from 'rango-types';\n\nimport {\n type LegacyNetworkProviderMap,\n LegacyNetworks,\n} from '@rango-dev/wallets-core/legacy';\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: LegacyNetworkProviderMap\n): Promise<SignerFactory> {\n const tronProvider = getNetworkInstance(provider, LegacyNetworks.TRON);\n const signers = new DefaultSignerFactory();\n const { DefaultTronSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-tron')\n );\n signers.registerSigner(TxType.TRON, new DefaultTronSigner(tronProvider));\n return signers;\n}\n", "import type { Provider } from './types.js';\nimport type { ProviderAPI as TronProviderApi } from '@rango-dev/wallets-core/namespaces/tron';\n\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\n\nexport function tronlink(): Provider | null {\n const instances: Provider = new Map();\n const { tronLink } = window;\n\n if (!tronLink) {\n return null;\n }\n\n instances.set(LegacyNetworks.TRON, tronLink);\n\n return instances;\n}\n\nexport function getInstanceOrThrow(): Provider {\n const instances = tronlink();\n\n if (!instances) {\n throw new Error('TronLink is not injected. Please check your wallet.');\n }\n\n return instances;\n}\n\nexport function tronTronlink(): TronProviderApi {\n const instance = tronlink();\n const tronInstance = instance?.get(LegacyNetworks.TRON);\n\n if (!tronInstance) {\n throw new Error(\n 'TronLink not injected or Tron not enabled. Please check your wallet.'\n );\n }\n\n return tronInstance;\n}\n", "import { NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport {\n type TronActions,\n utils,\n} from '@rango-dev/wallets-core/namespaces/tron';\nimport { builders } from '@rango-dev/wallets-core/namespaces/tron';\n\nimport { tronActions } from '../actions/tron.js';\nimport { tronBuilders } from '../builders/tron.js';\nimport { TronOKRequestCode, WALLET_ID } from '../constants.js';\nimport { tronTronlink } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = tronBuilders\n .changeAccountSubscriber(tronTronlink)\n .build();\n\nconst connect = builders\n .connect()\n .action(async () => {\n const instance = tronTronlink();\n const accountsResult = await instance.request({\n method: 'tron_requestAccounts',\n });\n if (!accountsResult) {\n throw new Error('Please unlock your TronLink extension first.');\n }\n\n if (\n !!accountsResult?.code &&\n !!accountsResult.message &&\n accountsResult.code !== TronOKRequestCode\n ) {\n throw new Error(accountsResult.message);\n }\n return utils.formatAccountsToCAIP([instance.tronWeb.defaultAddress.base58]);\n })\n .before(changeAccountSubscriber)\n .or(standardizeAndThrowError)\n .or(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = builders\n .canEagerConnect()\n .action(tronActions.canEagerConnectAction)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<TronActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst tron = new NamespaceBuilder<TronActions>('Tron', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .build();\n\nexport { tron };\n", "import { tronTronlink } from '../utils.js';\n\nconst canEagerConnectAction = () => {\n const tronInstance = tronTronlink();\n // Making sure that the Tron instance is available first to prevent errors.\n if (!tronInstance) {\n throw new Error(\n 'Trying to eagerly connect to your wallet, but seems its tron instance is not available.'\n );\n }\n return tronInstance.ready;\n};\nexport const tronActions = { canEagerConnectAction };\n", "import type { TronChangeAccountEvent } from '../types.js';\n\nimport { ChangeAccountSubscriberBuilder } from '@rango-dev/wallets-core/namespaces/common';\nimport {\n type ProviderAPI,\n type TronActions,\n utils,\n} from '@rango-dev/wallets-core/namespaces/tron';\n\nimport { tronTronlink } from '../utils.js';\n\nexport const changeAccountSubscriber = (getInstance: () => ProviderAPI) =>\n new ChangeAccountSubscriberBuilder<\n MessageEvent<TronChangeAccountEvent>,\n ProviderAPI,\n TronActions\n >()\n .getInstance(getInstance)\n .onSwitchAccount((event, context) => {\n if (\n !event.payload?.data?.isTronLink ||\n event.payload.data.message.action !== 'accountsChanged'\n ) {\n event.preventDefault();\n return;\n }\n if (!event.payload?.data?.message.data.address || !tronTronlink().ready) {\n event.preventDefault();\n void context.action('connect');\n }\n })\n .format(async (_, event) =>\n utils.formatAccountsToCAIP([event.data.message.data.address])\n )\n .addEventListener((_, callback) => {\n window.addEventListener('message', callback);\n })\n .removeEventListener((_, callback) => {\n window.removeEventListener('message', callback);\n });\n\nexport const tronBuilders = { changeAccountSubscriber };\n"],
5
+ "mappings": "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",
6
+ "names": ["defineVersions", "ProviderBuilder", "tronBlockchain", "LegacyNetworks", "dynamicImportWithRefinedError", "getNetworkInstance", "DefaultSignerFactory", "TxType", "getSigners", "provider", "tronProvider", "getNetworkInstance", "LegacyNetworks", "signers", "DefaultSignerFactory", "DefaultTronSigner", "dynamicImportWithRefinedError", "TxType", "__name", "LegacyNetworks", "tronlink", "instances", "tronLink", "LegacyNetworks", "__name", "getInstanceOrThrow", "tronTronlink", "tronInstance", "WALLET_ID", "TronOKRequestCode", "TRONLINK_INJECTION_DELAY", "metadata", "allBlockchains", "tronBlockchain", "getSigners", "getInstanceOrThrow", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "utils", "builders", "canEagerConnectAction", "__name", "tronInstance", "tronTronlink", "tronActions", "ChangeAccountSubscriberBuilder", "utils", "changeAccountSubscriber", "__name", "getInstance", "ChangeAccountSubscriberBuilder", "event", "context", "tronTronlink", "_", "utils", "callback", "tronBuilders", "changeAccountSubscriber", "changeAccountCleanup", "tronBuilders", "tronTronlink", "connect", "builders", "instance", "accountsResult", "TronOKRequestCode", "utils", "standardizeAndThrowError", "canEagerConnect", "tronActions", "disconnect", "commonBuilders", "tron", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "tronlink", "TRONLINK_INJECTION_DELAY", "metadata", "tron", "versions", "__name", "defineVersions", "buildProvider"]
7
+ }
@@ -0,0 +1,4 @@
1
+ import { type TronActions } from '@rango-dev/wallets-core/namespaces/tron';
2
+ declare const tron: import("@rango-dev/wallets-core").ProxiedNamespace<TronActions>;
3
+ export { tron };
4
+ //# sourceMappingURL=tron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../src/namespaces/tron.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,yCAAyC,CAAC;AA+CjD,QAAA,MAAM,IAAI,iEAIA,CAAC;AAEX,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"inputs":{"src/helpers.ts":{"bytes":112,"imports":[{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":415,"imports":[{"path":"@rango-dev/signer-tron","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":2412,"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":4980},"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/signer-tron","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true}],"exports":["canSwitchNetworkTo","config","connect","getInstance","getSigners","getWalletInfo","subscribe"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":1170},"src/helpers.ts":{"bytesInOutput":67},"src/signer.ts":{"bytesInOutput":224}},"bytes":1699}}}
1
+ {"inputs":{"src/signer.ts":{"bytes":784,"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-tron","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":943,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":1252,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/actions/tron.ts":{"bytes":437,"imports":[{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/builders/tron.ts":{"bytes":1297,"imports":[{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/tron","kind":"import-statement","external":true},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/namespaces/tron.ts":{"bytes":1733,"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/tron","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/tron","kind":"import-statement","external":true},{"path":"src/actions/tron.ts","kind":"import-statement","original":"../actions/tron.js"},{"path":"src/builders/tron.ts","kind":"import-statement","original":"../builders/tron.js"},{"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":670,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"src/namespaces/tron.ts","kind":"import-statement","original":"./namespaces/tron.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/mod.ts":{"bytes":220,"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"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":12451},"dist/mod.js":{"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","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/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-tron","kind":"dynamic-import","external":true},{"path":"@rango-dev/wallets-core/legacy","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/tron","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/tron","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/tron","kind":"import-statement","external":true}],"exports":["versions"],"entryPoint":"src/mod.ts","inputs":{"src/mod.ts":{"bytesInOutput":121},"src/provider.ts":{"bytesInOutput":271},"src/constants.ts":{"bytesInOutput":641},"src/signer.ts":{"bytesInOutput":420},"src/utils.ts":{"bytesInOutput":455},"src/namespaces/tron.ts":{"bytesInOutput":807},"src/actions/tron.ts":{"bytesInOutput":205},"src/builders/tron.ts":{"bytesInOutput":685}},"bytes":3740}}}
@@ -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":"AAMA,QAAA,MAAM,aAAa,kDAaP,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,CAAC"}
package/dist/signer.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  import type { SignerFactory } from 'rango-types';
2
- export default function getSigners(provider: any): Promise<SignerFactory>;
2
+ import { type LegacyNetworkProviderMap } from '@rango-dev/wallets-core/legacy';
3
+ export default function getSigners(provider: LegacyNetworkProviderMap): Promise<SignerFactory>;
3
4
  //# sourceMappingURL=signer.d.ts.map
@@ -1 +1 @@
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,CAIxB"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,gCAAgC,CAAC;AAOxC,wBAA8B,UAAU,CACtC,QAAQ,EAAE,wBAAwB,GACjC,OAAO,CAAC,aAAa,CAAC,CAQxB"}
@@ -0,0 +1,16 @@
1
+ import type { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
2
+ import type { ProviderAPI as TronProviderApi } from '@rango-dev/wallets-core/namespaces/tron';
3
+ export type ProviderObject = {
4
+ [LegacyNetworks.TRON]: TronProviderApi;
5
+ };
6
+ export type Provider = Map<keyof ProviderObject, ProviderObject[keyof ProviderObject]>;
7
+ export type TronChangeAccountEvent = {
8
+ isTronLink: boolean;
9
+ message: {
10
+ action: string;
11
+ data: {
12
+ address: string;
13
+ };
14
+ };
15
+ };
16
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE9F,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;CACxC,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,GAAG,CACxB,MAAM,cAAc,EACpB,cAAc,CAAC,MAAM,cAAc,CAAC,CACrC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE;YACJ,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;CACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Provider } from './types.js';
2
+ import type { ProviderAPI as TronProviderApi } from '@rango-dev/wallets-core/namespaces/tron';
3
+ export declare function tronlink(): Provider | null;
4
+ export declare function getInstanceOrThrow(): Provider;
5
+ export declare function tronTronlink(): TronProviderApi;
6
+ //# 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,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAI9F,wBAAgB,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAW1C;AAED,wBAAgB,kBAAkB,IAAI,QAAQ,CAQ7C;AAED,wBAAgB,YAAY,IAAI,eAAe,CAW9C"}
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@rango-dev/provider-tron-link",
3
- "version": "0.57.1-next.0",
3
+ "version": "0.57.1-next.2",
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-tron-link",
17
+ "build": "node ../../scripts/build/command.mjs --path wallets/provider-tron-link --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}'",
@@ -22,8 +22,9 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@rango-dev/signer-tron": "^0.39.0",
25
- "@rango-dev/wallets-shared": "^0.57.1-next.0",
26
- "rango-types": "^0.1.89"
25
+ "@rango-dev/wallets-core": "^0.56.1-next.1",
26
+ "@rango-dev/wallets-shared": "^0.57.1-next.1",
27
+ "rango-types": "^0.1.92"
27
28
  },
28
29
  "publishConfig": {
29
30
  "access": "public"
package/readme.md CHANGED
@@ -1 +1,21 @@
1
- # @rango-dev/provider-tron-link
1
+ # TronLink
2
+ TronLink integration for hub.
3
+ [Homepage](https://www.tronlink.org/) | [Docs](https://docs.tronlink.org/)
4
+
5
+ More about implementation status can be found [here](../readme.md).
6
+
7
+ ## Implementation notes/limitations
8
+
9
+
10
+ ### Feature
11
+
12
+ #### ⚠️ Cross Browser
13
+ TronLink is **only available on Chromium-based browsers**
14
+ (e.g., Chrome, Brave, Edge).
15
+ It is **not supported** on Firefox or Safari.
16
+
17
+ All other features—including connect, auto connect, account retrieval, switching accounts, and signing—work without any known limitations.
18
+
19
+ ---
20
+
21
+ More wallet information can be found in [readme.md](../readme.md).
@@ -0,0 +1,13 @@
1
+ import { tronTronlink } from '../utils.js';
2
+
3
+ const canEagerConnectAction = () => {
4
+ const tronInstance = tronTronlink();
5
+ // Making sure that the Tron instance is available first to prevent errors.
6
+ if (!tronInstance) {
7
+ throw new Error(
8
+ 'Trying to eagerly connect to your wallet, but seems its tron instance is not available.'
9
+ );
10
+ }
11
+ return tronInstance.ready;
12
+ };
13
+ export const tronActions = { canEagerConnectAction };
@@ -0,0 +1,42 @@
1
+ import type { TronChangeAccountEvent } from '../types.js';
2
+
3
+ import { ChangeAccountSubscriberBuilder } from '@rango-dev/wallets-core/namespaces/common';
4
+ import {
5
+ type ProviderAPI,
6
+ type TronActions,
7
+ utils,
8
+ } from '@rango-dev/wallets-core/namespaces/tron';
9
+
10
+ import { tronTronlink } from '../utils.js';
11
+
12
+ export const changeAccountSubscriber = (getInstance: () => ProviderAPI) =>
13
+ new ChangeAccountSubscriberBuilder<
14
+ MessageEvent<TronChangeAccountEvent>,
15
+ ProviderAPI,
16
+ TronActions
17
+ >()
18
+ .getInstance(getInstance)
19
+ .onSwitchAccount((event, context) => {
20
+ if (
21
+ !event.payload?.data?.isTronLink ||
22
+ event.payload.data.message.action !== 'accountsChanged'
23
+ ) {
24
+ event.preventDefault();
25
+ return;
26
+ }
27
+ if (!event.payload?.data?.message.data.address || !tronTronlink().ready) {
28
+ event.preventDefault();
29
+ void context.action('connect');
30
+ }
31
+ })
32
+ .format(async (_, event) =>
33
+ utils.formatAccountsToCAIP([event.data.message.data.address])
34
+ )
35
+ .addEventListener((_, callback) => {
36
+ window.addEventListener('message', callback);
37
+ })
38
+ .removeEventListener((_, callback) => {
39
+ window.removeEventListener('message', callback);
40
+ });
41
+
42
+ export const tronBuilders = { changeAccountSubscriber };
@@ -0,0 +1,41 @@
1
+ import { type ProviderMetadata } from '@rango-dev/wallets-core';
2
+ import { type BlockchainMeta, tronBlockchain } from 'rango-types';
3
+
4
+ import getSigners from './signer.js';
5
+ import { getInstanceOrThrow } from './utils.js';
6
+
7
+ export const WALLET_ID = 'tron-link';
8
+ export const TronOKRequestCode = 200;
9
+ export const TRONLINK_INJECTION_DELAY = 1000;
10
+ export const metadata: ProviderMetadata = {
11
+ name: 'TronLink',
12
+ icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/tronlink/icon.svg',
13
+ extensions: {
14
+ chrome:
15
+ 'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',
16
+ brave:
17
+ 'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',
18
+ homepage: 'https://www.tronlink.org',
19
+ },
20
+ properties: [
21
+ {
22
+ name: 'namespaces',
23
+ value: {
24
+ selection: 'multiple',
25
+ data: [
26
+ {
27
+ label: 'Tron',
28
+ value: 'Tron',
29
+ id: 'TRON',
30
+ getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
31
+ tronBlockchain(allBlockchains),
32
+ },
33
+ ],
34
+ },
35
+ },
36
+ {
37
+ name: 'signers',
38
+ value: { getSigners: async () => getSigners(getInstanceOrThrow()) },
39
+ },
40
+ ],
41
+ };
package/src/mod.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { defineVersions } from '@rango-dev/wallets-core/utils';
2
+
3
+ import { buildProvider } from './provider.js';
4
+
5
+ const versions = () =>
6
+ defineVersions().version('1.0.0', buildProvider()).build();
7
+
8
+ export { versions };
@@ -0,0 +1,62 @@
1
+ import { NamespaceBuilder } from '@rango-dev/wallets-core';
2
+ import {
3
+ builders as commonBuilders,
4
+ standardizeAndThrowError,
5
+ } from '@rango-dev/wallets-core/namespaces/common';
6
+ import {
7
+ type TronActions,
8
+ utils,
9
+ } from '@rango-dev/wallets-core/namespaces/tron';
10
+ import { builders } from '@rango-dev/wallets-core/namespaces/tron';
11
+
12
+ import { tronActions } from '../actions/tron.js';
13
+ import { tronBuilders } from '../builders/tron.js';
14
+ import { TronOKRequestCode, WALLET_ID } from '../constants.js';
15
+ import { tronTronlink } from '../utils.js';
16
+
17
+ const [changeAccountSubscriber, changeAccountCleanup] = tronBuilders
18
+ .changeAccountSubscriber(tronTronlink)
19
+ .build();
20
+
21
+ const connect = builders
22
+ .connect()
23
+ .action(async () => {
24
+ const instance = tronTronlink();
25
+ const accountsResult = await instance.request({
26
+ method: 'tron_requestAccounts',
27
+ });
28
+ if (!accountsResult) {
29
+ throw new Error('Please unlock your TronLink extension first.');
30
+ }
31
+
32
+ if (
33
+ !!accountsResult?.code &&
34
+ !!accountsResult.message &&
35
+ accountsResult.code !== TronOKRequestCode
36
+ ) {
37
+ throw new Error(accountsResult.message);
38
+ }
39
+ return utils.formatAccountsToCAIP([instance.tronWeb.defaultAddress.base58]);
40
+ })
41
+ .before(changeAccountSubscriber)
42
+ .or(standardizeAndThrowError)
43
+ .or(changeAccountCleanup)
44
+ .build();
45
+
46
+ const canEagerConnect = builders
47
+ .canEagerConnect()
48
+ .action(tronActions.canEagerConnectAction)
49
+ .build();
50
+
51
+ const disconnect = commonBuilders
52
+ .disconnect<TronActions>()
53
+ .after(changeAccountCleanup)
54
+ .build();
55
+
56
+ const tron = new NamespaceBuilder<TronActions>('Tron', WALLET_ID)
57
+ .action(connect)
58
+ .action(disconnect)
59
+ .action(canEagerConnect)
60
+ .build();
61
+
62
+ export { tron };
@@ -0,0 +1,22 @@
1
+ import { ProviderBuilder } from '@rango-dev/wallets-core';
2
+
3
+ import { metadata, TRONLINK_INJECTION_DELAY, WALLET_ID } from './constants.js';
4
+ import { tron } from './namespaces/tron.js';
5
+ import { tronlink } from './utils.js';
6
+
7
+ const buildProvider = () =>
8
+ new ProviderBuilder(WALLET_ID)
9
+ .init(function (context) {
10
+ const [, setState] = context.state();
11
+ setTimeout(() => {
12
+ if (tronlink()) {
13
+ setState('installed', true);
14
+ console.debug('[tron-link] instance detected.', context);
15
+ }
16
+ }, TRONLINK_INJECTION_DELAY);
17
+ })
18
+ .config('metadata', metadata)
19
+ .add('tron', tron)
20
+ .build();
21
+
22
+ export { buildProvider };
package/src/signer.ts CHANGED
@@ -1,12 +1,23 @@
1
1
  import type { SignerFactory } from 'rango-types';
2
2
 
3
- import { DefaultTronSigner } from '@rango-dev/signer-tron';
3
+ import {
4
+ type LegacyNetworkProviderMap,
5
+ LegacyNetworks,
6
+ } from '@rango-dev/wallets-core/legacy';
7
+ import {
8
+ dynamicImportWithRefinedError,
9
+ getNetworkInstance,
10
+ } from '@rango-dev/wallets-shared';
4
11
  import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
5
12
 
6
13
  export default async function getSigners(
7
- provider: any
14
+ provider: LegacyNetworkProviderMap
8
15
  ): Promise<SignerFactory> {
16
+ const tronProvider = getNetworkInstance(provider, LegacyNetworks.TRON);
9
17
  const signers = new DefaultSignerFactory();
10
- signers.registerSigner(TxType.TRON, new DefaultTronSigner(provider));
18
+ const { DefaultTronSigner } = await dynamicImportWithRefinedError(
19
+ async () => await import('@rango-dev/signer-tron')
20
+ );
21
+ signers.registerSigner(TxType.TRON, new DefaultTronSigner(tronProvider));
11
22
  return signers;
12
23
  }
package/src/types.ts ADDED
@@ -0,0 +1,20 @@
1
+ import type { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
2
+ import type { ProviderAPI as TronProviderApi } from '@rango-dev/wallets-core/namespaces/tron';
3
+
4
+ export type ProviderObject = {
5
+ [LegacyNetworks.TRON]: TronProviderApi;
6
+ };
7
+ export type Provider = Map<
8
+ keyof ProviderObject,
9
+ ProviderObject[keyof ProviderObject]
10
+ >;
11
+
12
+ export type TronChangeAccountEvent = {
13
+ isTronLink: boolean;
14
+ message: {
15
+ action: string;
16
+ data: {
17
+ address: string;
18
+ };
19
+ };
20
+ };
package/src/utils.ts ADDED
@@ -0,0 +1,40 @@
1
+ import type { Provider } from './types.js';
2
+ import type { ProviderAPI as TronProviderApi } from '@rango-dev/wallets-core/namespaces/tron';
3
+
4
+ import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
5
+
6
+ export function tronlink(): Provider | null {
7
+ const instances: Provider = new Map();
8
+ const { tronLink } = window;
9
+
10
+ if (!tronLink) {
11
+ return null;
12
+ }
13
+
14
+ instances.set(LegacyNetworks.TRON, tronLink);
15
+
16
+ return instances;
17
+ }
18
+
19
+ export function getInstanceOrThrow(): Provider {
20
+ const instances = tronlink();
21
+
22
+ if (!instances) {
23
+ throw new Error('TronLink is not injected. Please check your wallet.');
24
+ }
25
+
26
+ return instances;
27
+ }
28
+
29
+ export function tronTronlink(): TronProviderApi {
30
+ const instance = tronlink();
31
+ const tronInstance = instance?.get(LegacyNetworks.TRON);
32
+
33
+ if (!tronInstance) {
34
+ throw new Error(
35
+ 'TronLink not injected or Tron not enabled. Please check your wallet.'
36
+ );
37
+ }
38
+
39
+ return tronInstance;
40
+ }
package/dist/helpers.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare function tronLink(): 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,QAAQ,QAIvB"}
package/dist/index.d.ts DELETED
@@ -1,15 +0,0 @@
1
- import type { CanSwitchNetwork, Connect, Subscribe, WalletInfo } from '@rango-dev/wallets-shared';
2
- import type { BlockchainMeta, SignerFactory } from 'rango-types';
3
- import { Networks, WalletTypes } from '@rango-dev/wallets-shared';
4
- import { tronLink as tronLink_instance } from './helpers.js';
5
- export declare const config: {
6
- type: WalletTypes;
7
- defaultNetwork: Networks;
8
- };
9
- export declare const getInstance: typeof tronLink_instance;
10
- export declare const connect: Connect;
11
- export declare const subscribe: Subscribe;
12
- export declare const canSwitchNetworkTo: CanSwitchNetwork;
13
- export declare const getSigners: (provider: any) => Promise<SignerFactory>;
14
- export declare const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo;
15
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAS7D,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,WAAW,0BAAoB,CAAC;AAE7C,eAAO,MAAM,OAAO,EAAE,OAerB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAevB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,gBAA8B,CAAC;AAEhE,eAAO,MAAM,UAAU,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,aAAa,CAAU,CAAC;AAE5E,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAiBjE,CAAC"}
package/dist/index.js DELETED
@@ -1,2 +0,0 @@
1
- var c=Object.defineProperty;var o=(e,t)=>c(e,"name",{value:t,configurable:!0});import{Networks as i,WalletTypes as g}from"@rango-dev/wallets-shared";import{tronBlockchain as d}from"rango-types";function a(){let{tronLink:e}=window;return e||null}o(a,"tronLink");import{DefaultTronSigner as l}from"@rango-dev/signer-tron";import{DefaultSignerFactory as m,TransactionType as p}from"rango-types";async function s(e){let t=new m;return t.registerSigner(p.TRON,new l(e)),t}o(s,"getSigners");var f=g.TRON_LINK,E={type:f,defaultNetwork:i.TRON},N=a,O=o(async({instance:e})=>{let t;if(e&&!e.ready){if(t=await e.request({method:"tron_requestAccounts"}),!t)throw new Error("Please unlock your TronLink extension first.");if(t?.code!==200&&t.message)throw new Error(t.message)}let r=e.tronWeb.defaultAddress.base58;return{accounts:r?[r]:[],chainId:i.TRON}},"connect"),F=o(({updateAccounts:e,disconnect:t})=>{window.addEventListener("message",n=>{if(n.data.isTronLink&&n.data.message&&n.data.message.action=="accountsChanged"){let r=n?.data?.message?.data?.address;r?e([r]):t()}})},"subscribe"),I=o(()=>!1,"canSwitchNetworkTo"),R=s,W=o(e=>{let t=d(e);return{name:"TronLink",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/tronlink/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec",BRAVE:"https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec",DEFAULT:"https://www.tronlink.org"},color:"#96e7ed",supportedChains:t}},"getWalletInfo");export{I as canSwitchNetworkTo,E as config,O as connect,N as getInstance,R as getSigners,W as getWalletInfo,F as subscribe};
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 CanSwitchNetwork,\n Connect,\n Subscribe,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport { Networks, WalletTypes } from '@rango-dev/wallets-shared';\nimport { tronBlockchain } from 'rango-types';\n\nimport { tronLink as tronLink_instance } from './helpers.js';\nimport signer from './signer.js';\n\n/*\n * https://docs.tronlink.org/dapp/start-developing\n * https://developers.tron.network/docs/tronlink-events\n */\nconst WALLET = WalletTypes.TRON_LINK;\n\nexport const config = {\n type: WALLET,\n defaultNetwork: Networks.TRON,\n};\n\nexport const getInstance = tronLink_instance;\n\nexport const connect: Connect = async ({ instance }) => {\n let r = undefined;\n const SUCCESS_CODE = 200;\n if (!!instance && !instance.ready) {\n r = await instance.request({ method: 'tron_requestAccounts' });\n if (!r) {\n throw new Error('Please unlock your TronLink extension first.');\n }\n if (r?.code !== SUCCESS_CODE && !!r.message) {\n throw new Error(r.message);\n }\n }\n const address = instance.tronWeb.defaultAddress.base58;\n // TODO check connected network\n return { accounts: address ? [address] : [], chainId: Networks.TRON };\n};\n\nexport const subscribe: Subscribe = ({ updateAccounts, disconnect }) => {\n window.addEventListener('message', (e) => {\n if (\n e.data.isTronLink &&\n e.data.message &&\n e.data.message.action == 'accountsChanged'\n ) {\n const account = e?.data?.message?.data?.address;\n if (account) {\n updateAccounts([account]);\n } else {\n disconnect();\n }\n }\n });\n};\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = () => false;\n\nexport const getSigners: (provider: any) => Promise<SignerFactory> = signer;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const tron = tronBlockchain(allBlockChains);\n return {\n name: 'TronLink',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/tronlink/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',\n DEFAULT: 'https://www.tronlink.org',\n },\n color: '#96e7ed',\n supportedChains: tron,\n };\n};\n", "export function tronLink() {\n const { tronLink } = window;\n if (!!tronLink) return tronLink;\n return null;\n}\n", "import type { SignerFactory } from 'rango-types';\n\nimport { DefaultTronSigner } from '@rango-dev/signer-tron';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: any\n): Promise<SignerFactory> {\n const signers = new DefaultSignerFactory();\n signers.registerSigner(TxType.TRON, new DefaultTronSigner(provider));\n return signers;\n}\n"],
5
- "mappings": "+EAQA,OAAS,YAAAA,EAAU,eAAAC,MAAmB,4BACtC,OAAS,kBAAAC,MAAsB,cCTxB,SAASC,GAAW,CACzB,GAAM,CAAE,SAAAA,CAAS,EAAI,OACrB,OAAMA,GACC,IACT,CAJgBC,EAAAD,EAAA,YCEhB,OAAS,qBAAAE,MAAyB,yBAClC,OAAS,wBAAAC,EAAsB,mBAAmBC,MAAc,cAEhE,eAAOC,EACLC,EACwB,CACxB,IAAMC,EAAU,IAAIC,EACpB,OAAAD,EAAQ,eAAeE,EAAO,KAAM,IAAIC,EAAkBJ,CAAQ,CAAC,EAC5DC,CACT,CAN8BI,EAAAN,EAAA,cFa9B,IAAMO,EAASC,EAAY,UAEdC,EAAS,CACpB,KAAMF,EACN,eAAgBG,EAAS,IAC3B,EAEaC,EAAcC,EAEdC,EAAmBC,EAAA,MAAO,CAAE,SAAAC,CAAS,IAAM,CACtD,IAAIC,EAEJ,GAAMD,GAAY,CAACA,EAAS,MAAO,CAEjC,GADAC,EAAI,MAAMD,EAAS,QAAQ,CAAE,OAAQ,sBAAuB,CAAC,EACzD,CAACC,EACH,MAAM,IAAI,MAAM,8CAA8C,EAEhE,GAAIA,GAAG,OAAS,KAAkBA,EAAE,QAClC,MAAM,IAAI,MAAMA,EAAE,OAAO,CAE7B,CACA,IAAMC,EAAUF,EAAS,QAAQ,eAAe,OAEhD,MAAO,CAAE,SAAUE,EAAU,CAACA,CAAO,EAAI,CAAC,EAAG,QAASP,EAAS,IAAK,CACtE,EAfgC,WAiBnBQ,EAAuBJ,EAAA,CAAC,CAAE,eAAAK,EAAgB,WAAAC,CAAW,IAAM,CACtE,OAAO,iBAAiB,UAAYC,GAAM,CACxC,GACEA,EAAE,KAAK,YACPA,EAAE,KAAK,SACPA,EAAE,KAAK,QAAQ,QAAU,kBACzB,CACA,IAAMC,EAAUD,GAAG,MAAM,SAAS,MAAM,QACpCC,EACFH,EAAe,CAACG,CAAO,CAAC,EAExBF,EAAW,CAEf,CACF,CAAC,CACH,EAfoC,aAiBvBG,EAAuCT,EAAA,IAAM,GAAN,sBAEvCU,EAAwDA,EAExDC,EAAkEX,EAC7EY,GACG,CACH,IAAMC,EAAOC,EAAeF,CAAc,EAC1C,MAAO,CACL,KAAM,WACN,IAAK,yFACL,YAAa,CACX,OACE,sFACF,MACE,sFACF,QAAS,0BACX,EACA,MAAO,UACP,gBAAiBC,CACnB,CACF,EAjB+E",
6
- "names": ["Networks", "WalletTypes", "tronBlockchain", "tronLink", "__name", "DefaultTronSigner", "DefaultSignerFactory", "TxType", "getSigners", "provider", "signers", "DefaultSignerFactory", "TxType", "DefaultTronSigner", "__name", "WALLET", "WalletTypes", "config", "Networks", "getInstance", "tronLink", "connect", "__name", "instance", "r", "address", "subscribe", "updateAccounts", "disconnect", "e", "account", "canSwitchNetworkTo", "getSigners", "getWalletInfo", "allBlockChains", "tron", "tronBlockchain"]
7
- }
package/src/helpers.ts DELETED
@@ -1,5 +0,0 @@
1
- export function tronLink() {
2
- const { tronLink } = window;
3
- if (!!tronLink) return tronLink;
4
- return null;
5
- }
package/src/index.ts DELETED
@@ -1,83 +0,0 @@
1
- import type {
2
- CanSwitchNetwork,
3
- Connect,
4
- Subscribe,
5
- WalletInfo,
6
- } from '@rango-dev/wallets-shared';
7
- import type { BlockchainMeta, SignerFactory } from 'rango-types';
8
-
9
- import { Networks, WalletTypes } from '@rango-dev/wallets-shared';
10
- import { tronBlockchain } from 'rango-types';
11
-
12
- import { tronLink as tronLink_instance } from './helpers.js';
13
- import signer from './signer.js';
14
-
15
- /*
16
- * https://docs.tronlink.org/dapp/start-developing
17
- * https://developers.tron.network/docs/tronlink-events
18
- */
19
- const WALLET = WalletTypes.TRON_LINK;
20
-
21
- export const config = {
22
- type: WALLET,
23
- defaultNetwork: Networks.TRON,
24
- };
25
-
26
- export const getInstance = tronLink_instance;
27
-
28
- export const connect: Connect = async ({ instance }) => {
29
- let r = undefined;
30
- const SUCCESS_CODE = 200;
31
- if (!!instance && !instance.ready) {
32
- r = await instance.request({ method: 'tron_requestAccounts' });
33
- if (!r) {
34
- throw new Error('Please unlock your TronLink extension first.');
35
- }
36
- if (r?.code !== SUCCESS_CODE && !!r.message) {
37
- throw new Error(r.message);
38
- }
39
- }
40
- const address = instance.tronWeb.defaultAddress.base58;
41
- // TODO check connected network
42
- return { accounts: address ? [address] : [], chainId: Networks.TRON };
43
- };
44
-
45
- export const subscribe: Subscribe = ({ updateAccounts, disconnect }) => {
46
- window.addEventListener('message', (e) => {
47
- if (
48
- e.data.isTronLink &&
49
- e.data.message &&
50
- e.data.message.action == 'accountsChanged'
51
- ) {
52
- const account = e?.data?.message?.data?.address;
53
- if (account) {
54
- updateAccounts([account]);
55
- } else {
56
- disconnect();
57
- }
58
- }
59
- });
60
- };
61
-
62
- export const canSwitchNetworkTo: CanSwitchNetwork = () => false;
63
-
64
- export const getSigners: (provider: any) => Promise<SignerFactory> = signer;
65
-
66
- export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
67
- allBlockChains
68
- ) => {
69
- const tron = tronBlockchain(allBlockChains);
70
- return {
71
- name: 'TronLink',
72
- img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/tronlink/icon.svg',
73
- installLink: {
74
- CHROME:
75
- 'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',
76
- BRAVE:
77
- 'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',
78
- DEFAULT: 'https://www.tronlink.org',
79
- },
80
- color: '#96e7ed',
81
- supportedChains: tron,
82
- };
83
- };