From b669042c22fb8fc9361cac9a5f2f86eec77646e8 Mon Sep 17 00:00:00 2001 From: SergeyG-Solicy Date: Mon, 5 Jan 2026 11:35:08 +0400 Subject: [PATCH] TRON integration --- sdk/localsdk/multichain/configs/chainProviders.ts | 8 +++++++- src/features/multichain/routines/executors/pay.ts | 4 ++++ src/libs/blockchain/gcr/gcr_routines/identityManager.ts | 9 ++++++--- src/utilities/validateUint8Array.ts | 6 ++++++ 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/sdk/localsdk/multichain/configs/chainProviders.ts b/sdk/localsdk/multichain/configs/chainProviders.ts index f837c78f..8c3d3a67 100644 --- a/sdk/localsdk/multichain/configs/chainProviders.ts +++ b/sdk/localsdk/multichain/configs/chainProviders.ts @@ -50,4 +50,10 @@ export const chainProviders = { testnet: "https://fullnode.testnet.aptoslabs.com/v1", devnet: "https://fullnode.devnet.aptoslabs.com/v1", }, -} + tron: { + mainnet: "https://api.trongrid.io", + testnet: "https://api.shasta.trongrid.io", + shasta: "https://api.shasta.trongrid.io", + nile: "https://nile.trongrid.io", + }, +} \ No newline at end of file diff --git a/src/features/multichain/routines/executors/pay.ts b/src/features/multichain/routines/executors/pay.ts index 2ed316b9..1baf15b4 100644 --- a/src/features/multichain/routines/executors/pay.ts +++ b/src/features/multichain/routines/executors/pay.ts @@ -98,6 +98,10 @@ export default async function handlePayOperation( result = await handleAptosPayRest(operation) break + case "tron": + result = await genericJsonRpcPay(multichain.TRON, rpcUrl, operation) + break + default: result = { result: "error", diff --git a/src/libs/blockchain/gcr/gcr_routines/identityManager.ts b/src/libs/blockchain/gcr/gcr_routines/identityManager.ts index 45018975..6ed38810 100644 --- a/src/libs/blockchain/gcr/gcr_routines/identityManager.ts +++ b/src/libs/blockchain/gcr/gcr_routines/identityManager.ts @@ -13,6 +13,7 @@ import { NEAR, SOLANA, TON, + TRON, XRPL, BTC, } from "@kynesyslabs/demosdk/xm-localsdk" @@ -42,6 +43,7 @@ const chains: { [key: string]: typeof DefaultChain } = { evm: EVM, egld: MULTIVERSX, ton: TON, + tron: TRON, xrpl: XRPL, ibc: IBC, atom: IBC, @@ -141,9 +143,10 @@ export default class IdentityManager { // } // } - // SECTION: SOLANA Checks - // INFO: Check if the subchain is mainnet - if (chain === "solana" && subchain !== "mainnet") { + // SECTION: Mainnet-only chain checks + // INFO: Some chains only support mainnet for identity management + const mainnetOnlyChains = ["solana", "tron"] + if (mainnetOnlyChains.includes(chain) && subchain !== "mainnet") { return { ...response, message: "Failed: Testnet addresses are not supported", diff --git a/src/utilities/validateUint8Array.ts b/src/utilities/validateUint8Array.ts index 60cbce0c..673181f9 100644 --- a/src/utilities/validateUint8Array.ts +++ b/src/utilities/validateUint8Array.ts @@ -17,6 +17,12 @@ export default function validateIfUint8Array(input: unknown): Uint8Array | unkno // Type guard: check if input is a record-like object with numeric integer keys and number values if (typeof input === "object" && input !== null) { + // Skip conversion for transaction objects that are not meant to be Uint8Arrays + const isSerializedTx = 'signature' in input && 'txID' in input && 'raw_data' in input + if (isSerializedTx) { + return input + } + // Safely cast to indexable type after basic validation const record = input as Record const entries = Object.entries(record)