@missionsquad/mcp-server-tron 1.2.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.
Files changed (193) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +537 -0
  3. package/bin/cli.js +51 -0
  4. package/build/core/chains.d.ts +17 -0
  5. package/build/core/chains.js +87 -0
  6. package/build/core/chains.js.map +1 -0
  7. package/build/core/prompts.d.ts +19 -0
  8. package/build/core/prompts.js +485 -0
  9. package/build/core/prompts.js.map +1 -0
  10. package/build/core/resources.d.ts +14 -0
  11. package/build/core/resources.js +42 -0
  12. package/build/core/resources.js.map +1 -0
  13. package/build/core/services/account-data.d.ts +144 -0
  14. package/build/core/services/account-data.js +228 -0
  15. package/build/core/services/account-data.js.map +1 -0
  16. package/build/core/services/account-resource.d.ts +56 -0
  17. package/build/core/services/account-resource.js +133 -0
  18. package/build/core/services/account-resource.js.map +1 -0
  19. package/build/core/services/account.d.ts +141 -0
  20. package/build/core/services/account.js +191 -0
  21. package/build/core/services/account.js.map +1 -0
  22. package/build/core/services/address.d.ts +8 -0
  23. package/build/core/services/address.js +52 -0
  24. package/build/core/services/address.js.map +1 -0
  25. package/build/core/services/agent-wallet.d.ts +62 -0
  26. package/build/core/services/agent-wallet.js +234 -0
  27. package/build/core/services/agent-wallet.js.map +1 -0
  28. package/build/core/services/balance.d.ts +26 -0
  29. package/build/core/services/balance.js +60 -0
  30. package/build/core/services/balance.js.map +1 -0
  31. package/build/core/services/blocks.d.ts +25 -0
  32. package/build/core/services/blocks.js +65 -0
  33. package/build/core/services/blocks.js.map +1 -0
  34. package/build/core/services/broadcast.d.ts +13 -0
  35. package/build/core/services/broadcast.js +24 -0
  36. package/build/core/services/broadcast.js.map +1 -0
  37. package/build/core/services/clients.d.ts +5 -0
  38. package/build/core/services/clients.js +29 -0
  39. package/build/core/services/clients.js.map +1 -0
  40. package/build/core/services/contract-data.d.ts +31 -0
  41. package/build/core/services/contract-data.js +54 -0
  42. package/build/core/services/contract-data.js.map +1 -0
  43. package/build/core/services/contracts.d.ts +108 -0
  44. package/build/core/services/contracts.js +482 -0
  45. package/build/core/services/contracts.js.map +1 -0
  46. package/build/core/services/events.d.ts +56 -0
  47. package/build/core/services/events.js +99 -0
  48. package/build/core/services/events.js.map +1 -0
  49. package/build/core/services/governance.d.ts +78 -0
  50. package/build/core/services/governance.js +207 -0
  51. package/build/core/services/governance.js.map +1 -0
  52. package/build/core/services/index.d.ts +28 -0
  53. package/build/core/services/index.js +81 -0
  54. package/build/core/services/index.js.map +1 -0
  55. package/build/core/services/mempool.d.ts +12 -0
  56. package/build/core/services/mempool.js +32 -0
  57. package/build/core/services/mempool.js.map +1 -0
  58. package/build/core/services/multicall-abi.d.ts +55 -0
  59. package/build/core/services/multicall-abi.js +61 -0
  60. package/build/core/services/multicall-abi.js.map +1 -0
  61. package/build/core/services/nodes.d.ts +8 -0
  62. package/build/core/services/nodes.js +18 -0
  63. package/build/core/services/nodes.js.map +1 -0
  64. package/build/core/services/proposals.d.ts +33 -0
  65. package/build/core/services/proposals.js +95 -0
  66. package/build/core/services/proposals.js.map +1 -0
  67. package/build/core/services/query.d.ts +34 -0
  68. package/build/core/services/query.js +60 -0
  69. package/build/core/services/query.js.map +1 -0
  70. package/build/core/services/staking.d.ts +40 -0
  71. package/build/core/services/staking.js +113 -0
  72. package/build/core/services/staking.js.map +1 -0
  73. package/build/core/services/tokens.d.ts +22 -0
  74. package/build/core/services/tokens.js +68 -0
  75. package/build/core/services/tokens.js.map +1 -0
  76. package/build/core/services/transactions.d.ts +16 -0
  77. package/build/core/services/transactions.js +42 -0
  78. package/build/core/services/transactions.js.map +1 -0
  79. package/build/core/services/transfer.d.ts +24 -0
  80. package/build/core/services/transfer.js +84 -0
  81. package/build/core/services/transfer.js.map +1 -0
  82. package/build/core/services/trongrid-client.d.ts +14 -0
  83. package/build/core/services/trongrid-client.js +19 -0
  84. package/build/core/services/trongrid-client.js.map +1 -0
  85. package/build/core/services/utils.d.ts +13 -0
  86. package/build/core/services/utils.js +39 -0
  87. package/build/core/services/utils.js.map +1 -0
  88. package/build/core/services/wallet.d.ts +13 -0
  89. package/build/core/services/wallet.js +18 -0
  90. package/build/core/services/wallet.js.map +1 -0
  91. package/build/core/tools/account-data.d.ts +2 -0
  92. package/build/core/tools/account-data.js +253 -0
  93. package/build/core/tools/account-data.js.map +1 -0
  94. package/build/core/tools/account-resource.d.ts +2 -0
  95. package/build/core/tools/account-resource.js +269 -0
  96. package/build/core/tools/account-resource.js.map +1 -0
  97. package/build/core/tools/account.d.ts +2 -0
  98. package/build/core/tools/account.js +451 -0
  99. package/build/core/tools/account.js.map +1 -0
  100. package/build/core/tools/address.d.ts +2 -0
  101. package/build/core/tools/address.js +45 -0
  102. package/build/core/tools/address.js.map +1 -0
  103. package/build/core/tools/balance.d.ts +2 -0
  104. package/build/core/tools/balance.js +94 -0
  105. package/build/core/tools/balance.js.map +1 -0
  106. package/build/core/tools/block.d.ts +2 -0
  107. package/build/core/tools/block.js +74 -0
  108. package/build/core/tools/block.js.map +1 -0
  109. package/build/core/tools/broadcast.d.ts +2 -0
  110. package/build/core/tools/broadcast.js +102 -0
  111. package/build/core/tools/broadcast.js.map +1 -0
  112. package/build/core/tools/contract-data.d.ts +2 -0
  113. package/build/core/tools/contract-data.js +159 -0
  114. package/build/core/tools/contract-data.js.map +1 -0
  115. package/build/core/tools/contract.d.ts +2 -0
  116. package/build/core/tools/contract.js +600 -0
  117. package/build/core/tools/contract.js.map +1 -0
  118. package/build/core/tools/event.d.ts +2 -0
  119. package/build/core/tools/event.js +159 -0
  120. package/build/core/tools/event.js.map +1 -0
  121. package/build/core/tools/governance.d.ts +6 -0
  122. package/build/core/tools/governance.js +424 -0
  123. package/build/core/tools/governance.js.map +1 -0
  124. package/build/core/tools/index.d.ts +15 -0
  125. package/build/core/tools/index.js +93 -0
  126. package/build/core/tools/index.js.map +1 -0
  127. package/build/core/tools/mempool.d.ts +2 -0
  128. package/build/core/tools/mempool.js +116 -0
  129. package/build/core/tools/mempool.js.map +1 -0
  130. package/build/core/tools/network.d.ts +2 -0
  131. package/build/core/tools/network.js +114 -0
  132. package/build/core/tools/network.js.map +1 -0
  133. package/build/core/tools/node.d.ts +2 -0
  134. package/build/core/tools/node.js +75 -0
  135. package/build/core/tools/node.js.map +1 -0
  136. package/build/core/tools/proposals.d.ts +6 -0
  137. package/build/core/tools/proposals.js +219 -0
  138. package/build/core/tools/proposals.js.map +1 -0
  139. package/build/core/tools/query.d.ts +2 -0
  140. package/build/core/tools/query.js +399 -0
  141. package/build/core/tools/query.js.map +1 -0
  142. package/build/core/tools/staking.d.ts +2 -0
  143. package/build/core/tools/staking.js +281 -0
  144. package/build/core/tools/staking.js.map +1 -0
  145. package/build/core/tools/transaction.d.ts +2 -0
  146. package/build/core/tools/transaction.js +65 -0
  147. package/build/core/tools/transaction.js.map +1 -0
  148. package/build/core/tools/transfer.d.ts +2 -0
  149. package/build/core/tools/transfer.js +101 -0
  150. package/build/core/tools/transfer.js.map +1 -0
  151. package/build/core/tools/types.d.ts +13 -0
  152. package/build/core/tools/types.js +2 -0
  153. package/build/core/tools/types.js.map +1 -0
  154. package/build/core/tools/wallet.d.ts +2 -0
  155. package/build/core/tools/wallet.js +172 -0
  156. package/build/core/tools/wallet.js.map +1 -0
  157. package/build/index.d.ts +1 -0
  158. package/build/index.js +21 -0
  159. package/build/index.js.map +1 -0
  160. package/build/middleware/auth.d.ts +16 -0
  161. package/build/middleware/auth.js +44 -0
  162. package/build/middleware/auth.js.map +1 -0
  163. package/build/oauth/OAuthService.d.ts +100 -0
  164. package/build/oauth/OAuthService.js +507 -0
  165. package/build/oauth/OAuthService.js.map +1 -0
  166. package/build/oauth/page.d.ts +1 -0
  167. package/build/oauth/page.js +255 -0
  168. package/build/oauth/page.js.map +1 -0
  169. package/build/oauth/types.d.ts +65 -0
  170. package/build/oauth/types.js +2 -0
  171. package/build/oauth/types.js.map +1 -0
  172. package/build/server/http-app.d.ts +9 -0
  173. package/build/server/http-app.js +128 -0
  174. package/build/server/http-app.js.map +1 -0
  175. package/build/server/http-server.d.ts +1 -0
  176. package/build/server/http-server.js +35 -0
  177. package/build/server/http-server.js.map +1 -0
  178. package/build/server/oauth-routes.d.ts +7 -0
  179. package/build/server/oauth-routes.js +157 -0
  180. package/build/server/oauth-routes.js.map +1 -0
  181. package/build/server/server.d.ts +9 -0
  182. package/build/server/server.js +54 -0
  183. package/build/server/server.js.map +1 -0
  184. package/build/tenant/TenantManager.d.ts +35 -0
  185. package/build/tenant/TenantManager.js +167 -0
  186. package/build/tenant/TenantManager.js.map +1 -0
  187. package/build/tenant/context.d.ts +11 -0
  188. package/build/tenant/context.js +23 -0
  189. package/build/tenant/context.js.map +1 -0
  190. package/build/tenant/types.d.ts +16 -0
  191. package/build/tenant/types.js +2 -0
  192. package/build/tenant/types.js.map +1 -0
  193. package/package.json +95 -0
