import { AccountType } from './Contract.js'; import { SignedTransaction, Transaction } from './Transaction.js'; import { Resource } from './TransactionBuilder.js'; import { APIReturnedPermission } from './APIResponse.js'; type HTTPMap = Record[]; type AssetType = { key: string; value: number; }[]; export interface FrozenSupply { frozen_amount: number; frozen_days: number; } export interface Token { id: string; owner_address: string; name: string; abbr: string; total_supply: number; frozen_supply: FrozenSupply[]; trx_num: number; precision: number; num: number; start_time: number; end_time: number; order: number; vote_score: number; description: string; url: string; free_asset_net_limit: number; public_free_asset_net_limit: number; public_free_asset_net_usage: number; public_latest_free_net_time: number; } export interface Frozen { frozen_balance: number; expire_time: number; } export interface Vote { vote_address: string; vote_count: number; } export interface AccountResource { energy_usage: number; frozen_balance_for_energy: Frozen; latest_consume_time_for_energy: number; acquired_delegated_frozen_balance_for_energy: number; delegated_frozen_balance_for_energy: number; storage_limit: number; storage_usage: number; latest_exchange_storage_time: number; energy_window_size: number; delegated_frozenV2_balance_for_energy: number; acquired_delegated_frozenV2_balance_for_energy: number; energy_window_optimized: boolean; } export declare enum ResourceCode { BANDWIDTH = 0, ENERGY = 1, TRON_POWER = 2 } export interface FreezeV2 { type: Resource; amount: number; } export interface UnFreezeV2 { type: Resource; unfreeze_amount: number; unfreeze_expire_time: number; } export interface Account { account_name: string; type: AccountType; address: string; balance: number; votes: Vote[]; asset: AssetType; assetV2: AssetType; frozen: Frozen[]; net_usage: number; acquired_delegated_frozen_balance_for_bandwidth: number; delegated_frozen_balance_for_bandwidth: number; old_tron_power: number; tron_power: Frozen; asset_optimized: boolean; create_time: number; latest_opration_time: number; allowance: number; latest_withdraw_time: number; code: string; is_witness: boolean; is_committee: boolean; frozen_supply: Frozen; asset_issued_name: string; asset_issued_ID: string; latest_asset_operation_time: HTTPMap; latest_asset_operation_timeV2: HTTPMap; free_net_usage: number; free_asset_net_usage: HTTPMap; free_asset_net_usageV2: HTTPMap; latest_consume_time: number; latest_consume_free_time: number; account_id: string; net_window_size: number; net_window_optimized: boolean; account_resource: AccountResource; codeHash: string; owner_permission: APIReturnedPermission; witness_permission: APIReturnedPermission; active_permission: APIReturnedPermission[]; frozenV2: FreezeV2[]; unfrozenV2: UnFreezeV2[]; delegated_frozenV2_balance_for_bandwidth: number; acquired_delegated_frozenV2_balance_for_bandwidth: number; } export interface AccountNetMessage { freeNetUsed: number; freeNetLimit: number; NetUsed: number; NetLimit: number; assetNetUsed: HTTPMap; assetNetLimit: HTTPMap; TotalNetLimit: number; TotalNetWeight: number; } export interface BaseWitness { address: string; voteCount: number; url: string; totalProduced: number; totalMissed: number; latestBlockNum: number; latestSlotNum: number; isJobs: boolean; } export interface Witness extends BaseWitness { pubKey: string; } declare enum TransactionSignWeight_response_code { ENOUGH_PERMISSION = "ENOUGH_PERMISSION", NOT_ENOUGH_PERMISSION = "NOT_ENOUGH_PERMISSION",// error in SIGNATURE_FORMAT_ERROR = "SIGNATURE_FORMAT_ERROR", COMPUTE_ADDRESS_ERROR = "COMPUTE_ADDRESS_ERROR", PERMISSION_ERROR = "PERMISSION_ERROR",//The key is not in permission OTHER_ERROR = "OTHER_ERROR" } interface TransactionSignWeightResult { code: TransactionSignWeight_response_code; message: string; } export interface TransactionSignWeight { permission: APIReturnedPermission; approved_list: string[]; current_weight: number; result: TransactionSignWeightResult; transaction: { transaction: Transaction; }; } export interface BroadcastReturn { result: boolean; txid: string; code: string; message: string; transaction: T; } export interface BroadcastHexReturn { result: boolean; txid: string; code: string; message: string; transaction: string; } export interface AddressOptions { privateKey?: string; address?: string; } declare enum ProposalState { PENDING = "PENDING", DISAPPROVED = "DISAPPROVED", APPROVED = "APPROVED", CANCELED = "CANCELED" } export interface Proposal { proposal_id: number; proposer_address: string; parameters: { key: number; value: number; }[]; expiration_time: number; create_time: number; approvals: string[]; state: ProposalState; } export interface ChainParameter { key: string; value: number; } export interface AccountResourceMessage { freeNetUsed: number; freeNetLimit: number; NetUsed: number; NetLimit: number; assetNetUsed: HTTPMap; assetNetLimit: HTTPMap; TotalNetLimit: number; TotalNetWeight: number; TotalTronPowerWeight: number; tronPowerUsed: number; tronPowerLimit: number; EnergyUsed: number; EnergyLimit: number; TotalEnergyLimit: number; TotalEnergyWeight: number; storageUsed: number; storageLimit: number; } export type Address = string; export interface Exchange { exchange_id: number; creator_address: Address; create_time: number; first_token_id: string; first_token_balance: number; second_token_id: string; second_token_balance: number; } export interface TransactionInfo { id: string; fee: number; blockNumber: number; blockTimeStamp: number; contractResult: string[]; contract_address: string; receipt: { energy_usage: number; energy_fee: number; origin_energy_usage: number; energy_usage_total: number; net_usage: number; net_fee: number; result: string; energy_penalty_total: number; }; log: { address: Address; topics: string[]; data: string; }[]; result?: 'FAILED'; resMessage: string; assetIssueID: string; withdraw_amount: number; unfreeze_amount: number; internal_transactions: { hash: string; caller_address: string; transferTo_address: string; callValueInfo: { callValue: number; tokenId: string; }[]; note: string; rejected: boolean; extra: string; }[]; exchange_received_amount: number; exchange_inject_another_amount: number; exchange_withdraw_another_amount: number; shielded_transaction_fee: number; withdraw_expire_amount: number; cancel_unfreezeV2_amount: HTTPMap; exchange_id: string; orderId: string; orderDetails: { makerOrderId: string; takerOrderId: string; fillSellQuantity: number; fillBuyQuantity: number; }[]; packingFee: number; } export interface WitnessList { witnesses: BaseWitness[]; } /** * Field names inside the mapped response types whose numeric value is NOT a proto * int64/uint64, so the node does not stringify them under `int64_as_string=true`: * - `id` — `Permission.id` is a proto int32 (Owner id=0, Witness id=1, Active id >= 2); * - `type` — `Account.type` / `contract[].type` are proto enums; * - `Permission_id` — proto int32 on `contract[]`; * - `version` — `block_header.raw_data.version` is a proto int32; * - `trx_num` / `precision` / `num` / `vote_score` — proto int32 fields of TRC10 tokens. * Verified against Nile: with the flag on, int64 fields flip to strings while these * keep their regular wire form (e.g. block `version: 37`, permission `id: 2`). */ type NonInt64NumberField = 'id' | 'type' | 'Permission_id' | 'version' | 'trx_num' | 'precision' | 'num' | 'vote_score'; /** * Response shape of `RawTrx` reads. With `int64_as_string=true` (java-tron#6699) * the node serializes protobuf int64/uint64 fields as JSON strings; this type maps * exactly those fields to `string` and leaves everything else as declared: * - proto int32 and enum fields (see {@link NonInt64NumberField}) keep their type; * - strings/booleans pass through untouched. * * Note: proto3 omits fields holding their default value, so declared-required fields * can still be absent at runtime (a fresh account is `{}`). */ export type Int64AsString = T extends bigint | string | boolean | null | undefined ? T : T extends number ? string : T extends (...args: any[]) => any ? T : T extends Map | Set | Date ? T : T extends object ? { [K in keyof T]: K extends NonInt64NumberField ? T[K] extends number | undefined ? T[K] : Int64AsString : Int64AsString; } : T; /** * Resolves to the raw (string-int64) response shape when `P` is true, * to the regular response shape otherwise. */ export type Precise64 = P extends true ? Int64AsString : T; export {};