@rango-dev/provider-bitget 0.11.1-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/dist/helpers.d.ts +5 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +7 -0
- package/dist/signer.d.ts +3 -0
- package/dist/signer.d.ts.map +1 -0
- package/package.json +31 -0
- package/readme.md +1 -0
- package/src/helpers.ts +28 -0
- package/src/index.ts +134 -0
- package/src/signer.ts +15 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# [0.10.0](https://github.com/rango-exchange/rango-client/compare/provider-bitkeep@0.9.0...provider-bitkeep@0.10.0) (2023-08-03)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# [0.9.0](https://github.com/rango-exchange/rango-client/compare/provider-bitkeep@0.8.0...provider-bitkeep@0.9.0) (2023-08-01)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# [0.5.0](https://github.com/rango-exchange/rango-client/compare/provider-bitkeep@0.4.0...provider-bitkeep@0.5.0) (2023-07-31)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# [0.3.0](https://github.com/rango-exchange/rango-client/compare/provider-bitkeep@0.2.0...provider-bitkeep@0.3.0) (2023-07-11)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# 0.2.0 (2023-07-11)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* add bitkeep wallet ([c02c3df](https://github.com/rango-exchange/rango-client/commit/c02c3dfd236070295eada74aeb97514f8dacd0ed))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAIzD,KAAK,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAElC,wBAAgB,eAAe,IAAI,QAAQ,GAAG,IAAI,CAqBjD"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { CanEagerConnect, CanSwitchNetwork, Connect, Subscribe, SwitchNetwork, 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 { bitgetInstances } from './helpers';
|
|
5
|
+
export declare const config: {
|
|
6
|
+
type: WalletTypes;
|
|
7
|
+
defaultNetwork: Networks;
|
|
8
|
+
};
|
|
9
|
+
export declare const getInstance: typeof bitgetInstances;
|
|
10
|
+
export declare const connect: Connect;
|
|
11
|
+
export declare const subscribe: Subscribe;
|
|
12
|
+
export declare const switchNetwork: SwitchNetwork;
|
|
13
|
+
export declare const canSwitchNetworkTo: CanSwitchNetwork;
|
|
14
|
+
export declare const canEagerConnect: CanEagerConnect;
|
|
15
|
+
export declare const getSigners: (provider: any) => SignerFactory;
|
|
16
|
+
export declare const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo;
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,OAAO,EAEP,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAKL,QAAQ,EAGR,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAK5C,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,WAAW,wBAAkB,CAAC;AAE3C,eAAO,MAAM,OAAO,EAAE,OA2BrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAoCvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,aAAmC,CAAC;AAEhE,eAAO,MAAM,kBAAkB,EAAE,gBAAwC,CAAC;AAE1E,eAAO,MAAM,eAAe,EAAE,eAM7B,CAAC;AACF,eAAO,MAAM,UAAU,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,aAAsB,CAAC;AAEnE,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAkBjE,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var y=Object.defineProperty;var s=(e,t)=>y(e,"name",{value:t,configurable:!0});import{canEagerlyConnectToEvm as N,canSwitchNetworkToEvm as S,chooseInstance as g,getEvmAccounts as R,Networks as a,subscribeToEvm as C,switchNetworkForEvm as x,WalletTypes as I}from"@rango-dev/wallets-shared";import{evmBlockchains as M,isEvmBlockchain as B,tronBlockchain as L}from"rango-types";import{Networks as f}from"@rango-dev/wallets-shared";function w(){let e=new Map,{bitkeep:t}=window;return!t||(t.ethereum&&e.set(f.ETHEREUM,t.ethereum),t.tronLink&&e.set(f.TRON,t.tronLink),e.size===0)?null:e}s(w,"bitgetInstances");import{DefaultEvmSigner as T}from"@rango-dev/signer-evm";import{DefaultTronSigner as b}from"@rango-dev/signer-tron";import{getNetworkInstance as d,Networks as h}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as v,TransactionType as u}from"rango-types";function m(e){let t=d(e,h.ETHEREUM),o=d(e,h.TRON),n=new v;return n.registerSigner(u.EVM,new T(t)),n.registerSigner(u.TRON,new b(o)),n}s(m,"getSigners");var P=I.BITGET,K={type:P,defaultNetwork:a.ETHEREUM},Q=w,X=s(async({instance:e,meta:t})=>{let o=g(e,t,a.ETHEREUM),n=g(e,t,a.TRON),c=[];if(o){let r=await R(o);c.push(r)}if(n){let r=await n.request({method:"tron_requestAccounts"});if(!r)throw new Error("Please unlock your TronLink extension first.");if(r?.code&&r.message&&r.code!==200)throw new Error(r.message);let i=n.tronWeb.defaultAddress.base58;c.push({accounts:i?[i]:[],chainId:a.TRON})}return c},"connect"),Y=s(({instance:e,state:t,updateChainId:o,updateAccounts:n,meta:c,connect:r,disconnect:i})=>{let E=e.get(a.ETHEREUM),k=c.filter(B);C({instance:E,state:t,updateChainId:o,updateAccounts:n,meta:k,connect:r,disconnect:i}),window.addEventListener("message",l=>{if(l.data.isTronLink&&l.data.message&&l.data.message.action=="accountsChanged"){let p=l?.data?.message?.data?.address;p?n([p]):i()}})},"subscribe"),Z=x,$=S,ee=s(async({instance:e,meta:t})=>{let o=g(e,t,a.ETHEREUM);return o?N({instance:o,meta:t}):Promise.resolve(!1)},"canEagerConnect"),te=m,oe=s(e=>{let t=M(e),o=L(e);return{name:"Bitget",img:"https://raw.githubusercontent.com/rango-exchange/rango-types/main/assets/icons/wallets/bitget.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/bitkeep-crypto-nft-wallet/jiidiaalihmmhddjgbnbgdfflelocpak",BRAVE:"https://chrome.google.com/webstore/detail/bitkeep-crypto-nft-wallet/jiidiaalihmmhddjgbnbgdfflelocpak",DEFAULT:"https://web3.bitget.com/en/wallet-download?type=1"},color:"#ffffff",supportedChains:[...t,...o]}},"getWalletInfo");export{ee as canEagerConnect,$ as canSwitchNetworkTo,K as config,X as connect,Q as getInstance,te as getSigners,oe as getWalletInfo,Y as subscribe,Z as switchNetwork};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
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 ProviderConnectResult,\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 chooseInstance,\n getEvmAccounts,\n Networks,\n subscribeToEvm,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { evmBlockchains, isEvmBlockchain, tronBlockchain } from 'rango-types';\n\nimport { bitgetInstances } from './helpers';\nimport signer from './signer';\n\nconst WALLET = WalletTypes.BITGET;\n\nexport const config = {\n type: WALLET,\n defaultNetwork: Networks.ETHEREUM,\n};\n\nexport const getInstance = bitgetInstances;\n\nexport const connect: Connect = async ({ instance, meta }) => {\n const ethInstance = chooseInstance(instance, meta, Networks.ETHEREUM);\n const tronInstance = chooseInstance(instance, meta, Networks.TRON);\n\n const results: ProviderConnectResult[] = [];\n\n if (ethInstance) {\n const evmResult = await getEvmAccounts(ethInstance);\n results.push(evmResult);\n }\n\n if (tronInstance) {\n const res = await tronInstance.request({ method: 'tron_requestAccounts' });\n if (!res) {\n throw new Error('Please unlock your TronLink extension first.');\n }\n if (!!res?.code && !!res.message && res.code !== 200) {\n throw new Error(res.message);\n }\n const address = tronInstance.tronWeb.defaultAddress.base58;\n results.push({\n accounts: address ? [address] : [],\n chainId: Networks.TRON,\n });\n }\n\n return results;\n};\n\nexport const subscribe: Subscribe = ({\n instance,\n state,\n updateChainId,\n updateAccounts,\n meta,\n connect,\n disconnect,\n}) => {\n const ethInstance = instance.get(Networks.ETHEREUM);\n const evmBlockchainMeta = meta.filter(isEvmBlockchain);\n\n subscribeToEvm({\n instance: ethInstance,\n state,\n updateChainId,\n updateAccounts,\n meta: evmBlockchainMeta,\n connect,\n disconnect,\n });\n\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 switchNetwork: SwitchNetwork = switchNetworkForEvm;\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const canEagerConnect: CanEagerConnect = async ({ instance, meta }) => {\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n if (evm_instance) {\n return canEagerlyConnectToEvm({ instance: evm_instance, meta });\n }\n return Promise.resolve(false);\n};\nexport const getSigners: (provider: any) => SignerFactory = signer;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n const tron = tronBlockchain(allBlockChains);\n return {\n name: 'Bitget',\n img: 'https://raw.githubusercontent.com/rango-exchange/rango-types/main/assets/icons/wallets/bitget.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/bitkeep-crypto-nft-wallet/jiidiaalihmmhddjgbnbgdfflelocpak',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/bitkeep-crypto-nft-wallet/jiidiaalihmmhddjgbnbgdfflelocpak',\n DEFAULT: 'https://web3.bitget.com/en/wallet-download?type=1',\n },\n color: '#ffffff',\n supportedChains: [...evms, ...tron],\n };\n};\n", "import type { Network } from '@rango-dev/wallets-shared';\n\nimport { Networks } from '@rango-dev/wallets-shared';\n\ntype Provider = Map<Network, any>;\n\nexport function bitgetInstances(): Provider | null {\n const instances: Provider = new Map();\n const { bitkeep } = window;\n\n if (!bitkeep) {\n return null;\n }\n\n if (bitkeep.ethereum) {\n instances.set(Networks.ETHEREUM, bitkeep.ethereum);\n }\n\n if (bitkeep.tronLink) {\n instances.set(Networks.TRON, bitkeep.tronLink);\n }\n\n if (instances.size === 0) {\n return null;\n }\n\n return instances;\n}\n", "import type { SignerFactory } from 'rango-types';\n\nimport { DefaultEvmSigner } from '@rango-dev/signer-evm';\nimport { DefaultTronSigner } from '@rango-dev/signer-tron';\nimport { getNetworkInstance, Networks } from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default function getSigners(provider: any): SignerFactory {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const tronProvider = getNetworkInstance(provider, Networks.TRON);\n const signers = new DefaultSignerFactory();\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n signers.registerSigner(TxType.TRON, new DefaultTronSigner(tronProvider));\n return signers;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "chooseInstance", "getEvmAccounts", "Networks", "subscribeToEvm", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "isEvmBlockchain", "tronBlockchain", "Networks", "bitgetInstances", "instances", "bitkeep", "Networks", "__name", "DefaultEvmSigner", "DefaultTronSigner", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "tronProvider", "signers", "DefaultSignerFactory", "TxType", "DefaultEvmSigner", "DefaultTronSigner", "__name", "WALLET", "WalletTypes", "config", "Networks", "getInstance", "bitgetInstances", "connect", "__name", "instance", "meta", "ethInstance", "chooseInstance", "tronInstance", "results", "evmResult", "getEvmAccounts", "res", "address", "subscribe", "state", "updateChainId", "updateAccounts", "disconnect", "evmBlockchainMeta", "isEvmBlockchain", "subscribeToEvm", "e", "account", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "canEagerConnect", "evm_instance", "canEagerlyConnectToEvm", "getSigners", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains", "tron", "tronBlockchain"]
|
|
7
|
+
}
|
package/dist/signer.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAOjD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,aAAa,CAO/D"}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@rango-dev/provider-bitget",
|
|
3
|
+
"version": "0.11.1-next.1",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": "./dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"typings": "dist/index.d.ts",
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"src"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "node ../../scripts/build/command.mjs --path wallets/provider-bitget",
|
|
18
|
+
"clean": "rimraf dist",
|
|
19
|
+
"format": "prettier --write '{.,src}/**/*.{ts,tsx}'",
|
|
20
|
+
"lint": "eslint \"**/*.{ts,tsx}\" --ignore-path ../../.eslintignore"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@rango-dev/signer-evm": "^0.15.0",
|
|
24
|
+
"@rango-dev/signer-tron": "^0.15.0",
|
|
25
|
+
"@rango-dev/wallets-shared": "^0.15.1-next.1",
|
|
26
|
+
"rango-types": "^0.1.46"
|
|
27
|
+
},
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
}
|
|
31
|
+
}
|
package/readme.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# @rango-dev/provider-bitget
|
package/src/helpers.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Network } from '@rango-dev/wallets-shared';
|
|
2
|
+
|
|
3
|
+
import { Networks } from '@rango-dev/wallets-shared';
|
|
4
|
+
|
|
5
|
+
type Provider = Map<Network, any>;
|
|
6
|
+
|
|
7
|
+
export function bitgetInstances(): Provider | null {
|
|
8
|
+
const instances: Provider = new Map();
|
|
9
|
+
const { bitkeep } = window;
|
|
10
|
+
|
|
11
|
+
if (!bitkeep) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if (bitkeep.ethereum) {
|
|
16
|
+
instances.set(Networks.ETHEREUM, bitkeep.ethereum);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (bitkeep.tronLink) {
|
|
20
|
+
instances.set(Networks.TRON, bitkeep.tronLink);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (instances.size === 0) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return instances;
|
|
28
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
CanEagerConnect,
|
|
3
|
+
CanSwitchNetwork,
|
|
4
|
+
Connect,
|
|
5
|
+
ProviderConnectResult,
|
|
6
|
+
Subscribe,
|
|
7
|
+
SwitchNetwork,
|
|
8
|
+
WalletInfo,
|
|
9
|
+
} from '@rango-dev/wallets-shared';
|
|
10
|
+
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
11
|
+
|
|
12
|
+
import {
|
|
13
|
+
canEagerlyConnectToEvm,
|
|
14
|
+
canSwitchNetworkToEvm,
|
|
15
|
+
chooseInstance,
|
|
16
|
+
getEvmAccounts,
|
|
17
|
+
Networks,
|
|
18
|
+
subscribeToEvm,
|
|
19
|
+
switchNetworkForEvm,
|
|
20
|
+
WalletTypes,
|
|
21
|
+
} from '@rango-dev/wallets-shared';
|
|
22
|
+
import { evmBlockchains, isEvmBlockchain, tronBlockchain } from 'rango-types';
|
|
23
|
+
|
|
24
|
+
import { bitgetInstances } from './helpers';
|
|
25
|
+
import signer from './signer';
|
|
26
|
+
|
|
27
|
+
const WALLET = WalletTypes.BITGET;
|
|
28
|
+
|
|
29
|
+
export const config = {
|
|
30
|
+
type: WALLET,
|
|
31
|
+
defaultNetwork: Networks.ETHEREUM,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const getInstance = bitgetInstances;
|
|
35
|
+
|
|
36
|
+
export const connect: Connect = async ({ instance, meta }) => {
|
|
37
|
+
const ethInstance = chooseInstance(instance, meta, Networks.ETHEREUM);
|
|
38
|
+
const tronInstance = chooseInstance(instance, meta, Networks.TRON);
|
|
39
|
+
|
|
40
|
+
const results: ProviderConnectResult[] = [];
|
|
41
|
+
|
|
42
|
+
if (ethInstance) {
|
|
43
|
+
const evmResult = await getEvmAccounts(ethInstance);
|
|
44
|
+
results.push(evmResult);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (tronInstance) {
|
|
48
|
+
const res = await tronInstance.request({ method: 'tron_requestAccounts' });
|
|
49
|
+
if (!res) {
|
|
50
|
+
throw new Error('Please unlock your TronLink extension first.');
|
|
51
|
+
}
|
|
52
|
+
if (!!res?.code && !!res.message && res.code !== 200) {
|
|
53
|
+
throw new Error(res.message);
|
|
54
|
+
}
|
|
55
|
+
const address = tronInstance.tronWeb.defaultAddress.base58;
|
|
56
|
+
results.push({
|
|
57
|
+
accounts: address ? [address] : [],
|
|
58
|
+
chainId: Networks.TRON,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return results;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
export const subscribe: Subscribe = ({
|
|
66
|
+
instance,
|
|
67
|
+
state,
|
|
68
|
+
updateChainId,
|
|
69
|
+
updateAccounts,
|
|
70
|
+
meta,
|
|
71
|
+
connect,
|
|
72
|
+
disconnect,
|
|
73
|
+
}) => {
|
|
74
|
+
const ethInstance = instance.get(Networks.ETHEREUM);
|
|
75
|
+
const evmBlockchainMeta = meta.filter(isEvmBlockchain);
|
|
76
|
+
|
|
77
|
+
subscribeToEvm({
|
|
78
|
+
instance: ethInstance,
|
|
79
|
+
state,
|
|
80
|
+
updateChainId,
|
|
81
|
+
updateAccounts,
|
|
82
|
+
meta: evmBlockchainMeta,
|
|
83
|
+
connect,
|
|
84
|
+
disconnect,
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
window.addEventListener('message', (e) => {
|
|
88
|
+
if (
|
|
89
|
+
e.data.isTronLink &&
|
|
90
|
+
e.data.message &&
|
|
91
|
+
e.data.message.action == 'accountsChanged'
|
|
92
|
+
) {
|
|
93
|
+
const account = e?.data?.message?.data?.address;
|
|
94
|
+
if (account) {
|
|
95
|
+
updateAccounts([account]);
|
|
96
|
+
} else {
|
|
97
|
+
disconnect();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
export const switchNetwork: SwitchNetwork = switchNetworkForEvm;
|
|
104
|
+
|
|
105
|
+
export const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;
|
|
106
|
+
|
|
107
|
+
export const canEagerConnect: CanEagerConnect = async ({ instance, meta }) => {
|
|
108
|
+
const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);
|
|
109
|
+
if (evm_instance) {
|
|
110
|
+
return canEagerlyConnectToEvm({ instance: evm_instance, meta });
|
|
111
|
+
}
|
|
112
|
+
return Promise.resolve(false);
|
|
113
|
+
};
|
|
114
|
+
export const getSigners: (provider: any) => SignerFactory = signer;
|
|
115
|
+
|
|
116
|
+
export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
|
|
117
|
+
allBlockChains
|
|
118
|
+
) => {
|
|
119
|
+
const evms = evmBlockchains(allBlockChains);
|
|
120
|
+
const tron = tronBlockchain(allBlockChains);
|
|
121
|
+
return {
|
|
122
|
+
name: 'Bitget',
|
|
123
|
+
img: 'https://raw.githubusercontent.com/rango-exchange/rango-types/main/assets/icons/wallets/bitget.svg',
|
|
124
|
+
installLink: {
|
|
125
|
+
CHROME:
|
|
126
|
+
'https://chrome.google.com/webstore/detail/bitkeep-crypto-nft-wallet/jiidiaalihmmhddjgbnbgdfflelocpak',
|
|
127
|
+
BRAVE:
|
|
128
|
+
'https://chrome.google.com/webstore/detail/bitkeep-crypto-nft-wallet/jiidiaalihmmhddjgbnbgdfflelocpak',
|
|
129
|
+
DEFAULT: 'https://web3.bitget.com/en/wallet-download?type=1',
|
|
130
|
+
},
|
|
131
|
+
color: '#ffffff',
|
|
132
|
+
supportedChains: [...evms, ...tron],
|
|
133
|
+
};
|
|
134
|
+
};
|
package/src/signer.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { SignerFactory } from 'rango-types';
|
|
2
|
+
|
|
3
|
+
import { DefaultEvmSigner } from '@rango-dev/signer-evm';
|
|
4
|
+
import { DefaultTronSigner } from '@rango-dev/signer-tron';
|
|
5
|
+
import { getNetworkInstance, Networks } from '@rango-dev/wallets-shared';
|
|
6
|
+
import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
|
|
7
|
+
|
|
8
|
+
export default function getSigners(provider: any): SignerFactory {
|
|
9
|
+
const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);
|
|
10
|
+
const tronProvider = getNetworkInstance(provider, Networks.TRON);
|
|
11
|
+
const signers = new DefaultSignerFactory();
|
|
12
|
+
signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));
|
|
13
|
+
signers.registerSigner(TxType.TRON, new DefaultTronSigner(tronProvider));
|
|
14
|
+
return signers;
|
|
15
|
+
}
|