From c48ca05bdd49ca2b44c61d5f06eda3bf96fbee77 Mon Sep 17 00:00:00 2001 From: Matty Evans Date: Thu, 22 Jan 2026 08:33:46 +1000 Subject: [PATCH 01/12] chore: merge conflict --- src/api/@tanstack/react-query.gen.ts | 254 ++ src/api/index.ts | 60 + src/api/sdk.gen.ts | 192 ++ src/api/types.gen.ts | 2624 +++++++++++++-- src/api/zod.gen.ts | 2935 +++++++++++++++++ .../Charts/FlameGraph/FlameGraph.tsx | 213 +- .../Charts/FlameGraph/FlameGraph.types.ts | 10 +- src/components/Layout/Sidebar/Sidebar.tsx | 2 + src/routeTree.gen.ts | 125 + 9 files changed, 6150 insertions(+), 265 deletions(-) diff --git a/src/api/@tanstack/react-query.gen.ts b/src/api/@tanstack/react-query.gen.ts index 31d5c144e..49427b7c8 100644 --- a/src/api/@tanstack/react-query.gen.ts +++ b/src/api/@tanstack/react-query.gen.ts @@ -12,6 +12,8 @@ import { dimBlockBlobSubmitterServiceList, dimContractOwnerServiceGet, dimContractOwnerServiceList, + dimFunctionSignatureServiceGet, + dimFunctionSignatureServiceList, dimNodeServiceGet, dimNodeServiceList, fctAddressAccessChunked10000ServiceGet, @@ -270,6 +272,12 @@ import { intStorageSlotStateWithExpiryByBlockServiceList, intStorageSlotStateWithExpiryServiceGet, intStorageSlotStateWithExpiryServiceList, + intTransactionCallFrameOpcodeGasServiceGet, + intTransactionCallFrameOpcodeGasServiceList, + intTransactionCallFrameServiceGet, + intTransactionCallFrameServiceList, + intTransactionOpcodeGasServiceGet, + intTransactionOpcodeGasServiceList, type Options, } from '../sdk.gen'; import type { @@ -297,6 +305,12 @@ import type { DimContractOwnerServiceListData, DimContractOwnerServiceListError, DimContractOwnerServiceListResponse, + DimFunctionSignatureServiceGetData, + DimFunctionSignatureServiceGetError, + DimFunctionSignatureServiceGetResponse, + DimFunctionSignatureServiceListData, + DimFunctionSignatureServiceListError, + DimFunctionSignatureServiceListResponse, DimNodeServiceGetData, DimNodeServiceGetError, DimNodeServiceGetResponse, @@ -1071,6 +1085,24 @@ import type { IntStorageSlotStateWithExpiryServiceListData, IntStorageSlotStateWithExpiryServiceListError, IntStorageSlotStateWithExpiryServiceListResponse, + IntTransactionCallFrameOpcodeGasServiceGetData, + IntTransactionCallFrameOpcodeGasServiceGetError, + IntTransactionCallFrameOpcodeGasServiceGetResponse, + IntTransactionCallFrameOpcodeGasServiceListData, + IntTransactionCallFrameOpcodeGasServiceListError, + IntTransactionCallFrameOpcodeGasServiceListResponse, + IntTransactionCallFrameServiceGetData, + IntTransactionCallFrameServiceGetError, + IntTransactionCallFrameServiceGetResponse, + IntTransactionCallFrameServiceListData, + IntTransactionCallFrameServiceListError, + IntTransactionCallFrameServiceListResponse, + IntTransactionOpcodeGasServiceGetData, + IntTransactionOpcodeGasServiceGetError, + IntTransactionOpcodeGasServiceGetResponse, + IntTransactionOpcodeGasServiceListData, + IntTransactionOpcodeGasServiceListError, + IntTransactionOpcodeGasServiceListResponse, } from '../types.gen'; export type QueryKey = [ @@ -1328,6 +1360,60 @@ export const dimContractOwnerServiceGetOptions = (options: Options) => + createQueryKey('dimFunctionSignatureServiceList', options); + +/** + * List records + * + * Retrieve paginated results with optional filtering + */ +export const dimFunctionSignatureServiceListOptions = (options?: Options) => + queryOptions< + DimFunctionSignatureServiceListResponse, + DimFunctionSignatureServiceListError, + DimFunctionSignatureServiceListResponse, + ReturnType + >({ + queryFn: async ({ queryKey, signal }) => { + const { data } = await dimFunctionSignatureServiceList({ + ...options, + ...queryKey[0], + signal, + throwOnError: true, + }); + return data; + }, + queryKey: dimFunctionSignatureServiceListQueryKey(options), + }); + +export const dimFunctionSignatureServiceGetQueryKey = (options: Options) => + createQueryKey('dimFunctionSignatureServiceGet', options); + +/** + * Get record + * + * Retrieve a single record by selector + */ +export const dimFunctionSignatureServiceGetOptions = (options: Options) => + queryOptions< + DimFunctionSignatureServiceGetResponse, + DimFunctionSignatureServiceGetError, + DimFunctionSignatureServiceGetResponse, + ReturnType + >({ + queryFn: async ({ queryKey, signal }) => { + const { data } = await dimFunctionSignatureServiceGet({ + ...options, + ...queryKey[0], + signal, + throwOnError: true, + }); + return data; + }, + queryKey: dimFunctionSignatureServiceGetQueryKey(options), + }); + export const dimNodeServiceListQueryKey = (options?: Options) => createQueryKey('dimNodeServiceList', options); @@ -8822,3 +8908,171 @@ export const intStorageSlotStateWithExpiryByBlockServiceGetOptions = ( }, queryKey: intStorageSlotStateWithExpiryByBlockServiceGetQueryKey(options), }); + +export const intTransactionCallFrameServiceListQueryKey = (options?: Options) => + createQueryKey('intTransactionCallFrameServiceList', options); + +/** + * List records + * + * Retrieve paginated results with optional filtering + */ +export const intTransactionCallFrameServiceListOptions = (options?: Options) => + queryOptions< + IntTransactionCallFrameServiceListResponse, + IntTransactionCallFrameServiceListError, + IntTransactionCallFrameServiceListResponse, + ReturnType + >({ + queryFn: async ({ queryKey, signal }) => { + const { data } = await intTransactionCallFrameServiceList({ + ...options, + ...queryKey[0], + signal, + throwOnError: true, + }); + return data; + }, + queryKey: intTransactionCallFrameServiceListQueryKey(options), + }); + +export const intTransactionCallFrameServiceGetQueryKey = (options: Options) => + createQueryKey('intTransactionCallFrameServiceGet', options); + +/** + * Get record + * + * Retrieve a single record by block_number + */ +export const intTransactionCallFrameServiceGetOptions = (options: Options) => + queryOptions< + IntTransactionCallFrameServiceGetResponse, + IntTransactionCallFrameServiceGetError, + IntTransactionCallFrameServiceGetResponse, + ReturnType + >({ + queryFn: async ({ queryKey, signal }) => { + const { data } = await intTransactionCallFrameServiceGet({ + ...options, + ...queryKey[0], + signal, + throwOnError: true, + }); + return data; + }, + queryKey: intTransactionCallFrameServiceGetQueryKey(options), + }); + +export const intTransactionCallFrameOpcodeGasServiceListQueryKey = ( + options?: Options +) => createQueryKey('intTransactionCallFrameOpcodeGasServiceList', options); + +/** + * List records + * + * Retrieve paginated results with optional filtering + */ +export const intTransactionCallFrameOpcodeGasServiceListOptions = ( + options?: Options +) => + queryOptions< + IntTransactionCallFrameOpcodeGasServiceListResponse, + IntTransactionCallFrameOpcodeGasServiceListError, + IntTransactionCallFrameOpcodeGasServiceListResponse, + ReturnType + >({ + queryFn: async ({ queryKey, signal }) => { + const { data } = await intTransactionCallFrameOpcodeGasServiceList({ + ...options, + ...queryKey[0], + signal, + throwOnError: true, + }); + return data; + }, + queryKey: intTransactionCallFrameOpcodeGasServiceListQueryKey(options), + }); + +export const intTransactionCallFrameOpcodeGasServiceGetQueryKey = ( + options: Options +) => createQueryKey('intTransactionCallFrameOpcodeGasServiceGet', options); + +/** + * Get record + * + * Retrieve a single record by block_number + */ +export const intTransactionCallFrameOpcodeGasServiceGetOptions = ( + options: Options +) => + queryOptions< + IntTransactionCallFrameOpcodeGasServiceGetResponse, + IntTransactionCallFrameOpcodeGasServiceGetError, + IntTransactionCallFrameOpcodeGasServiceGetResponse, + ReturnType + >({ + queryFn: async ({ queryKey, signal }) => { + const { data } = await intTransactionCallFrameOpcodeGasServiceGet({ + ...options, + ...queryKey[0], + signal, + throwOnError: true, + }); + return data; + }, + queryKey: intTransactionCallFrameOpcodeGasServiceGetQueryKey(options), + }); + +export const intTransactionOpcodeGasServiceListQueryKey = (options?: Options) => + createQueryKey('intTransactionOpcodeGasServiceList', options); + +/** + * List records + * + * Retrieve paginated results with optional filtering + */ +export const intTransactionOpcodeGasServiceListOptions = (options?: Options) => + queryOptions< + IntTransactionOpcodeGasServiceListResponse, + IntTransactionOpcodeGasServiceListError, + IntTransactionOpcodeGasServiceListResponse, + ReturnType + >({ + queryFn: async ({ queryKey, signal }) => { + const { data } = await intTransactionOpcodeGasServiceList({ + ...options, + ...queryKey[0], + signal, + throwOnError: true, + }); + return data; + }, + queryKey: intTransactionOpcodeGasServiceListQueryKey(options), + }); + +export const intTransactionOpcodeGasServiceGetQueryKey = (options: Options) => + createQueryKey('intTransactionOpcodeGasServiceGet', options); + +/** + * Get record + * + * Retrieve a single record by block_number + */ +export const intTransactionOpcodeGasServiceGetOptions = (options: Options) => + queryOptions< + IntTransactionOpcodeGasServiceGetResponse, + IntTransactionOpcodeGasServiceGetError, + IntTransactionOpcodeGasServiceGetResponse, + ReturnType + >({ + queryFn: async ({ queryKey, signal }) => { + const { data } = await intTransactionOpcodeGasServiceGet({ + ...options, + ...queryKey[0], + signal, + throwOnError: true, + }); + return data; + }, + queryKey: intTransactionOpcodeGasServiceGetQueryKey(options), + }); diff --git a/src/api/index.ts b/src/api/index.ts index 5a8a586dc..17abf83e7 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -9,6 +9,8 @@ export { dimBlockBlobSubmitterServiceList, dimContractOwnerServiceGet, dimContractOwnerServiceList, + dimFunctionSignatureServiceGet, + dimFunctionSignatureServiceList, dimNodeServiceGet, dimNodeServiceList, fctAddressAccessChunked10000ServiceGet, @@ -267,6 +269,12 @@ export { intStorageSlotStateWithExpiryByBlockServiceList, intStorageSlotStateWithExpiryServiceGet, intStorageSlotStateWithExpiryServiceList, + intTransactionCallFrameOpcodeGasServiceGet, + intTransactionCallFrameOpcodeGasServiceList, + intTransactionCallFrameServiceGet, + intTransactionCallFrameServiceList, + intTransactionOpcodeGasServiceGet, + intTransactionOpcodeGasServiceList, type Options, } from './sdk.gen'; export type { @@ -315,6 +323,17 @@ export type { DimContractOwnerServiceListErrors, DimContractOwnerServiceListResponse, DimContractOwnerServiceListResponses, + DimFunctionSignature, + DimFunctionSignatureServiceGetData, + DimFunctionSignatureServiceGetError, + DimFunctionSignatureServiceGetErrors, + DimFunctionSignatureServiceGetResponse, + DimFunctionSignatureServiceGetResponses, + DimFunctionSignatureServiceListData, + DimFunctionSignatureServiceListError, + DimFunctionSignatureServiceListErrors, + DimFunctionSignatureServiceListResponse, + DimFunctionSignatureServiceListResponses, DimNode, DimNodeServiceGetData, DimNodeServiceGetError, @@ -1155,6 +1174,7 @@ export type { GetAdminCbtScheduledResponse, GetDimBlockBlobSubmitterResponse, GetDimContractOwnerResponse, + GetDimFunctionSignatureResponse, GetDimNodeResponse, GetFctAddressAccessChunked10000Response, GetFctAddressAccessTotalResponse, @@ -1284,6 +1304,9 @@ export type { GetIntStorageSlotStateWithExpiryByAddressResponse, GetIntStorageSlotStateWithExpiryByBlockResponse, GetIntStorageSlotStateWithExpiryResponse, + GetIntTransactionCallFrameOpcodeGasResponse, + GetIntTransactionCallFrameResponse, + GetIntTransactionOpcodeGasResponse, GoogleProtobufAny, IntAddressFirstAccess, IntAddressFirstAccessServiceGetData, @@ -1868,10 +1891,44 @@ export type { IntStorageSlotStateWithExpiryServiceListErrors, IntStorageSlotStateWithExpiryServiceListResponse, IntStorageSlotStateWithExpiryServiceListResponses, + IntTransactionCallFrame, + IntTransactionCallFrameOpcodeGas, + IntTransactionCallFrameOpcodeGasServiceGetData, + IntTransactionCallFrameOpcodeGasServiceGetError, + IntTransactionCallFrameOpcodeGasServiceGetErrors, + IntTransactionCallFrameOpcodeGasServiceGetResponse, + IntTransactionCallFrameOpcodeGasServiceGetResponses, + IntTransactionCallFrameOpcodeGasServiceListData, + IntTransactionCallFrameOpcodeGasServiceListError, + IntTransactionCallFrameOpcodeGasServiceListErrors, + IntTransactionCallFrameOpcodeGasServiceListResponse, + IntTransactionCallFrameOpcodeGasServiceListResponses, + IntTransactionCallFrameServiceGetData, + IntTransactionCallFrameServiceGetError, + IntTransactionCallFrameServiceGetErrors, + IntTransactionCallFrameServiceGetResponse, + IntTransactionCallFrameServiceGetResponses, + IntTransactionCallFrameServiceListData, + IntTransactionCallFrameServiceListError, + IntTransactionCallFrameServiceListErrors, + IntTransactionCallFrameServiceListResponse, + IntTransactionCallFrameServiceListResponses, + IntTransactionOpcodeGas, + IntTransactionOpcodeGasServiceGetData, + IntTransactionOpcodeGasServiceGetError, + IntTransactionOpcodeGasServiceGetErrors, + IntTransactionOpcodeGasServiceGetResponse, + IntTransactionOpcodeGasServiceGetResponses, + IntTransactionOpcodeGasServiceListData, + IntTransactionOpcodeGasServiceListError, + IntTransactionOpcodeGasServiceListErrors, + IntTransactionOpcodeGasServiceListResponse, + IntTransactionOpcodeGasServiceListResponses, ListAdminCbtIncrementalResponse, ListAdminCbtScheduledResponse, ListDimBlockBlobSubmitterResponse, ListDimContractOwnerResponse, + ListDimFunctionSignatureResponse, ListDimNodeResponse, ListFctAddressAccessChunked10000Response, ListFctAddressAccessTotalResponse, @@ -2001,5 +2058,8 @@ export type { ListIntStorageSlotStateWithExpiryByAddressResponse, ListIntStorageSlotStateWithExpiryByBlockResponse, ListIntStorageSlotStateWithExpiryResponse, + ListIntTransactionCallFrameOpcodeGasResponse, + ListIntTransactionCallFrameResponse, + ListIntTransactionOpcodeGasResponse, Status, } from './types.gen'; diff --git a/src/api/sdk.gen.ts b/src/api/sdk.gen.ts index 4e665b9b6..170ccbfeb 100644 --- a/src/api/sdk.gen.ts +++ b/src/api/sdk.gen.ts @@ -27,6 +27,12 @@ import type { DimContractOwnerServiceListData, DimContractOwnerServiceListErrors, DimContractOwnerServiceListResponses, + DimFunctionSignatureServiceGetData, + DimFunctionSignatureServiceGetErrors, + DimFunctionSignatureServiceGetResponses, + DimFunctionSignatureServiceListData, + DimFunctionSignatureServiceListErrors, + DimFunctionSignatureServiceListResponses, DimNodeServiceGetData, DimNodeServiceGetErrors, DimNodeServiceGetResponses, @@ -801,6 +807,24 @@ import type { IntStorageSlotStateWithExpiryServiceListData, IntStorageSlotStateWithExpiryServiceListErrors, IntStorageSlotStateWithExpiryServiceListResponses, + IntTransactionCallFrameOpcodeGasServiceGetData, + IntTransactionCallFrameOpcodeGasServiceGetErrors, + IntTransactionCallFrameOpcodeGasServiceGetResponses, + IntTransactionCallFrameOpcodeGasServiceListData, + IntTransactionCallFrameOpcodeGasServiceListErrors, + IntTransactionCallFrameOpcodeGasServiceListResponses, + IntTransactionCallFrameServiceGetData, + IntTransactionCallFrameServiceGetErrors, + IntTransactionCallFrameServiceGetResponses, + IntTransactionCallFrameServiceListData, + IntTransactionCallFrameServiceListErrors, + IntTransactionCallFrameServiceListResponses, + IntTransactionOpcodeGasServiceGetData, + IntTransactionOpcodeGasServiceGetErrors, + IntTransactionOpcodeGasServiceGetResponses, + IntTransactionOpcodeGasServiceListData, + IntTransactionOpcodeGasServiceListErrors, + IntTransactionOpcodeGasServiceListResponses, } from './types.gen'; import { zAdminCbtIncrementalServiceGetData, @@ -819,6 +843,10 @@ import { zDimContractOwnerServiceGetResponse, zDimContractOwnerServiceListData, zDimContractOwnerServiceListResponse, + zDimFunctionSignatureServiceGetData, + zDimFunctionSignatureServiceGetResponse, + zDimFunctionSignatureServiceListData, + zDimFunctionSignatureServiceListResponse, zDimNodeServiceGetData, zDimNodeServiceGetResponse, zDimNodeServiceListData, @@ -1335,6 +1363,18 @@ import { zIntStorageSlotStateWithExpiryServiceGetResponse, zIntStorageSlotStateWithExpiryServiceListData, zIntStorageSlotStateWithExpiryServiceListResponse, + zIntTransactionCallFrameOpcodeGasServiceGetData, + zIntTransactionCallFrameOpcodeGasServiceGetResponse, + zIntTransactionCallFrameOpcodeGasServiceListData, + zIntTransactionCallFrameOpcodeGasServiceListResponse, + zIntTransactionCallFrameServiceGetData, + zIntTransactionCallFrameServiceGetResponse, + zIntTransactionCallFrameServiceListData, + zIntTransactionCallFrameServiceListResponse, + zIntTransactionOpcodeGasServiceGetData, + zIntTransactionOpcodeGasServiceGetResponse, + zIntTransactionOpcodeGasServiceListData, + zIntTransactionOpcodeGasServiceListResponse, } from './zod.gen'; export type Options = Options2< @@ -1500,6 +1540,44 @@ export const dimContractOwnerServiceGet = ...options, }); +/** + * List records + * + * Retrieve paginated results with optional filtering + */ +export const dimFunctionSignatureServiceList = ( + options?: Options +) => + (options?.client ?? client).get< + DimFunctionSignatureServiceListResponses, + DimFunctionSignatureServiceListErrors, + ThrowOnError + >({ + requestValidator: async data => await zDimFunctionSignatureServiceListData.parseAsync(data), + responseValidator: async data => await zDimFunctionSignatureServiceListResponse.parseAsync(data), + url: '/api/v1/dim_function_signature', + ...options, + }); + +/** + * Get record + * + * Retrieve a single record by selector + */ +export const dimFunctionSignatureServiceGet = ( + options: Options +) => + (options.client ?? client).get< + DimFunctionSignatureServiceGetResponses, + DimFunctionSignatureServiceGetErrors, + ThrowOnError + >({ + requestValidator: async data => await zDimFunctionSignatureServiceGetData.parseAsync(data), + responseValidator: async data => await zDimFunctionSignatureServiceGetResponse.parseAsync(data), + url: '/api/v1/dim_function_signature/{selector}', + ...options, + }); + /** * List records * @@ -6376,3 +6454,117 @@ export const intStorageSlotStateWithExpiryByBlockServiceGet = ( + options?: Options +) => + (options?.client ?? client).get< + IntTransactionCallFrameServiceListResponses, + IntTransactionCallFrameServiceListErrors, + ThrowOnError + >({ + requestValidator: async data => await zIntTransactionCallFrameServiceListData.parseAsync(data), + responseValidator: async data => await zIntTransactionCallFrameServiceListResponse.parseAsync(data), + url: '/api/v1/int_transaction_call_frame', + ...options, + }); + +/** + * Get record + * + * Retrieve a single record by block_number + */ +export const intTransactionCallFrameServiceGet = ( + options: Options +) => + (options.client ?? client).get< + IntTransactionCallFrameServiceGetResponses, + IntTransactionCallFrameServiceGetErrors, + ThrowOnError + >({ + requestValidator: async data => await zIntTransactionCallFrameServiceGetData.parseAsync(data), + responseValidator: async data => await zIntTransactionCallFrameServiceGetResponse.parseAsync(data), + url: '/api/v1/int_transaction_call_frame/{block_number}', + ...options, + }); + +/** + * List records + * + * Retrieve paginated results with optional filtering + */ +export const intTransactionCallFrameOpcodeGasServiceList = ( + options?: Options +) => + (options?.client ?? client).get< + IntTransactionCallFrameOpcodeGasServiceListResponses, + IntTransactionCallFrameOpcodeGasServiceListErrors, + ThrowOnError + >({ + requestValidator: async data => await zIntTransactionCallFrameOpcodeGasServiceListData.parseAsync(data), + responseValidator: async data => await zIntTransactionCallFrameOpcodeGasServiceListResponse.parseAsync(data), + url: '/api/v1/int_transaction_call_frame_opcode_gas', + ...options, + }); + +/** + * Get record + * + * Retrieve a single record by block_number + */ +export const intTransactionCallFrameOpcodeGasServiceGet = ( + options: Options +) => + (options.client ?? client).get< + IntTransactionCallFrameOpcodeGasServiceGetResponses, + IntTransactionCallFrameOpcodeGasServiceGetErrors, + ThrowOnError + >({ + requestValidator: async data => await zIntTransactionCallFrameOpcodeGasServiceGetData.parseAsync(data), + responseValidator: async data => await zIntTransactionCallFrameOpcodeGasServiceGetResponse.parseAsync(data), + url: '/api/v1/int_transaction_call_frame_opcode_gas/{block_number}', + ...options, + }); + +/** + * List records + * + * Retrieve paginated results with optional filtering + */ +export const intTransactionOpcodeGasServiceList = ( + options?: Options +) => + (options?.client ?? client).get< + IntTransactionOpcodeGasServiceListResponses, + IntTransactionOpcodeGasServiceListErrors, + ThrowOnError + >({ + requestValidator: async data => await zIntTransactionOpcodeGasServiceListData.parseAsync(data), + responseValidator: async data => await zIntTransactionOpcodeGasServiceListResponse.parseAsync(data), + url: '/api/v1/int_transaction_opcode_gas', + ...options, + }); + +/** + * Get record + * + * Retrieve a single record by block_number + */ +export const intTransactionOpcodeGasServiceGet = ( + options: Options +) => + (options.client ?? client).get< + IntTransactionOpcodeGasServiceGetResponses, + IntTransactionOpcodeGasServiceGetErrors, + ThrowOnError + >({ + requestValidator: async data => await zIntTransactionOpcodeGasServiceGetData.parseAsync(data), + responseValidator: async data => await zIntTransactionOpcodeGasServiceGetResponse.parseAsync(data), + url: '/api/v1/int_transaction_opcode_gas/{block_number}', + ...options, + }); diff --git a/src/api/types.gen.ts b/src/api/types.gen.ts index 3a3021960..f87edbd76 100644 --- a/src/api/types.gen.ts +++ b/src/api/types.gen.ts @@ -106,6 +106,25 @@ export type DimContractOwner = { updated_date_time?: number; }; +export type DimFunctionSignature = { + /** + * Whether this signature comes from a verified contract source + */ + has_verified_contract?: boolean; + /** + * Function signature name (e.g., transfer(address,uint256)) + */ + name?: string; + /** + * Function selector (first 4 bytes of keccak256 hash, hex encoded with 0x prefix) + */ + selector?: string; + /** + * Timestamp when the record was last updated + */ + updated_date_time?: number; +}; + export type DimNode = { /** * Additional attributes of the node @@ -4122,6 +4141,13 @@ export type GetDimContractOwnerResponse = { item?: DimContractOwner; }; +/** + * Response for getting a single dim_function_signature record + */ +export type GetDimFunctionSignatureResponse = { + item?: DimFunctionSignature; +}; + /** * Response for getting a single dim_node record */ @@ -5025,6 +5051,27 @@ export type GetIntStorageSlotStateWithExpiryResponse = { item?: IntStorageSlotStateWithExpiry; }; +/** + * Response for getting a single int_transaction_call_frame_opcode_gas record + */ +export type GetIntTransactionCallFrameOpcodeGasResponse = { + item?: IntTransactionCallFrameOpcodeGas; +}; + +/** + * Response for getting a single int_transaction_call_frame record + */ +export type GetIntTransactionCallFrameResponse = { + item?: IntTransactionCallFrame; +}; + +/** + * Response for getting a single int_transaction_opcode_gas record + */ +export type GetIntTransactionOpcodeGasResponse = { + item?: IntTransactionOpcodeGas; +}; + /** * Contains an arbitrary serialized message along with a @type that describes the type of the serialized message. */ @@ -7143,6 +7190,171 @@ export type IntStorageSlotStateWithExpiryByBlock = { updated_date_time?: number; }; +export type IntTransactionCallFrame = { + /** + * The block number containing this transaction + */ + block_number?: number; + /** + * Sequential frame ID within the transaction (0 = root) + */ + call_frame_id?: number; + /** + * Type of call opcode (CALL, DELEGATECALL, STATICCALL, CALLCODE, CREATE, CREATE2) + */ + call_type?: string; + /** + * Call depth (0 = root transaction execution) + */ + depth?: number; + /** + * Number of opcodes that resulted in errors + */ + error_count?: number; + /** + * Function selector (first 4 bytes of call input, hex encoded with 0x prefix). Populated for all frames from traces. + */ + function_selector?: string | null; + /** + * Gas consumed by this frame only, excludes child frames. sum(gas) = EVM execution gas. This is "self" gas in flame graphs. + */ + gas?: number; + /** + * Gas consumed by this frame + all descendants. Root frame value = total EVM execution gas. + */ + gas_cumulative?: number; + /** + * Total accumulated refund. Only populated for root frame (refund applied once at tx end). + */ + gas_refund?: number | null; + /** + * Intrinsic tx cost (21000 + calldata). Only populated for root frame (call_frame_id=0). + */ + intrinsic_gas?: number | null; + /** + * Number of opcodes executed in this frame + */ + opcode_count?: number; + /** + * Parent frame ID (NULL for root frame) + */ + parent_call_frame_id?: number | null; + /** + * Contract address being called (hex encoded with 0x prefix) + */ + target_address?: string | null; + /** + * The transaction hash (hex encoded with 0x prefix) + */ + transaction_hash?: string; + /** + * Position of the transaction within the block + */ + transaction_index?: number; + /** + * Timestamp when the record was last updated + */ + updated_date_time?: number; +}; + +export type IntTransactionCallFrameOpcodeGas = { + /** + * The block number containing the transaction + */ + block_number?: number; + /** + * Sequential frame ID within transaction (0 = root) + */ + call_frame_id?: number; + /** + * Number of times this opcode was executed in this frame + */ + count?: number; + /** + * Number of times this opcode resulted in an error in this frame + */ + error_count?: number; + /** + * Gas consumed by this opcode in this frame. sum(gas) = frame gas + */ + gas?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas + */ + gas_cumulative?: number; + /** + * The name of the network + */ + meta_network_name?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) + */ + opcode?: string; + /** + * The transaction hash (hex encoded with 0x prefix) + */ + transaction_hash?: string; + /** + * The index of the transaction within the block + */ + transaction_index?: number; + /** + * Timestamp when the record was last updated + */ + updated_date_time?: number; +}; + +export type IntTransactionOpcodeGas = { + /** + * The block number containing the transaction + */ + block_number?: number; + /** + * Number of times this opcode was executed in the transaction + */ + count?: number; + /** + * Number of times this opcode resulted in an error + */ + error_count?: number; + /** + * Gas consumed by this opcode. sum(gas) = transaction executed gas + */ + gas?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas + */ + gas_cumulative?: number; + /** + * Maximum call stack depth for this opcode + */ + max_depth?: number; + /** + * The name of the network + */ + meta_network_name?: string; + /** + * Minimum call stack depth for this opcode + */ + min_depth?: number; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) + */ + opcode?: string; + /** + * The transaction hash (hex encoded with 0x prefix) + */ + transaction_hash?: string; + /** + * The index of the transaction within the block + */ + transaction_index?: number; + /** + * Timestamp when the record was last updated + */ + updated_date_time?: number; +}; + /** * Response for listing admin_cbt_incremental records */ @@ -7199,6 +7411,20 @@ export type ListDimContractOwnerResponse = { next_page_token?: string; }; +/** + * Response for listing dim_function_signature records + */ +export type ListDimFunctionSignatureResponse = { + /** + * The list of dim_function_signature. + */ + dim_function_signature?: Array; + /** + * A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. + */ + next_page_token?: string; +}; + /** * Response for listing dim_node records */ @@ -9005,6 +9231,48 @@ export type ListIntStorageSlotStateWithExpiryResponse = { next_page_token?: string; }; +/** + * Response for listing int_transaction_call_frame_opcode_gas records + */ +export type ListIntTransactionCallFrameOpcodeGasResponse = { + /** + * The list of int_transaction_call_frame_opcode_gas. + */ + int_transaction_call_frame_opcode_gas?: Array; + /** + * A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. + */ + next_page_token?: string; +}; + +/** + * Response for listing int_transaction_call_frame records + */ +export type ListIntTransactionCallFrameResponse = { + /** + * The list of int_transaction_call_frame. + */ + int_transaction_call_frame?: Array; + /** + * A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. + */ + next_page_token?: string; +}; + +/** + * Response for listing int_transaction_opcode_gas records + */ +export type ListIntTransactionOpcodeGasResponse = { + /** + * The list of int_transaction_opcode_gas. + */ + int_transaction_opcode_gas?: Array; + /** + * A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. + */ + next_page_token?: string; +}; + /** * The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). */ @@ -10198,50 +10466,46 @@ export type DimContractOwnerServiceGetResponses = { export type DimContractOwnerServiceGetResponse = DimContractOwnerServiceGetResponses[keyof DimContractOwnerServiceGetResponses]; -export type DimNodeServiceListData = { +export type DimFunctionSignatureServiceListData = { body?: never; path?: never; query?: { /** - * The index of the validator (filter: eq) - */ - validator_index_eq?: number; - /** - * The index of the validator (filter: ne) + * Function selector (first 4 bytes of keccak256 hash, hex encoded with 0x prefix) (filter: eq) */ - validator_index_ne?: number; + selector_eq?: string; /** - * The index of the validator (filter: lt) + * Function selector (first 4 bytes of keccak256 hash, hex encoded with 0x prefix) (filter: ne) */ - validator_index_lt?: number; + selector_ne?: string; /** - * The index of the validator (filter: lte) + * Function selector (first 4 bytes of keccak256 hash, hex encoded with 0x prefix) (filter: contains) */ - validator_index_lte?: number; + selector_contains?: string; /** - * The index of the validator (filter: gt) + * Function selector (first 4 bytes of keccak256 hash, hex encoded with 0x prefix) (filter: starts_with) */ - validator_index_gt?: number; + selector_starts_with?: string; /** - * The index of the validator (filter: gte) + * Function selector (first 4 bytes of keccak256 hash, hex encoded with 0x prefix) (filter: ends_with) */ - validator_index_gte?: number; + selector_ends_with?: string; /** - * The index of the validator (filter: between_min) + * Function selector (first 4 bytes of keccak256 hash, hex encoded with 0x prefix) (filter: like) */ - validator_index_between_min?: number; + selector_like?: string; /** - * The index of the validator (filter: between_max_value) + * Function selector (first 4 bytes of keccak256 hash, hex encoded with 0x prefix) (filter: not_like) */ - validator_index_between_max_value?: number; + selector_not_like?: string; /** - * The index of the validator (filter: in_values) (comma-separated list) + * Function selector (first 4 bytes of keccak256 hash, hex encoded with 0x prefix) (filter: in_values) (comma-separated list) */ - validator_index_in_values?: string; + selector_in_values?: string; /** - * The index of the validator (filter: not_in_values) (comma-separated list) + * Function selector (first 4 bytes of keccak256 hash, hex encoded with 0x prefix) (filter: not_in_values) (comma-separated list) */ - validator_index_not_in_values?: string; + selector_not_in_values?: string; /** * Timestamp when the record was last updated (filter: eq) */ @@ -10283,195 +10547,55 @@ export type DimNodeServiceListData = { */ updated_date_time_not_in_values?: string; /** - * The name of the node (filter: eq) + * Function signature name (e.g., transfer(address,uint256)) (filter: eq) */ name_eq?: string; /** - * The name of the node (filter: ne) + * Function signature name (e.g., transfer(address,uint256)) (filter: ne) */ name_ne?: string; /** - * The name of the node (filter: contains) + * Function signature name (e.g., transfer(address,uint256)) (filter: contains) */ name_contains?: string; /** - * The name of the node (filter: starts_with) + * Function signature name (e.g., transfer(address,uint256)) (filter: starts_with) */ name_starts_with?: string; /** - * The name of the node (filter: ends_with) + * Function signature name (e.g., transfer(address,uint256)) (filter: ends_with) */ name_ends_with?: string; /** - * The name of the node (filter: like) + * Function signature name (e.g., transfer(address,uint256)) (filter: like) */ name_like?: string; /** - * The name of the node (filter: not_like) + * Function signature name (e.g., transfer(address,uint256)) (filter: not_like) */ name_not_like?: string; /** - * The name of the node (filter: in_values) (comma-separated list) + * Function signature name (e.g., transfer(address,uint256)) (filter: in_values) (comma-separated list) */ name_in_values?: string; /** - * The name of the node (filter: not_in_values) (comma-separated list) + * Function signature name (e.g., transfer(address,uint256)) (filter: not_in_values) (comma-separated list) */ name_not_in_values?: string; /** - * Groups the node belongs to (filter: has) + * Whether this signature comes from a verified contract source (filter: eq) */ - groups_has?: string; - /** - * Groups the node belongs to (filter: has_all_values) - */ - groups_has_all_values?: Array; - /** - * Groups the node belongs to (filter: has_any_values) - */ - groups_has_any_values?: Array; - /** - * Groups the node belongs to (filter: length_eq) - */ - groups_length_eq?: number; - /** - * Groups the node belongs to (filter: length_gt) - */ - groups_length_gt?: number; - /** - * Groups the node belongs to (filter: length_gte) - */ - groups_length_gte?: number; - /** - * Groups the node belongs to (filter: length_lt) - */ - groups_length_lt?: number; - /** - * Groups the node belongs to (filter: length_lte) - */ - groups_length_lte?: number; - /** - * Tags associated with the node (filter: has) - */ - tags_has?: string; - /** - * Tags associated with the node (filter: has_all_values) - */ - tags_has_all_values?: Array; - /** - * Tags associated with the node (filter: has_any_values) - */ - tags_has_any_values?: Array; - /** - * Tags associated with the node (filter: length_eq) - */ - tags_length_eq?: number; - /** - * Tags associated with the node (filter: length_gt) - */ - tags_length_gt?: number; - /** - * Tags associated with the node (filter: length_gte) - */ - tags_length_gte?: number; - /** - * Tags associated with the node (filter: length_lt) - */ - tags_length_lt?: number; - /** - * Tags associated with the node (filter: length_lte) - */ - tags_length_lte?: number; - /** - * Additional attributes of the node (filter: key_value_key) - */ - attributes_key_value_key?: string; - /** - * Additional attributes of the node (filter: key_value_value_filter_eq) - */ - attributes_key_value_value_filter_eq?: string; - /** - * Additional attributes of the node (filter: key_value_value_filter_ne) - */ - attributes_key_value_value_filter_ne?: string; - /** - * Additional attributes of the node (filter: key_value_value_filter_contains) - */ - attributes_key_value_value_filter_contains?: string; - /** - * Additional attributes of the node (filter: key_value_value_filter_starts_with) - */ - attributes_key_value_value_filter_starts_with?: string; - /** - * Additional attributes of the node (filter: key_value_value_filter_ends_with) - */ - attributes_key_value_value_filter_ends_with?: string; - /** - * Additional attributes of the node (filter: key_value_value_filter_like) - */ - attributes_key_value_value_filter_like?: string; - /** - * Additional attributes of the node (filter: key_value_value_filter_not_like) - */ - attributes_key_value_value_filter_not_like?: string; - /** - * Additional attributes of the node (filter: key_value_value_filter_in_values) (comma-separated list) - */ - attributes_key_value_value_filter_in_values?: string; - /** - * Additional attributes of the node (filter: key_value_value_filter_not_in_values) (comma-separated list) - */ - attributes_key_value_value_filter_not_in_values?: string; + has_verified_contract_eq?: boolean; /** - * Additional attributes of the node (filter: has_key) - */ - attributes_has_key?: string; - /** - * Additional attributes of the node (filter: not_has_key) - */ - attributes_not_has_key?: string; - /** - * The source entity of the node (filter: eq) - */ - source_eq?: string; - /** - * The source entity of the node (filter: ne) + * Whether this signature comes from a verified contract source (filter: ne) */ - source_ne?: string; + has_verified_contract_ne?: boolean; /** - * The source entity of the node (filter: contains) - */ - source_contains?: string; - /** - * The source entity of the node (filter: starts_with) - */ - source_starts_with?: string; - /** - * The source entity of the node (filter: ends_with) - */ - source_ends_with?: string; - /** - * The source entity of the node (filter: like) - */ - source_like?: string; - /** - * The source entity of the node (filter: not_like) - */ - source_not_like?: string; - /** - * The source entity of the node (filter: in_values) (comma-separated list) - */ - source_in_values?: string; - /** - * The source entity of the node (filter: not_in_values) (comma-separated list) - */ - source_not_in_values?: string; - /** - * The maximum number of dim_node to return. If unspecified, at most 100 items will be returned. The maximum value is 10000; values above 10000 will be coerced to 10000. + * The maximum number of dim_function_signature to return. If unspecified, at most 100 items will be returned. The maximum value is 10000; values above 10000 will be coerced to 10000. */ page_size?: number; /** - * A page token, received from a previous `ListDimNode` call. Provide this to retrieve the subsequent page. + * A page token, received from a previous `ListDimFunctionSignature` call. Provide this to retrieve the subsequent page. */ page_token?: string; /** @@ -10479,101 +10603,437 @@ export type DimNodeServiceListData = { */ order_by?: string; }; - url: '/api/v1/dim_node'; + url: '/api/v1/dim_function_signature'; }; -export type DimNodeServiceListErrors = { +export type DimFunctionSignatureServiceListErrors = { /** * Default error response */ default: Status; }; -export type DimNodeServiceListError = DimNodeServiceListErrors[keyof DimNodeServiceListErrors]; +export type DimFunctionSignatureServiceListError = + DimFunctionSignatureServiceListErrors[keyof DimFunctionSignatureServiceListErrors]; -export type DimNodeServiceListResponses = { +export type DimFunctionSignatureServiceListResponses = { /** * OK */ - 200: ListDimNodeResponse; + 200: ListDimFunctionSignatureResponse; }; -export type DimNodeServiceListResponse = DimNodeServiceListResponses[keyof DimNodeServiceListResponses]; +export type DimFunctionSignatureServiceListResponse = + DimFunctionSignatureServiceListResponses[keyof DimFunctionSignatureServiceListResponses]; -export type DimNodeServiceGetData = { +export type DimFunctionSignatureServiceGetData = { body?: never; path: { /** - * The index of the validator + * Function selector (first 4 bytes of keccak256 hash, hex encoded with 0x prefix) */ - validator_index: number; + selector: string; }; query?: never; - url: '/api/v1/dim_node/{validator_index}'; + url: '/api/v1/dim_function_signature/{selector}'; }; -export type DimNodeServiceGetErrors = { +export type DimFunctionSignatureServiceGetErrors = { /** * Default error response */ default: Status; }; -export type DimNodeServiceGetError = DimNodeServiceGetErrors[keyof DimNodeServiceGetErrors]; +export type DimFunctionSignatureServiceGetError = + DimFunctionSignatureServiceGetErrors[keyof DimFunctionSignatureServiceGetErrors]; -export type DimNodeServiceGetResponses = { +export type DimFunctionSignatureServiceGetResponses = { /** * OK */ - 200: GetDimNodeResponse; + 200: GetDimFunctionSignatureResponse; }; -export type DimNodeServiceGetResponse = DimNodeServiceGetResponses[keyof DimNodeServiceGetResponses]; +export type DimFunctionSignatureServiceGetResponse = + DimFunctionSignatureServiceGetResponses[keyof DimFunctionSignatureServiceGetResponses]; -export type FctAddressAccessChunked10000ServiceListData = { +export type DimNodeServiceListData = { body?: never; path?: never; query?: { /** - * Start block number of the chunk (filter: eq) + * The index of the validator (filter: eq) */ - chunk_start_block_number_eq?: number; + validator_index_eq?: number; /** - * Start block number of the chunk (filter: ne) + * The index of the validator (filter: ne) */ - chunk_start_block_number_ne?: number; + validator_index_ne?: number; /** - * Start block number of the chunk (filter: lt) + * The index of the validator (filter: lt) */ - chunk_start_block_number_lt?: number; + validator_index_lt?: number; /** - * Start block number of the chunk (filter: lte) + * The index of the validator (filter: lte) */ - chunk_start_block_number_lte?: number; + validator_index_lte?: number; /** - * Start block number of the chunk (filter: gt) + * The index of the validator (filter: gt) */ - chunk_start_block_number_gt?: number; + validator_index_gt?: number; /** - * Start block number of the chunk (filter: gte) + * The index of the validator (filter: gte) */ - chunk_start_block_number_gte?: number; + validator_index_gte?: number; /** - * Start block number of the chunk (filter: between_min) + * The index of the validator (filter: between_min) */ - chunk_start_block_number_between_min?: number; + validator_index_between_min?: number; /** - * Start block number of the chunk (filter: between_max_value) + * The index of the validator (filter: between_max_value) */ - chunk_start_block_number_between_max_value?: number; + validator_index_between_max_value?: number; /** - * Start block number of the chunk (filter: in_values) (comma-separated list) + * The index of the validator (filter: in_values) (comma-separated list) */ - chunk_start_block_number_in_values?: string; + validator_index_in_values?: string; /** - * Start block number of the chunk (filter: not_in_values) (comma-separated list) + * The index of the validator (filter: not_in_values) (comma-separated list) */ - chunk_start_block_number_not_in_values?: string; + validator_index_not_in_values?: string; + /** + * Timestamp when the record was last updated (filter: eq) + */ + updated_date_time_eq?: number; + /** + * Timestamp when the record was last updated (filter: ne) + */ + updated_date_time_ne?: number; + /** + * Timestamp when the record was last updated (filter: lt) + */ + updated_date_time_lt?: number; + /** + * Timestamp when the record was last updated (filter: lte) + */ + updated_date_time_lte?: number; + /** + * Timestamp when the record was last updated (filter: gt) + */ + updated_date_time_gt?: number; + /** + * Timestamp when the record was last updated (filter: gte) + */ + updated_date_time_gte?: number; + /** + * Timestamp when the record was last updated (filter: between_min) + */ + updated_date_time_between_min?: number; + /** + * Timestamp when the record was last updated (filter: between_max_value) + */ + updated_date_time_between_max_value?: number; + /** + * Timestamp when the record was last updated (filter: in_values) (comma-separated list) + */ + updated_date_time_in_values?: string; + /** + * Timestamp when the record was last updated (filter: not_in_values) (comma-separated list) + */ + updated_date_time_not_in_values?: string; + /** + * The name of the node (filter: eq) + */ + name_eq?: string; + /** + * The name of the node (filter: ne) + */ + name_ne?: string; + /** + * The name of the node (filter: contains) + */ + name_contains?: string; + /** + * The name of the node (filter: starts_with) + */ + name_starts_with?: string; + /** + * The name of the node (filter: ends_with) + */ + name_ends_with?: string; + /** + * The name of the node (filter: like) + */ + name_like?: string; + /** + * The name of the node (filter: not_like) + */ + name_not_like?: string; + /** + * The name of the node (filter: in_values) (comma-separated list) + */ + name_in_values?: string; + /** + * The name of the node (filter: not_in_values) (comma-separated list) + */ + name_not_in_values?: string; + /** + * Groups the node belongs to (filter: has) + */ + groups_has?: string; + /** + * Groups the node belongs to (filter: has_all_values) + */ + groups_has_all_values?: Array; + /** + * Groups the node belongs to (filter: has_any_values) + */ + groups_has_any_values?: Array; + /** + * Groups the node belongs to (filter: length_eq) + */ + groups_length_eq?: number; + /** + * Groups the node belongs to (filter: length_gt) + */ + groups_length_gt?: number; + /** + * Groups the node belongs to (filter: length_gte) + */ + groups_length_gte?: number; + /** + * Groups the node belongs to (filter: length_lt) + */ + groups_length_lt?: number; + /** + * Groups the node belongs to (filter: length_lte) + */ + groups_length_lte?: number; + /** + * Tags associated with the node (filter: has) + */ + tags_has?: string; + /** + * Tags associated with the node (filter: has_all_values) + */ + tags_has_all_values?: Array; + /** + * Tags associated with the node (filter: has_any_values) + */ + tags_has_any_values?: Array; + /** + * Tags associated with the node (filter: length_eq) + */ + tags_length_eq?: number; + /** + * Tags associated with the node (filter: length_gt) + */ + tags_length_gt?: number; + /** + * Tags associated with the node (filter: length_gte) + */ + tags_length_gte?: number; + /** + * Tags associated with the node (filter: length_lt) + */ + tags_length_lt?: number; + /** + * Tags associated with the node (filter: length_lte) + */ + tags_length_lte?: number; + /** + * Additional attributes of the node (filter: key_value_key) + */ + attributes_key_value_key?: string; + /** + * Additional attributes of the node (filter: key_value_value_filter_eq) + */ + attributes_key_value_value_filter_eq?: string; + /** + * Additional attributes of the node (filter: key_value_value_filter_ne) + */ + attributes_key_value_value_filter_ne?: string; + /** + * Additional attributes of the node (filter: key_value_value_filter_contains) + */ + attributes_key_value_value_filter_contains?: string; + /** + * Additional attributes of the node (filter: key_value_value_filter_starts_with) + */ + attributes_key_value_value_filter_starts_with?: string; + /** + * Additional attributes of the node (filter: key_value_value_filter_ends_with) + */ + attributes_key_value_value_filter_ends_with?: string; + /** + * Additional attributes of the node (filter: key_value_value_filter_like) + */ + attributes_key_value_value_filter_like?: string; + /** + * Additional attributes of the node (filter: key_value_value_filter_not_like) + */ + attributes_key_value_value_filter_not_like?: string; + /** + * Additional attributes of the node (filter: key_value_value_filter_in_values) (comma-separated list) + */ + attributes_key_value_value_filter_in_values?: string; + /** + * Additional attributes of the node (filter: key_value_value_filter_not_in_values) (comma-separated list) + */ + attributes_key_value_value_filter_not_in_values?: string; + /** + * Additional attributes of the node (filter: has_key) + */ + attributes_has_key?: string; + /** + * Additional attributes of the node (filter: not_has_key) + */ + attributes_not_has_key?: string; + /** + * The source entity of the node (filter: eq) + */ + source_eq?: string; + /** + * The source entity of the node (filter: ne) + */ + source_ne?: string; + /** + * The source entity of the node (filter: contains) + */ + source_contains?: string; + /** + * The source entity of the node (filter: starts_with) + */ + source_starts_with?: string; + /** + * The source entity of the node (filter: ends_with) + */ + source_ends_with?: string; + /** + * The source entity of the node (filter: like) + */ + source_like?: string; + /** + * The source entity of the node (filter: not_like) + */ + source_not_like?: string; + /** + * The source entity of the node (filter: in_values) (comma-separated list) + */ + source_in_values?: string; + /** + * The source entity of the node (filter: not_in_values) (comma-separated list) + */ + source_not_in_values?: string; + /** + * The maximum number of dim_node to return. If unspecified, at most 100 items will be returned. The maximum value is 10000; values above 10000 will be coerced to 10000. + */ + page_size?: number; + /** + * A page token, received from a previous `ListDimNode` call. Provide this to retrieve the subsequent page. + */ + page_token?: string; + /** + * The order of results. Format: comma-separated list of fields. Example: "foo,bar" or "foo desc,bar" for descending order on foo. If unspecified, results will be returned in the default order. + */ + order_by?: string; + }; + url: '/api/v1/dim_node'; +}; + +export type DimNodeServiceListErrors = { + /** + * Default error response + */ + default: Status; +}; + +export type DimNodeServiceListError = DimNodeServiceListErrors[keyof DimNodeServiceListErrors]; + +export type DimNodeServiceListResponses = { + /** + * OK + */ + 200: ListDimNodeResponse; +}; + +export type DimNodeServiceListResponse = DimNodeServiceListResponses[keyof DimNodeServiceListResponses]; + +export type DimNodeServiceGetData = { + body?: never; + path: { + /** + * The index of the validator + */ + validator_index: number; + }; + query?: never; + url: '/api/v1/dim_node/{validator_index}'; +}; + +export type DimNodeServiceGetErrors = { + /** + * Default error response + */ + default: Status; +}; + +export type DimNodeServiceGetError = DimNodeServiceGetErrors[keyof DimNodeServiceGetErrors]; + +export type DimNodeServiceGetResponses = { + /** + * OK + */ + 200: GetDimNodeResponse; +}; + +export type DimNodeServiceGetResponse = DimNodeServiceGetResponses[keyof DimNodeServiceGetResponses]; + +export type FctAddressAccessChunked10000ServiceListData = { + body?: never; + path?: never; + query?: { + /** + * Start block number of the chunk (filter: eq) + */ + chunk_start_block_number_eq?: number; + /** + * Start block number of the chunk (filter: ne) + */ + chunk_start_block_number_ne?: number; + /** + * Start block number of the chunk (filter: lt) + */ + chunk_start_block_number_lt?: number; + /** + * Start block number of the chunk (filter: lte) + */ + chunk_start_block_number_lte?: number; + /** + * Start block number of the chunk (filter: gt) + */ + chunk_start_block_number_gt?: number; + /** + * Start block number of the chunk (filter: gte) + */ + chunk_start_block_number_gte?: number; + /** + * Start block number of the chunk (filter: between_min) + */ + chunk_start_block_number_between_min?: number; + /** + * Start block number of the chunk (filter: between_max_value) + */ + chunk_start_block_number_between_max_value?: number; + /** + * Start block number of the chunk (filter: in_values) (comma-separated list) + */ + chunk_start_block_number_in_values?: string; + /** + * Start block number of the chunk (filter: not_in_values) (comma-separated list) + */ + chunk_start_block_number_not_in_values?: string; /** * Timestamp when the record was last updated (filter: eq) */ @@ -72313,3 +72773,1739 @@ export type IntStorageSlotStateWithExpiryByBlockServiceGetResponses = { export type IntStorageSlotStateWithExpiryByBlockServiceGetResponse = IntStorageSlotStateWithExpiryByBlockServiceGetResponses[keyof IntStorageSlotStateWithExpiryByBlockServiceGetResponses]; + +export type IntTransactionCallFrameServiceListData = { + body?: never; + path?: never; + query?: { + /** + * The block number containing this transaction (filter: eq) + */ + block_number_eq?: number; + /** + * The block number containing this transaction (filter: ne) + */ + block_number_ne?: number; + /** + * The block number containing this transaction (filter: lt) + */ + block_number_lt?: number; + /** + * The block number containing this transaction (filter: lte) + */ + block_number_lte?: number; + /** + * The block number containing this transaction (filter: gt) + */ + block_number_gt?: number; + /** + * The block number containing this transaction (filter: gte) + */ + block_number_gte?: number; + /** + * The block number containing this transaction (filter: between_min) + */ + block_number_between_min?: number; + /** + * The block number containing this transaction (filter: between_max_value) + */ + block_number_between_max_value?: number; + /** + * The block number containing this transaction (filter: in_values) (comma-separated list) + */ + block_number_in_values?: string; + /** + * The block number containing this transaction (filter: not_in_values) (comma-separated list) + */ + block_number_not_in_values?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: eq) + */ + transaction_hash_eq?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: ne) + */ + transaction_hash_ne?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: contains) + */ + transaction_hash_contains?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: starts_with) + */ + transaction_hash_starts_with?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: ends_with) + */ + transaction_hash_ends_with?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: like) + */ + transaction_hash_like?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: not_like) + */ + transaction_hash_not_like?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: in_values) (comma-separated list) + */ + transaction_hash_in_values?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: not_in_values) (comma-separated list) + */ + transaction_hash_not_in_values?: string; + /** + * Sequential frame ID within the transaction (0 = root) (filter: eq) + */ + call_frame_id_eq?: number; + /** + * Sequential frame ID within the transaction (0 = root) (filter: ne) + */ + call_frame_id_ne?: number; + /** + * Sequential frame ID within the transaction (0 = root) (filter: lt) + */ + call_frame_id_lt?: number; + /** + * Sequential frame ID within the transaction (0 = root) (filter: lte) + */ + call_frame_id_lte?: number; + /** + * Sequential frame ID within the transaction (0 = root) (filter: gt) + */ + call_frame_id_gt?: number; + /** + * Sequential frame ID within the transaction (0 = root) (filter: gte) + */ + call_frame_id_gte?: number; + /** + * Sequential frame ID within the transaction (0 = root) (filter: between_min) + */ + call_frame_id_between_min?: number; + /** + * Sequential frame ID within the transaction (0 = root) (filter: between_max_value) + */ + call_frame_id_between_max_value?: number; + /** + * Sequential frame ID within the transaction (0 = root) (filter: in_values) (comma-separated list) + */ + call_frame_id_in_values?: string; + /** + * Sequential frame ID within the transaction (0 = root) (filter: not_in_values) (comma-separated list) + */ + call_frame_id_not_in_values?: string; + /** + * Timestamp when the record was last updated (filter: eq) + */ + updated_date_time_eq?: number; + /** + * Timestamp when the record was last updated (filter: ne) + */ + updated_date_time_ne?: number; + /** + * Timestamp when the record was last updated (filter: lt) + */ + updated_date_time_lt?: number; + /** + * Timestamp when the record was last updated (filter: lte) + */ + updated_date_time_lte?: number; + /** + * Timestamp when the record was last updated (filter: gt) + */ + updated_date_time_gt?: number; + /** + * Timestamp when the record was last updated (filter: gte) + */ + updated_date_time_gte?: number; + /** + * Timestamp when the record was last updated (filter: between_min) + */ + updated_date_time_between_min?: number; + /** + * Timestamp when the record was last updated (filter: between_max_value) + */ + updated_date_time_between_max_value?: number; + /** + * Timestamp when the record was last updated (filter: in_values) (comma-separated list) + */ + updated_date_time_in_values?: string; + /** + * Timestamp when the record was last updated (filter: not_in_values) (comma-separated list) + */ + updated_date_time_not_in_values?: string; + /** + * Position of the transaction within the block (filter: eq) + */ + transaction_index_eq?: number; + /** + * Position of the transaction within the block (filter: ne) + */ + transaction_index_ne?: number; + /** + * Position of the transaction within the block (filter: lt) + */ + transaction_index_lt?: number; + /** + * Position of the transaction within the block (filter: lte) + */ + transaction_index_lte?: number; + /** + * Position of the transaction within the block (filter: gt) + */ + transaction_index_gt?: number; + /** + * Position of the transaction within the block (filter: gte) + */ + transaction_index_gte?: number; + /** + * Position of the transaction within the block (filter: between_min) + */ + transaction_index_between_min?: number; + /** + * Position of the transaction within the block (filter: between_max_value) + */ + transaction_index_between_max_value?: number; + /** + * Position of the transaction within the block (filter: in_values) (comma-separated list) + */ + transaction_index_in_values?: string; + /** + * Position of the transaction within the block (filter: not_in_values) (comma-separated list) + */ + transaction_index_not_in_values?: string; + /** + * Parent frame ID (NULL for root frame) (filter: eq) + */ + parent_call_frame_id_eq?: number; + /** + * Parent frame ID (NULL for root frame) (filter: ne) + */ + parent_call_frame_id_ne?: number; + /** + * Parent frame ID (NULL for root frame) (filter: lt) + */ + parent_call_frame_id_lt?: number; + /** + * Parent frame ID (NULL for root frame) (filter: lte) + */ + parent_call_frame_id_lte?: number; + /** + * Parent frame ID (NULL for root frame) (filter: gt) + */ + parent_call_frame_id_gt?: number; + /** + * Parent frame ID (NULL for root frame) (filter: gte) + */ + parent_call_frame_id_gte?: number; + /** + * Parent frame ID (NULL for root frame) (filter: between_min) + */ + parent_call_frame_id_between_min?: number; + /** + * Parent frame ID (NULL for root frame) (filter: between_max_value) + */ + parent_call_frame_id_between_max_value?: number; + /** + * Parent frame ID (NULL for root frame) (filter: in_values) (comma-separated list) + */ + parent_call_frame_id_in_values?: string; + /** + * Parent frame ID (NULL for root frame) (filter: not_in_values) (comma-separated list) + */ + parent_call_frame_id_not_in_values?: string; + /** + * Call depth (0 = root transaction execution) (filter: eq) + */ + depth_eq?: number; + /** + * Call depth (0 = root transaction execution) (filter: ne) + */ + depth_ne?: number; + /** + * Call depth (0 = root transaction execution) (filter: lt) + */ + depth_lt?: number; + /** + * Call depth (0 = root transaction execution) (filter: lte) + */ + depth_lte?: number; + /** + * Call depth (0 = root transaction execution) (filter: gt) + */ + depth_gt?: number; + /** + * Call depth (0 = root transaction execution) (filter: gte) + */ + depth_gte?: number; + /** + * Call depth (0 = root transaction execution) (filter: between_min) + */ + depth_between_min?: number; + /** + * Call depth (0 = root transaction execution) (filter: between_max_value) + */ + depth_between_max_value?: number; + /** + * Call depth (0 = root transaction execution) (filter: in_values) (comma-separated list) + */ + depth_in_values?: string; + /** + * Call depth (0 = root transaction execution) (filter: not_in_values) (comma-separated list) + */ + depth_not_in_values?: string; + /** + * Contract address being called (hex encoded with 0x prefix) (filter: eq) + */ + target_address_eq?: string; + /** + * Contract address being called (hex encoded with 0x prefix) (filter: ne) + */ + target_address_ne?: string; + /** + * Contract address being called (hex encoded with 0x prefix) (filter: contains) + */ + target_address_contains?: string; + /** + * Contract address being called (hex encoded with 0x prefix) (filter: starts_with) + */ + target_address_starts_with?: string; + /** + * Contract address being called (hex encoded with 0x prefix) (filter: ends_with) + */ + target_address_ends_with?: string; + /** + * Contract address being called (hex encoded with 0x prefix) (filter: like) + */ + target_address_like?: string; + /** + * Contract address being called (hex encoded with 0x prefix) (filter: not_like) + */ + target_address_not_like?: string; + /** + * Contract address being called (hex encoded with 0x prefix) (filter: in_values) (comma-separated list) + */ + target_address_in_values?: string; + /** + * Contract address being called (hex encoded with 0x prefix) (filter: not_in_values) (comma-separated list) + */ + target_address_not_in_values?: string; + /** + * Type of call opcode (CALL, DELEGATECALL, STATICCALL, CALLCODE, CREATE, CREATE2) (filter: eq) + */ + call_type_eq?: string; + /** + * Type of call opcode (CALL, DELEGATECALL, STATICCALL, CALLCODE, CREATE, CREATE2) (filter: ne) + */ + call_type_ne?: string; + /** + * Type of call opcode (CALL, DELEGATECALL, STATICCALL, CALLCODE, CREATE, CREATE2) (filter: contains) + */ + call_type_contains?: string; + /** + * Type of call opcode (CALL, DELEGATECALL, STATICCALL, CALLCODE, CREATE, CREATE2) (filter: starts_with) + */ + call_type_starts_with?: string; + /** + * Type of call opcode (CALL, DELEGATECALL, STATICCALL, CALLCODE, CREATE, CREATE2) (filter: ends_with) + */ + call_type_ends_with?: string; + /** + * Type of call opcode (CALL, DELEGATECALL, STATICCALL, CALLCODE, CREATE, CREATE2) (filter: like) + */ + call_type_like?: string; + /** + * Type of call opcode (CALL, DELEGATECALL, STATICCALL, CALLCODE, CREATE, CREATE2) (filter: not_like) + */ + call_type_not_like?: string; + /** + * Type of call opcode (CALL, DELEGATECALL, STATICCALL, CALLCODE, CREATE, CREATE2) (filter: in_values) (comma-separated list) + */ + call_type_in_values?: string; + /** + * Type of call opcode (CALL, DELEGATECALL, STATICCALL, CALLCODE, CREATE, CREATE2) (filter: not_in_values) (comma-separated list) + */ + call_type_not_in_values?: string; + /** + * Function selector (first 4 bytes of call input, hex encoded with 0x prefix). Populated for all frames from traces. (filter: eq) + */ + function_selector_eq?: string; + /** + * Function selector (first 4 bytes of call input, hex encoded with 0x prefix). Populated for all frames from traces. (filter: ne) + */ + function_selector_ne?: string; + /** + * Function selector (first 4 bytes of call input, hex encoded with 0x prefix). Populated for all frames from traces. (filter: contains) + */ + function_selector_contains?: string; + /** + * Function selector (first 4 bytes of call input, hex encoded with 0x prefix). Populated for all frames from traces. (filter: starts_with) + */ + function_selector_starts_with?: string; + /** + * Function selector (first 4 bytes of call input, hex encoded with 0x prefix). Populated for all frames from traces. (filter: ends_with) + */ + function_selector_ends_with?: string; + /** + * Function selector (first 4 bytes of call input, hex encoded with 0x prefix). Populated for all frames from traces. (filter: like) + */ + function_selector_like?: string; + /** + * Function selector (first 4 bytes of call input, hex encoded with 0x prefix). Populated for all frames from traces. (filter: not_like) + */ + function_selector_not_like?: string; + /** + * Function selector (first 4 bytes of call input, hex encoded with 0x prefix). Populated for all frames from traces. (filter: in_values) (comma-separated list) + */ + function_selector_in_values?: string; + /** + * Function selector (first 4 bytes of call input, hex encoded with 0x prefix). Populated for all frames from traces. (filter: not_in_values) (comma-separated list) + */ + function_selector_not_in_values?: string; + /** + * Number of opcodes executed in this frame (filter: eq) + */ + opcode_count_eq?: number; + /** + * Number of opcodes executed in this frame (filter: ne) + */ + opcode_count_ne?: number; + /** + * Number of opcodes executed in this frame (filter: lt) + */ + opcode_count_lt?: number; + /** + * Number of opcodes executed in this frame (filter: lte) + */ + opcode_count_lte?: number; + /** + * Number of opcodes executed in this frame (filter: gt) + */ + opcode_count_gt?: number; + /** + * Number of opcodes executed in this frame (filter: gte) + */ + opcode_count_gte?: number; + /** + * Number of opcodes executed in this frame (filter: between_min) + */ + opcode_count_between_min?: number; + /** + * Number of opcodes executed in this frame (filter: between_max_value) + */ + opcode_count_between_max_value?: number; + /** + * Number of opcodes executed in this frame (filter: in_values) (comma-separated list) + */ + opcode_count_in_values?: string; + /** + * Number of opcodes executed in this frame (filter: not_in_values) (comma-separated list) + */ + opcode_count_not_in_values?: string; + /** + * Number of opcodes that resulted in errors (filter: eq) + */ + error_count_eq?: number; + /** + * Number of opcodes that resulted in errors (filter: ne) + */ + error_count_ne?: number; + /** + * Number of opcodes that resulted in errors (filter: lt) + */ + error_count_lt?: number; + /** + * Number of opcodes that resulted in errors (filter: lte) + */ + error_count_lte?: number; + /** + * Number of opcodes that resulted in errors (filter: gt) + */ + error_count_gt?: number; + /** + * Number of opcodes that resulted in errors (filter: gte) + */ + error_count_gte?: number; + /** + * Number of opcodes that resulted in errors (filter: between_min) + */ + error_count_between_min?: number; + /** + * Number of opcodes that resulted in errors (filter: between_max_value) + */ + error_count_between_max_value?: number; + /** + * Number of opcodes that resulted in errors (filter: in_values) (comma-separated list) + */ + error_count_in_values?: string; + /** + * Number of opcodes that resulted in errors (filter: not_in_values) (comma-separated list) + */ + error_count_not_in_values?: string; + /** + * Gas consumed by this frame only, excludes child frames. sum(gas) = EVM execution gas. This is "self" gas in flame graphs. (filter: eq) + */ + gas_eq?: number; + /** + * Gas consumed by this frame only, excludes child frames. sum(gas) = EVM execution gas. This is "self" gas in flame graphs. (filter: ne) + */ + gas_ne?: number; + /** + * Gas consumed by this frame only, excludes child frames. sum(gas) = EVM execution gas. This is "self" gas in flame graphs. (filter: lt) + */ + gas_lt?: number; + /** + * Gas consumed by this frame only, excludes child frames. sum(gas) = EVM execution gas. This is "self" gas in flame graphs. (filter: lte) + */ + gas_lte?: number; + /** + * Gas consumed by this frame only, excludes child frames. sum(gas) = EVM execution gas. This is "self" gas in flame graphs. (filter: gt) + */ + gas_gt?: number; + /** + * Gas consumed by this frame only, excludes child frames. sum(gas) = EVM execution gas. This is "self" gas in flame graphs. (filter: gte) + */ + gas_gte?: number; + /** + * Gas consumed by this frame only, excludes child frames. sum(gas) = EVM execution gas. This is "self" gas in flame graphs. (filter: between_min) + */ + gas_between_min?: number; + /** + * Gas consumed by this frame only, excludes child frames. sum(gas) = EVM execution gas. This is "self" gas in flame graphs. (filter: between_max_value) + */ + gas_between_max_value?: number; + /** + * Gas consumed by this frame only, excludes child frames. sum(gas) = EVM execution gas. This is "self" gas in flame graphs. (filter: in_values) (comma-separated list) + */ + gas_in_values?: string; + /** + * Gas consumed by this frame only, excludes child frames. sum(gas) = EVM execution gas. This is "self" gas in flame graphs. (filter: not_in_values) (comma-separated list) + */ + gas_not_in_values?: string; + /** + * Gas consumed by this frame + all descendants. Root frame value = total EVM execution gas. (filter: eq) + */ + gas_cumulative_eq?: number; + /** + * Gas consumed by this frame + all descendants. Root frame value = total EVM execution gas. (filter: ne) + */ + gas_cumulative_ne?: number; + /** + * Gas consumed by this frame + all descendants. Root frame value = total EVM execution gas. (filter: lt) + */ + gas_cumulative_lt?: number; + /** + * Gas consumed by this frame + all descendants. Root frame value = total EVM execution gas. (filter: lte) + */ + gas_cumulative_lte?: number; + /** + * Gas consumed by this frame + all descendants. Root frame value = total EVM execution gas. (filter: gt) + */ + gas_cumulative_gt?: number; + /** + * Gas consumed by this frame + all descendants. Root frame value = total EVM execution gas. (filter: gte) + */ + gas_cumulative_gte?: number; + /** + * Gas consumed by this frame + all descendants. Root frame value = total EVM execution gas. (filter: between_min) + */ + gas_cumulative_between_min?: number; + /** + * Gas consumed by this frame + all descendants. Root frame value = total EVM execution gas. (filter: between_max_value) + */ + gas_cumulative_between_max_value?: number; + /** + * Gas consumed by this frame + all descendants. Root frame value = total EVM execution gas. (filter: in_values) (comma-separated list) + */ + gas_cumulative_in_values?: string; + /** + * Gas consumed by this frame + all descendants. Root frame value = total EVM execution gas. (filter: not_in_values) (comma-separated list) + */ + gas_cumulative_not_in_values?: string; + /** + * Total accumulated refund. Only populated for root frame (refund applied once at tx end). (filter: eq) + */ + gas_refund_eq?: number; + /** + * Total accumulated refund. Only populated for root frame (refund applied once at tx end). (filter: ne) + */ + gas_refund_ne?: number; + /** + * Total accumulated refund. Only populated for root frame (refund applied once at tx end). (filter: lt) + */ + gas_refund_lt?: number; + /** + * Total accumulated refund. Only populated for root frame (refund applied once at tx end). (filter: lte) + */ + gas_refund_lte?: number; + /** + * Total accumulated refund. Only populated for root frame (refund applied once at tx end). (filter: gt) + */ + gas_refund_gt?: number; + /** + * Total accumulated refund. Only populated for root frame (refund applied once at tx end). (filter: gte) + */ + gas_refund_gte?: number; + /** + * Total accumulated refund. Only populated for root frame (refund applied once at tx end). (filter: between_min) + */ + gas_refund_between_min?: number; + /** + * Total accumulated refund. Only populated for root frame (refund applied once at tx end). (filter: between_max_value) + */ + gas_refund_between_max_value?: number; + /** + * Total accumulated refund. Only populated for root frame (refund applied once at tx end). (filter: in_values) (comma-separated list) + */ + gas_refund_in_values?: string; + /** + * Total accumulated refund. Only populated for root frame (refund applied once at tx end). (filter: not_in_values) (comma-separated list) + */ + gas_refund_not_in_values?: string; + /** + * Intrinsic tx cost (21000 + calldata). Only populated for root frame (call_frame_id=0). (filter: eq) + */ + intrinsic_gas_eq?: number; + /** + * Intrinsic tx cost (21000 + calldata). Only populated for root frame (call_frame_id=0). (filter: ne) + */ + intrinsic_gas_ne?: number; + /** + * Intrinsic tx cost (21000 + calldata). Only populated for root frame (call_frame_id=0). (filter: lt) + */ + intrinsic_gas_lt?: number; + /** + * Intrinsic tx cost (21000 + calldata). Only populated for root frame (call_frame_id=0). (filter: lte) + */ + intrinsic_gas_lte?: number; + /** + * Intrinsic tx cost (21000 + calldata). Only populated for root frame (call_frame_id=0). (filter: gt) + */ + intrinsic_gas_gt?: number; + /** + * Intrinsic tx cost (21000 + calldata). Only populated for root frame (call_frame_id=0). (filter: gte) + */ + intrinsic_gas_gte?: number; + /** + * Intrinsic tx cost (21000 + calldata). Only populated for root frame (call_frame_id=0). (filter: between_min) + */ + intrinsic_gas_between_min?: number; + /** + * Intrinsic tx cost (21000 + calldata). Only populated for root frame (call_frame_id=0). (filter: between_max_value) + */ + intrinsic_gas_between_max_value?: number; + /** + * Intrinsic tx cost (21000 + calldata). Only populated for root frame (call_frame_id=0). (filter: in_values) (comma-separated list) + */ + intrinsic_gas_in_values?: string; + /** + * Intrinsic tx cost (21000 + calldata). Only populated for root frame (call_frame_id=0). (filter: not_in_values) (comma-separated list) + */ + intrinsic_gas_not_in_values?: string; + /** + * The maximum number of int_transaction_call_frame to return. If unspecified, at most 100 items will be returned. The maximum value is 10000; values above 10000 will be coerced to 10000. + */ + page_size?: number; + /** + * A page token, received from a previous `ListIntTransactionCallFrame` call. Provide this to retrieve the subsequent page. + */ + page_token?: string; + /** + * The order of results. Format: comma-separated list of fields. Example: "foo,bar" or "foo desc,bar" for descending order on foo. If unspecified, results will be returned in the default order. + */ + order_by?: string; + }; + url: '/api/v1/int_transaction_call_frame'; +}; + +export type IntTransactionCallFrameServiceListErrors = { + /** + * Default error response + */ + default: Status; +}; + +export type IntTransactionCallFrameServiceListError = + IntTransactionCallFrameServiceListErrors[keyof IntTransactionCallFrameServiceListErrors]; + +export type IntTransactionCallFrameServiceListResponses = { + /** + * OK + */ + 200: ListIntTransactionCallFrameResponse; +}; + +export type IntTransactionCallFrameServiceListResponse = + IntTransactionCallFrameServiceListResponses[keyof IntTransactionCallFrameServiceListResponses]; + +export type IntTransactionCallFrameServiceGetData = { + body?: never; + path: { + /** + * The block number containing this transaction + */ + block_number: number; + }; + query?: never; + url: '/api/v1/int_transaction_call_frame/{block_number}'; +}; + +export type IntTransactionCallFrameServiceGetErrors = { + /** + * Default error response + */ + default: Status; +}; + +export type IntTransactionCallFrameServiceGetError = + IntTransactionCallFrameServiceGetErrors[keyof IntTransactionCallFrameServiceGetErrors]; + +export type IntTransactionCallFrameServiceGetResponses = { + /** + * OK + */ + 200: GetIntTransactionCallFrameResponse; +}; + +export type IntTransactionCallFrameServiceGetResponse = + IntTransactionCallFrameServiceGetResponses[keyof IntTransactionCallFrameServiceGetResponses]; + +export type IntTransactionCallFrameOpcodeGasServiceListData = { + body?: never; + path?: never; + query?: { + /** + * The block number containing the transaction (filter: eq) + */ + block_number_eq?: number; + /** + * The block number containing the transaction (filter: ne) + */ + block_number_ne?: number; + /** + * The block number containing the transaction (filter: lt) + */ + block_number_lt?: number; + /** + * The block number containing the transaction (filter: lte) + */ + block_number_lte?: number; + /** + * The block number containing the transaction (filter: gt) + */ + block_number_gt?: number; + /** + * The block number containing the transaction (filter: gte) + */ + block_number_gte?: number; + /** + * The block number containing the transaction (filter: between_min) + */ + block_number_between_min?: number; + /** + * The block number containing the transaction (filter: between_max_value) + */ + block_number_between_max_value?: number; + /** + * The block number containing the transaction (filter: in_values) (comma-separated list) + */ + block_number_in_values?: string; + /** + * The block number containing the transaction (filter: not_in_values) (comma-separated list) + */ + block_number_not_in_values?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: eq) + */ + transaction_hash_eq?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: ne) + */ + transaction_hash_ne?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: contains) + */ + transaction_hash_contains?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: starts_with) + */ + transaction_hash_starts_with?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: ends_with) + */ + transaction_hash_ends_with?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: like) + */ + transaction_hash_like?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: not_like) + */ + transaction_hash_not_like?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: in_values) (comma-separated list) + */ + transaction_hash_in_values?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: not_in_values) (comma-separated list) + */ + transaction_hash_not_in_values?: string; + /** + * Sequential frame ID within transaction (0 = root) (filter: eq) + */ + call_frame_id_eq?: number; + /** + * Sequential frame ID within transaction (0 = root) (filter: ne) + */ + call_frame_id_ne?: number; + /** + * Sequential frame ID within transaction (0 = root) (filter: lt) + */ + call_frame_id_lt?: number; + /** + * Sequential frame ID within transaction (0 = root) (filter: lte) + */ + call_frame_id_lte?: number; + /** + * Sequential frame ID within transaction (0 = root) (filter: gt) + */ + call_frame_id_gt?: number; + /** + * Sequential frame ID within transaction (0 = root) (filter: gte) + */ + call_frame_id_gte?: number; + /** + * Sequential frame ID within transaction (0 = root) (filter: between_min) + */ + call_frame_id_between_min?: number; + /** + * Sequential frame ID within transaction (0 = root) (filter: between_max_value) + */ + call_frame_id_between_max_value?: number; + /** + * Sequential frame ID within transaction (0 = root) (filter: in_values) (comma-separated list) + */ + call_frame_id_in_values?: string; + /** + * Sequential frame ID within transaction (0 = root) (filter: not_in_values) (comma-separated list) + */ + call_frame_id_not_in_values?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: eq) + */ + opcode_eq?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: ne) + */ + opcode_ne?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: contains) + */ + opcode_contains?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: starts_with) + */ + opcode_starts_with?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: ends_with) + */ + opcode_ends_with?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: like) + */ + opcode_like?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: not_like) + */ + opcode_not_like?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: in_values) (comma-separated list) + */ + opcode_in_values?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: not_in_values) (comma-separated list) + */ + opcode_not_in_values?: string; + /** + * The name of the network (filter: eq) + */ + meta_network_name_eq?: string; + /** + * The name of the network (filter: ne) + */ + meta_network_name_ne?: string; + /** + * The name of the network (filter: contains) + */ + meta_network_name_contains?: string; + /** + * The name of the network (filter: starts_with) + */ + meta_network_name_starts_with?: string; + /** + * The name of the network (filter: ends_with) + */ + meta_network_name_ends_with?: string; + /** + * The name of the network (filter: like) + */ + meta_network_name_like?: string; + /** + * The name of the network (filter: not_like) + */ + meta_network_name_not_like?: string; + /** + * The name of the network (filter: in_values) (comma-separated list) + */ + meta_network_name_in_values?: string; + /** + * The name of the network (filter: not_in_values) (comma-separated list) + */ + meta_network_name_not_in_values?: string; + /** + * Timestamp when the record was last updated (filter: eq) + */ + updated_date_time_eq?: number; + /** + * Timestamp when the record was last updated (filter: ne) + */ + updated_date_time_ne?: number; + /** + * Timestamp when the record was last updated (filter: lt) + */ + updated_date_time_lt?: number; + /** + * Timestamp when the record was last updated (filter: lte) + */ + updated_date_time_lte?: number; + /** + * Timestamp when the record was last updated (filter: gt) + */ + updated_date_time_gt?: number; + /** + * Timestamp when the record was last updated (filter: gte) + */ + updated_date_time_gte?: number; + /** + * Timestamp when the record was last updated (filter: between_min) + */ + updated_date_time_between_min?: number; + /** + * Timestamp when the record was last updated (filter: between_max_value) + */ + updated_date_time_between_max_value?: number; + /** + * Timestamp when the record was last updated (filter: in_values) (comma-separated list) + */ + updated_date_time_in_values?: string; + /** + * Timestamp when the record was last updated (filter: not_in_values) (comma-separated list) + */ + updated_date_time_not_in_values?: string; + /** + * The index of the transaction within the block (filter: eq) + */ + transaction_index_eq?: number; + /** + * The index of the transaction within the block (filter: ne) + */ + transaction_index_ne?: number; + /** + * The index of the transaction within the block (filter: lt) + */ + transaction_index_lt?: number; + /** + * The index of the transaction within the block (filter: lte) + */ + transaction_index_lte?: number; + /** + * The index of the transaction within the block (filter: gt) + */ + transaction_index_gt?: number; + /** + * The index of the transaction within the block (filter: gte) + */ + transaction_index_gte?: number; + /** + * The index of the transaction within the block (filter: between_min) + */ + transaction_index_between_min?: number; + /** + * The index of the transaction within the block (filter: between_max_value) + */ + transaction_index_between_max_value?: number; + /** + * The index of the transaction within the block (filter: in_values) (comma-separated list) + */ + transaction_index_in_values?: string; + /** + * The index of the transaction within the block (filter: not_in_values) (comma-separated list) + */ + transaction_index_not_in_values?: string; + /** + * Number of times this opcode was executed in this frame (filter: eq) + */ + count_eq?: number; + /** + * Number of times this opcode was executed in this frame (filter: ne) + */ + count_ne?: number; + /** + * Number of times this opcode was executed in this frame (filter: lt) + */ + count_lt?: number; + /** + * Number of times this opcode was executed in this frame (filter: lte) + */ + count_lte?: number; + /** + * Number of times this opcode was executed in this frame (filter: gt) + */ + count_gt?: number; + /** + * Number of times this opcode was executed in this frame (filter: gte) + */ + count_gte?: number; + /** + * Number of times this opcode was executed in this frame (filter: between_min) + */ + count_between_min?: number; + /** + * Number of times this opcode was executed in this frame (filter: between_max_value) + */ + count_between_max_value?: number; + /** + * Number of times this opcode was executed in this frame (filter: in_values) (comma-separated list) + */ + count_in_values?: string; + /** + * Number of times this opcode was executed in this frame (filter: not_in_values) (comma-separated list) + */ + count_not_in_values?: string; + /** + * Gas consumed by this opcode in this frame. sum(gas) = frame gas (filter: eq) + */ + gas_eq?: number; + /** + * Gas consumed by this opcode in this frame. sum(gas) = frame gas (filter: ne) + */ + gas_ne?: number; + /** + * Gas consumed by this opcode in this frame. sum(gas) = frame gas (filter: lt) + */ + gas_lt?: number; + /** + * Gas consumed by this opcode in this frame. sum(gas) = frame gas (filter: lte) + */ + gas_lte?: number; + /** + * Gas consumed by this opcode in this frame. sum(gas) = frame gas (filter: gt) + */ + gas_gt?: number; + /** + * Gas consumed by this opcode in this frame. sum(gas) = frame gas (filter: gte) + */ + gas_gte?: number; + /** + * Gas consumed by this opcode in this frame. sum(gas) = frame gas (filter: between_min) + */ + gas_between_min?: number; + /** + * Gas consumed by this opcode in this frame. sum(gas) = frame gas (filter: between_max_value) + */ + gas_between_max_value?: number; + /** + * Gas consumed by this opcode in this frame. sum(gas) = frame gas (filter: in_values) (comma-separated list) + */ + gas_in_values?: string; + /** + * Gas consumed by this opcode in this frame. sum(gas) = frame gas (filter: not_in_values) (comma-separated list) + */ + gas_not_in_values?: string; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: eq) + */ + gas_cumulative_eq?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: ne) + */ + gas_cumulative_ne?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: lt) + */ + gas_cumulative_lt?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: lte) + */ + gas_cumulative_lte?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: gt) + */ + gas_cumulative_gt?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: gte) + */ + gas_cumulative_gte?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: between_min) + */ + gas_cumulative_between_min?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: between_max_value) + */ + gas_cumulative_between_max_value?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: in_values) (comma-separated list) + */ + gas_cumulative_in_values?: string; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: not_in_values) (comma-separated list) + */ + gas_cumulative_not_in_values?: string; + /** + * Number of times this opcode resulted in an error in this frame (filter: eq) + */ + error_count_eq?: number; + /** + * Number of times this opcode resulted in an error in this frame (filter: ne) + */ + error_count_ne?: number; + /** + * Number of times this opcode resulted in an error in this frame (filter: lt) + */ + error_count_lt?: number; + /** + * Number of times this opcode resulted in an error in this frame (filter: lte) + */ + error_count_lte?: number; + /** + * Number of times this opcode resulted in an error in this frame (filter: gt) + */ + error_count_gt?: number; + /** + * Number of times this opcode resulted in an error in this frame (filter: gte) + */ + error_count_gte?: number; + /** + * Number of times this opcode resulted in an error in this frame (filter: between_min) + */ + error_count_between_min?: number; + /** + * Number of times this opcode resulted in an error in this frame (filter: between_max_value) + */ + error_count_between_max_value?: number; + /** + * Number of times this opcode resulted in an error in this frame (filter: in_values) (comma-separated list) + */ + error_count_in_values?: string; + /** + * Number of times this opcode resulted in an error in this frame (filter: not_in_values) (comma-separated list) + */ + error_count_not_in_values?: string; + /** + * The maximum number of int_transaction_call_frame_opcode_gas to return. If unspecified, at most 100 items will be returned. The maximum value is 10000; values above 10000 will be coerced to 10000. + */ + page_size?: number; + /** + * A page token, received from a previous `ListIntTransactionCallFrameOpcodeGas` call. Provide this to retrieve the subsequent page. + */ + page_token?: string; + /** + * The order of results. Format: comma-separated list of fields. Example: "foo,bar" or "foo desc,bar" for descending order on foo. If unspecified, results will be returned in the default order. + */ + order_by?: string; + }; + url: '/api/v1/int_transaction_call_frame_opcode_gas'; +}; + +export type IntTransactionCallFrameOpcodeGasServiceListErrors = { + /** + * Default error response + */ + default: Status; +}; + +export type IntTransactionCallFrameOpcodeGasServiceListError = + IntTransactionCallFrameOpcodeGasServiceListErrors[keyof IntTransactionCallFrameOpcodeGasServiceListErrors]; + +export type IntTransactionCallFrameOpcodeGasServiceListResponses = { + /** + * OK + */ + 200: ListIntTransactionCallFrameOpcodeGasResponse; +}; + +export type IntTransactionCallFrameOpcodeGasServiceListResponse = + IntTransactionCallFrameOpcodeGasServiceListResponses[keyof IntTransactionCallFrameOpcodeGasServiceListResponses]; + +export type IntTransactionCallFrameOpcodeGasServiceGetData = { + body?: never; + path: { + /** + * The block number containing the transaction + */ + block_number: number; + }; + query?: never; + url: '/api/v1/int_transaction_call_frame_opcode_gas/{block_number}'; +}; + +export type IntTransactionCallFrameOpcodeGasServiceGetErrors = { + /** + * Default error response + */ + default: Status; +}; + +export type IntTransactionCallFrameOpcodeGasServiceGetError = + IntTransactionCallFrameOpcodeGasServiceGetErrors[keyof IntTransactionCallFrameOpcodeGasServiceGetErrors]; + +export type IntTransactionCallFrameOpcodeGasServiceGetResponses = { + /** + * OK + */ + 200: GetIntTransactionCallFrameOpcodeGasResponse; +}; + +export type IntTransactionCallFrameOpcodeGasServiceGetResponse = + IntTransactionCallFrameOpcodeGasServiceGetResponses[keyof IntTransactionCallFrameOpcodeGasServiceGetResponses]; + +export type IntTransactionOpcodeGasServiceListData = { + body?: never; + path?: never; + query?: { + /** + * The block number containing the transaction (filter: eq) + */ + block_number_eq?: number; + /** + * The block number containing the transaction (filter: ne) + */ + block_number_ne?: number; + /** + * The block number containing the transaction (filter: lt) + */ + block_number_lt?: number; + /** + * The block number containing the transaction (filter: lte) + */ + block_number_lte?: number; + /** + * The block number containing the transaction (filter: gt) + */ + block_number_gt?: number; + /** + * The block number containing the transaction (filter: gte) + */ + block_number_gte?: number; + /** + * The block number containing the transaction (filter: between_min) + */ + block_number_between_min?: number; + /** + * The block number containing the transaction (filter: between_max_value) + */ + block_number_between_max_value?: number; + /** + * The block number containing the transaction (filter: in_values) (comma-separated list) + */ + block_number_in_values?: string; + /** + * The block number containing the transaction (filter: not_in_values) (comma-separated list) + */ + block_number_not_in_values?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: eq) + */ + transaction_hash_eq?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: ne) + */ + transaction_hash_ne?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: contains) + */ + transaction_hash_contains?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: starts_with) + */ + transaction_hash_starts_with?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: ends_with) + */ + transaction_hash_ends_with?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: like) + */ + transaction_hash_like?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: not_like) + */ + transaction_hash_not_like?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: in_values) (comma-separated list) + */ + transaction_hash_in_values?: string; + /** + * The transaction hash (hex encoded with 0x prefix) (filter: not_in_values) (comma-separated list) + */ + transaction_hash_not_in_values?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: eq) + */ + opcode_eq?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: ne) + */ + opcode_ne?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: contains) + */ + opcode_contains?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: starts_with) + */ + opcode_starts_with?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: ends_with) + */ + opcode_ends_with?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: like) + */ + opcode_like?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: not_like) + */ + opcode_not_like?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: in_values) (comma-separated list) + */ + opcode_in_values?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: not_in_values) (comma-separated list) + */ + opcode_not_in_values?: string; + /** + * The name of the network (filter: eq) + */ + meta_network_name_eq?: string; + /** + * The name of the network (filter: ne) + */ + meta_network_name_ne?: string; + /** + * The name of the network (filter: contains) + */ + meta_network_name_contains?: string; + /** + * The name of the network (filter: starts_with) + */ + meta_network_name_starts_with?: string; + /** + * The name of the network (filter: ends_with) + */ + meta_network_name_ends_with?: string; + /** + * The name of the network (filter: like) + */ + meta_network_name_like?: string; + /** + * The name of the network (filter: not_like) + */ + meta_network_name_not_like?: string; + /** + * The name of the network (filter: in_values) (comma-separated list) + */ + meta_network_name_in_values?: string; + /** + * The name of the network (filter: not_in_values) (comma-separated list) + */ + meta_network_name_not_in_values?: string; + /** + * Timestamp when the record was last updated (filter: eq) + */ + updated_date_time_eq?: number; + /** + * Timestamp when the record was last updated (filter: ne) + */ + updated_date_time_ne?: number; + /** + * Timestamp when the record was last updated (filter: lt) + */ + updated_date_time_lt?: number; + /** + * Timestamp when the record was last updated (filter: lte) + */ + updated_date_time_lte?: number; + /** + * Timestamp when the record was last updated (filter: gt) + */ + updated_date_time_gt?: number; + /** + * Timestamp when the record was last updated (filter: gte) + */ + updated_date_time_gte?: number; + /** + * Timestamp when the record was last updated (filter: between_min) + */ + updated_date_time_between_min?: number; + /** + * Timestamp when the record was last updated (filter: between_max_value) + */ + updated_date_time_between_max_value?: number; + /** + * Timestamp when the record was last updated (filter: in_values) (comma-separated list) + */ + updated_date_time_in_values?: string; + /** + * Timestamp when the record was last updated (filter: not_in_values) (comma-separated list) + */ + updated_date_time_not_in_values?: string; + /** + * The index of the transaction within the block (filter: eq) + */ + transaction_index_eq?: number; + /** + * The index of the transaction within the block (filter: ne) + */ + transaction_index_ne?: number; + /** + * The index of the transaction within the block (filter: lt) + */ + transaction_index_lt?: number; + /** + * The index of the transaction within the block (filter: lte) + */ + transaction_index_lte?: number; + /** + * The index of the transaction within the block (filter: gt) + */ + transaction_index_gt?: number; + /** + * The index of the transaction within the block (filter: gte) + */ + transaction_index_gte?: number; + /** + * The index of the transaction within the block (filter: between_min) + */ + transaction_index_between_min?: number; + /** + * The index of the transaction within the block (filter: between_max_value) + */ + transaction_index_between_max_value?: number; + /** + * The index of the transaction within the block (filter: in_values) (comma-separated list) + */ + transaction_index_in_values?: string; + /** + * The index of the transaction within the block (filter: not_in_values) (comma-separated list) + */ + transaction_index_not_in_values?: string; + /** + * Number of times this opcode was executed in the transaction (filter: eq) + */ + count_eq?: number; + /** + * Number of times this opcode was executed in the transaction (filter: ne) + */ + count_ne?: number; + /** + * Number of times this opcode was executed in the transaction (filter: lt) + */ + count_lt?: number; + /** + * Number of times this opcode was executed in the transaction (filter: lte) + */ + count_lte?: number; + /** + * Number of times this opcode was executed in the transaction (filter: gt) + */ + count_gt?: number; + /** + * Number of times this opcode was executed in the transaction (filter: gte) + */ + count_gte?: number; + /** + * Number of times this opcode was executed in the transaction (filter: between_min) + */ + count_between_min?: number; + /** + * Number of times this opcode was executed in the transaction (filter: between_max_value) + */ + count_between_max_value?: number; + /** + * Number of times this opcode was executed in the transaction (filter: in_values) (comma-separated list) + */ + count_in_values?: string; + /** + * Number of times this opcode was executed in the transaction (filter: not_in_values) (comma-separated list) + */ + count_not_in_values?: string; + /** + * Gas consumed by this opcode. sum(gas) = transaction executed gas (filter: eq) + */ + gas_eq?: number; + /** + * Gas consumed by this opcode. sum(gas) = transaction executed gas (filter: ne) + */ + gas_ne?: number; + /** + * Gas consumed by this opcode. sum(gas) = transaction executed gas (filter: lt) + */ + gas_lt?: number; + /** + * Gas consumed by this opcode. sum(gas) = transaction executed gas (filter: lte) + */ + gas_lte?: number; + /** + * Gas consumed by this opcode. sum(gas) = transaction executed gas (filter: gt) + */ + gas_gt?: number; + /** + * Gas consumed by this opcode. sum(gas) = transaction executed gas (filter: gte) + */ + gas_gte?: number; + /** + * Gas consumed by this opcode. sum(gas) = transaction executed gas (filter: between_min) + */ + gas_between_min?: number; + /** + * Gas consumed by this opcode. sum(gas) = transaction executed gas (filter: between_max_value) + */ + gas_between_max_value?: number; + /** + * Gas consumed by this opcode. sum(gas) = transaction executed gas (filter: in_values) (comma-separated list) + */ + gas_in_values?: string; + /** + * Gas consumed by this opcode. sum(gas) = transaction executed gas (filter: not_in_values) (comma-separated list) + */ + gas_not_in_values?: string; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: eq) + */ + gas_cumulative_eq?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: ne) + */ + gas_cumulative_ne?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: lt) + */ + gas_cumulative_lt?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: lte) + */ + gas_cumulative_lte?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: gt) + */ + gas_cumulative_gt?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: gte) + */ + gas_cumulative_gte?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: between_min) + */ + gas_cumulative_between_min?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: between_max_value) + */ + gas_cumulative_between_max_value?: number; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: in_values) (comma-separated list) + */ + gas_cumulative_in_values?: string; + /** + * For CALL opcodes: includes all descendant frame gas. For others: same as gas (filter: not_in_values) (comma-separated list) + */ + gas_cumulative_not_in_values?: string; + /** + * Minimum call stack depth for this opcode (filter: eq) + */ + min_depth_eq?: number; + /** + * Minimum call stack depth for this opcode (filter: ne) + */ + min_depth_ne?: number; + /** + * Minimum call stack depth for this opcode (filter: lt) + */ + min_depth_lt?: number; + /** + * Minimum call stack depth for this opcode (filter: lte) + */ + min_depth_lte?: number; + /** + * Minimum call stack depth for this opcode (filter: gt) + */ + min_depth_gt?: number; + /** + * Minimum call stack depth for this opcode (filter: gte) + */ + min_depth_gte?: number; + /** + * Minimum call stack depth for this opcode (filter: between_min) + */ + min_depth_between_min?: number; + /** + * Minimum call stack depth for this opcode (filter: between_max_value) + */ + min_depth_between_max_value?: number; + /** + * Minimum call stack depth for this opcode (filter: in_values) (comma-separated list) + */ + min_depth_in_values?: string; + /** + * Minimum call stack depth for this opcode (filter: not_in_values) (comma-separated list) + */ + min_depth_not_in_values?: string; + /** + * Maximum call stack depth for this opcode (filter: eq) + */ + max_depth_eq?: number; + /** + * Maximum call stack depth for this opcode (filter: ne) + */ + max_depth_ne?: number; + /** + * Maximum call stack depth for this opcode (filter: lt) + */ + max_depth_lt?: number; + /** + * Maximum call stack depth for this opcode (filter: lte) + */ + max_depth_lte?: number; + /** + * Maximum call stack depth for this opcode (filter: gt) + */ + max_depth_gt?: number; + /** + * Maximum call stack depth for this opcode (filter: gte) + */ + max_depth_gte?: number; + /** + * Maximum call stack depth for this opcode (filter: between_min) + */ + max_depth_between_min?: number; + /** + * Maximum call stack depth for this opcode (filter: between_max_value) + */ + max_depth_between_max_value?: number; + /** + * Maximum call stack depth for this opcode (filter: in_values) (comma-separated list) + */ + max_depth_in_values?: string; + /** + * Maximum call stack depth for this opcode (filter: not_in_values) (comma-separated list) + */ + max_depth_not_in_values?: string; + /** + * Number of times this opcode resulted in an error (filter: eq) + */ + error_count_eq?: number; + /** + * Number of times this opcode resulted in an error (filter: ne) + */ + error_count_ne?: number; + /** + * Number of times this opcode resulted in an error (filter: lt) + */ + error_count_lt?: number; + /** + * Number of times this opcode resulted in an error (filter: lte) + */ + error_count_lte?: number; + /** + * Number of times this opcode resulted in an error (filter: gt) + */ + error_count_gt?: number; + /** + * Number of times this opcode resulted in an error (filter: gte) + */ + error_count_gte?: number; + /** + * Number of times this opcode resulted in an error (filter: between_min) + */ + error_count_between_min?: number; + /** + * Number of times this opcode resulted in an error (filter: between_max_value) + */ + error_count_between_max_value?: number; + /** + * Number of times this opcode resulted in an error (filter: in_values) (comma-separated list) + */ + error_count_in_values?: string; + /** + * Number of times this opcode resulted in an error (filter: not_in_values) (comma-separated list) + */ + error_count_not_in_values?: string; + /** + * The maximum number of int_transaction_opcode_gas to return. If unspecified, at most 100 items will be returned. The maximum value is 10000; values above 10000 will be coerced to 10000. + */ + page_size?: number; + /** + * A page token, received from a previous `ListIntTransactionOpcodeGas` call. Provide this to retrieve the subsequent page. + */ + page_token?: string; + /** + * The order of results. Format: comma-separated list of fields. Example: "foo,bar" or "foo desc,bar" for descending order on foo. If unspecified, results will be returned in the default order. + */ + order_by?: string; + }; + url: '/api/v1/int_transaction_opcode_gas'; +}; + +export type IntTransactionOpcodeGasServiceListErrors = { + /** + * Default error response + */ + default: Status; +}; + +export type IntTransactionOpcodeGasServiceListError = + IntTransactionOpcodeGasServiceListErrors[keyof IntTransactionOpcodeGasServiceListErrors]; + +export type IntTransactionOpcodeGasServiceListResponses = { + /** + * OK + */ + 200: ListIntTransactionOpcodeGasResponse; +}; + +export type IntTransactionOpcodeGasServiceListResponse = + IntTransactionOpcodeGasServiceListResponses[keyof IntTransactionOpcodeGasServiceListResponses]; + +export type IntTransactionOpcodeGasServiceGetData = { + body?: never; + path: { + /** + * The block number containing the transaction + */ + block_number: number; + }; + query?: never; + url: '/api/v1/int_transaction_opcode_gas/{block_number}'; +}; + +export type IntTransactionOpcodeGasServiceGetErrors = { + /** + * Default error response + */ + default: Status; +}; + +export type IntTransactionOpcodeGasServiceGetError = + IntTransactionOpcodeGasServiceGetErrors[keyof IntTransactionOpcodeGasServiceGetErrors]; + +export type IntTransactionOpcodeGasServiceGetResponses = { + /** + * OK + */ + 200: GetIntTransactionOpcodeGasResponse; +}; + +export type IntTransactionOpcodeGasServiceGetResponse = + IntTransactionOpcodeGasServiceGetResponses[keyof IntTransactionOpcodeGasServiceGetResponses]; diff --git a/src/api/zod.gen.ts b/src/api/zod.gen.ts index 4412a46ba..bfa58da51 100644 --- a/src/api/zod.gen.ts +++ b/src/api/zod.gen.ts @@ -119,6 +119,20 @@ export const zDimContractOwner = z.object({ ), }); +export const zDimFunctionSignature = z.object({ + has_verified_contract: z.optional(z.boolean()), + name: z.optional(z.string()), + selector: z.optional(z.string()), + updated_date_time: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), +}); + export const zDimNode = z.object({ attributes: z.optional(z.record(z.string(), z.string())), groups: z.optional(z.array(z.string())), @@ -6341,6 +6355,13 @@ export const zGetDimContractOwnerResponse = z.object({ item: z.optional(zDimContractOwner), }); +/** + * Response for getting a single dim_function_signature record + */ +export const zGetDimFunctionSignatureResponse = z.object({ + item: z.optional(zDimFunctionSignature), +}); + /** * Response for getting a single dim_node record */ @@ -10374,6 +10395,325 @@ export const zGetIntStorageSlotStateWithExpiryByBlockResponse = z.object({ item: z.optional(zIntStorageSlotStateWithExpiryByBlock), }); +export const zIntTransactionCallFrame = z.object({ + block_number: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + call_frame_id: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_type: z.optional(z.string()), + depth: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + error_count: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + function_selector: z.optional(z.union([z.string(), z.null()])), + gas: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_refund: z.optional( + z.union([ + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ), + z.null(), + ]) + ), + intrinsic_gas: z.optional( + z.union([ + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ), + z.null(), + ]) + ), + opcode_count: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + parent_call_frame_id: z.optional( + z.union([ + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ), + z.null(), + ]) + ), + target_address: z.optional(z.union([z.string(), z.null()])), + transaction_hash: z.optional(z.string()), + transaction_index: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), +}); + +/** + * Response for getting a single int_transaction_call_frame record + */ +export const zGetIntTransactionCallFrameResponse = z.object({ + item: z.optional(zIntTransactionCallFrame), +}); + +export const zIntTransactionCallFrameOpcodeGas = z.object({ + block_number: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + call_frame_id: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + count: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + meta_network_name: z.optional(z.string()), + opcode: z.optional(z.string()), + transaction_hash: z.optional(z.string()), + transaction_index: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), +}); + +/** + * Response for getting a single int_transaction_call_frame_opcode_gas record + */ +export const zGetIntTransactionCallFrameOpcodeGasResponse = z.object({ + item: z.optional(zIntTransactionCallFrameOpcodeGas), +}); + +export const zIntTransactionOpcodeGas = z.object({ + block_number: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + max_depth: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + meta_network_name: z.optional(z.string()), + min_depth: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + opcode: z.optional(z.string()), + transaction_hash: z.optional(z.string()), + transaction_index: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), +}); + +/** + * Response for getting a single int_transaction_opcode_gas record + */ +export const zGetIntTransactionOpcodeGasResponse = z.object({ + item: z.optional(zIntTransactionOpcodeGas), +}); + /** * Response for listing admin_cbt_incremental records */ @@ -10406,6 +10746,14 @@ export const zListDimContractOwnerResponse = z.object({ next_page_token: z.optional(z.string()), }); +/** + * Response for listing dim_function_signature records + */ +export const zListDimFunctionSignatureResponse = z.object({ + dim_function_signature: z.optional(z.array(zDimFunctionSignature)), + next_page_token: z.optional(z.string()), +}); + /** * Response for listing dim_node records */ @@ -11454,6 +11802,30 @@ export const zListIntStorageSlotStateWithExpiryResponse = z.object({ next_page_token: z.optional(z.string()), }); +/** + * Response for listing int_transaction_call_frame_opcode_gas records + */ +export const zListIntTransactionCallFrameOpcodeGasResponse = z.object({ + int_transaction_call_frame_opcode_gas: z.optional(z.array(zIntTransactionCallFrameOpcodeGas)), + next_page_token: z.optional(z.string()), +}); + +/** + * Response for listing int_transaction_call_frame records + */ +export const zListIntTransactionCallFrameResponse = z.object({ + int_transaction_call_frame: z.optional(z.array(zIntTransactionCallFrame)), + next_page_token: z.optional(z.string()), +}); + +/** + * Response for listing int_transaction_opcode_gas records + */ +export const zListIntTransactionOpcodeGasResponse = z.object({ + int_transaction_opcode_gas: z.optional(z.array(zIntTransactionOpcodeGas)), + next_page_token: z.optional(z.string()), +}); + /** * The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). */ @@ -12600,6 +12972,129 @@ export const zDimContractOwnerServiceGetData = z.object({ */ export const zDimContractOwnerServiceGetResponse = zGetDimContractOwnerResponse; +export const zDimFunctionSignatureServiceListData = z.object({ + body: z.optional(z.never()), + path: z.optional(z.never()), + query: z.optional( + z.object({ + selector_eq: z.optional(z.string()), + selector_ne: z.optional(z.string()), + selector_contains: z.optional(z.string()), + selector_starts_with: z.optional(z.string()), + selector_ends_with: z.optional(z.string()), + selector_like: z.optional(z.string()), + selector_not_like: z.optional(z.string()), + selector_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + selector_not_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + updated_date_time_eq: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_ne: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_lt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_lte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_gt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_gte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_between_min: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_between_max_value: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + updated_date_time_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + name_eq: z.optional(z.string()), + name_ne: z.optional(z.string()), + name_contains: z.optional(z.string()), + name_starts_with: z.optional(z.string()), + name_ends_with: z.optional(z.string()), + name_like: z.optional(z.string()), + name_not_like: z.optional(z.string()), + name_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + name_not_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + has_verified_contract_eq: z.optional(z.boolean()), + has_verified_contract_ne: z.optional(z.boolean()), + page_size: z.optional( + z + .int() + .check( + z.minimum(-2147483648, { error: 'Invalid value: Expected int32 to be >= -2147483648' }), + z.maximum(2147483647, { error: 'Invalid value: Expected int32 to be <= 2147483647' }) + ) + ), + page_token: z.optional(z.string()), + order_by: z.optional(z.string()), + }) + ), +}); + +/** + * OK + */ +export const zDimFunctionSignatureServiceListResponse = zListDimFunctionSignatureResponse; + +export const zDimFunctionSignatureServiceGetData = z.object({ + body: z.optional(z.never()), + path: z.object({ + selector: z.string(), + }), + query: z.optional(z.never()), +}); + +/** + * OK + */ +export const zDimFunctionSignatureServiceGetResponse = zGetDimFunctionSignatureResponse; + export const zDimNodeServiceListData = z.object({ body: z.optional(z.never()), path: z.optional(z.never()), @@ -89946,3 +90441,2443 @@ export const zIntStorageSlotStateWithExpiryByBlockServiceGetData = z.object({ * OK */ export const zIntStorageSlotStateWithExpiryByBlockServiceGetResponse = zGetIntStorageSlotStateWithExpiryByBlockResponse; + +export const zIntTransactionCallFrameServiceListData = z.object({ + body: z.optional(z.never()), + path: z.optional(z.never()), + query: z.optional( + z.object({ + block_number_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + block_number_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + transaction_hash_eq: z.optional(z.string()), + transaction_hash_ne: z.optional(z.string()), + transaction_hash_contains: z.optional(z.string()), + transaction_hash_starts_with: z.optional(z.string()), + transaction_hash_ends_with: z.optional(z.string()), + transaction_hash_like: z.optional(z.string()), + transaction_hash_not_like: z.optional(z.string()), + transaction_hash_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + transaction_hash_not_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + call_frame_id_eq: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_ne: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_lt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_lte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_gt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_gte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_between_min: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_between_max_value: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + call_frame_id_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + updated_date_time_eq: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_ne: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_lt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_lte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_gt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_gte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_between_min: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_between_max_value: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + updated_date_time_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + transaction_index_eq: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_ne: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_lt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_lte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_gt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_gte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_between_min: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_between_max_value: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + transaction_index_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + parent_call_frame_id_eq: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + parent_call_frame_id_ne: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + parent_call_frame_id_lt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + parent_call_frame_id_lte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + parent_call_frame_id_gt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + parent_call_frame_id_gte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + parent_call_frame_id_between_min: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + parent_call_frame_id_between_max_value: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + parent_call_frame_id_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + parent_call_frame_id_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + depth_eq: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + depth_ne: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + depth_lt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + depth_lte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + depth_gt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + depth_gte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + depth_between_min: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + depth_between_max_value: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + depth_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + depth_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + target_address_eq: z.optional(z.string()), + target_address_ne: z.optional(z.string()), + target_address_contains: z.optional(z.string()), + target_address_starts_with: z.optional(z.string()), + target_address_ends_with: z.optional(z.string()), + target_address_like: z.optional(z.string()), + target_address_not_like: z.optional(z.string()), + target_address_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + target_address_not_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + call_type_eq: z.optional(z.string()), + call_type_ne: z.optional(z.string()), + call_type_contains: z.optional(z.string()), + call_type_starts_with: z.optional(z.string()), + call_type_ends_with: z.optional(z.string()), + call_type_like: z.optional(z.string()), + call_type_not_like: z.optional(z.string()), + call_type_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + call_type_not_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + function_selector_eq: z.optional(z.string()), + function_selector_ne: z.optional(z.string()), + function_selector_contains: z.optional(z.string()), + function_selector_starts_with: z.optional(z.string()), + function_selector_ends_with: z.optional(z.string()), + function_selector_like: z.optional(z.string()), + function_selector_not_like: z.optional(z.string()), + function_selector_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + function_selector_not_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + opcode_count_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + opcode_count_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + opcode_count_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + opcode_count_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + opcode_count_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + opcode_count_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + opcode_count_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + opcode_count_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + opcode_count_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + opcode_count_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + error_count_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + error_count_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_cumulative_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_cumulative_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_refund_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_refund_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_refund_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_refund_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_refund_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_refund_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_refund_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_refund_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_refund_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_refund_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + intrinsic_gas_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + intrinsic_gas_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + intrinsic_gas_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + intrinsic_gas_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + intrinsic_gas_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + intrinsic_gas_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + intrinsic_gas_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + intrinsic_gas_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + intrinsic_gas_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + intrinsic_gas_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + page_size: z.optional( + z + .int() + .check( + z.minimum(-2147483648, { error: 'Invalid value: Expected int32 to be >= -2147483648' }), + z.maximum(2147483647, { error: 'Invalid value: Expected int32 to be <= 2147483647' }) + ) + ), + page_token: z.optional(z.string()), + order_by: z.optional(z.string()), + }) + ), +}); + +/** + * OK + */ +export const zIntTransactionCallFrameServiceListResponse = zListIntTransactionCallFrameResponse; + +export const zIntTransactionCallFrameServiceGetData = z.object({ + body: z.optional(z.never()), + path: z.object({ + block_number: z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ), + }), + query: z.optional(z.never()), +}); + +/** + * OK + */ +export const zIntTransactionCallFrameServiceGetResponse = zGetIntTransactionCallFrameResponse; + +export const zIntTransactionCallFrameOpcodeGasServiceListData = z.object({ + body: z.optional(z.never()), + path: z.optional(z.never()), + query: z.optional( + z.object({ + block_number_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + block_number_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + transaction_hash_eq: z.optional(z.string()), + transaction_hash_ne: z.optional(z.string()), + transaction_hash_contains: z.optional(z.string()), + transaction_hash_starts_with: z.optional(z.string()), + transaction_hash_ends_with: z.optional(z.string()), + transaction_hash_like: z.optional(z.string()), + transaction_hash_not_like: z.optional(z.string()), + transaction_hash_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + transaction_hash_not_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + call_frame_id_eq: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_ne: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_lt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_lte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_gt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_gte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_between_min: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_between_max_value: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + call_frame_id_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + call_frame_id_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + opcode_eq: z.optional(z.string()), + opcode_ne: z.optional(z.string()), + opcode_contains: z.optional(z.string()), + opcode_starts_with: z.optional(z.string()), + opcode_ends_with: z.optional(z.string()), + opcode_like: z.optional(z.string()), + opcode_not_like: z.optional(z.string()), + opcode_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + opcode_not_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + meta_network_name_eq: z.optional(z.string()), + meta_network_name_ne: z.optional(z.string()), + meta_network_name_contains: z.optional(z.string()), + meta_network_name_starts_with: z.optional(z.string()), + meta_network_name_ends_with: z.optional(z.string()), + meta_network_name_like: z.optional(z.string()), + meta_network_name_not_like: z.optional(z.string()), + meta_network_name_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + meta_network_name_not_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + updated_date_time_eq: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_ne: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_lt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_lte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_gt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_gte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_between_min: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_between_max_value: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + updated_date_time_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + transaction_index_eq: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_ne: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_lt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_lte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_gt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_gte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_between_min: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_between_max_value: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + transaction_index_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + count_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + count_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_cumulative_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_cumulative_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + error_count_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + error_count_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + page_size: z.optional( + z + .int() + .check( + z.minimum(-2147483648, { error: 'Invalid value: Expected int32 to be >= -2147483648' }), + z.maximum(2147483647, { error: 'Invalid value: Expected int32 to be <= 2147483647' }) + ) + ), + page_token: z.optional(z.string()), + order_by: z.optional(z.string()), + }) + ), +}); + +/** + * OK + */ +export const zIntTransactionCallFrameOpcodeGasServiceListResponse = zListIntTransactionCallFrameOpcodeGasResponse; + +export const zIntTransactionCallFrameOpcodeGasServiceGetData = z.object({ + body: z.optional(z.never()), + path: z.object({ + block_number: z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ), + }), + query: z.optional(z.never()), +}); + +/** + * OK + */ +export const zIntTransactionCallFrameOpcodeGasServiceGetResponse = zGetIntTransactionCallFrameOpcodeGasResponse; + +export const zIntTransactionOpcodeGasServiceListData = z.object({ + body: z.optional(z.never()), + path: z.optional(z.never()), + query: z.optional( + z.object({ + block_number_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + block_number_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + transaction_hash_eq: z.optional(z.string()), + transaction_hash_ne: z.optional(z.string()), + transaction_hash_contains: z.optional(z.string()), + transaction_hash_starts_with: z.optional(z.string()), + transaction_hash_ends_with: z.optional(z.string()), + transaction_hash_like: z.optional(z.string()), + transaction_hash_not_like: z.optional(z.string()), + transaction_hash_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + transaction_hash_not_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + opcode_eq: z.optional(z.string()), + opcode_ne: z.optional(z.string()), + opcode_contains: z.optional(z.string()), + opcode_starts_with: z.optional(z.string()), + opcode_ends_with: z.optional(z.string()), + opcode_like: z.optional(z.string()), + opcode_not_like: z.optional(z.string()), + opcode_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + opcode_not_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + meta_network_name_eq: z.optional(z.string()), + meta_network_name_ne: z.optional(z.string()), + meta_network_name_contains: z.optional(z.string()), + meta_network_name_starts_with: z.optional(z.string()), + meta_network_name_ends_with: z.optional(z.string()), + meta_network_name_like: z.optional(z.string()), + meta_network_name_not_like: z.optional(z.string()), + meta_network_name_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + meta_network_name_not_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + updated_date_time_eq: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_ne: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_lt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_lte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_gt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_gte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_between_min: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_between_max_value: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + updated_date_time_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + transaction_index_eq: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_ne: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_lt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_lte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_gt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_gte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_between_min: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_between_max_value: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + transaction_index_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + transaction_index_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + count_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + count_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_cumulative_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_cumulative_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_cumulative_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + min_depth_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + min_depth_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + min_depth_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + min_depth_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + min_depth_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + min_depth_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + min_depth_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + min_depth_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + min_depth_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + min_depth_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + max_depth_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + max_depth_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + max_depth_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + max_depth_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + max_depth_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + max_depth_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + max_depth_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + max_depth_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + max_depth_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + max_depth_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + error_count_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + error_count_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + page_size: z.optional( + z + .int() + .check( + z.minimum(-2147483648, { error: 'Invalid value: Expected int32 to be >= -2147483648' }), + z.maximum(2147483647, { error: 'Invalid value: Expected int32 to be <= 2147483647' }) + ) + ), + page_token: z.optional(z.string()), + order_by: z.optional(z.string()), + }) + ), +}); + +/** + * OK + */ +export const zIntTransactionOpcodeGasServiceListResponse = zListIntTransactionOpcodeGasResponse; + +export const zIntTransactionOpcodeGasServiceGetData = z.object({ + body: z.optional(z.never()), + path: z.object({ + block_number: z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ), + }), + query: z.optional(z.never()), +}); + +/** + * OK + */ +export const zIntTransactionOpcodeGasServiceGetResponse = zGetIntTransactionOpcodeGasResponse; diff --git a/src/components/Charts/FlameGraph/FlameGraph.tsx b/src/components/Charts/FlameGraph/FlameGraph.tsx index a471e47ef..b6cb2e67a 100644 --- a/src/components/Charts/FlameGraph/FlameGraph.tsx +++ b/src/components/Charts/FlameGraph/FlameGraph.tsx @@ -1,8 +1,18 @@ -import React, { type JSX, useMemo, useState, useCallback } from 'react'; +import React, { type JSX, useMemo, useState, useCallback, useRef, useEffect } from 'react'; import clsx from 'clsx'; import type { FlameGraphProps, FlameGraphNode, FlattenedNode, FlameGraphColorMap } from './FlameGraph.types'; import { EVM_CALL_TYPE_COLORS } from './FlameGraph.types'; +/** + * Tooltip offset from cursor + */ +const TOOLTIP_OFFSET = 12; + +/** + * Viewport padding to keep tooltip away from edges + */ +const VIEWPORT_PADDING = 16; + // Default colors const DEFAULT_COLOR = { bg: 'bg-slate-500', hover: 'hover:bg-slate-400' }; const ERROR_COLOR = { bg: 'bg-red-500', hover: 'hover:bg-red-400' }; @@ -139,7 +149,8 @@ export function FlameGraph({ defaultColor = DEFAULT_COLOR, errorColor = ERROR_COLOR, minWidthPercent = 0.5, - height = 400, + height, + minHeight = 100, rowHeight = 24, showLabels = true, title, @@ -149,9 +160,16 @@ export function FlameGraph({ renderTooltip, }: FlameGraphProps): JSX.Element { const [hoveredNode, setHoveredNode] = useState(null); + const [mousePosition, setMousePosition] = useState<{ x: number; y: number }>({ x: 0, y: 0 }); + const tooltipRef = useRef(null); + const [tooltipPosition, setTooltipPosition] = useState<{ x: number; y: number }>({ x: 0, y: 0 }); // Flatten tree and calculate layout - const { maxDepth, rows, categories } = useMemo(() => { + const { + maxDepth: _maxDepth, + rows, + categories, + } = useMemo(() => { if (!data) { return { maxDepth: 0, rows: [] as FlattenedNode[][], categories: new Set() }; } @@ -182,15 +200,49 @@ export function FlameGraph({ // Determine if we should show legend const shouldShowLegend = showLegend ?? (colorMap && categories.size > 0); + // Calculate smart tooltip position to keep it within viewport + useEffect(() => { + if (!hoveredNode || !tooltipRef.current) return; + + const tooltip = tooltipRef.current; + const tooltipRect = tooltip.getBoundingClientRect(); + const viewportWidth = window.innerWidth; + const viewportHeight = window.innerHeight; + + let x = mousePosition.x + TOOLTIP_OFFSET; + let y = mousePosition.y + TOOLTIP_OFFSET; + + // Check right edge - flip to left side if needed + if (x + tooltipRect.width + VIEWPORT_PADDING > viewportWidth) { + x = mousePosition.x - tooltipRect.width - TOOLTIP_OFFSET; + } + + // Check bottom edge - flip to above cursor if needed + if (y + tooltipRect.height + VIEWPORT_PADDING > viewportHeight) { + y = mousePosition.y - tooltipRect.height - TOOLTIP_OFFSET; + } + + // Ensure we don't go off the left or top edges + x = Math.max(VIEWPORT_PADDING, x); + y = Math.max(VIEWPORT_PADDING, y); + + setTooltipPosition({ x, y }); + }, [mousePosition, hoveredNode]); + // Handle mouse events const handleMouseEnter = useCallback( - (node: FlameGraphNode) => { + (node: FlameGraphNode, event: React.MouseEvent) => { setHoveredNode(node); + setMousePosition({ x: event.clientX, y: event.clientY }); onNodeHover?.(node); }, [onNodeHover] ); + const handleMouseMove = useCallback((event: React.MouseEvent) => { + setMousePosition({ x: event.clientX, y: event.clientY }); + }, []); + const handleMouseLeave = useCallback(() => { setHoveredNode(null); onNodeHover?.(null); @@ -208,15 +260,13 @@ export function FlameGraph({ return (
No data available
); } - const calculatedHeight = Math.max(height, (maxDepth + 1) * rowHeight + 60); - return (
{/* Header */} @@ -231,11 +281,8 @@ export function FlameGraph({ )} {/* Flame Graph Container */} -
-
+
+
{rows.map((row, rowIndex) => (
handleClick(flatNode.node)} - onMouseEnter={() => handleMouseEnter(flatNode.node)} + onMouseEnter={e => handleMouseEnter(flatNode.node, e)} + onMouseMove={handleMouseMove} onMouseLeave={handleMouseLeave} - title={`${flatNode.node.label} - ${valueFormatter(flatNode.node.value)}${valueUnit ? ` ${valueUnit}` : ''}`} > {showLabels && flatNode.widthPercent > 3 && ( @@ -288,52 +335,120 @@ export function FlameGraph({ {/* Tooltip */} {hoveredNode && ( -
+
{renderTooltip ? ( renderTooltip(hoveredNode) ) : ( <> -
{hoveredNode.label}
-
- Total: - - {hoveredNode.value.toLocaleString()} - {valueUnit && ` ${valueUnit}`} - - - {hoveredNode.selfValue !== undefined && ( - <> - Self: - - {hoveredNode.selfValue.toLocaleString()} - {valueUnit && ` ${valueUnit}`} - - + {/* Header */} +
+
{hoveredNode.label}
+ {/* Target name prominently displayed */} + {typeof hoveredNode.metadata?.targetName === 'string' && hoveredNode.metadata.targetName && ( +
{hoveredNode.metadata.targetName}
)} - + {/* Colored call type badge */} {hoveredNode.category && ( - <> - Type: - {hoveredNode.category} - + + {hoveredNode.category} + )} +
- {/* Render metadata fields */} - {hoveredNode.metadata && - Object.entries(hoveredNode.metadata).map(([key, value]) => ( - - {key}: - - {typeof value === 'number' ? value.toLocaleString() : String(value)} +
+ {/* Gas Section */} +
+
Gas
+
+
+ + + Total + + + {hoveredNode.value.toLocaleString()} + {valueUnit && ` ${valueUnit}`} - - ))} +
+ {hoveredNode.selfValue !== undefined && ( +
+ + + Self + + + {hoveredNode.selfValue.toLocaleString()} + {valueUnit && ` ${valueUnit}`} + +
+ )} +
+
+ + {/* Details Section */} + {hoveredNode.metadata && Object.keys(hoveredNode.metadata).length > 0 && ( +
+
Details
+
+ {Object.entries(hoveredNode.metadata).map(([key, value]) => { + // Skip null/undefined values, targetName (shown in header), and internal IDs + if (value === null || value === undefined || key === 'targetName' || key === 'callFrameId') + return null; + // Format the key name nicely + const displayKey = key.replace(/([A-Z])/g, ' $1').replace(/^./, s => s.toUpperCase()); + // Format the value based on type + let displayValue: React.ReactNode; + const stringValue = typeof value === 'string' ? value : String(value); + const isLongValue = stringValue.length > 24; + + if (typeof value === 'number') { + displayValue = {value.toLocaleString()}; + } else if (typeof value === 'string' && value.startsWith('0x')) { + // Ethereum address or hash - truncate in middle + displayValue = ( + + {value.length > 16 ? `${value.slice(0, 10)}...${value.slice(-6)}` : value} + + ); + } else if (isLongValue) { + // Long string values - truncate with tooltip + displayValue = ( + + {stringValue.slice(0, 20)}... + + ); + } else { + displayValue = stringValue; + } + return ( +
+ {displayKey} + {displayValue} +
+ ); + })} +
+
+ )} + {/* Error indicator */} {hoveredNode.hasError && ( - <> - Status: - Error - +
+ + Error in this call +
)}
diff --git a/src/components/Charts/FlameGraph/FlameGraph.types.ts b/src/components/Charts/FlameGraph/FlameGraph.types.ts index da8b6aa4f..9fe72c989 100644 --- a/src/components/Charts/FlameGraph/FlameGraph.types.ts +++ b/src/components/Charts/FlameGraph/FlameGraph.types.ts @@ -106,11 +106,17 @@ export interface FlameGraphProps { minWidthPercent?: number; /** - * Height of the chart container in pixels - * @default 400 + * Fixed height of the chart container in pixels. + * If not provided, height is calculated dynamically based on tree depth. */ height?: number; + /** + * Minimum height when using dynamic height calculation + * @default 100 + */ + minHeight?: number; + /** * Height of each row in pixels * @default 24 diff --git a/src/components/Layout/Sidebar/Sidebar.tsx b/src/components/Layout/Sidebar/Sidebar.tsx index 45f8c810b..9b3897494 100644 --- a/src/components/Layout/Sidebar/Sidebar.tsx +++ b/src/components/Layout/Sidebar/Sidebar.tsx @@ -21,6 +21,7 @@ import { SignalIcon, CircleStackIcon, MagnifyingGlassIcon, + FireIcon, } from '@heroicons/react/24/outline'; import { NetworkSelect } from '@/components/Ethereum/NetworkSelect'; import { NetworkIcon } from '@/components/Ethereum/NetworkIcon'; @@ -172,6 +173,7 @@ const ethereumExecutionPages: NavItem[] = [ { name: 'Overview', to: '/ethereum/execution/overview', icon: PresentationChartLineIcon }, { name: 'Timings', to: '/ethereum/execution/timings', icon: ClockIcon }, { name: 'Payloads', to: '/ethereum/execution/payloads', icon: CubeIcon }, + { name: 'Gas Profiler', to: '/ethereum/execution/gas-profiler', icon: FireIcon }, { name: 'State Growth', to: '/ethereum/execution/state-growth', icon: ServerStackIcon }, { name: 'State Expiry', to: '/ethereum/execution/state-expiry', icon: ArchiveBoxXMarkIcon }, { name: 'Contracts', to: '/ethereum/contracts', icon: DocumentTextIcon }, diff --git a/src/routeTree.gen.ts b/src/routeTree.gen.ts index b1f031ea3..6fdfebc65 100644 --- a/src/routeTree.gen.ts +++ b/src/routeTree.gen.ts @@ -46,6 +46,7 @@ import { Route as EthereumExecutionStateGrowthRouteImport } from './routes/ether import { Route as EthereumExecutionStateExpiryRouteImport } from './routes/ethereum/execution/state-expiry' import { Route as EthereumExecutionPayloadsRouteImport } from './routes/ethereum/execution/payloads' import { Route as EthereumExecutionOverviewRouteImport } from './routes/ethereum/execution/overview' +import { Route as EthereumExecutionGasProfilerRouteImport } from './routes/ethereum/execution/gas-profiler' import { Route as EthereumEpochsEpochRouteImport } from './routes/ethereum/epochs/$epoch' import { Route as EthereumEntitiesEntityRouteImport } from './routes/ethereum/entities/$entity' import { Route as EthereumDataAvailabilityProbesRouteImport } from './routes/ethereum/data-availability/probes' @@ -55,8 +56,12 @@ import { Route as BeaconSlotLiveRouteImport } from './routes/beacon/slot/live' import { Route as BeaconBlockProductionLiveRouteImport } from './routes/beacon/block-production/live' import { Route as EthereumExecutionTimingsIndexRouteImport } from './routes/ethereum/execution/timings/index' import { Route as EthereumExecutionPayloadsIndexRouteImport } from './routes/ethereum/execution/payloads/index' +import { Route as EthereumExecutionGasProfilerIndexRouteImport } from './routes/ethereum/execution/gas-profiler/index' import { Route as EthereumDataAvailabilityProbesIndexRouteImport } from './routes/ethereum/data-availability/probes/index' import { Route as EthereumDataAvailabilityCustodyIndexRouteImport } from './routes/ethereum/data-availability/custody/index' +import { Route as EthereumExecutionGasProfilerTxTxHashRouteImport } from './routes/ethereum/execution/gas-profiler/tx.$txHash' +import { Route as EthereumExecutionGasProfilerBlockBlockNumberRouteImport } from './routes/ethereum/execution/gas-profiler/block.$blockNumber' +import { Route as EthereumExecutionGasProfilerTxTxHashCallCallIdRouteImport } from './routes/ethereum/execution/gas-profiler/tx.$txHash_.call.$callId' const XatuRoute = XatuRouteImport.update({ id: '/xatu', @@ -253,6 +258,12 @@ const EthereumExecutionOverviewRoute = path: '/overview', getParentRoute: () => EthereumExecutionRoute, } as any) +const EthereumExecutionGasProfilerRoute = + EthereumExecutionGasProfilerRouteImport.update({ + id: '/gas-profiler', + path: '/gas-profiler', + getParentRoute: () => EthereumExecutionRoute, + } as any) const EthereumEpochsEpochRoute = EthereumEpochsEpochRouteImport.update({ id: '/$epoch', path: '/$epoch', @@ -304,6 +315,12 @@ const EthereumExecutionPayloadsIndexRoute = path: '/', getParentRoute: () => EthereumExecutionPayloadsRoute, } as any) +const EthereumExecutionGasProfilerIndexRoute = + EthereumExecutionGasProfilerIndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => EthereumExecutionGasProfilerRoute, + } as any) const EthereumDataAvailabilityProbesIndexRoute = EthereumDataAvailabilityProbesIndexRouteImport.update({ id: '/', @@ -316,6 +333,24 @@ const EthereumDataAvailabilityCustodyIndexRoute = path: '/', getParentRoute: () => EthereumDataAvailabilityCustodyRoute, } as any) +const EthereumExecutionGasProfilerTxTxHashRoute = + EthereumExecutionGasProfilerTxTxHashRouteImport.update({ + id: '/tx/$txHash', + path: '/tx/$txHash', + getParentRoute: () => EthereumExecutionGasProfilerRoute, + } as any) +const EthereumExecutionGasProfilerBlockBlockNumberRoute = + EthereumExecutionGasProfilerBlockBlockNumberRouteImport.update({ + id: '/block/$blockNumber', + path: '/block/$blockNumber', + getParentRoute: () => EthereumExecutionGasProfilerRoute, + } as any) +const EthereumExecutionGasProfilerTxTxHashCallCallIdRoute = + EthereumExecutionGasProfilerTxTxHashCallCallIdRouteImport.update({ + id: '/tx/$txHash_/call/$callId', + path: '/tx/$txHash/call/$callId', + getParentRoute: () => EthereumExecutionGasProfilerRoute, + } as any) export interface FileRoutesByFullPath { '/': typeof IndexRoute @@ -348,6 +383,7 @@ export interface FileRoutesByFullPath { '/ethereum/data-availability/probes': typeof EthereumDataAvailabilityProbesRouteWithChildren '/ethereum/entities/$entity': typeof EthereumEntitiesEntityRoute '/ethereum/epochs/$epoch': typeof EthereumEpochsEpochRoute + '/ethereum/execution/gas-profiler': typeof EthereumExecutionGasProfilerRouteWithChildren '/ethereum/execution/overview': typeof EthereumExecutionOverviewRoute '/ethereum/execution/payloads': typeof EthereumExecutionPayloadsRouteWithChildren '/ethereum/execution/state-expiry': typeof EthereumExecutionStateExpiryRoute @@ -364,8 +400,12 @@ export interface FileRoutesByFullPath { '/xatu/contributors/': typeof XatuContributorsIndexRoute '/ethereum/data-availability/custody/': typeof EthereumDataAvailabilityCustodyIndexRoute '/ethereum/data-availability/probes/': typeof EthereumDataAvailabilityProbesIndexRoute + '/ethereum/execution/gas-profiler/': typeof EthereumExecutionGasProfilerIndexRoute '/ethereum/execution/payloads/': typeof EthereumExecutionPayloadsIndexRoute '/ethereum/execution/timings/': typeof EthereumExecutionTimingsIndexRoute + '/ethereum/execution/gas-profiler/block/$blockNumber': typeof EthereumExecutionGasProfilerBlockBlockNumberRoute + '/ethereum/execution/gas-profiler/tx/$txHash': typeof EthereumExecutionGasProfilerTxTxHashRoute + '/ethereum/execution/gas-profiler/tx/$txHash/call/$callId': typeof EthereumExecutionGasProfilerTxTxHashCallCallIdRoute } export interface FileRoutesByTo { '/': typeof IndexRoute @@ -403,8 +443,12 @@ export interface FileRoutesByTo { '/xatu/contributors': typeof XatuContributorsIndexRoute '/ethereum/data-availability/custody': typeof EthereumDataAvailabilityCustodyIndexRoute '/ethereum/data-availability/probes': typeof EthereumDataAvailabilityProbesIndexRoute + '/ethereum/execution/gas-profiler': typeof EthereumExecutionGasProfilerIndexRoute '/ethereum/execution/payloads': typeof EthereumExecutionPayloadsIndexRoute '/ethereum/execution/timings': typeof EthereumExecutionTimingsIndexRoute + '/ethereum/execution/gas-profiler/block/$blockNumber': typeof EthereumExecutionGasProfilerBlockBlockNumberRoute + '/ethereum/execution/gas-profiler/tx/$txHash': typeof EthereumExecutionGasProfilerTxTxHashRoute + '/ethereum/execution/gas-profiler/tx/$txHash/call/$callId': typeof EthereumExecutionGasProfilerTxTxHashCallCallIdRoute } export interface FileRoutesById { __root__: typeof rootRouteImport @@ -438,6 +482,7 @@ export interface FileRoutesById { '/ethereum/data-availability/probes': typeof EthereumDataAvailabilityProbesRouteWithChildren '/ethereum/entities/$entity': typeof EthereumEntitiesEntityRoute '/ethereum/epochs/$epoch': typeof EthereumEpochsEpochRoute + '/ethereum/execution/gas-profiler': typeof EthereumExecutionGasProfilerRouteWithChildren '/ethereum/execution/overview': typeof EthereumExecutionOverviewRoute '/ethereum/execution/payloads': typeof EthereumExecutionPayloadsRouteWithChildren '/ethereum/execution/state-expiry': typeof EthereumExecutionStateExpiryRoute @@ -454,8 +499,12 @@ export interface FileRoutesById { '/xatu/contributors/': typeof XatuContributorsIndexRoute '/ethereum/data-availability/custody/': typeof EthereumDataAvailabilityCustodyIndexRoute '/ethereum/data-availability/probes/': typeof EthereumDataAvailabilityProbesIndexRoute + '/ethereum/execution/gas-profiler/': typeof EthereumExecutionGasProfilerIndexRoute '/ethereum/execution/payloads/': typeof EthereumExecutionPayloadsIndexRoute '/ethereum/execution/timings/': typeof EthereumExecutionTimingsIndexRoute + '/ethereum/execution/gas-profiler/block/$blockNumber': typeof EthereumExecutionGasProfilerBlockBlockNumberRoute + '/ethereum/execution/gas-profiler/tx/$txHash': typeof EthereumExecutionGasProfilerTxTxHashRoute + '/ethereum/execution/gas-profiler/tx/$txHash_/call/$callId': typeof EthereumExecutionGasProfilerTxTxHashCallCallIdRoute } export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath @@ -490,6 +539,7 @@ export interface FileRouteTypes { | '/ethereum/data-availability/probes' | '/ethereum/entities/$entity' | '/ethereum/epochs/$epoch' + | '/ethereum/execution/gas-profiler' | '/ethereum/execution/overview' | '/ethereum/execution/payloads' | '/ethereum/execution/state-expiry' @@ -506,8 +556,12 @@ export interface FileRouteTypes { | '/xatu/contributors/' | '/ethereum/data-availability/custody/' | '/ethereum/data-availability/probes/' + | '/ethereum/execution/gas-profiler/' | '/ethereum/execution/payloads/' | '/ethereum/execution/timings/' + | '/ethereum/execution/gas-profiler/block/$blockNumber' + | '/ethereum/execution/gas-profiler/tx/$txHash' + | '/ethereum/execution/gas-profiler/tx/$txHash/call/$callId' fileRoutesByTo: FileRoutesByTo to: | '/' @@ -545,8 +599,12 @@ export interface FileRouteTypes { | '/xatu/contributors' | '/ethereum/data-availability/custody' | '/ethereum/data-availability/probes' + | '/ethereum/execution/gas-profiler' | '/ethereum/execution/payloads' | '/ethereum/execution/timings' + | '/ethereum/execution/gas-profiler/block/$blockNumber' + | '/ethereum/execution/gas-profiler/tx/$txHash' + | '/ethereum/execution/gas-profiler/tx/$txHash/call/$callId' id: | '__root__' | '/' @@ -579,6 +637,7 @@ export interface FileRouteTypes { | '/ethereum/data-availability/probes' | '/ethereum/entities/$entity' | '/ethereum/epochs/$epoch' + | '/ethereum/execution/gas-profiler' | '/ethereum/execution/overview' | '/ethereum/execution/payloads' | '/ethereum/execution/state-expiry' @@ -595,8 +654,12 @@ export interface FileRouteTypes { | '/xatu/contributors/' | '/ethereum/data-availability/custody/' | '/ethereum/data-availability/probes/' + | '/ethereum/execution/gas-profiler/' | '/ethereum/execution/payloads/' | '/ethereum/execution/timings/' + | '/ethereum/execution/gas-profiler/block/$blockNumber' + | '/ethereum/execution/gas-profiler/tx/$txHash' + | '/ethereum/execution/gas-profiler/tx/$txHash_/call/$callId' fileRoutesById: FileRoutesById } export interface RootRouteChildren { @@ -873,6 +936,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof EthereumExecutionOverviewRouteImport parentRoute: typeof EthereumExecutionRoute } + '/ethereum/execution/gas-profiler': { + id: '/ethereum/execution/gas-profiler' + path: '/gas-profiler' + fullPath: '/ethereum/execution/gas-profiler' + preLoaderRoute: typeof EthereumExecutionGasProfilerRouteImport + parentRoute: typeof EthereumExecutionRoute + } '/ethereum/epochs/$epoch': { id: '/ethereum/epochs/$epoch' path: '/$epoch' @@ -936,6 +1006,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof EthereumExecutionPayloadsIndexRouteImport parentRoute: typeof EthereumExecutionPayloadsRoute } + '/ethereum/execution/gas-profiler/': { + id: '/ethereum/execution/gas-profiler/' + path: '/' + fullPath: '/ethereum/execution/gas-profiler/' + preLoaderRoute: typeof EthereumExecutionGasProfilerIndexRouteImport + parentRoute: typeof EthereumExecutionGasProfilerRoute + } '/ethereum/data-availability/probes/': { id: '/ethereum/data-availability/probes/' path: '/' @@ -950,6 +1027,27 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof EthereumDataAvailabilityCustodyIndexRouteImport parentRoute: typeof EthereumDataAvailabilityCustodyRoute } + '/ethereum/execution/gas-profiler/tx/$txHash': { + id: '/ethereum/execution/gas-profiler/tx/$txHash' + path: '/tx/$txHash' + fullPath: '/ethereum/execution/gas-profiler/tx/$txHash' + preLoaderRoute: typeof EthereumExecutionGasProfilerTxTxHashRouteImport + parentRoute: typeof EthereumExecutionGasProfilerRoute + } + '/ethereum/execution/gas-profiler/block/$blockNumber': { + id: '/ethereum/execution/gas-profiler/block/$blockNumber' + path: '/block/$blockNumber' + fullPath: '/ethereum/execution/gas-profiler/block/$blockNumber' + preLoaderRoute: typeof EthereumExecutionGasProfilerBlockBlockNumberRouteImport + parentRoute: typeof EthereumExecutionGasProfilerRoute + } + '/ethereum/execution/gas-profiler/tx/$txHash_/call/$callId': { + id: '/ethereum/execution/gas-profiler/tx/$txHash_/call/$callId' + path: '/tx/$txHash/call/$callId' + fullPath: '/ethereum/execution/gas-profiler/tx/$txHash/call/$callId' + preLoaderRoute: typeof EthereumExecutionGasProfilerTxTxHashCallCallIdRouteImport + parentRoute: typeof EthereumExecutionGasProfilerRoute + } } } @@ -1041,6 +1139,30 @@ const EthereumEpochsRouteWithChildren = EthereumEpochsRoute._addFileChildren( EthereumEpochsRouteChildren, ) +interface EthereumExecutionGasProfilerRouteChildren { + EthereumExecutionGasProfilerIndexRoute: typeof EthereumExecutionGasProfilerIndexRoute + EthereumExecutionGasProfilerBlockBlockNumberRoute: typeof EthereumExecutionGasProfilerBlockBlockNumberRoute + EthereumExecutionGasProfilerTxTxHashRoute: typeof EthereumExecutionGasProfilerTxTxHashRoute + EthereumExecutionGasProfilerTxTxHashCallCallIdRoute: typeof EthereumExecutionGasProfilerTxTxHashCallCallIdRoute +} + +const EthereumExecutionGasProfilerRouteChildren: EthereumExecutionGasProfilerRouteChildren = + { + EthereumExecutionGasProfilerIndexRoute: + EthereumExecutionGasProfilerIndexRoute, + EthereumExecutionGasProfilerBlockBlockNumberRoute: + EthereumExecutionGasProfilerBlockBlockNumberRoute, + EthereumExecutionGasProfilerTxTxHashRoute: + EthereumExecutionGasProfilerTxTxHashRoute, + EthereumExecutionGasProfilerTxTxHashCallCallIdRoute: + EthereumExecutionGasProfilerTxTxHashCallCallIdRoute, + } + +const EthereumExecutionGasProfilerRouteWithChildren = + EthereumExecutionGasProfilerRoute._addFileChildren( + EthereumExecutionGasProfilerRouteChildren, + ) + interface EthereumExecutionPayloadsRouteChildren { EthereumExecutionPayloadsIndexRoute: typeof EthereumExecutionPayloadsIndexRoute } @@ -1070,6 +1192,7 @@ const EthereumExecutionTimingsRouteWithChildren = ) interface EthereumExecutionRouteChildren { + EthereumExecutionGasProfilerRoute: typeof EthereumExecutionGasProfilerRouteWithChildren EthereumExecutionOverviewRoute: typeof EthereumExecutionOverviewRoute EthereumExecutionPayloadsRoute: typeof EthereumExecutionPayloadsRouteWithChildren EthereumExecutionStateExpiryRoute: typeof EthereumExecutionStateExpiryRoute @@ -1078,6 +1201,8 @@ interface EthereumExecutionRouteChildren { } const EthereumExecutionRouteChildren: EthereumExecutionRouteChildren = { + EthereumExecutionGasProfilerRoute: + EthereumExecutionGasProfilerRouteWithChildren, EthereumExecutionOverviewRoute: EthereumExecutionOverviewRoute, EthereumExecutionPayloadsRoute: EthereumExecutionPayloadsRouteWithChildren, EthereumExecutionStateExpiryRoute: EthereumExecutionStateExpiryRoute, From a14d48a0a7aa8c188fd80669c5e87e638f7a0945 Mon Sep 17 00:00:00 2001 From: Matty Evans Date: Thu, 22 Jan 2026 08:37:22 +1000 Subject: [PATCH 02/12] feat: gas profiler --- src/api/@tanstack/react-query.gen.ts | 62 + src/api/index.ts | 15 + src/api/sdk.gen.ts | 46 + src/api/types.gen.ts | 396 ++++++ src/api/zod.gen.ts | 524 ++++++++ src/components/Charts/Bar/Bar.tsx | 3 + src/components/Charts/Bar/Bar.types.ts | 5 + .../Charts/FlameGraph/FlameGraph.tsx | 77 +- .../Charts/FlameGraph/FlameGraph.types.ts | 6 + .../GasFlowDiagram/GasFlowDiagram.stories.tsx | 145 +++ .../Charts/GasFlowDiagram/GasFlowDiagram.tsx | 170 +++ .../GasFlowDiagram/GasFlowDiagram.types.ts | 85 ++ src/components/Charts/GasFlowDiagram/index.ts | 3 + .../GasTooltip/GasTooltip.stories.tsx | 193 +++ .../DataDisplay/GasTooltip/GasTooltip.tsx | 89 ++ .../GasTooltip/GasTooltip.types.ts | 142 +++ .../DataDisplay/GasTooltip/index.ts | 3 + .../Ethereum/PhalconIcon/PhalconIcon.tsx | 19 + src/components/Ethereum/PhalconIcon/index.ts | 1 + .../Ethereum/TenderlyIcon/TenderlyIcon.tsx | 23 + src/components/Ethereum/TenderlyIcon/index.ts | 1 + src/components/Navigation/Tab/Tab.tsx | 4 +- .../execution/gas-profiler/BlockPage.tsx | 1118 +++++++++++++++++ .../execution/gas-profiler/CallPage.tsx | 661 ++++++++++ .../execution/gas-profiler/HomePage.tsx | 872 +++++++++++++ .../execution/gas-profiler/IndexPage.tsx | 202 +++ .../execution/gas-profiler/IndexPage.types.ts | 129 ++ .../gas-profiler/TransactionPage.tsx | 840 +++++++++++++ .../components/BlockHeader/BlockHeader.tsx | 179 +++ .../components/BlockHeader/index.ts | 2 + .../components/CallFrameRow/CallFrameRow.tsx | 119 ++ .../CallFrameRow/CallFrameRow.types.ts | 32 + .../components/CallFrameRow/index.ts | 2 + .../CallTraceView/CallTraceView.tsx | 738 +++++++++++ .../CallTraceView/CallTraceView.types.ts | 59 + .../components/CallTraceView/index.ts | 3 + .../CallTreeSection/CallTreeSection.tsx | 259 ++++ .../components/CallTreeSection/index.ts | 2 + .../CallsVsGasChart/CallsVsGasChart.tsx | 133 ++ .../components/CallsVsGasChart/index.ts | 2 + .../CategoryPieChart/CategoryPieChart.tsx | 124 ++ .../components/CategoryPieChart/index.ts | 2 + .../ContractInteractionsTable.tsx | 407 ++++++ .../ContractInteractionsTable.types.ts | 29 + .../ContractInteractionsTable/index.ts | 2 + .../GasBreakdownCard/GasBreakdownCard.tsx | 116 ++ .../components/GasBreakdownCard/index.ts | 2 + .../components/GasFormula/GasFormula.tsx | 154 +++ .../components/GasFormula/index.ts | 2 + .../components/GasHistogram/GasHistogram.tsx | 173 +++ .../components/GasHistogram/index.ts | 2 + .../GasProfilerSkeleton.tsx | 79 ++ .../components/GasProfilerSkeleton/index.ts | 1 + .../OpcodeAnalysis/OpcodeAnalysis.tsx | 359 ++++++ .../components/OpcodeAnalysis/index.ts | 2 + .../OpcodeDistribution/OpcodeDistribution.tsx | 122 ++ .../components/OpcodeDistribution/index.ts | 2 + .../TopContractsByGasChart.tsx | 87 ++ .../TopContractsByGasChart/index.ts | 2 + .../TopItemsByGasTable/TopItemsByGasTable.tsx | 190 +++ .../components/TopItemsByGasTable/index.ts | 2 + .../TransactionList/TransactionList.tsx | 79 ++ .../components/TransactionList/index.ts | 2 + .../TransactionRow/TransactionRow.tsx | 202 +++ .../components/TransactionRow/index.ts | 2 + .../TransactionSearchInput.tsx | 145 +++ .../TransactionSearchInput/index.ts | 2 + .../TransactionSummaryCard.tsx | 132 ++ .../TransactionSummaryCard.types.ts | 13 + .../TransactionSummaryCard/index.ts | 2 + .../gas-profiler/components/index.ts | 27 + .../execution/gas-profiler/hooks/index.ts | 23 + .../hooks/useBlockTransactions.ts | 315 +++++ .../gas-profiler/hooks/useCallFrameOpcodes.ts | 88 ++ .../gas-profiler/hooks/useContractOwners.ts | 76 ++ .../gas-profiler/hooks/useFrameOpcodes.ts | 90 ++ .../hooks/useFunctionSignatures.ts | 79 ++ .../hooks/useTransactionGasData.ts | 460 +++++++ .../ethereum/execution/gas-profiler/index.ts | 8 + .../execution/gas-profiler/utils/index.ts | 1 + .../gas-profiler/utils/opcodeUtils.ts | 174 +++ .../ethereum/execution/gas-profiler.tsx | 44 + .../gas-profiler/block.$blockNumber.tsx | 41 + .../ethereum/execution/gas-profiler/index.tsx | 44 + .../execution/gas-profiler/tx.$txHash.tsx | 40 + .../gas-profiler/tx.$txHash_.call.$callId.tsx | 18 + src/utils/api-pagination.ts | 38 +- 87 files changed, 11324 insertions(+), 44 deletions(-) create mode 100644 src/components/Charts/GasFlowDiagram/GasFlowDiagram.stories.tsx create mode 100644 src/components/Charts/GasFlowDiagram/GasFlowDiagram.tsx create mode 100644 src/components/Charts/GasFlowDiagram/GasFlowDiagram.types.ts create mode 100644 src/components/Charts/GasFlowDiagram/index.ts create mode 100644 src/components/DataDisplay/GasTooltip/GasTooltip.stories.tsx create mode 100644 src/components/DataDisplay/GasTooltip/GasTooltip.tsx create mode 100644 src/components/DataDisplay/GasTooltip/GasTooltip.types.ts create mode 100644 src/components/DataDisplay/GasTooltip/index.ts create mode 100644 src/components/Ethereum/PhalconIcon/PhalconIcon.tsx create mode 100644 src/components/Ethereum/PhalconIcon/index.ts create mode 100644 src/components/Ethereum/TenderlyIcon/TenderlyIcon.tsx create mode 100644 src/components/Ethereum/TenderlyIcon/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/BlockPage.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/CallPage.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/HomePage.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/IndexPage.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/IndexPage.types.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/TransactionPage.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/BlockHeader/BlockHeader.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/BlockHeader/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/CallFrameRow/CallFrameRow.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/CallFrameRow/CallFrameRow.types.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/CallFrameRow/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/CallTraceView/CallTraceView.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/CallTraceView/CallTraceView.types.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/CallTraceView/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/CallTreeSection/CallTreeSection.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/CallTreeSection/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/CallsVsGasChart/CallsVsGasChart.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/CallsVsGasChart/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/CategoryPieChart/CategoryPieChart.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/CategoryPieChart/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/ContractInteractionsTable/ContractInteractionsTable.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/ContractInteractionsTable/ContractInteractionsTable.types.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/ContractInteractionsTable/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/GasBreakdownCard/GasBreakdownCard.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/GasBreakdownCard/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/GasFormula/GasFormula.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/GasFormula/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/GasHistogram/GasHistogram.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/GasHistogram/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/GasProfilerSkeleton/GasProfilerSkeleton.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/GasProfilerSkeleton/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/OpcodeAnalysis/OpcodeAnalysis.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/OpcodeAnalysis/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/OpcodeDistribution/OpcodeDistribution.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/OpcodeDistribution/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/TopContractsByGasChart/TopContractsByGasChart.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/TopContractsByGasChart/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/TopItemsByGasTable/TopItemsByGasTable.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/TopItemsByGasTable/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/TransactionList/TransactionList.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/TransactionList/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/TransactionRow/TransactionRow.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/TransactionRow/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/TransactionSearchInput/TransactionSearchInput.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/TransactionSearchInput/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/TransactionSummaryCard/TransactionSummaryCard.tsx create mode 100644 src/pages/ethereum/execution/gas-profiler/components/TransactionSummaryCard/TransactionSummaryCard.types.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/TransactionSummaryCard/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/components/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/hooks/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/hooks/useBlockTransactions.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/hooks/useCallFrameOpcodes.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/hooks/useContractOwners.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/hooks/useFrameOpcodes.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/hooks/useFunctionSignatures.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/hooks/useTransactionGasData.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/utils/index.ts create mode 100644 src/pages/ethereum/execution/gas-profiler/utils/opcodeUtils.ts create mode 100644 src/routes/ethereum/execution/gas-profiler.tsx create mode 100644 src/routes/ethereum/execution/gas-profiler/block.$blockNumber.tsx create mode 100644 src/routes/ethereum/execution/gas-profiler/index.tsx create mode 100644 src/routes/ethereum/execution/gas-profiler/tx.$txHash.tsx create mode 100644 src/routes/ethereum/execution/gas-profiler/tx.$txHash_.call.$callId.tsx diff --git a/src/api/@tanstack/react-query.gen.ts b/src/api/@tanstack/react-query.gen.ts index 49427b7c8..bd7ed9d0a 100644 --- a/src/api/@tanstack/react-query.gen.ts +++ b/src/api/@tanstack/react-query.gen.ts @@ -60,6 +60,8 @@ import { fctBlockMevHeadServiceList, fctBlockMevServiceGet, fctBlockMevServiceList, + fctBlockOpcodeGasServiceGet, + fctBlockOpcodeGasServiceList, fctBlockProposerEntityServiceGet, fctBlockProposerEntityServiceList, fctBlockProposerHeadServiceGet, @@ -449,6 +451,12 @@ import type { FctBlockMevServiceListData, FctBlockMevServiceListError, FctBlockMevServiceListResponse, + FctBlockOpcodeGasServiceGetData, + FctBlockOpcodeGasServiceGetError, + FctBlockOpcodeGasServiceGetResponse, + FctBlockOpcodeGasServiceListData, + FctBlockOpcodeGasServiceListError, + FctBlockOpcodeGasServiceListResponse, FctBlockProposerEntityServiceGetData, FctBlockProposerEntityServiceGetError, FctBlockProposerEntityServiceGetResponse, @@ -2800,6 +2808,60 @@ export const fctBlockMevHeadServiceGetOptions = (options: Options) => + createQueryKey('fctBlockOpcodeGasServiceList', options); + +/** + * List records + * + * Retrieve paginated results with optional filtering + */ +export const fctBlockOpcodeGasServiceListOptions = (options?: Options) => + queryOptions< + FctBlockOpcodeGasServiceListResponse, + FctBlockOpcodeGasServiceListError, + FctBlockOpcodeGasServiceListResponse, + ReturnType + >({ + queryFn: async ({ queryKey, signal }) => { + const { data } = await fctBlockOpcodeGasServiceList({ + ...options, + ...queryKey[0], + signal, + throwOnError: true, + }); + return data; + }, + queryKey: fctBlockOpcodeGasServiceListQueryKey(options), + }); + +export const fctBlockOpcodeGasServiceGetQueryKey = (options: Options) => + createQueryKey('fctBlockOpcodeGasServiceGet', options); + +/** + * Get record + * + * Retrieve a single record by block_number + */ +export const fctBlockOpcodeGasServiceGetOptions = (options: Options) => + queryOptions< + FctBlockOpcodeGasServiceGetResponse, + FctBlockOpcodeGasServiceGetError, + FctBlockOpcodeGasServiceGetResponse, + ReturnType + >({ + queryFn: async ({ queryKey, signal }) => { + const { data } = await fctBlockOpcodeGasServiceGet({ + ...options, + ...queryKey[0], + signal, + throwOnError: true, + }); + return data; + }, + queryKey: fctBlockOpcodeGasServiceGetQueryKey(options), + }); + export const fctBlockProposerServiceListQueryKey = (options?: Options) => createQueryKey('fctBlockProposerServiceList', options); diff --git a/src/api/index.ts b/src/api/index.ts index 17abf83e7..cd51bd20e 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -57,6 +57,8 @@ export { fctBlockMevHeadServiceList, fctBlockMevServiceGet, fctBlockMevServiceList, + fctBlockOpcodeGasServiceGet, + fctBlockOpcodeGasServiceList, fctBlockProposerEntityServiceGet, fctBlockProposerEntityServiceList, fctBlockProposerHeadServiceGet, @@ -588,6 +590,17 @@ export type { FctBlockMevServiceListErrors, FctBlockMevServiceListResponse, FctBlockMevServiceListResponses, + FctBlockOpcodeGas, + FctBlockOpcodeGasServiceGetData, + FctBlockOpcodeGasServiceGetError, + FctBlockOpcodeGasServiceGetErrors, + FctBlockOpcodeGasServiceGetResponse, + FctBlockOpcodeGasServiceGetResponses, + FctBlockOpcodeGasServiceListData, + FctBlockOpcodeGasServiceListError, + FctBlockOpcodeGasServiceListErrors, + FctBlockOpcodeGasServiceListResponse, + FctBlockOpcodeGasServiceListResponses, FctBlockProposer, FctBlockProposerEntity, FctBlockProposerEntityServiceGetData, @@ -1198,6 +1211,7 @@ export type { GetFctBlockHeadResponse, GetFctBlockMevHeadResponse, GetFctBlockMevResponse, + GetFctBlockOpcodeGasResponse, GetFctBlockProposerEntityResponse, GetFctBlockProposerHeadResponse, GetFctBlockProposerResponse, @@ -1952,6 +1966,7 @@ export type { ListFctBlockHeadResponse, ListFctBlockMevHeadResponse, ListFctBlockMevResponse, + ListFctBlockOpcodeGasResponse, ListFctBlockProposerEntityResponse, ListFctBlockProposerHeadResponse, ListFctBlockProposerResponse, diff --git a/src/api/sdk.gen.ts b/src/api/sdk.gen.ts index 170ccbfeb..2cfd61407 100644 --- a/src/api/sdk.gen.ts +++ b/src/api/sdk.gen.ts @@ -171,6 +171,12 @@ import type { FctBlockMevServiceListData, FctBlockMevServiceListErrors, FctBlockMevServiceListResponses, + FctBlockOpcodeGasServiceGetData, + FctBlockOpcodeGasServiceGetErrors, + FctBlockOpcodeGasServiceGetResponses, + FctBlockOpcodeGasServiceListData, + FctBlockOpcodeGasServiceListErrors, + FctBlockOpcodeGasServiceListResponses, FctBlockProposerEntityServiceGetData, FctBlockProposerEntityServiceGetErrors, FctBlockProposerEntityServiceGetResponses, @@ -939,6 +945,10 @@ import { zFctBlockMevServiceGetResponse, zFctBlockMevServiceListData, zFctBlockMevServiceListResponse, + zFctBlockOpcodeGasServiceGetData, + zFctBlockOpcodeGasServiceGetResponse, + zFctBlockOpcodeGasServiceListData, + zFctBlockOpcodeGasServiceListResponse, zFctBlockProposerEntityServiceGetData, zFctBlockProposerEntityServiceGetResponse, zFctBlockProposerEntityServiceListData, @@ -2455,6 +2465,42 @@ export const fctBlockMevHeadServiceGet = ( ...options, }); +/** + * List records + * + * Retrieve paginated results with optional filtering + */ +export const fctBlockOpcodeGasServiceList = ( + options?: Options +) => + (options?.client ?? client).get< + FctBlockOpcodeGasServiceListResponses, + FctBlockOpcodeGasServiceListErrors, + ThrowOnError + >({ + requestValidator: async data => await zFctBlockOpcodeGasServiceListData.parseAsync(data), + responseValidator: async data => await zFctBlockOpcodeGasServiceListResponse.parseAsync(data), + url: '/api/v1/fct_block_opcode_gas', + ...options, + }); + +/** + * Get record + * + * Retrieve a single record by block_number + */ +export const fctBlockOpcodeGasServiceGet = ( + options: Options +) => + (options.client ?? client).get( + { + requestValidator: async data => await zFctBlockOpcodeGasServiceGetData.parseAsync(data), + responseValidator: async data => await zFctBlockOpcodeGasServiceGetResponse.parseAsync(data), + url: '/api/v1/fct_block_opcode_gas/{block_number}', + ...options, + } + ); + /** * List records * diff --git a/src/api/types.gen.ts b/src/api/types.gen.ts index f87edbd76..6db9509b4 100644 --- a/src/api/types.gen.ts +++ b/src/api/types.gen.ts @@ -1475,6 +1475,37 @@ export type FctBlockMevHead = { value?: string | null; }; +export type FctBlockOpcodeGas = { + /** + * The block number + */ + block_number?: number; + /** + * Total execution count of this opcode across all transactions in the block + */ + count?: number; + /** + * Number of times this opcode resulted in an error across all transactions + */ + error_count?: number; + /** + * Total gas consumed by this opcode across all transactions in the block + */ + gas?: number; + /** + * The name of the network + */ + meta_network_name?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) + */ + opcode?: string; + /** + * Timestamp when the record was last updated + */ + updated_date_time?: number; +}; + export type FctBlockProposer = { /** * The beacon block root hash. Null if a block was never seen by a sentry, aka "missed" @@ -4309,6 +4340,13 @@ export type GetFctBlockMevResponse = { item?: FctBlockMev; }; +/** + * Response for getting a single fct_block_opcode_gas record + */ +export type GetFctBlockOpcodeGasResponse = { + item?: FctBlockOpcodeGas; +}; + /** * Response for getting a single fct_block_proposer_entity record */ @@ -7747,6 +7785,20 @@ export type ListFctBlockMevResponse = { next_page_token?: string; }; +/** + * Response for listing fct_block_opcode_gas records + */ +export type ListFctBlockOpcodeGasResponse = { + /** + * The list of fct_block_opcode_gas. + */ + fct_block_opcode_gas?: Array; + /** + * A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. + */ + next_page_token?: string; +}; + /** * Response for listing fct_block_proposer_entity records */ @@ -24240,6 +24292,350 @@ export type FctBlockMevHeadServiceGetResponses = { export type FctBlockMevHeadServiceGetResponse = FctBlockMevHeadServiceGetResponses[keyof FctBlockMevHeadServiceGetResponses]; +export type FctBlockOpcodeGasServiceListData = { + body?: never; + path?: never; + query?: { + /** + * The block number (filter: eq) + */ + block_number_eq?: number; + /** + * The block number (filter: ne) + */ + block_number_ne?: number; + /** + * The block number (filter: lt) + */ + block_number_lt?: number; + /** + * The block number (filter: lte) + */ + block_number_lte?: number; + /** + * The block number (filter: gt) + */ + block_number_gt?: number; + /** + * The block number (filter: gte) + */ + block_number_gte?: number; + /** + * The block number (filter: between_min) + */ + block_number_between_min?: number; + /** + * The block number (filter: between_max_value) + */ + block_number_between_max_value?: number; + /** + * The block number (filter: in_values) (comma-separated list) + */ + block_number_in_values?: string; + /** + * The block number (filter: not_in_values) (comma-separated list) + */ + block_number_not_in_values?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: eq) + */ + opcode_eq?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: ne) + */ + opcode_ne?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: contains) + */ + opcode_contains?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: starts_with) + */ + opcode_starts_with?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: ends_with) + */ + opcode_ends_with?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: like) + */ + opcode_like?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: not_like) + */ + opcode_not_like?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: in_values) (comma-separated list) + */ + opcode_in_values?: string; + /** + * The EVM opcode name (e.g., SLOAD, ADD, CALL) (filter: not_in_values) (comma-separated list) + */ + opcode_not_in_values?: string; + /** + * The name of the network (filter: eq) + */ + meta_network_name_eq?: string; + /** + * The name of the network (filter: ne) + */ + meta_network_name_ne?: string; + /** + * The name of the network (filter: contains) + */ + meta_network_name_contains?: string; + /** + * The name of the network (filter: starts_with) + */ + meta_network_name_starts_with?: string; + /** + * The name of the network (filter: ends_with) + */ + meta_network_name_ends_with?: string; + /** + * The name of the network (filter: like) + */ + meta_network_name_like?: string; + /** + * The name of the network (filter: not_like) + */ + meta_network_name_not_like?: string; + /** + * The name of the network (filter: in_values) (comma-separated list) + */ + meta_network_name_in_values?: string; + /** + * The name of the network (filter: not_in_values) (comma-separated list) + */ + meta_network_name_not_in_values?: string; + /** + * Timestamp when the record was last updated (filter: eq) + */ + updated_date_time_eq?: number; + /** + * Timestamp when the record was last updated (filter: ne) + */ + updated_date_time_ne?: number; + /** + * Timestamp when the record was last updated (filter: lt) + */ + updated_date_time_lt?: number; + /** + * Timestamp when the record was last updated (filter: lte) + */ + updated_date_time_lte?: number; + /** + * Timestamp when the record was last updated (filter: gt) + */ + updated_date_time_gt?: number; + /** + * Timestamp when the record was last updated (filter: gte) + */ + updated_date_time_gte?: number; + /** + * Timestamp when the record was last updated (filter: between_min) + */ + updated_date_time_between_min?: number; + /** + * Timestamp when the record was last updated (filter: between_max_value) + */ + updated_date_time_between_max_value?: number; + /** + * Timestamp when the record was last updated (filter: in_values) (comma-separated list) + */ + updated_date_time_in_values?: string; + /** + * Timestamp when the record was last updated (filter: not_in_values) (comma-separated list) + */ + updated_date_time_not_in_values?: string; + /** + * Total execution count of this opcode across all transactions in the block (filter: eq) + */ + count_eq?: number; + /** + * Total execution count of this opcode across all transactions in the block (filter: ne) + */ + count_ne?: number; + /** + * Total execution count of this opcode across all transactions in the block (filter: lt) + */ + count_lt?: number; + /** + * Total execution count of this opcode across all transactions in the block (filter: lte) + */ + count_lte?: number; + /** + * Total execution count of this opcode across all transactions in the block (filter: gt) + */ + count_gt?: number; + /** + * Total execution count of this opcode across all transactions in the block (filter: gte) + */ + count_gte?: number; + /** + * Total execution count of this opcode across all transactions in the block (filter: between_min) + */ + count_between_min?: number; + /** + * Total execution count of this opcode across all transactions in the block (filter: between_max_value) + */ + count_between_max_value?: number; + /** + * Total execution count of this opcode across all transactions in the block (filter: in_values) (comma-separated list) + */ + count_in_values?: string; + /** + * Total execution count of this opcode across all transactions in the block (filter: not_in_values) (comma-separated list) + */ + count_not_in_values?: string; + /** + * Total gas consumed by this opcode across all transactions in the block (filter: eq) + */ + gas_eq?: number; + /** + * Total gas consumed by this opcode across all transactions in the block (filter: ne) + */ + gas_ne?: number; + /** + * Total gas consumed by this opcode across all transactions in the block (filter: lt) + */ + gas_lt?: number; + /** + * Total gas consumed by this opcode across all transactions in the block (filter: lte) + */ + gas_lte?: number; + /** + * Total gas consumed by this opcode across all transactions in the block (filter: gt) + */ + gas_gt?: number; + /** + * Total gas consumed by this opcode across all transactions in the block (filter: gte) + */ + gas_gte?: number; + /** + * Total gas consumed by this opcode across all transactions in the block (filter: between_min) + */ + gas_between_min?: number; + /** + * Total gas consumed by this opcode across all transactions in the block (filter: between_max_value) + */ + gas_between_max_value?: number; + /** + * Total gas consumed by this opcode across all transactions in the block (filter: in_values) (comma-separated list) + */ + gas_in_values?: string; + /** + * Total gas consumed by this opcode across all transactions in the block (filter: not_in_values) (comma-separated list) + */ + gas_not_in_values?: string; + /** + * Number of times this opcode resulted in an error across all transactions (filter: eq) + */ + error_count_eq?: number; + /** + * Number of times this opcode resulted in an error across all transactions (filter: ne) + */ + error_count_ne?: number; + /** + * Number of times this opcode resulted in an error across all transactions (filter: lt) + */ + error_count_lt?: number; + /** + * Number of times this opcode resulted in an error across all transactions (filter: lte) + */ + error_count_lte?: number; + /** + * Number of times this opcode resulted in an error across all transactions (filter: gt) + */ + error_count_gt?: number; + /** + * Number of times this opcode resulted in an error across all transactions (filter: gte) + */ + error_count_gte?: number; + /** + * Number of times this opcode resulted in an error across all transactions (filter: between_min) + */ + error_count_between_min?: number; + /** + * Number of times this opcode resulted in an error across all transactions (filter: between_max_value) + */ + error_count_between_max_value?: number; + /** + * Number of times this opcode resulted in an error across all transactions (filter: in_values) (comma-separated list) + */ + error_count_in_values?: string; + /** + * Number of times this opcode resulted in an error across all transactions (filter: not_in_values) (comma-separated list) + */ + error_count_not_in_values?: string; + /** + * The maximum number of fct_block_opcode_gas to return. If unspecified, at most 100 items will be returned. The maximum value is 10000; values above 10000 will be coerced to 10000. + */ + page_size?: number; + /** + * A page token, received from a previous `ListFctBlockOpcodeGas` call. Provide this to retrieve the subsequent page. + */ + page_token?: string; + /** + * The order of results. Format: comma-separated list of fields. Example: "foo,bar" or "foo desc,bar" for descending order on foo. If unspecified, results will be returned in the default order. + */ + order_by?: string; + }; + url: '/api/v1/fct_block_opcode_gas'; +}; + +export type FctBlockOpcodeGasServiceListErrors = { + /** + * Default error response + */ + default: Status; +}; + +export type FctBlockOpcodeGasServiceListError = + FctBlockOpcodeGasServiceListErrors[keyof FctBlockOpcodeGasServiceListErrors]; + +export type FctBlockOpcodeGasServiceListResponses = { + /** + * OK + */ + 200: ListFctBlockOpcodeGasResponse; +}; + +export type FctBlockOpcodeGasServiceListResponse = + FctBlockOpcodeGasServiceListResponses[keyof FctBlockOpcodeGasServiceListResponses]; + +export type FctBlockOpcodeGasServiceGetData = { + body?: never; + path: { + /** + * The block number + */ + block_number: number; + }; + query?: never; + url: '/api/v1/fct_block_opcode_gas/{block_number}'; +}; + +export type FctBlockOpcodeGasServiceGetErrors = { + /** + * Default error response + */ + default: Status; +}; + +export type FctBlockOpcodeGasServiceGetError = + FctBlockOpcodeGasServiceGetErrors[keyof FctBlockOpcodeGasServiceGetErrors]; + +export type FctBlockOpcodeGasServiceGetResponses = { + /** + * OK + */ + 200: GetFctBlockOpcodeGasResponse; +}; + +export type FctBlockOpcodeGasServiceGetResponse = + FctBlockOpcodeGasServiceGetResponses[keyof FctBlockOpcodeGasServiceGetResponses]; + export type FctBlockProposerServiceListData = { body?: never; path?: never; diff --git a/src/api/zod.gen.ts b/src/api/zod.gen.ts index bfa58da51..424eadf74 100644 --- a/src/api/zod.gen.ts +++ b/src/api/zod.gen.ts @@ -1921,6 +1921,59 @@ export const zFctBlockMevHead = z.object({ value: z.optional(z.union([z.string(), z.null()])), }); +export const zFctBlockOpcodeGas = z.object({ + block_number: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + meta_network_name: z.optional(z.string()), + opcode: z.optional(z.string()), + updated_date_time: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), +}); + export const zFctBlockProposer = z.object({ block_root: z.optional(z.union([z.string(), z.null()])), epoch: z.optional( @@ -6523,6 +6576,13 @@ export const zGetFctBlockMevResponse = z.object({ item: z.optional(zFctBlockMev), }); +/** + * Response for getting a single fct_block_opcode_gas record + */ +export const zGetFctBlockOpcodeGasResponse = z.object({ + item: z.optional(zFctBlockOpcodeGas), +}); + /** * Response for getting a single fct_block_proposer_entity record */ @@ -10942,6 +11002,14 @@ export const zListFctBlockMevResponse = z.object({ next_page_token: z.optional(z.string()), }); +/** + * Response for listing fct_block_opcode_gas records + */ +export const zListFctBlockOpcodeGasResponse = z.object({ + fct_block_opcode_gas: z.optional(z.array(zFctBlockOpcodeGas)), + next_page_token: z.optional(z.string()), +}); + /** * Response for listing fct_block_proposer_entity records */ @@ -27633,6 +27701,462 @@ export const zFctBlockMevHeadServiceGetData = z.object({ */ export const zFctBlockMevHeadServiceGetResponse = zGetFctBlockMevHeadResponse; +export const zFctBlockOpcodeGasServiceListData = z.object({ + body: z.optional(z.never()), + path: z.optional(z.never()), + query: z.optional( + z.object({ + block_number_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + block_number_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + block_number_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + opcode_eq: z.optional(z.string()), + opcode_ne: z.optional(z.string()), + opcode_contains: z.optional(z.string()), + opcode_starts_with: z.optional(z.string()), + opcode_ends_with: z.optional(z.string()), + opcode_like: z.optional(z.string()), + opcode_not_like: z.optional(z.string()), + opcode_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + opcode_not_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + meta_network_name_eq: z.optional(z.string()), + meta_network_name_ne: z.optional(z.string()), + meta_network_name_contains: z.optional(z.string()), + meta_network_name_starts_with: z.optional(z.string()), + meta_network_name_ends_with: z.optional(z.string()), + meta_network_name_like: z.optional(z.string()), + meta_network_name_not_like: z.optional(z.string()), + meta_network_name_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + meta_network_name_not_in_values: z.optional(z.string().check(z.regex(/^[^,]+(,[^,]+)*$/))), + updated_date_time_eq: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_ne: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_lt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_lte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_gt: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_gte: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_between_min: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_between_max_value: z.optional( + z + .int() + .check( + z.minimum(0, { error: 'Invalid value: Expected uint32 to be >= 0' }), + z.maximum(4294967295, { error: 'Invalid value: Expected uint32 to be <= 4294967295' }) + ) + ), + updated_date_time_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + updated_date_time_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + count_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + count_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + count_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + gas_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + gas_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + error_count_eq: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_ne: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_lt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_lte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_gt: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_gte: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_between_min: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_between_max_value: z.optional( + z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ) + ), + error_count_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + error_count_not_in_values: z.optional(z.string().check(z.regex(/^\d+(,\d+)*$/))), + page_size: z.optional( + z + .int() + .check( + z.minimum(-2147483648, { error: 'Invalid value: Expected int32 to be >= -2147483648' }), + z.maximum(2147483647, { error: 'Invalid value: Expected int32 to be <= 2147483647' }) + ) + ), + page_token: z.optional(z.string()), + order_by: z.optional(z.string()), + }) + ), +}); + +/** + * OK + */ +export const zFctBlockOpcodeGasServiceListResponse = zListFctBlockOpcodeGasResponse; + +export const zFctBlockOpcodeGasServiceGetData = z.object({ + body: z.optional(z.never()), + path: z.object({ + block_number: z.coerce + .bigint() + .check( + z.minimum(BigInt('0'), { error: 'Invalid value: Expected uint64 to be >= 0' }), + z.maximum(BigInt('18446744073709551615'), { + error: 'Invalid value: Expected uint64 to be <= 18446744073709551615', + }) + ), + }), + query: z.optional(z.never()), +}); + +/** + * OK + */ +export const zFctBlockOpcodeGasServiceGetResponse = zGetFctBlockOpcodeGasResponse; + export const zFctBlockProposerServiceListData = z.object({ body: z.optional(z.never()), path: z.optional(z.never()), diff --git a/src/components/Charts/Bar/Bar.tsx b/src/components/Charts/Bar/Bar.tsx index 716e229df..d4fb98926 100644 --- a/src/components/Charts/Bar/Bar.tsx +++ b/src/components/Charts/Bar/Bar.tsx @@ -64,6 +64,7 @@ export const BarChart = forwardRef(function Bar animationDuration = 300, tooltipFormatter, categoryLabelInterval = 'auto', + valueAxisLabelFormatter, }, ref ): JSX.Element { @@ -117,6 +118,7 @@ export const BarChart = forwardRef(function Bar axisLabel: { color: themeColors.muted, fontSize: 11, + formatter: valueAxisLabelFormatter, }, splitLine: { show: false, @@ -230,6 +232,7 @@ export const BarChart = forwardRef(function Bar animationDuration, tooltipFormatter, categoryLabelInterval, + valueAxisLabelFormatter, themeColors.foreground, themeColors.border, themeColors.muted, diff --git a/src/components/Charts/Bar/Bar.types.ts b/src/components/Charts/Bar/Bar.types.ts index fff38885f..babd2af72 100644 --- a/src/components/Charts/Bar/Bar.types.ts +++ b/src/components/Charts/Bar/Bar.types.ts @@ -125,4 +125,9 @@ export interface BarChartProps { * @default 'auto' */ categoryLabelInterval?: number | 'auto'; + /** + * Formatter for value axis labels + * @default undefined (uses default number formatting) + */ + valueAxisLabelFormatter?: (value: number) => string; } diff --git a/src/components/Charts/FlameGraph/FlameGraph.tsx b/src/components/Charts/FlameGraph/FlameGraph.tsx index b6cb2e67a..c113d8aad 100644 --- a/src/components/Charts/FlameGraph/FlameGraph.tsx +++ b/src/components/Charts/FlameGraph/FlameGraph.tsx @@ -1,4 +1,5 @@ import React, { type JSX, useMemo, useState, useCallback, useRef, useEffect } from 'react'; +import { createPortal } from 'react-dom'; import clsx from 'clsx'; import type { FlameGraphProps, FlameGraphNode, FlattenedNode, FlameGraphColorMap } from './FlameGraph.types'; import { EVM_CALL_TYPE_COLORS } from './FlameGraph.types'; @@ -157,6 +158,7 @@ export function FlameGraph({ valueUnit, valueFormatter = defaultValueFormatter, showLegend, + legendExtra, renderTooltip, }: FlameGraphProps): JSX.Element { const [hoveredNode, setHoveredNode] = useState(null); @@ -332,12 +334,14 @@ export function FlameGraph({
))}
+
- {/* Tooltip */} - {hoveredNode && ( + {/* Tooltip - rendered via portal to escape stacking contexts */} + {hoveredNode && + createPortal(
Gas
-
- - - Total - - - {hoveredNode.value.toLocaleString()} - {valueUnit && ` ${valueUnit}`} - -
{hoveredNode.selfValue !== undefined && (
- Self + Gas {hoveredNode.selfValue.toLocaleString()} @@ -394,6 +388,16 @@ export function FlameGraph({
)} +
+ + + Cumulative + + + {hoveredNode.value.toLocaleString()} + {valueUnit && ` ${valueUnit}`} + +
@@ -453,28 +457,35 @@ export function FlameGraph({
)} -
+
, + document.body )} -
- {/* Legend */} - {shouldShowLegend && colorMap && ( -
- Categories: - {Array.from(categories).map(cat => { - const colors = colorMap[cat]; - if (!colors) return null; - return ( - - - {cat} + {/* Legend and extra content */} + {(shouldShowLegend || legendExtra) && ( +
+ {shouldShowLegend && colorMap ? ( +
+ Categories: + {Array.from(categories).map(cat => { + const colors = colorMap[cat]; + if (!colors) return null; + return ( + + + {cat} + + ); + })} + + + Error - ); - })} - - - Error - +
+ ) : ( +
+ )} + {legendExtra}
)}
diff --git a/src/components/Charts/FlameGraph/FlameGraph.types.ts b/src/components/Charts/FlameGraph/FlameGraph.types.ts index 9fe72c989..3d27212b0 100644 --- a/src/components/Charts/FlameGraph/FlameGraph.types.ts +++ b/src/components/Charts/FlameGraph/FlameGraph.types.ts @@ -152,6 +152,12 @@ export interface FlameGraphProps { */ showLegend?: boolean; + /** + * Extra content to render on the right side of the legend row + * Useful for adding controls like view toggles + */ + legendExtra?: React.ReactNode; + /** * Custom tooltip renderer * If provided, replaces the default tooltip diff --git a/src/components/Charts/GasFlowDiagram/GasFlowDiagram.stories.tsx b/src/components/Charts/GasFlowDiagram/GasFlowDiagram.stories.tsx new file mode 100644 index 000000000..57f3e2698 --- /dev/null +++ b/src/components/Charts/GasFlowDiagram/GasFlowDiagram.stories.tsx @@ -0,0 +1,145 @@ +import type { Meta, StoryObj } from '@storybook/react-vite'; +import { GasFlowDiagram } from './GasFlowDiagram'; + +const meta: Meta = { + title: 'Components/Charts/GasFlowDiagram', + component: GasFlowDiagram, + tags: ['autodocs'], + decorators: [ + Story => ( +
+ +
+ ), + ], + parameters: { + layout: 'centered', + }, +}; + +export default meta; +type Story = StoryObj; + +/** + * Default gas flow diagram showing a typical successful transaction + */ +export const Default: Story = { + args: { + intrinsicGas: 21608, + evmGas: 761325, + gasRefund: 162000, + receiptGas: 620933, + }, +}; + +/** + * Complex transaction with high gas usage and significant refund + */ +export const ComplexTransaction: Story = { + args: { + intrinsicGas: 47234, + evmGas: 1969778, + gasRefund: 672000, + receiptGas: 1593109, + }, +}; + +/** + * Simple transfer with minimal gas + */ +export const SimpleTransfer: Story = { + args: { + intrinsicGas: 21000, + evmGas: 0, + gasRefund: 0, + receiptGas: 21000, + }, +}; + +/** + * Failed transaction where intrinsic gas is unavailable + */ +export const FailedTransaction: Story = { + args: { + intrinsicGas: null, + evmGas: 80000, + gasRefund: 0, + receiptGas: 80000, + }, +}; + +/** + * Compact mode for inline display + */ +export const Compact: Story = { + args: { + intrinsicGas: 21608, + evmGas: 761325, + gasRefund: 162000, + receiptGas: 620933, + compact: true, + }, +}; + +/** + * Without labels (values only) + */ +export const NoLabels: Story = { + args: { + intrinsicGas: 21608, + evmGas: 761325, + gasRefund: 162000, + receiptGas: 620933, + showLabels: false, + }, +}; + +/** + * Without formula at the bottom + */ +export const NoFormula: Story = { + args: { + intrinsicGas: 21608, + evmGas: 761325, + gasRefund: 162000, + receiptGas: 620933, + showFormula: false, + }, +}; + +/** + * Transaction with no refund + */ +export const NoRefund: Story = { + args: { + intrinsicGas: 21000, + evmGas: 50000, + gasRefund: 0, + receiptGas: 71000, + }, +}; + +/** + * Large gas values (millions) + */ +export const LargeValues: Story = { + args: { + intrinsicGas: 500000, + evmGas: 15000000, + gasRefund: 3000000, + receiptGas: 12500000, + }, +}; + +/** + * Compact mode with large values + */ +export const CompactLargeValues: Story = { + args: { + intrinsicGas: 500000, + evmGas: 15000000, + gasRefund: 3000000, + receiptGas: 12500000, + compact: true, + }, +}; diff --git a/src/components/Charts/GasFlowDiagram/GasFlowDiagram.tsx b/src/components/Charts/GasFlowDiagram/GasFlowDiagram.tsx new file mode 100644 index 000000000..6cc005512 --- /dev/null +++ b/src/components/Charts/GasFlowDiagram/GasFlowDiagram.tsx @@ -0,0 +1,170 @@ +import { type JSX, useState } from 'react'; +import { InformationCircleIcon, PlusIcon, MinusIcon, ArrowRightIcon } from '@heroicons/react/24/outline'; +import clsx from 'clsx'; +import type { GasFlowDiagramProps, GasType } from './GasFlowDiagram.types'; +import { GAS_EXPLANATIONS } from './GasFlowDiagram.types'; + +/** + * Format gas value with comma separators + */ +function formatGas(value: number): string { + return value.toLocaleString(); +} + +/** + * Format gas value in compact form (K/M) + */ +function formatGasCompact(value: number): string { + if (value >= 1_000_000) { + return `${(value / 1_000_000).toFixed(1)}M`; + } + if (value >= 1_000) { + return `${(value / 1_000).toFixed(0)}K`; + } + return value.toLocaleString(); +} + +/** + * Tooltip component for gas explanations + */ +function GasInfoTooltip({ type, className }: { type: GasType; className?: string }): JSX.Element { + const [isVisible, setIsVisible] = useState(false); + const explanation = GAS_EXPLANATIONS[type]; + + return ( +
+ + + {isVisible && ( +
+
{explanation.title}
+
{explanation.description}
+
+
+ )} +
+ ); +} + +/** + * Gas segment box component + */ +function GasSegment({ + type, + value, + showLabel, + compact, +}: { + type: GasType; + value: number | null; + showLabel: boolean; + compact: boolean; +}): JSX.Element { + const explanation = GAS_EXPLANATIONS[type]; + const displayValue = value !== null ? (compact ? formatGasCompact(value) : formatGas(value)) : 'N/A'; + + if (compact) { + return ( +
+ {displayValue} + +
+ ); + } + + return ( +
+ {showLabel && ( +
+ {explanation.title} + +
+ )} +
{displayValue}
+
+ ); +} + +/** + * GasFlowDiagram - Visual representation of gas calculation + * + * Shows the flow: Intrinsic + EVM - Refund = Receipt + * with color-coded segments and explanatory tooltips. + * + * @example + * ```tsx + * + * ``` + */ +export function GasFlowDiagram({ + intrinsicGas, + evmGas, + gasRefund, + receiptGas, + compact = false, + showLabels = true, + showFormula = true, + className, +}: GasFlowDiagramProps): JSX.Element { + if (compact) { + return ( +
+ + + + + + + +
+ ); + } + + return ( +
+ {/* Main flow diagram */} +
+ + + + +
+ + {/* Operators between segments */} +
+
+ +
+
+ +
+
+ +
+
+
+ + {/* Formula */} + {showFormula && ( +
+ {intrinsicGas !== null ? formatGas(intrinsicGas) : '?'} + {formatGas(evmGas)} - {formatGas(gasRefund)} ={' '} + {formatGas(receiptGas)} +
+ )} +
+ ); +} diff --git a/src/components/Charts/GasFlowDiagram/GasFlowDiagram.types.ts b/src/components/Charts/GasFlowDiagram/GasFlowDiagram.types.ts new file mode 100644 index 000000000..6028899e5 --- /dev/null +++ b/src/components/Charts/GasFlowDiagram/GasFlowDiagram.types.ts @@ -0,0 +1,85 @@ +/** + * Props for the GasFlowDiagram component + */ +export interface GasFlowDiagramProps { + /** Intrinsic gas (base tx cost). Null for failed transactions */ + intrinsicGas: number | null; + /** EVM execution gas (opcode costs) */ + evmGas: number; + /** Gas refund (storage cleanup) */ + gasRefund: number; + /** Receipt gas (final charged amount) */ + receiptGas: number; + /** Compact mode for inline use */ + compact?: boolean; + /** Show labels above values */ + showLabels?: boolean; + /** Show the formula below the diagram */ + showFormula?: boolean; + /** Custom class name */ + className?: string; +} + +/** + * Gas type identifiers for tooltips and styling + */ +export type GasType = 'intrinsic' | 'evm' | 'refund' | 'receipt'; + +/** + * Gas explanation content + */ +export interface GasExplanation { + title: string; + description: string; + color: { + bg: string; + text: string; + border: string; + }; +} + +/** + * Gas explanations for each type + */ +export const GAS_EXPLANATIONS: Record = { + intrinsic: { + title: 'Intrinsic Gas', + description: + 'Base transaction cost charged before execution. Includes: 21,000 base + calldata cost (4 gas per zero byte, 16 per non-zero) + access list cost. For failed transactions, this may be unavailable.', + color: { + bg: 'bg-amber-500/10', + text: 'text-amber-600 dark:text-amber-400', + border: 'border-amber-500/20', + }, + }, + evm: { + title: 'EVM Execution', + description: + 'Gas consumed by opcode execution during the transaction. This is what the flame graph visualizes - the cost of running smart contract code.', + color: { + bg: 'bg-primary/10', + text: 'text-primary', + border: 'border-primary/20', + }, + }, + refund: { + title: 'Gas Refund', + description: + 'Gas returned for storage cleanup operations (SSTORE setting to zero). Capped at 20% of total gas per EIP-3529 to prevent refund abuse.', + color: { + bg: 'bg-success/10', + text: 'text-success', + border: 'border-success/20', + }, + }, + receipt: { + title: 'Receipt Gas', + description: + 'Final gas charged to the user. Calculated as: Intrinsic + EVM Execution - Effective Refund. This is the value shown in block explorers.', + color: { + bg: 'bg-surface', + text: 'text-foreground', + border: 'border-border', + }, + }, +}; diff --git a/src/components/Charts/GasFlowDiagram/index.ts b/src/components/Charts/GasFlowDiagram/index.ts new file mode 100644 index 000000000..40283a567 --- /dev/null +++ b/src/components/Charts/GasFlowDiagram/index.ts @@ -0,0 +1,3 @@ +export { GasFlowDiagram } from './GasFlowDiagram'; +export type { GasFlowDiagramProps, GasType, GasExplanation } from './GasFlowDiagram.types'; +export { GAS_EXPLANATIONS } from './GasFlowDiagram.types'; diff --git a/src/components/DataDisplay/GasTooltip/GasTooltip.stories.tsx b/src/components/DataDisplay/GasTooltip/GasTooltip.stories.tsx new file mode 100644 index 000000000..449ebdc80 --- /dev/null +++ b/src/components/DataDisplay/GasTooltip/GasTooltip.stories.tsx @@ -0,0 +1,193 @@ +import type { Meta, StoryObj } from '@storybook/react-vite'; +import { GasTooltip } from './GasTooltip'; + +const meta: Meta = { + title: 'Components/DataDisplay/GasTooltip', + component: GasTooltip, + tags: ['autodocs'], + decorators: [ + Story => ( +
+ +
+ ), + ], + parameters: { + layout: 'centered', + }, +}; + +export default meta; +type Story = StoryObj; + +/** + * Intrinsic gas tooltip + */ +export const Intrinsic: Story = { + args: { + type: 'intrinsic', + }, + render: args => ( +
+ Intrinsic Gas: 21,000 +
+ ), +}; + +/** + * EVM execution gas tooltip + */ +export const EVM: Story = { + args: { + type: 'evm', + }, + render: args => ( +
+ EVM Execution: 761,325 +
+ ), +}; + +/** + * Gas refund tooltip + */ +export const Refund: Story = { + args: { + type: 'refund', + }, + render: args => ( +
+ Refund: -162,000 +
+ ), +}; + +/** + * Receipt gas tooltip + */ +export const Receipt: Story = { + args: { + type: 'receipt', + }, + render: args => ( +
+ Receipt Gas: 620,933 +
+ ), +}; + +/** + * Self gas tooltip (for frame detail) + */ +export const Self: Story = { + args: { + type: 'self', + }, + render: args => ( +
+ Self Gas: 95,234 +
+ ), +}; + +/** + * Cumulative gas tooltip (for frame detail) + */ +export const Cumulative: Story = { + args: { + type: 'cumulative', + }, + render: args => ( +
+ Cumulative Gas: 180,000 +
+ ), +}; + +/** + * Small size (default) + */ +export const SmallSize: Story = { + args: { + type: 'intrinsic', + size: 'sm', + }, + render: args => ( +
+ Small icon +
+ ), +}; + +/** + * Medium size + */ +export const MediumSize: Story = { + args: { + type: 'intrinsic', + size: 'md', + }, + render: args => ( +
+ Medium icon +
+ ), +}; + +/** + * Large size + */ +export const LargeSize: Story = { + args: { + type: 'intrinsic', + size: 'lg', + }, + render: args => ( +
+ Large icon +
+ ), +}; + +/** + * Custom content + */ +export const CustomContent: Story = { + args: { + type: 'intrinsic', + customContent: ( +
+
Custom Explanation
+
This is a custom tooltip content that overrides the default.
+
Learn more →
+
+ ), + }, + render: args => ( +
+ Custom tooltip +
+ ), +}; + +/** + * Multiple tooltips in a row + */ +export const MultipleTooltips: Story = { + render: () => ( +
+ + Intrinsic + + + EVM + + + Refund + + + Receipt + +
+ ), +}; diff --git a/src/components/DataDisplay/GasTooltip/GasTooltip.tsx b/src/components/DataDisplay/GasTooltip/GasTooltip.tsx new file mode 100644 index 000000000..241e7dae1 --- /dev/null +++ b/src/components/DataDisplay/GasTooltip/GasTooltip.tsx @@ -0,0 +1,89 @@ +import { type JSX, useState, useCallback, useRef, useEffect } from 'react'; +import { createPortal } from 'react-dom'; +import { QuestionMarkCircleIcon } from '@heroicons/react/24/solid'; +import clsx from 'clsx'; +import type { GasTooltipProps } from './GasTooltip.types'; +import { getGasExplanations } from './GasTooltip.types'; + +const SIZE_CLASSES = { + sm: 'size-3', + md: 'size-4', + lg: 'size-5', +}; + +/** + * GasTooltip - Informational tooltip explaining gas concepts + * + * Displays an info icon that shows a tooltip with an explanation + * of the specified gas type when hovered or focused. + * + * @example + * ```tsx + * // Basic usage + * Intrinsic Gas: 21,000 + * + * // Custom content + * Custom explanation
} /> + * ``` + */ +export function GasTooltip({ type, context, customContent, size = 'sm', className }: GasTooltipProps): JSX.Element { + const [isVisible, setIsVisible] = useState(false); + const [position, setPosition] = useState({ top: 0, left: 0 }); + const buttonRef = useRef(null); + const explanations = getGasExplanations(context); + const explanation = explanations[type]; + + const handleMouseEnter = useCallback(() => setIsVisible(true), []); + const handleMouseLeave = useCallback(() => setIsVisible(false), []); + const handleFocus = useCallback(() => setIsVisible(true), []); + const handleBlur = useCallback(() => setIsVisible(false), []); + + // Calculate position when tooltip becomes visible + useEffect(() => { + if (isVisible && buttonRef.current) { + const rect = buttonRef.current.getBoundingClientRect(); + setPosition({ + top: rect.top - 8, // 8px gap above the button + left: rect.left + rect.width / 2, + }); + } + }, [isVisible]); + + const tooltipContent = isVisible && ( +