@multiplatform.one/web3 8.3.0 → 8.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -2
- package/dist/cjs/clients/tron.cjs +176 -0
- package/dist/cjs/clients/tron.native.js +318 -0
- package/dist/cjs/clients/tron.native.js.map +1 -0
- package/dist/cjs/clients/useTronClient.cjs +50 -0
- package/dist/cjs/clients/useTronClient.native.js +63 -0
- package/dist/cjs/clients/useTronClient.native.js.map +1 -0
- package/dist/cjs/connectkit/adapters/TronAdapter.cjs +139 -0
- package/dist/cjs/connectkit/adapters/TronAdapter.native.js +217 -0
- package/dist/cjs/connectkit/adapters/TronAdapter.native.js.map +1 -0
- package/dist/cjs/connectkit/connectors/createWalletMessage.cjs +3 -3
- package/dist/cjs/connectkit/connectors/createWalletMessage.native.js +3 -3
- package/dist/cjs/connectkit/connectors/createWalletMessage.native.js.map +1 -1
- package/dist/cjs/connectkit/connectors/ensureWalletConnectors.cjs +2 -1
- package/dist/cjs/connectkit/connectors/ensureWalletConnectors.native.js +18 -35
- package/dist/cjs/connectkit/connectors/ensureWalletConnectors.native.js.map +1 -1
- package/dist/cjs/connectkit/connectors/syntheticChains.cjs +10 -4
- package/dist/cjs/connectkit/connectors/syntheticChains.native.js +10 -4
- package/dist/cjs/connectkit/connectors/syntheticChains.native.js.map +1 -1
- package/dist/cjs/connectkit/defaultConfig.cjs +2 -1
- package/dist/cjs/connectkit/defaultConfig.native.js +2 -1
- package/dist/cjs/connectkit/defaultConfig.native.js.map +1 -1
- package/dist/cjs/connectkit/wallets/walletConfigs.cjs +12 -0
- package/dist/cjs/connectkit/wallets/walletConfigs.native.js +12 -0
- package/dist/cjs/connectkit/wallets/walletConfigs.native.js.map +1 -1
- package/dist/cjs/families/host.native.js.map +1 -1
- package/dist/cjs/families/tron.cjs +92 -0
- package/dist/cjs/families/tron.native.js +120 -0
- package/dist/cjs/families/tron.native.js.map +1 -0
- package/dist/cjs/providers/WalletProvider.cjs +3 -2
- package/dist/cjs/tron.cjs +46 -0
- package/dist/cjs/tron.native.js +49 -0
- package/dist/cjs/tron.native.js.map +1 -0
- package/dist/cjs/wagmi/host.cjs +9 -4
- package/dist/cjs/wagmi/host.native.js +6 -3
- package/dist/cjs/wagmi/host.native.js.map +1 -1
- package/dist/esm/clients/tron.mjs +133 -0
- package/dist/esm/clients/tron.mjs.map +1 -0
- package/dist/esm/clients/tron.native.js +272 -0
- package/dist/esm/clients/tron.native.js.map +1 -0
- package/dist/esm/clients/useTronClient.mjs +25 -0
- package/dist/esm/clients/useTronClient.mjs.map +1 -0
- package/dist/esm/clients/useTronClient.native.js +35 -0
- package/dist/esm/clients/useTronClient.native.js.map +1 -0
- package/dist/esm/connectkit/adapters/TronAdapter.mjs +111 -0
- package/dist/esm/connectkit/adapters/TronAdapter.mjs.map +1 -0
- package/dist/esm/connectkit/adapters/TronAdapter.native.js +186 -0
- package/dist/esm/connectkit/adapters/TronAdapter.native.js.map +1 -0
- package/dist/esm/connectkit/connectors/createWalletMessage.mjs +3 -3
- package/dist/esm/connectkit/connectors/createWalletMessage.mjs.map +1 -1
- package/dist/esm/connectkit/connectors/createWalletMessage.native.js +3 -3
- package/dist/esm/connectkit/connectors/createWalletMessage.native.js.map +1 -1
- package/dist/esm/connectkit/connectors/ensureWalletConnectors.mjs +2 -1
- package/dist/esm/connectkit/connectors/ensureWalletConnectors.mjs.map +1 -1
- package/dist/esm/connectkit/connectors/ensureWalletConnectors.native.js +18 -35
- package/dist/esm/connectkit/connectors/ensureWalletConnectors.native.js.map +1 -1
- package/dist/esm/connectkit/connectors/syntheticChains.mjs +8 -4
- package/dist/esm/connectkit/connectors/syntheticChains.mjs.map +1 -1
- package/dist/esm/connectkit/connectors/syntheticChains.native.js +8 -4
- package/dist/esm/connectkit/connectors/syntheticChains.native.js.map +1 -1
- package/dist/esm/connectkit/defaultConfig.mjs +2 -1
- package/dist/esm/connectkit/defaultConfig.mjs.map +1 -1
- package/dist/esm/connectkit/defaultConfig.native.js +2 -1
- package/dist/esm/connectkit/defaultConfig.native.js.map +1 -1
- package/dist/esm/connectkit/wallets/walletConfigs.mjs +12 -0
- package/dist/esm/connectkit/wallets/walletConfigs.mjs.map +1 -1
- package/dist/esm/connectkit/wallets/walletConfigs.native.js +12 -0
- package/dist/esm/connectkit/wallets/walletConfigs.native.js.map +1 -1
- package/dist/esm/families/host.mjs.map +1 -1
- package/dist/esm/families/host.native.js.map +1 -1
- package/dist/esm/families/tron.mjs +65 -0
- package/dist/esm/families/tron.mjs.map +1 -0
- package/dist/esm/families/tron.native.js +90 -0
- package/dist/esm/families/tron.native.js.map +1 -0
- package/dist/esm/providers/WalletProvider.mjs +3 -2
- package/dist/esm/providers/WalletProvider.mjs.map +1 -1
- package/dist/esm/tron.mjs +6 -0
- package/dist/esm/tron.mjs.map +1 -0
- package/dist/esm/tron.native.js +6 -0
- package/dist/esm/tron.native.js.map +1 -0
- package/dist/esm/wagmi/host.mjs +9 -4
- package/dist/esm/wagmi/host.mjs.map +1 -1
- package/dist/esm/wagmi/host.native.js +6 -3
- package/dist/esm/wagmi/host.native.js.map +1 -1
- package/dist/jsx/clients/tron.mjs +133 -0
- package/dist/jsx/clients/tron.mjs.map +1 -0
- package/dist/jsx/clients/tron.native.js +318 -0
- package/dist/jsx/clients/tron.native.js.map +1 -0
- package/dist/jsx/clients/useTronClient.mjs +25 -0
- package/dist/jsx/clients/useTronClient.mjs.map +1 -0
- package/dist/jsx/clients/useTronClient.native.js +63 -0
- package/dist/jsx/clients/useTronClient.native.js.map +1 -0
- package/dist/jsx/connectkit/adapters/TronAdapter.mjs +111 -0
- package/dist/jsx/connectkit/adapters/TronAdapter.mjs.map +1 -0
- package/dist/jsx/connectkit/adapters/TronAdapter.native.js +217 -0
- package/dist/jsx/connectkit/adapters/TronAdapter.native.js.map +1 -0
- package/dist/jsx/connectkit/connectors/createWalletMessage.mjs +3 -3
- package/dist/jsx/connectkit/connectors/createWalletMessage.mjs.map +1 -1
- package/dist/jsx/connectkit/connectors/createWalletMessage.native.js +3 -3
- package/dist/jsx/connectkit/connectors/createWalletMessage.native.js.map +1 -1
- package/dist/jsx/connectkit/connectors/ensureWalletConnectors.mjs +2 -1
- package/dist/jsx/connectkit/connectors/ensureWalletConnectors.mjs.map +1 -1
- package/dist/jsx/connectkit/connectors/ensureWalletConnectors.native.js +18 -35
- package/dist/jsx/connectkit/connectors/ensureWalletConnectors.native.js.map +1 -1
- package/dist/jsx/connectkit/connectors/syntheticChains.mjs +8 -4
- package/dist/jsx/connectkit/connectors/syntheticChains.mjs.map +1 -1
- package/dist/jsx/connectkit/connectors/syntheticChains.native.js +10 -4
- package/dist/jsx/connectkit/connectors/syntheticChains.native.js.map +1 -1
- package/dist/jsx/connectkit/defaultConfig.mjs +2 -1
- package/dist/jsx/connectkit/defaultConfig.mjs.map +1 -1
- package/dist/jsx/connectkit/defaultConfig.native.js +2 -1
- package/dist/jsx/connectkit/defaultConfig.native.js.map +1 -1
- package/dist/jsx/connectkit/wallets/walletConfigs.mjs +12 -0
- package/dist/jsx/connectkit/wallets/walletConfigs.mjs.map +1 -1
- package/dist/jsx/connectkit/wallets/walletConfigs.native.js +12 -0
- package/dist/jsx/connectkit/wallets/walletConfigs.native.js.map +1 -1
- package/dist/jsx/families/host.mjs.map +1 -1
- package/dist/jsx/families/host.native.js.map +1 -1
- package/dist/jsx/families/tron.mjs +65 -0
- package/dist/jsx/families/tron.mjs.map +1 -0
- package/dist/jsx/families/tron.native.js +120 -0
- package/dist/jsx/families/tron.native.js.map +1 -0
- package/dist/jsx/providers/WalletProvider.mjs +3 -2
- package/dist/jsx/providers/WalletProvider.mjs.map +1 -1
- package/dist/jsx/tron.mjs +6 -0
- package/dist/jsx/tron.mjs.map +1 -0
- package/dist/jsx/tron.native.js +49 -0
- package/dist/jsx/tron.native.js.map +1 -0
- package/dist/jsx/wagmi/host.mjs +9 -4
- package/dist/jsx/wagmi/host.mjs.map +1 -1
- package/dist/jsx/wagmi/host.native.js +6 -3
- package/dist/jsx/wagmi/host.native.js.map +1 -1
- package/dist/keycloak/login.iife.js +380 -380
- package/package.json +13 -7
- package/src/clients/tron.spec.ts +118 -0
- package/src/clients/tron.ts +186 -0
- package/src/clients/useTronClient.ts +26 -0
- package/src/connectkit/adapters/TronAdapter.spec.ts +155 -0
- package/src/connectkit/adapters/TronAdapter.ts +168 -0
- package/src/connectkit/adapters/discover.ts +1 -1
- package/src/connectkit/connectors/createWalletMessage.ts +3 -3
- package/src/connectkit/connectors/ensureWalletConnectors.ts +2 -1
- package/src/connectkit/connectors/syntheticChains.ts +8 -2
- package/src/connectkit/defaultConfig.ts +5 -2
- package/src/connectkit/wallets/walletConfigs.tsx +8 -0
- package/src/families/host.ts +9 -2
- package/src/families/tron.spec.ts +118 -0
- package/src/families/tron.ts +63 -0
- package/src/providers/WalletProvider.tsx +3 -2
- package/src/tron.ts +26 -0
- package/src/wagmi/host.tsx +6 -2
- package/types/clients/tron.d.ts +65 -0
- package/types/clients/tron.d.ts.map +1 -0
- package/types/clients/useTronClient.d.ts +8 -0
- package/types/clients/useTronClient.d.ts.map +1 -0
- package/types/connectkit/adapters/TronAdapter.d.ts +35 -0
- package/types/connectkit/adapters/TronAdapter.d.ts.map +1 -0
- package/types/connectkit/adapters/discover.d.ts +1 -1
- package/types/connectkit/adapters/discover.d.ts.map +1 -1
- package/types/connectkit/connectors/ensureWalletConnectors.d.ts.map +1 -1
- package/types/connectkit/connectors/syntheticChains.d.ts +4 -0
- package/types/connectkit/connectors/syntheticChains.d.ts.map +1 -1
- package/types/connectkit/defaultConfig.d.ts.map +1 -1
- package/types/connectkit/wallets/walletConfigs.d.ts.map +1 -1
- package/types/families/host.d.ts +9 -2
- package/types/families/host.d.ts.map +1 -1
- package/types/families/tron.d.ts +15 -0
- package/types/families/tron.d.ts.map +1 -0
- package/types/providers/WalletProvider.d.ts +2 -1
- package/types/providers/WalletProvider.d.ts.map +1 -1
- package/types/tron.d.ts +5 -0
- package/types/tron.d.ts.map +1 -0
- package/types/wagmi/host.d.ts.map +1 -1
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import bs58 from "bs58";
|
|
2
|
+
import { bytesToHex, hexToBytes, hexToString, sha256 } from "viem";
|
|
3
|
+
const tronGridUrls = Object.freeze({
|
|
4
|
+
mainnet: "https://api.trongrid.io",
|
|
5
|
+
nile: "https://nile.trongrid.io",
|
|
6
|
+
shasta: "https://api.shasta.trongrid.io"
|
|
7
|
+
});
|
|
8
|
+
const tronPrefix = 65;
|
|
9
|
+
const checksumOf = payload => sha256(sha256(payload, "bytes"), "bytes").slice(0, 4);
|
|
10
|
+
function tronAddressBytes(address) {
|
|
11
|
+
const value = address.trim();
|
|
12
|
+
if (/^(0x)?[0-9a-fA-F]+$/.test(value)) {
|
|
13
|
+
const bytes = hexToBytes(value.startsWith("0x") ? value : `0x${value}`);
|
|
14
|
+
if (bytes.length === 20) return Uint8Array.of(tronPrefix, ...bytes);
|
|
15
|
+
if (bytes.length === 21 && bytes[0] === tronPrefix) return bytes;
|
|
16
|
+
throw new Error(`not a Tron address: ${address}`);
|
|
17
|
+
}
|
|
18
|
+
let decoded;
|
|
19
|
+
try {
|
|
20
|
+
decoded = bs58.decode(value);
|
|
21
|
+
} catch {
|
|
22
|
+
throw new Error(`not a Tron address: ${address}`);
|
|
23
|
+
}
|
|
24
|
+
if (decoded.length !== 25 || decoded[0] !== tronPrefix) {
|
|
25
|
+
throw new Error(`not a Tron address: ${address}`);
|
|
26
|
+
}
|
|
27
|
+
const payload = decoded.slice(0, 21);
|
|
28
|
+
const checksum = checksumOf(payload);
|
|
29
|
+
if (!checksum.every((byte, index) => byte === decoded[21 + index])) {
|
|
30
|
+
throw new Error(`Tron address checksum mismatch: ${address}`);
|
|
31
|
+
}
|
|
32
|
+
return payload;
|
|
33
|
+
}
|
|
34
|
+
function toTronBase58(address) {
|
|
35
|
+
const payload = tronAddressBytes(address);
|
|
36
|
+
return bs58.encode(Uint8Array.of(...payload, ...checksumOf(payload)));
|
|
37
|
+
}
|
|
38
|
+
function toTronHex(address) {
|
|
39
|
+
return bytesToHex(tronAddressBytes(address)).slice(2);
|
|
40
|
+
}
|
|
41
|
+
function isTronAddress(address) {
|
|
42
|
+
try {
|
|
43
|
+
tronAddressBytes(address);
|
|
44
|
+
return true;
|
|
45
|
+
} catch {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
class TronGridError extends Error {
|
|
50
|
+
status;
|
|
51
|
+
constructor(message, status) {
|
|
52
|
+
super(message);
|
|
53
|
+
this.name = "TronGridError";
|
|
54
|
+
this.status = status;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function decodeMessage(message) {
|
|
58
|
+
if (!message) return void 0;
|
|
59
|
+
if (!/^[0-9a-fA-F]+$/.test(message) || message.length % 2) return message;
|
|
60
|
+
try {
|
|
61
|
+
return hexToString(`0x${message}`);
|
|
62
|
+
} catch {
|
|
63
|
+
return message;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async function readTrc20Balance(parameters) {
|
|
67
|
+
const {
|
|
68
|
+
token,
|
|
69
|
+
owner,
|
|
70
|
+
network = "mainnet",
|
|
71
|
+
apiUrl,
|
|
72
|
+
apiKey,
|
|
73
|
+
signal
|
|
74
|
+
} = parameters;
|
|
75
|
+
const request = parameters.fetch ?? globalThis.fetch;
|
|
76
|
+
const ownerBytes = tronAddressBytes(owner);
|
|
77
|
+
const base = (apiUrl ?? tronGridUrls[network]).replace(/\/+$/, "");
|
|
78
|
+
const response = await request(`${base}/wallet/triggerconstantcontract`, {
|
|
79
|
+
method: "POST",
|
|
80
|
+
headers: {
|
|
81
|
+
accept: "application/json",
|
|
82
|
+
"content-type": "application/json",
|
|
83
|
+
...(apiKey ? {
|
|
84
|
+
"TRON-PRO-API-KEY": apiKey
|
|
85
|
+
} : {})
|
|
86
|
+
},
|
|
87
|
+
body: JSON.stringify({
|
|
88
|
+
owner_address: toTronBase58(owner),
|
|
89
|
+
contract_address: toTronBase58(token),
|
|
90
|
+
function_selector: "balanceOf(address)",
|
|
91
|
+
parameter: bytesToHex(ownerBytes.slice(1)).slice(2).padStart(64, "0"),
|
|
92
|
+
visible: true
|
|
93
|
+
}),
|
|
94
|
+
...(signal ? {
|
|
95
|
+
signal
|
|
96
|
+
} : {})
|
|
97
|
+
});
|
|
98
|
+
if (!response.ok) {
|
|
99
|
+
throw new TronGridError(`TronGrid answered ${response.status} for balanceOf`, response.status);
|
|
100
|
+
}
|
|
101
|
+
const body = await response.json();
|
|
102
|
+
const word = body.constant_result?.[0];
|
|
103
|
+
if (!body.result?.result || word === void 0) {
|
|
104
|
+
const reason = decodeMessage(body.result?.message) ?? body.Error ?? body.result?.code;
|
|
105
|
+
throw new TronGridError(`TronGrid balanceOf failed${reason ? `: ${reason}` : ""}`);
|
|
106
|
+
}
|
|
107
|
+
return word === "" ? 0n : BigInt(`0x${word}`);
|
|
108
|
+
}
|
|
109
|
+
const capabilities = ["signMessage"];
|
|
110
|
+
function tronClient(adapter, options = {}) {
|
|
111
|
+
if (!adapter.address) throw new Error("tronClient: connect a Tron wallet first");
|
|
112
|
+
const address = adapter.address;
|
|
113
|
+
const network = options.network ?? "mainnet";
|
|
114
|
+
return {
|
|
115
|
+
family: "tron",
|
|
116
|
+
address,
|
|
117
|
+
chainId: "tron",
|
|
118
|
+
network,
|
|
119
|
+
capabilities,
|
|
120
|
+
signMessage: message => adapter.signMessage(message),
|
|
121
|
+
trc20Balance: (token, owner = address, signal) => readTrc20Balance({
|
|
122
|
+
...options,
|
|
123
|
+
network,
|
|
124
|
+
token,
|
|
125
|
+
owner,
|
|
126
|
+
...(signal ? {
|
|
127
|
+
signal
|
|
128
|
+
} : {})
|
|
129
|
+
})
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
export { TronGridError, isTronAddress, readTrc20Balance, toTronBase58, toTronHex, tronAddressBytes, tronClient, tronGridUrls };
|
|
133
|
+
//# sourceMappingURL=tron.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["bs58","bytesToHex","hexToBytes","hexToString","sha256","tronGridUrls","Object","freeze","mainnet","nile","shasta","tronPrefix","checksumOf","payload","slice","tronAddressBytes","address","value","trim","test","bytes","startsWith","length","Uint8Array","of","Error","decoded","decode","checksum","every","byte","index","toTronBase58","encode","toTronHex","isTronAddress","TronGridError","status","constructor","message","name","decodeMessage","readTrc20Balance","parameters","token","owner","network","apiUrl","apiKey","signal","request","fetch","globalThis","ownerBytes","base","replace","response","method","headers","accept","body","JSON","stringify","owner_address","contract_address","function_selector","parameter","padStart","visible","ok","json","word","constant_result","result","reason","code","BigInt","capabilities","tronClient","adapter","options","family","chainId","signMessage","trc20Balance"],"sources":["../../../src/clients/tron.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import bs58 from "bs58";
|
|
2
|
+
import { bytesToHex, hexToBytes, hexToString, sha256 } from "viem";
|
|
3
|
+
function _assert_this_initialized(self) {
|
|
4
|
+
if (self === void 0) {
|
|
5
|
+
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
6
|
+
}
|
|
7
|
+
return self;
|
|
8
|
+
}
|
|
9
|
+
function _call_super(_this, derived, args) {
|
|
10
|
+
derived = _get_prototype_of(derived);
|
|
11
|
+
return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
|
|
12
|
+
}
|
|
13
|
+
function _class_call_check(instance, Constructor) {
|
|
14
|
+
if (!(instance instanceof Constructor)) {
|
|
15
|
+
throw new TypeError("Cannot call a class as a function");
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function _construct(Parent, args, Class) {
|
|
19
|
+
if (_is_native_reflect_construct()) {
|
|
20
|
+
_construct = Reflect.construct;
|
|
21
|
+
} else {
|
|
22
|
+
_construct = function construct(Parent2, args2, Class2) {
|
|
23
|
+
var a = [null];
|
|
24
|
+
a.push.apply(a, args2);
|
|
25
|
+
var Constructor = Function.bind.apply(Parent2, a);
|
|
26
|
+
var instance = new Constructor();
|
|
27
|
+
if (Class2) _set_prototype_of(instance, Class2.prototype);
|
|
28
|
+
return instance;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return _construct.apply(null, arguments);
|
|
32
|
+
}
|
|
33
|
+
function _define_property(obj, key, value) {
|
|
34
|
+
if (key in obj) {
|
|
35
|
+
Object.defineProperty(obj, key, {
|
|
36
|
+
value,
|
|
37
|
+
enumerable: true,
|
|
38
|
+
configurable: true,
|
|
39
|
+
writable: true
|
|
40
|
+
});
|
|
41
|
+
} else {
|
|
42
|
+
obj[key] = value;
|
|
43
|
+
}
|
|
44
|
+
return obj;
|
|
45
|
+
}
|
|
46
|
+
function _get_prototype_of(o) {
|
|
47
|
+
_get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o2) {
|
|
48
|
+
return o2.__proto__ || Object.getPrototypeOf(o2);
|
|
49
|
+
};
|
|
50
|
+
return _get_prototype_of(o);
|
|
51
|
+
}
|
|
52
|
+
function _inherits(subClass, superClass) {
|
|
53
|
+
if (typeof superClass !== "function" && superClass !== null) {
|
|
54
|
+
throw new TypeError("Super expression must either be null or a function");
|
|
55
|
+
}
|
|
56
|
+
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
57
|
+
constructor: {
|
|
58
|
+
value: subClass,
|
|
59
|
+
writable: true,
|
|
60
|
+
configurable: true
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
if (superClass) _set_prototype_of(subClass, superClass);
|
|
64
|
+
}
|
|
65
|
+
function _is_native_function(fn) {
|
|
66
|
+
return Function.toString.call(fn).indexOf("[native code]") !== -1;
|
|
67
|
+
}
|
|
68
|
+
function _possible_constructor_return(self, call) {
|
|
69
|
+
if (call && (_type_of(call) === "object" || typeof call === "function")) {
|
|
70
|
+
return call;
|
|
71
|
+
}
|
|
72
|
+
return _assert_this_initialized(self);
|
|
73
|
+
}
|
|
74
|
+
function _set_prototype_of(o, p) {
|
|
75
|
+
_set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o2, p2) {
|
|
76
|
+
o2.__proto__ = p2;
|
|
77
|
+
return o2;
|
|
78
|
+
};
|
|
79
|
+
return _set_prototype_of(o, p);
|
|
80
|
+
}
|
|
81
|
+
function _type_of(obj) {
|
|
82
|
+
"@swc/helpers - typeof";
|
|
83
|
+
|
|
84
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
85
|
+
}
|
|
86
|
+
function _wrap_native_super(Class) {
|
|
87
|
+
var _cache = typeof Map === "function" ? /* @__PURE__ */new Map() : void 0;
|
|
88
|
+
_wrap_native_super = function wrapNativeSuper(Class2) {
|
|
89
|
+
if (Class2 === null || !_is_native_function(Class2)) return Class2;
|
|
90
|
+
if (typeof Class2 !== "function") {
|
|
91
|
+
throw new TypeError("Super expression must either be null or a function");
|
|
92
|
+
}
|
|
93
|
+
if (typeof _cache !== "undefined") {
|
|
94
|
+
if (_cache.has(Class2)) return _cache.get(Class2);
|
|
95
|
+
_cache.set(Class2, Wrapper);
|
|
96
|
+
}
|
|
97
|
+
function Wrapper() {
|
|
98
|
+
return _construct(Class2, arguments, _get_prototype_of(this).constructor);
|
|
99
|
+
}
|
|
100
|
+
Wrapper.prototype = Object.create(Class2.prototype, {
|
|
101
|
+
constructor: {
|
|
102
|
+
value: Wrapper,
|
|
103
|
+
enumerable: false,
|
|
104
|
+
writable: true,
|
|
105
|
+
configurable: true
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
return _set_prototype_of(Wrapper, Class2);
|
|
109
|
+
};
|
|
110
|
+
return _wrap_native_super(Class);
|
|
111
|
+
}
|
|
112
|
+
function _is_native_reflect_construct() {
|
|
113
|
+
try {
|
|
114
|
+
var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
|
|
115
|
+
} catch (_) {}
|
|
116
|
+
return (_is_native_reflect_construct = function () {
|
|
117
|
+
return !!result;
|
|
118
|
+
})();
|
|
119
|
+
}
|
|
120
|
+
var tronGridUrls = Object.freeze({
|
|
121
|
+
mainnet: "https://api.trongrid.io",
|
|
122
|
+
nile: "https://nile.trongrid.io",
|
|
123
|
+
shasta: "https://api.shasta.trongrid.io"
|
|
124
|
+
});
|
|
125
|
+
var tronPrefix = 65;
|
|
126
|
+
var checksumOf = function checksumOf2(payload) {
|
|
127
|
+
return sha256(sha256(payload, "bytes"), "bytes").slice(0, 4);
|
|
128
|
+
};
|
|
129
|
+
function tronAddressBytes(address) {
|
|
130
|
+
var value = address.trim();
|
|
131
|
+
if (/^(0x)?[0-9a-fA-F]+$/.test(value)) {
|
|
132
|
+
var bytes = hexToBytes(value.startsWith("0x") ? value : `0x${value}`);
|
|
133
|
+
if (bytes.length === 20) return Uint8Array.of(tronPrefix, ...bytes);
|
|
134
|
+
if (bytes.length === 21 && bytes[0] === tronPrefix) return bytes;
|
|
135
|
+
throw new Error(`not a Tron address: ${address}`);
|
|
136
|
+
}
|
|
137
|
+
var decoded;
|
|
138
|
+
try {
|
|
139
|
+
decoded = bs58.decode(value);
|
|
140
|
+
} catch (unused) {
|
|
141
|
+
throw new Error(`not a Tron address: ${address}`);
|
|
142
|
+
}
|
|
143
|
+
if (decoded.length !== 25 || decoded[0] !== tronPrefix) {
|
|
144
|
+
throw new Error(`not a Tron address: ${address}`);
|
|
145
|
+
}
|
|
146
|
+
var payload = decoded.slice(0, 21);
|
|
147
|
+
var checksum = checksumOf(payload);
|
|
148
|
+
if (!checksum.every(function (byte, index) {
|
|
149
|
+
return byte === decoded[21 + index];
|
|
150
|
+
})) {
|
|
151
|
+
throw new Error(`Tron address checksum mismatch: ${address}`);
|
|
152
|
+
}
|
|
153
|
+
return payload;
|
|
154
|
+
}
|
|
155
|
+
function toTronBase58(address) {
|
|
156
|
+
var payload = tronAddressBytes(address);
|
|
157
|
+
return bs58.encode(Uint8Array.of(...payload, ...checksumOf(payload)));
|
|
158
|
+
}
|
|
159
|
+
function toTronHex(address) {
|
|
160
|
+
return bytesToHex(tronAddressBytes(address)).slice(2);
|
|
161
|
+
}
|
|
162
|
+
function isTronAddress(address) {
|
|
163
|
+
try {
|
|
164
|
+
tronAddressBytes(address);
|
|
165
|
+
return true;
|
|
166
|
+
} catch (unused) {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
var TronGridError = /* @__PURE__ */function (Error1) {
|
|
171
|
+
"use strict";
|
|
172
|
+
|
|
173
|
+
_inherits(TronGridError2, Error1);
|
|
174
|
+
function TronGridError2(message, status) {
|
|
175
|
+
_class_call_check(this, TronGridError2);
|
|
176
|
+
var _this;
|
|
177
|
+
_this = _call_super(this, TronGridError2, [message]), _define_property(_this, "status", void 0);
|
|
178
|
+
_this.name = "TronGridError";
|
|
179
|
+
_this.status = status;
|
|
180
|
+
return _this;
|
|
181
|
+
}
|
|
182
|
+
return TronGridError2;
|
|
183
|
+
}(_wrap_native_super(Error));
|
|
184
|
+
function decodeMessage(message) {
|
|
185
|
+
if (!message) return void 0;
|
|
186
|
+
if (!/^[0-9a-fA-F]+$/.test(message) || message.length % 2) return message;
|
|
187
|
+
try {
|
|
188
|
+
return hexToString(`0x${message}`);
|
|
189
|
+
} catch (unused) {
|
|
190
|
+
return message;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
async function readTrc20Balance(parameters) {
|
|
194
|
+
var _parameters_fetch;
|
|
195
|
+
var _body_constant_result, _body_result;
|
|
196
|
+
var {
|
|
197
|
+
token,
|
|
198
|
+
owner,
|
|
199
|
+
network = "mainnet",
|
|
200
|
+
apiUrl,
|
|
201
|
+
apiKey,
|
|
202
|
+
signal
|
|
203
|
+
} = parameters;
|
|
204
|
+
var request = (_parameters_fetch = parameters.fetch) !== null && _parameters_fetch !== void 0 ? _parameters_fetch : globalThis.fetch;
|
|
205
|
+
var ownerBytes = tronAddressBytes(owner);
|
|
206
|
+
var base = (apiUrl !== null && apiUrl !== void 0 ? apiUrl : tronGridUrls[network]).replace(/\/+$/, "");
|
|
207
|
+
var response = await request(`${base}/wallet/triggerconstantcontract`, {
|
|
208
|
+
method: "POST",
|
|
209
|
+
headers: {
|
|
210
|
+
accept: "application/json",
|
|
211
|
+
"content-type": "application/json",
|
|
212
|
+
...(apiKey ? {
|
|
213
|
+
"TRON-PRO-API-KEY": apiKey
|
|
214
|
+
} : {})
|
|
215
|
+
},
|
|
216
|
+
body: JSON.stringify({
|
|
217
|
+
owner_address: toTronBase58(owner),
|
|
218
|
+
contract_address: toTronBase58(token),
|
|
219
|
+
function_selector: "balanceOf(address)",
|
|
220
|
+
parameter: bytesToHex(ownerBytes.slice(1)).slice(2).padStart(64, "0"),
|
|
221
|
+
visible: true
|
|
222
|
+
}),
|
|
223
|
+
...(signal ? {
|
|
224
|
+
signal
|
|
225
|
+
} : {})
|
|
226
|
+
});
|
|
227
|
+
if (!response.ok) {
|
|
228
|
+
throw new TronGridError(`TronGrid answered ${response.status} for balanceOf`, response.status);
|
|
229
|
+
}
|
|
230
|
+
var body = await response.json();
|
|
231
|
+
var word = (_body_constant_result = body.constant_result) === null || _body_constant_result === void 0 ? void 0 : _body_constant_result[0];
|
|
232
|
+
if (!((_body_result = body.result) === null || _body_result === void 0 ? void 0 : _body_result.result) || word === void 0) {
|
|
233
|
+
var _ref, _decodeMessage;
|
|
234
|
+
var _body_result1, _body_result2;
|
|
235
|
+
var reason = (_ref = (_decodeMessage = decodeMessage((_body_result1 = body.result) === null || _body_result1 === void 0 ? void 0 : _body_result1.message)) !== null && _decodeMessage !== void 0 ? _decodeMessage : body.Error) !== null && _ref !== void 0 ? _ref : (_body_result2 = body.result) === null || _body_result2 === void 0 ? void 0 : _body_result2.code;
|
|
236
|
+
throw new TronGridError(`TronGrid balanceOf failed${reason ? `: ${reason}` : ""}`);
|
|
237
|
+
}
|
|
238
|
+
return word === "" ? 0n : BigInt(`0x${word}`);
|
|
239
|
+
}
|
|
240
|
+
var capabilities = ["signMessage"];
|
|
241
|
+
function tronClient(adapter) {
|
|
242
|
+
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
243
|
+
var _options_network;
|
|
244
|
+
if (!adapter.address) throw new Error("tronClient: connect a Tron wallet first");
|
|
245
|
+
var address = adapter.address;
|
|
246
|
+
var network = (_options_network = options.network) !== null && _options_network !== void 0 ? _options_network : "mainnet";
|
|
247
|
+
return {
|
|
248
|
+
family: "tron",
|
|
249
|
+
address,
|
|
250
|
+
chainId: "tron",
|
|
251
|
+
network,
|
|
252
|
+
capabilities,
|
|
253
|
+
signMessage: function signMessage(message) {
|
|
254
|
+
return adapter.signMessage(message);
|
|
255
|
+
},
|
|
256
|
+
trc20Balance: function trc20Balance(token) {
|
|
257
|
+
var owner = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : address,
|
|
258
|
+
signal = arguments.length > 2 ? arguments[2] : void 0;
|
|
259
|
+
return readTrc20Balance({
|
|
260
|
+
...options,
|
|
261
|
+
network,
|
|
262
|
+
token,
|
|
263
|
+
owner,
|
|
264
|
+
...(signal ? {
|
|
265
|
+
signal
|
|
266
|
+
} : {})
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
export { TronGridError, isTronAddress, readTrc20Balance, toTronBase58, toTronHex, tronAddressBytes, tronClient, tronGridUrls };
|
|
272
|
+
//# sourceMappingURL=tron.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["bs58","bytesToHex","hexToBytes","hexToString","sha256","_assert_this_initialized","self","ReferenceError","_call_super","_this","derived","args","_get_prototype_of","_possible_constructor_return","_is_native_reflect_construct","Reflect","construct","constructor","apply","_class_call_check","instance","Constructor","TypeError","_construct","Parent","Class","Parent2","args2","Class2","a","push","Function","bind","_set_prototype_of","prototype","arguments","_define_property","obj","key","value","Object","defineProperty","enumerable","configurable","writable","o","setPrototypeOf","getPrototypeOf","o2","__proto__","_inherits","subClass","superClass","create","_is_native_function","fn","toString","call","indexOf","_type_of","p","p2","Symbol","_wrap_native_super","_cache","Map","wrapNativeSuper","has","get","set","Wrapper"],"sources":["../../../src/clients/tron.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { useAccount } from "wagmi";
|
|
3
|
+
import { connectorAdapter } from "./adapter.mjs";
|
|
4
|
+
import { useOptionalConnection } from "../core/react.mjs";
|
|
5
|
+
import { TronAdapter } from "../connectkit/adapters/TronAdapter.mjs";
|
|
6
|
+
import { tronClient } from "./tron.mjs";
|
|
7
|
+
function useTronClient() {
|
|
8
|
+
const connection = useOptionalConnection();
|
|
9
|
+
const {
|
|
10
|
+
connector,
|
|
11
|
+
address
|
|
12
|
+
} = useAccount();
|
|
13
|
+
return useMemo(() => {
|
|
14
|
+
if (connection) {
|
|
15
|
+
return connection.family === "tron" ? connection.client ?? void 0 : void 0;
|
|
16
|
+
}
|
|
17
|
+
const adapter = connectorAdapter(connector, "tron");
|
|
18
|
+
if (!adapter?.address) return void 0;
|
|
19
|
+
return tronClient(adapter, adapter instanceof TronAdapter ? {
|
|
20
|
+
network: adapter.network
|
|
21
|
+
} : {});
|
|
22
|
+
}, [connection, connector, address]);
|
|
23
|
+
}
|
|
24
|
+
export { useTronClient };
|
|
25
|
+
//# sourceMappingURL=useTronClient.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useMemo","useAccount","connectorAdapter","useOptionalConnection","TronAdapter","tronClient","useTronClient","connection","connector","address","family","client","adapter","network"],"sources":["../../../src/clients/useTronClient.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAA,QAAe;AACxB,SAASC,UAAA,QAAkB;AAC3B,SAASC,gBAAA,QAAwB;AACjC,SAASC,qBAAA,QAA6B;AACtC,SAASC,WAAA,QAAmB;AAC5B,SAASC,UAAA,QAAmC;AAOrC,SAASC,cAAA,EAAwC;EACtD,MAAMC,UAAA,GAAaJ,qBAAA,CAAsB;EACzC,MAAM;IAAEK,SAAA;IAAWC;EAAQ,IAAIR,UAAA,CAAW;EAC1C,OAAOD,OAAA,CAAQ,MAAM;IACnB,IAAIO,UAAA,EAAY;MACd,OAAOA,UAAA,CAAWG,MAAA,KAAW,SACvBH,UAAA,CAAWI,MAAA,IAAgC,SAC7C;IACN;IACA,MAAMC,OAAA,GAAUV,gBAAA,CAAiBM,SAAA,EAAW,MAAM;IAClD,IAAI,CAACI,OAAA,EAASH,OAAA,EAAS,OAAO;IAC9B,OAAOJ,UAAA,CAAWO,OAAA,EAASA,OAAA,YAAmBR,WAAA,GAAc;MAAES,OAAA,EAASD,OAAA,CAAQC;IAAQ,IAAI,CAAC,CAAC;EAC/F,GAAG,CAACN,UAAA,EAAYC,SAAA,EAAWC,OAAO,CAAC;AACrC","ignoreList":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { useAccount } from "wagmi";
|
|
3
|
+
import { connectorAdapter } from "./adapter.native.js";
|
|
4
|
+
import { useOptionalConnection } from "../core/react.native.js";
|
|
5
|
+
import { TronAdapter } from "../connectkit/adapters/TronAdapter.native.js";
|
|
6
|
+
import { tronClient } from "./tron.native.js";
|
|
7
|
+
function _instanceof(left, right) {
|
|
8
|
+
"@swc/helpers - instanceof";
|
|
9
|
+
|
|
10
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
11
|
+
return !!right[Symbol.hasInstance](left);
|
|
12
|
+
} else {
|
|
13
|
+
return left instanceof right;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function useTronClient() {
|
|
17
|
+
var connection = useOptionalConnection();
|
|
18
|
+
var {
|
|
19
|
+
connector,
|
|
20
|
+
address
|
|
21
|
+
} = useAccount();
|
|
22
|
+
return useMemo(function () {
|
|
23
|
+
if (connection) {
|
|
24
|
+
var _connection_client;
|
|
25
|
+
return connection.family === "tron" ? (_connection_client = connection.client) !== null && _connection_client !== void 0 ? _connection_client : void 0 : void 0;
|
|
26
|
+
}
|
|
27
|
+
var adapter = connectorAdapter(connector, "tron");
|
|
28
|
+
if (!(adapter === null || adapter === void 0 ? void 0 : adapter.address)) return void 0;
|
|
29
|
+
return tronClient(adapter, _instanceof(adapter, TronAdapter) ? {
|
|
30
|
+
network: adapter.network
|
|
31
|
+
} : {});
|
|
32
|
+
}, [connection, connector, address]);
|
|
33
|
+
}
|
|
34
|
+
export { useTronClient };
|
|
35
|
+
//# sourceMappingURL=useTronClient.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useMemo","useAccount","connectorAdapter","useOptionalConnection","TronAdapter","tronClient","_instanceof","left","right","Symbol","hasInstance","useTronClient","connection","connector","address"],"sources":["../../../src/clients/useTronClient.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAA,QAAe;AACxB,SAASC,UAAA,QAAkB;AAC3B,SAASC,gBAAA,QAAwB;AACjC,SAASC,qBAAA,QAA6B;AACtC,SAASC,WAAA,QAAmB;AAC5B,SAASC,UAAA,QAAmC;AAOrC,SAASC,YAAAC,IAAwC,EAAAC,KAAA;EACtD,2BAAmB;;EACnB,IAAAA,KAAQ,YAAW,OAAQC,MAAI,gBAAW,IAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA;IAC1C,OAAO,EAAAF,KAAQ,CAAAC,MAAM,CAAAC,WAAA,EAAAH,IAAA;EACnB,OAAI;IACF,OAAAA,IAAO,YAAWC,KAAA;EAEd;AAEN;AACA,SAAKG,aAASA,CAAA;EACd,IAAAC,UAAO,GAAAT,qBAAoB;EAC7B,IAAI;IAAAU,SAAA;IAAYC;EAAA,IAAWb,UAAQ;EACrC,OAAAD,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
const page = () => typeof window === "undefined" ? void 0 : window;
|
|
2
|
+
const tronWebOf = w => w.tron?.tronWeb || w.tronLink?.tronWeb || w.tronWeb || void 0;
|
|
3
|
+
const accountOf = w => tronWebOf(w)?.defaultAddress?.base58 || null;
|
|
4
|
+
function tronNetworkOf(host) {
|
|
5
|
+
if (host?.includes("nile")) return "nile";
|
|
6
|
+
if (host?.includes("shasta")) return "shasta";
|
|
7
|
+
return "mainnet";
|
|
8
|
+
}
|
|
9
|
+
function hasTronWallet() {
|
|
10
|
+
const w = page();
|
|
11
|
+
return Boolean(w?.tron || w?.tronLink);
|
|
12
|
+
}
|
|
13
|
+
class TronAdapter {
|
|
14
|
+
chain = "tron";
|
|
15
|
+
address = null;
|
|
16
|
+
isConnected = false;
|
|
17
|
+
get network() {
|
|
18
|
+
const w = page();
|
|
19
|
+
return tronNetworkOf(w ? tronWebOf(w)?.fullNode?.host : void 0);
|
|
20
|
+
}
|
|
21
|
+
get networkId() {
|
|
22
|
+
return `tron:${this.network}`;
|
|
23
|
+
}
|
|
24
|
+
async connect() {
|
|
25
|
+
const w = page();
|
|
26
|
+
if (!w?.tron && !w?.tronLink) {
|
|
27
|
+
throw new Error("No Tron wallet found. Install TronLink.");
|
|
28
|
+
}
|
|
29
|
+
if (w.tron) {
|
|
30
|
+
await w.tron.request({
|
|
31
|
+
method: "eth_requestAccounts"
|
|
32
|
+
});
|
|
33
|
+
} else if (w.tronLink) {
|
|
34
|
+
const answer = await w.tronLink.request({
|
|
35
|
+
method: "tron_requestAccounts"
|
|
36
|
+
});
|
|
37
|
+
if (!answer) throw new Error("TronLink is locked. Unlock it and try again.");
|
|
38
|
+
if (answer.code !== void 0 && answer.code !== 200) {
|
|
39
|
+
throw new Error(answer.message || "TronLink refused the connection");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const address = accountOf(w);
|
|
43
|
+
if (!address) throw new Error("TronLink returned no account");
|
|
44
|
+
this.address = address;
|
|
45
|
+
this.isConnected = true;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Takes the account TronLink already shares with this page, without a
|
|
49
|
+
* prompt. False when it shares none; throws while TronLink has not
|
|
50
|
+
* injected itself yet.
|
|
51
|
+
*/
|
|
52
|
+
async restore() {
|
|
53
|
+
const w = page();
|
|
54
|
+
if (!w?.tron && !w?.tronLink && !w?.tronWeb) throw new Error("No Tron wallet found yet.");
|
|
55
|
+
const address = accountOf(w);
|
|
56
|
+
this.address = address;
|
|
57
|
+
this.isConnected = address !== null;
|
|
58
|
+
return address !== null;
|
|
59
|
+
}
|
|
60
|
+
/** TronLink's account switches and disconnects; the account is read back from tronWeb on each. */
|
|
61
|
+
subscribe(listener) {
|
|
62
|
+
const w = page();
|
|
63
|
+
if (!w) return () => {};
|
|
64
|
+
const update = () => {
|
|
65
|
+
const address = accountOf(w);
|
|
66
|
+
this.address = address;
|
|
67
|
+
this.isConnected = address !== null;
|
|
68
|
+
listener();
|
|
69
|
+
};
|
|
70
|
+
const provider = w.tron;
|
|
71
|
+
if (provider?.on) {
|
|
72
|
+
const onAccounts = () => update();
|
|
73
|
+
provider.on("accountsChanged", onAccounts);
|
|
74
|
+
return () => provider.removeListener?.("accountsChanged", onAccounts);
|
|
75
|
+
}
|
|
76
|
+
if (typeof w.addEventListener !== "function") return () => {};
|
|
77
|
+
const onMessage = event => {
|
|
78
|
+
const action = event.data?.message?.action;
|
|
79
|
+
if (action === "accountsChanged" || action === "setAccount" || action === "disconnect" || action === "disconnectWeb") {
|
|
80
|
+
update();
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
w.addEventListener("message", onMessage);
|
|
84
|
+
return () => w.removeEventListener?.("message", onMessage);
|
|
85
|
+
}
|
|
86
|
+
async disconnect() {
|
|
87
|
+
this.address = null;
|
|
88
|
+
this.isConnected = false;
|
|
89
|
+
}
|
|
90
|
+
async buildMessage(_opts) {
|
|
91
|
+
throw new Error("Tron sign-in is not supported yet");
|
|
92
|
+
}
|
|
93
|
+
/** TronLink's `signMessageV2`: the 0x hex signature over the TIP-191 prefixed message. */
|
|
94
|
+
async signMessage(message) {
|
|
95
|
+
const w = page();
|
|
96
|
+
const tronWeb = w ? tronWebOf(w) : void 0;
|
|
97
|
+
if (!this.address || !tronWeb) throw new Error("connect a Tron wallet first");
|
|
98
|
+
return tronWeb.trx.signMessageV2(message);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function discoverTronWallets() {
|
|
102
|
+
if (!hasTronWallet()) return [];
|
|
103
|
+
return [{
|
|
104
|
+
id: "wallet:tron:tronlink",
|
|
105
|
+
name: "TronLink",
|
|
106
|
+
ecosystem: "tron",
|
|
107
|
+
adapter: new TronAdapter()
|
|
108
|
+
}];
|
|
109
|
+
}
|
|
110
|
+
export { TronAdapter, discoverTronWallets, hasTronWallet, tronNetworkOf };
|
|
111
|
+
//# sourceMappingURL=TronAdapter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["page","window","tronWebOf","w","tron","tronWeb","tronLink","accountOf","defaultAddress","base58","tronNetworkOf","host","includes","hasTronWallet","Boolean","TronAdapter","chain","address","isConnected","network","fullNode","networkId","connect","Error","request","method","answer","code","message","restore","subscribe","listener","update","provider","on","onAccounts","removeListener","addEventListener","onMessage","event","action","data","removeEventListener","disconnect","buildMessage","_opts","signMessage","trx","signMessageV2","discoverTronWallets","id","name","ecosystem","adapter"],"sources":["../../../../src/connectkit/adapters/TronAdapter.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|