@@ -0,0 +1,144 @@
1
+ export interface FormattedAccountInfo {
2
+ address: string;
3
+ balance_trx: string;
4
+ account_name: string;
5
+ create_time: number;
6
+ net_usage: number;
7
+ free_net_usage: number;
8
+ energy_usage: number;
9
+ trc20_balances: {
10
+ address: string;
11
+ balance: string;
12
+ }[];
13
+ frozen_v2: unknown[];
14
+ votes: unknown[];
15
+ }
16
+ export interface FormattedTransaction {
17
+ txID: string;
18
+ blockNumber: number;
19
+ blockTimestamp: number;
20
+ type: string;
21
+ from: string;
22
+ to: string;
23
+ amount_trx: string;
24
+ confirmed: boolean;
25
+ fee_trx: string;
26
+ energyUsage: number;
27
+ netUsage: number;
28
+ }
29
+ export interface FormattedTrc20Transaction {
30
+ transaction_id: string;
31
+ block_timestamp: number;
32
+ from: string;
33
+ to: string;
34
+ value: string;
35
+ value_raw: string;
36
+ token_address: string;
37
+ token_name: string;
38
+ token_symbol: string;
39
+ token_decimals: number;
40
+ type: string;
41
+ confirmed: boolean;
42
+ }
43
+ export interface FormattedInternalTransaction {
44
+ transaction_id: string;
45
+ internal_transaction_id: string;
46
+ block: number;
47
+ block_timestamp: number;
48
+ from: string;
49
+ to: string;
50
+ callValueInfo: unknown[];
51
+ note: string;
52
+ rejected: boolean;
53
+ confirmed: boolean;
54
+ }
55
+ export interface NormalizedBalance {
56
+ address: string;
57
+ balance: string;
58
+ }
59
+ /**
60
+ * Normalise `{addr: "bal"}` single-key objects into `{address, balance}[]`.
61
+ * Used by both TRC20 balances and token holders endpoints.
62
+ */
63
+ export declare function normalizeKeyValuePairs(data: Record<string, string>[] | unknown): NormalizedBalance[];
64
+ /**
65
+ * Format raw /v1/accounts/{address} response.
66
+ */
67
+ export declare function formatAccountInfo(raw: any): FormattedAccountInfo;
68
+ /**
69
+ * Format raw /v1/accounts/{address}/transactions response.
70
+ * Also used for /v1/contracts/{address}/transactions.
71
+ */
72
+ export declare function formatTransactions(raw: any): {
73
+ transactions: FormattedTransaction[];
74
+ count: number;
75
+ fingerprint?: string;
76
+ };
77
+ /**
78
+ * Format raw /v1/accounts/{address}/transactions/trc20 response.
79
+ */
80
+ export declare function formatTrc20Transactions(raw: any): {
81
+ transactions: FormattedTrc20Transaction[];
82
+ count: number;
83
+ fingerprint?: string;
84
+ };
85
+ /**
86
+ * Format raw internal transactions response.
87
+ * Used by both account and contract internal-transactions endpoints.
88
+ */
89
+ export declare function formatInternalTransactions(raw: any): {
90
+ transactions: FormattedInternalTransaction[];
91
+ count: number;
92
+ fingerprint?: string;
93
+ };
94
+ export interface PaginationOptions {
95
+ limit?: number;
96
+ fingerprint?: string;
97
+ onlyConfirmed?: boolean;
98
+ onlyUnconfirmed?: boolean;
99
+ orderBy?: string;
100
+ minTimestamp?: number;
101
+ maxTimestamp?: number;
102
+ }
103
+ /**
104
+ * Get account info from TronGrid `/v1/accounts/{address}`.
105
+ */
106
+ export declare function getAccountInfo(address: string, options?: {
107
+ onlyConfirmed?: boolean;
108
+ }, network?: string): Promise<FormattedAccountInfo>;
109
+ /**
110
+ * Get account transactions from TronGrid `/v1/accounts/{address}/transactions`.
111
+ */
112
+ export declare function getAccountTransactions(address: string, options?: PaginationOptions, network?: string): Promise<{
113
+ transactions: FormattedTransaction[];
114
+ count: number;
115
+ fingerprint?: string;
116
+ }>;
117
+ /**
118
+ * Get account TRC20 transactions from TronGrid `/v1/accounts/{address}/transactions/trc20`.
119
+ */
120
+ export declare function getAccountTrc20Transactions(address: string, options?: PaginationOptions & {
121
+ contractAddress?: string;
122
+ }, network?: string): Promise<{
123
+ transactions: FormattedTrc20Transaction[];
124
+ count: number;
125
+ fingerprint?: string;
126
+ }>;
127
+ /**
128
+ * Get account internal transactions from TronGrid `/v1/accounts/{address}/internal-transactions`.
129
+ */
130
+ export declare function getAccountInternalTransactions(address: string, options?: PaginationOptions, network?: string): Promise<{
131
+ transactions: FormattedInternalTransaction[];
132
+ count: number;
133
+ fingerprint?: string;
134
+ }>;
135
+ /**
136
+ * Get account TRC20 token balances from TronGrid `/v1/accounts/{address}/trc20/balance`.
137
+ * Returns only address + balance pairs, no token metadata.
138
+ */
139
+ export declare function getAccountTrc20Balances(address: string, options?: {
140
+ onlyConfirmed?: boolean;
141
+ }, network?: string): Promise<{
142
+ balances: NormalizedBalance[];
143
+ count: number;
144
+ }>;
@@ -0,0 +1,228 @@
1
+ import { toBase58Address } from "./address.js";
2
+ import { utils } from "./utils.js";
3
+ import { tronGridGet } from "./trongrid-client.js";
4
+ // ---------------------------------------------------------------------------
5
+ // Formatters
6
+ // ---------------------------------------------------------------------------
7
+ function hexToUtf8(hex) {
8
+ if (!hex)
9
+ return "";
10
+ try {
11
+ return Buffer.from(hex, "hex").toString("utf8");
12
+ }
13
+ catch {
14
+ return hex;
15
+ }
16
+ }
17
+ function safeDivide(sun, decimals) {
18
+ if (sun === undefined || sun === null)
19
+ return "0";
20
+ if (decimals === 0)
21
+ return String(sun);
22
+ const raw = String(sun).replace(/^-/, "");
23
+ const negative = String(sun).startsWith("-");
24
+ const padded = raw.padStart(decimals + 1, "0");
25
+ const intPart = padded.slice(0, padded.length - decimals);
26
+ const fracPart = padded.slice(padded.length - decimals).replace(/0+$/, "");
27
+ const result = fracPart ? `${intPart}.${fracPart}` : intPart;
28
+ return negative ? `-${result}` : result;
29
+ }
30
+ /**
31
+ * Normalise `{addr: "bal"}` single-key objects into `{address, balance}[]`.
32
+ * Used by both TRC20 balances and token holders endpoints.
33
+ */
34
+ export function normalizeKeyValuePairs(data) {
35
+ if (!Array.isArray(data))
36
+ return [];
37
+ return data.map((item) => {
38
+ const entries = Object.entries(item);
39
+ if (entries.length === 1) {
40
+ const [address, balance] = entries[0];
41
+ return {
42
+ address: toBase58Address(address),
43
+ balance: String(balance),
44
+ };
45
+ }
46
+ // Already normalised or unexpected shape – pass through
47
+ return {
48
+ address: String(item.address ?? ""),
49
+ balance: String(item.balance ?? "0"),
50
+ };
51
+ });
52
+ }
53
+ /**
54
+ * Format raw /v1/accounts/{address} response.
55
+ */
56
+ export function formatAccountInfo(raw) {
57
+ const d = raw.data?.[0] ?? raw;
58
+ return {
59
+ address: toBase58Address(d.address ?? ""),
60
+ balance_trx: utils.fromSun(d.balance ?? 0),
61
+ account_name: hexToUtf8(d.account_name ?? ""),
62
+ create_time: d.create_time ?? 0,
63
+ net_usage: d.net_usage ?? 0,
64
+ free_net_usage: d.free_net_usage ?? 0,
65
+ energy_usage: d.account_resource?.energy_usage ?? 0,
66
+ trc20_balances: normalizeKeyValuePairs(d.trc20 ?? []),
67
+ frozen_v2: d.frozenV2 ?? [],
68
+ votes: d.votes ?? [],
69
+ };
70
+ }
71
+ /**
72
+ * Format raw /v1/accounts/{address}/transactions response.
73
+ * Also used for /v1/contracts/{address}/transactions.
74
+ */
75
+ export function formatTransactions(raw) {
76
+ const data = raw.data ?? [];
77
+ const transactions = data.map((tx) => {
78
+ const contract = tx.raw_data?.contract?.[0] ?? {};
79
+ const value = contract.parameter?.value ?? {};
80
+ const fee = tx.cost?.fee ?? 0;
81
+ return {
82
+ txID: tx.txID ?? tx.transaction_id ?? "",
83
+ blockNumber: tx.blockNumber ?? 0,
84
+ blockTimestamp: tx.block_timestamp ?? 0,
85
+ type: contract.type ?? "",
86
+ from: value.owner_address ? toBase58Address(value.owner_address) : "",
87
+ to: value.to_address
88
+ ? toBase58Address(value.to_address)
89
+ : value.contract_address
90
+ ? toBase58Address(value.contract_address)
91
+ : "",
92
+ amount_trx: safeDivide(value.amount, 6),
93
+ confirmed: !tx._unconfirmed,
94
+ fee_trx: safeDivide(fee, 6),
95
+ energyUsage: tx.cost?.energy_usage ?? 0,
96
+ netUsage: tx.cost?.net_usage ?? 0,
97
+ };
98
+ });
99
+ return {
100
+ transactions,
101
+ count: transactions.length,
102
+ ...(raw.meta?.fingerprint ? { fingerprint: raw.meta.fingerprint } : {}),
103
+ };
104
+ }
105
+ /**
106
+ * Format raw /v1/accounts/{address}/transactions/trc20 response.
107
+ */
108
+ export function formatTrc20Transactions(raw) {
109
+ const data = raw.data ?? [];
110
+ const transactions = data.map((tx) => {
111
+ const tokenInfo = tx.token_info ?? {};
112
+ const decimals = Number(tokenInfo.decimals ?? 0);
113
+ const rawValue = tx.value ?? "0";
114
+ return {
115
+ transaction_id: tx.transaction_id ?? "",
116
+ block_timestamp: tx.block_timestamp ?? 0,
117
+ from: tx.from ? toBase58Address(tx.from) : "",
118
+ to: tx.to ? toBase58Address(tx.to) : "",
119
+ value: safeDivide(rawValue, decimals),
120
+ value_raw: String(rawValue),
121
+ token_address: tokenInfo.address ? toBase58Address(tokenInfo.address) : "",
122
+ token_name: tokenInfo.name ?? "",
123
+ token_symbol: tokenInfo.symbol ?? "",
124
+ token_decimals: decimals,
125
+ type: tx.type ?? "",
126
+ confirmed: !tx._unconfirmed,
127
+ };
128
+ });
129
+ return {
130
+ transactions,
131
+ count: transactions.length,
132
+ ...(raw.meta?.fingerprint ? { fingerprint: raw.meta.fingerprint } : {}),
133
+ };
134
+ }
135
+ /**
136
+ * Format raw internal transactions response.
137
+ * Used by both account and contract internal-transactions endpoints.
138
+ */
139
+ export function formatInternalTransactions(raw) {
140
+ const data = raw.data ?? [];
141
+ const transactions = data.map((tx) => ({
142
+ transaction_id: tx.transaction_id ?? "",
143
+ internal_transaction_id: tx.internal_transaction_id ?? "",
144
+ block: tx.block ?? 0,
145
+ block_timestamp: tx.block_timestamp ?? 0,
146
+ from: tx.caller_address ? toBase58Address(tx.caller_address) : "",
147
+ to: tx.transferTo_address ? toBase58Address(tx.transferTo_address) : "",
148
+ callValueInfo: tx.callValueInfo ?? [],
149
+ note: tx.data?.note ? hexToUtf8(tx.data.note) : "",
150
+ rejected: tx.data?.rejected ?? tx.rejected ?? false,
151
+ confirmed: !tx._unconfirmed,
152
+ }));
153
+ return {
154
+ transactions,
155
+ count: transactions.length,
156
+ ...(raw.meta?.fingerprint ? { fingerprint: raw.meta.fingerprint } : {}),
157
+ };
158
+ }
159
+ // ---------------------------------------------------------------------------
160
+ // Service functions
161
+ // ---------------------------------------------------------------------------
162
+ /**
163
+ * Get account info from TronGrid `/v1/accounts/{address}`.
164
+ */
165
+ export async function getAccountInfo(address, options = {}, network = "mainnet") {
166
+ const raw = await tronGridGet(network, `/v1/accounts/${address}`, {
167
+ only_confirmed: options.onlyConfirmed,
168
+ });
169
+ return formatAccountInfo(raw);
170
+ }
171
+ /**
172
+ * Get account transactions from TronGrid `/v1/accounts/{address}/transactions`.
173
+ */
174
+ export async function getAccountTransactions(address, options = {}, network = "mainnet") {
175
+ const raw = await tronGridGet(network, `/v1/accounts/${address}/transactions`, {
176
+ limit: options.limit,
177
+ fingerprint: options.fingerprint,
178
+ only_confirmed: options.onlyConfirmed,
179
+ only_unconfirmed: options.onlyUnconfirmed,
180
+ order_by: options.orderBy,
181
+ min_timestamp: options.minTimestamp,
182
+ max_timestamp: options.maxTimestamp,
183
+ });
184
+ return formatTransactions(raw);
185
+ }
186
+ /**
187
+ * Get account TRC20 transactions from TronGrid `/v1/accounts/{address}/transactions/trc20`.
188
+ */
189
+ export async function getAccountTrc20Transactions(address, options = {}, network = "mainnet") {
190
+ const raw = await tronGridGet(network, `/v1/accounts/${address}/transactions/trc20`, {
191
+ limit: options.limit,
192
+ fingerprint: options.fingerprint,
193
+ only_confirmed: options.onlyConfirmed,
194
+ only_unconfirmed: options.onlyUnconfirmed,
195
+ order_by: options.orderBy,
196
+ min_timestamp: options.minTimestamp,
197
+ max_timestamp: options.maxTimestamp,
198
+ contract_address: options.contractAddress,
199
+ });
200
+ return formatTrc20Transactions(raw);
201
+ }
202
+ /**
203
+ * Get account internal transactions from TronGrid `/v1/accounts/{address}/internal-transactions`.
204
+ */
205
+ export async function getAccountInternalTransactions(address, options = {}, network = "mainnet") {
206
+ const raw = await tronGridGet(network, `/v1/accounts/${address}/internal-transactions`, {
207
+ limit: options.limit,
208
+ fingerprint: options.fingerprint,
209
+ only_confirmed: options.onlyConfirmed,
210
+ only_unconfirmed: options.onlyUnconfirmed,
211
+ order_by: options.orderBy,
212
+ min_timestamp: options.minTimestamp,
213
+ max_timestamp: options.maxTimestamp,
214
+ });
215
+ return formatInternalTransactions(raw);
216
+ }
217
+ /**
218
+ * Get account TRC20 token balances from TronGrid `/v1/accounts/{address}/trc20/balance`.
219
+ * Returns only address + balance pairs, no token metadata.
220
+ */
221
+ export async function getAccountTrc20Balances(address, options = {}, network = "mainnet") {
222
+ const raw = await tronGridGet(network, `/v1/accounts/${address}/trc20/balance`, { only_confirmed: options.onlyConfirmed });
223
+ return {
224
+ balances: normalizeKeyValuePairs(raw.data ?? []),
225
+ count: (raw.data ?? []).length,
226
+ };
227
+ }
228
+ //# sourceMappingURL=account-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-data.js","sourceRoot":"","sources":["../../../src/core/services/account-data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Delegate staked resources (BANDWIDTH or ENERGY) to another address.
3
+ * Wraps TronWeb's transactionBuilder.delegateResource.
4
+ */
5
+ export declare function delegateResource(params: {
6
+ amount: number;
7
+ receiverAddress: string;
8
+ resource: "BANDWIDTH" | "ENERGY";
9
+ lock?: boolean;
10
+ lockPeriod?: number;
11
+ }, network?: string): Promise<string>;
12
+ /**
13
+ * Revoke delegated resources (BANDWIDTH or ENERGY) from a receiver address.
14
+ * Wraps TronWeb's transactionBuilder.undelegateResource.
15
+ */
16
+ export declare function undelegateResource(params: {
17
+ amount: number;
18
+ receiverAddress: string;
19
+ resource: "BANDWIDTH" | "ENERGY";
20
+ }, network?: string): Promise<string>;
21
+ /**
22
+ * Get the maximum amount of resources that can currently be delegated by an address.
23
+ * Wraps TronWeb's trx.getCanDelegatedMaxSize / walletsolidity.getcandelegatedmaxsize.
24
+ */
25
+ export declare function getCanDelegatedMaxSize(address: string, resource: "BANDWIDTH" | "ENERGY", network?: string): Promise<{
26
+ address: string;
27
+ resource: "BANDWIDTH" | "ENERGY";
28
+ maxSizeSun: bigint;
29
+ }>;
30
+ /**
31
+ * Get delegated resource details between two addresses under Stake 2.0.
32
+ * Wraps TronWeb's trx.getDelegatedResourceV2 / wallet.getdelegatedresourcev2.
33
+ */
34
+ export declare function getDelegatedResourceV2(fromAddress: string, toAddress: string, network?: string): Promise<{
35
+ from: string;
36
+ to: string;
37
+ delegatedResource: {
38
+ from: any;
39
+ to: any;
40
+ frozenBalanceForBandwidthSun: string;
41
+ frozenBalanceForEnergySun: string;
42
+ expireTimeForBandwidth: any;
43
+ expireTimeForEnergy: any;
44
+ }[];
45
+ raw: any;
46
+ }>;
47
+ /**
48
+ * Get delegated resource account index for an address under Stake 2.0.
49
+ * Wraps walletsolidity.getdelegatedresourceaccountindexv2.
50
+ */
51
+ export declare function getDelegatedResourceAccountIndexV2(address: string, network?: string): Promise<{
52
+ account: any;
53
+ fromAccounts: any;
54
+ toAccounts: any;
55
+ raw: unknown;
56
+ }>;
@@ -0,0 +1,133 @@
1
+ import { getTronWeb } from "./clients.js";
2
+ import { getOwnerAddress, buildSignBroadcast } from "./agent-wallet.js";
3
+ /**
4
+ * Delegate staked resources (BANDWIDTH or ENERGY) to another address.
5
+ * Wraps TronWeb's transactionBuilder.delegateResource.
6
+ */
7
+ export async function delegateResource(params, network = "mainnet") {
8
+ const tronWeb = getTronWeb(network);
9
+ const ownerAddress = await getOwnerAddress();
10
+ try {
11
+ const { amount, receiverAddress, resource, lock = false, lockPeriod = 0 } = params;
12
+ const tx = await tronWeb.transactionBuilder.delegateResource(amount, receiverAddress, resource, ownerAddress, lock, lockPeriod, {});
13
+ return await buildSignBroadcast(tx, network);
14
+ }
15
+ catch (error) {
16
+ throw new Error(`Failed to delegate resource: ${error.message}`);
17
+ }
18
+ }
19
+ /**
20
+ * Revoke delegated resources (BANDWIDTH or ENERGY) from a receiver address.
21
+ * Wraps TronWeb's transactionBuilder.undelegateResource.
22
+ */
23
+ export async function undelegateResource(params, network = "mainnet") {
24
+ const tronWeb = getTronWeb(network);
25
+ const ownerAddress = await getOwnerAddress();
26
+ try {
27
+ const { amount, receiverAddress, resource } = params;
28
+ const tx = await tronWeb.transactionBuilder.undelegateResource(amount, receiverAddress, resource, ownerAddress, {});
29
+ return await buildSignBroadcast(tx, network);
30
+ }
31
+ catch (error) {
32
+ throw new Error(`Failed to undelegate resource: ${error.message}`);
33
+ }
34
+ }
35
+ /**
36
+ * Get the maximum amount of resources that can currently be delegated by an address.
37
+ * Wraps TronWeb's trx.getCanDelegatedMaxSize / walletsolidity.getcandelegatedmaxsize.
38
+ */
39
+ export async function getCanDelegatedMaxSize(address, resource, network = "mainnet") {
40
+ const tronWeb = getTronWeb(network);
41
+ try {
42
+ // Prefer TronWeb helper if available
43
+ const type = resource === "ENERGY" ? 1 : 0;
44
+ // tronWeb.trx.getCanDelegatedMaxSize(address, resourceType)
45
+ const res = typeof tronWeb.trx.getCanDelegatedMaxSize === "function"
46
+ ? await tronWeb.trx.getCanDelegatedMaxSize(address, resource)
47
+ : await tronWeb.fullNode.request("wallet/getcandelegatedmaxsize", {
48
+ owner_address: tronWeb.address.toHex(address),
49
+ type,
50
+ visible: false,
51
+ }, "post");
52
+ const raw = res?.max_size;
53
+ if (raw === undefined || (typeof raw !== "number" && typeof raw !== "string")) {
54
+ throw new Error(`Unexpected response from getCanDelegatedMaxSize: ${JSON.stringify(res)}`);
55
+ }
56
+ const maxSizeSun = BigInt(raw);
57
+ return {
58
+ address,
59
+ resource,
60
+ maxSizeSun,
61
+ };
62
+ }
63
+ catch (error) {
64
+ throw new Error(`Failed to get can delegated max size: ${error.message}`);
65
+ }
66
+ }
67
+ /**
68
+ * Get delegated resource details between two addresses under Stake 2.0.
69
+ * Wraps TronWeb's trx.getDelegatedResourceV2 / wallet.getdelegatedresourcev2.
70
+ */
71
+ export async function getDelegatedResourceV2(fromAddress, toAddress, network = "mainnet") {
72
+ const tronWeb = getTronWeb(network);
73
+ try {
74
+ const res = typeof tronWeb.trx.getDelegatedResourceV2 === "function"
75
+ ? await tronWeb.trx.getDelegatedResourceV2(fromAddress, toAddress, {
76
+ confirmed: true,
77
+ })
78
+ : await tronWeb.fullNode.request("wallet/getdelegatedresourcev2", {
79
+ fromAddress: tronWeb.address.toHex(fromAddress),
80
+ toAddress: tronWeb.address.toHex(toAddress),
81
+ visible: false,
82
+ }, "post");
83
+ const delegated = res?.delegatedResource || (Array.isArray(res) ? res : []);
84
+ // Normalize numeric fields to BigInt/string form for safety
85
+ const normalized = delegated.map((item) => {
86
+ const bandwidth = item.frozen_balance_for_bandwidth ?? 0;
87
+ const energy = item.frozen_balance_for_energy ?? 0;
88
+ return {
89
+ from: item.from || fromAddress,
90
+ to: item.to || toAddress,
91
+ frozenBalanceForBandwidthSun: BigInt(bandwidth).toString(),
92
+ frozenBalanceForEnergySun: BigInt(energy).toString(),
93
+ expireTimeForBandwidth: item.expire_time_for_bandwidth ?? 0,
94
+ expireTimeForEnergy: item.expire_time_for_energy ?? 0,
95
+ };
96
+ });
97
+ return {
98
+ from: fromAddress,
99
+ to: toAddress,
100
+ delegatedResource: normalized,
101
+ raw: res,
102
+ };
103
+ }
104
+ catch (error) {
105
+ throw new Error(`Failed to get delegated resource v2: ${error.message}`);
106
+ }
107
+ }
108
+ /**
109
+ * Get delegated resource account index for an address under Stake 2.0.
110
+ * Wraps walletsolidity.getdelegatedresourceaccountindexv2.
111
+ */
112
+ export async function getDelegatedResourceAccountIndexV2(address, network = "mainnet") {
113
+ const tronWeb = getTronWeb(network);
114
+ try {
115
+ const res = await tronWeb.fullNode.request("wallet/getdelegatedresourceaccountindexv2", {
116
+ value: tronWeb.address.toHex(address),
117
+ visible: false,
118
+ }, "post");
119
+ const account = res?.account ?? address;
120
+ const fromAccounts = res?.fromAccounts ?? [];
121
+ const toAccounts = res?.toAccounts ?? [];
122
+ return {
123
+ account,
124
+ fromAccounts,
125
+ toAccounts,
126
+ raw: res,
127
+ };
128
+ }
129
+ catch (error) {
130
+ throw new Error(`Failed to get delegated resource account index v2: ${error.message}`);
131
+ }
132
+ }
133
+ //# sourceMappingURL=account-resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-resource.js","sourceRoot":"","sources":["../../../src/core/services/account-resource.ts"],"names":[],"mappings":"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"}