import { BinaryReader, BinaryWriter } from "../../../binary";
/** ContractOperation denotes which operation consumed gas. */
export declare enum ContractOperation {
    /** CONTRACT_OPERATION_UNSPECIFIED - Invalid or unknown operation */
    CONTRACT_OPERATION_UNSPECIFIED = 0,
    /** CONTRACT_OPERATION_INSTANTIATION - Instantiate operation */
    CONTRACT_OPERATION_INSTANTIATION = 1,
    /** CONTRACT_OPERATION_EXECUTION - Execute operation */
    CONTRACT_OPERATION_EXECUTION = 2,
    /** CONTRACT_OPERATION_QUERY - Query */
    CONTRACT_OPERATION_QUERY = 3,
    /** CONTRACT_OPERATION_MIGRATE - Migrate operation */
    CONTRACT_OPERATION_MIGRATE = 4,
    /** CONTRACT_OPERATION_IBC - IBC operations */
    CONTRACT_OPERATION_IBC = 5,
    /** CONTRACT_OPERATION_SUDO - Sudo operation */
    CONTRACT_OPERATION_SUDO = 6,
    /** CONTRACT_OPERATION_REPLY - Reply callback operation */
    CONTRACT_OPERATION_REPLY = 7,
    UNRECOGNIZED = -1
}
export declare const ContractOperationAmino: typeof ContractOperation;
export declare function contractOperationFromJSON(object: any): ContractOperation;
export declare function contractOperationToJSON(object: ContractOperation): string;
/**
 * TxInfo keeps a transaction gas tracking data.
 * Object is being created at the module EndBlocker.
 */
export interface TxInfo {
    /** id defines the unique transaction ID. */
    id: bigint;
    /** height defines the block height of the transaction. */
    height: bigint;
    /**
     * total_gas defines total gas consumption by the transaction.
     * It is the sum of gas consumed by all contract operations (VM + SDK gas).
     */
    totalGas: bigint;
}
export interface TxInfoProtoMsg {
    typeUrl: "/archway.tracking.v1.TxInfo";
    value: Uint8Array;
}
/**
 * TxInfo keeps a transaction gas tracking data.
 * Object is being created at the module EndBlocker.
 */
export interface TxInfoAmino {
    /** id defines the unique transaction ID. */
    id?: string;
    /** height defines the block height of the transaction. */
    height?: string;
    /**
     * total_gas defines total gas consumption by the transaction.
     * It is the sum of gas consumed by all contract operations (VM + SDK gas).
     */
    total_gas?: string;
}
export interface TxInfoAminoMsg {
    type: "/archway.tracking.v1.TxInfo";
    value: TxInfoAmino;
}
/**
 * ContractOperationInfo keeps a single contract operation gas consumption data.
 * Object is being created by the IngestGasRecord call from the wasmd.
 */
export interface ContractOperationInfo {
    /** id defines the unique operation ID. */
    id: bigint;
    /** tx_id defines a transaction ID operation relates to (TxInfo.id). */
    txId: bigint;
    /** contract_address defines the contract address operation relates to. */
    contractAddress: string;
    /** operation_type defines the gas consumption type. */
    operationType: ContractOperation;
    /**
     * vm_gas is the gas consumption reported by the WASM VM.
     * Value is adjusted by this module (CalculateUpdatedGas func).
     */
    vmGas: bigint;
    /**
     * sdk_gas is the gas consumption reported by the SDK gas meter and the WASM
     * GasRegister (cost of Execute/Query/etc). Value is adjusted by this module
     * (CalculateUpdatedGas func).
     */
    sdkGas: bigint;
}
export interface ContractOperationInfoProtoMsg {
    typeUrl: "/archway.tracking.v1.ContractOperationInfo";
    value: Uint8Array;
}
/**
 * ContractOperationInfo keeps a single contract operation gas consumption data.
 * Object is being created by the IngestGasRecord call from the wasmd.
 */
export interface ContractOperationInfoAmino {
    /** id defines the unique operation ID. */
    id?: string;
    /** tx_id defines a transaction ID operation relates to (TxInfo.id). */
    tx_id?: string;
    /** contract_address defines the contract address operation relates to. */
    contract_address?: string;
    /** operation_type defines the gas consumption type. */
    operation_type?: ContractOperation;
    /**
     * vm_gas is the gas consumption reported by the WASM VM.
     * Value is adjusted by this module (CalculateUpdatedGas func).
     */
    vm_gas?: string;
    /**
     * sdk_gas is the gas consumption reported by the SDK gas meter and the WASM
     * GasRegister (cost of Execute/Query/etc). Value is adjusted by this module
     * (CalculateUpdatedGas func).
     */
    sdk_gas?: string;
}
export interface ContractOperationInfoAminoMsg {
    type: "/archway.tracking.v1.ContractOperationInfo";
    value: ContractOperationInfoAmino;
}
/** BlockTracking is the tracking information for a block. */
export interface BlockTracking {
    /** txs defines the list of transactions tracked in the block. */
    txs: TxTracking[];
}
export interface BlockTrackingProtoMsg {
    typeUrl: "/archway.tracking.v1.BlockTracking";
    value: Uint8Array;
}
/** BlockTracking is the tracking information for a block. */
export interface BlockTrackingAmino {
    /** txs defines the list of transactions tracked in the block. */
    txs?: TxTrackingAmino[];
}
export interface BlockTrackingAminoMsg {
    type: "/archway.tracking.v1.BlockTracking";
    value: BlockTrackingAmino;
}
/** TxTracking is the tracking information for a single transaction. */
export interface TxTracking {
    /** info defines the transaction details. */
    info: TxInfo;
    /**
     * contract_operations defines the list of contract operations consumed by the
     * transaction.
     */
    contractOperations: ContractOperationInfo[];
}
export interface TxTrackingProtoMsg {
    typeUrl: "/archway.tracking.v1.TxTracking";
    value: Uint8Array;
}
/** TxTracking is the tracking information for a single transaction. */
export interface TxTrackingAmino {
    /** info defines the transaction details. */
    info?: TxInfoAmino;
    /**
     * contract_operations defines the list of contract operations consumed by the
     * transaction.
     */
    contract_operations?: ContractOperationInfoAmino[];
}
export interface TxTrackingAminoMsg {
    type: "/archway.tracking.v1.TxTracking";
    value: TxTrackingAmino;
}
export declare const TxInfo: {
    typeUrl: string;
    encode(message: TxInfo, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): TxInfo;
    fromJSON(object: any): TxInfo;
    toJSON(message: TxInfo): unknown;
    fromPartial(object: Partial<TxInfo>): TxInfo;
    fromAmino(object: TxInfoAmino): TxInfo;
    toAmino(message: TxInfo): TxInfoAmino;
    fromAminoMsg(object: TxInfoAminoMsg): TxInfo;
    fromProtoMsg(message: TxInfoProtoMsg): TxInfo;
    toProto(message: TxInfo): Uint8Array;
    toProtoMsg(message: TxInfo): TxInfoProtoMsg;
};
export declare const ContractOperationInfo: {
    typeUrl: string;
    encode(message: ContractOperationInfo, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ContractOperationInfo;
    fromJSON(object: any): ContractOperationInfo;
    toJSON(message: ContractOperationInfo): unknown;
    fromPartial(object: Partial<ContractOperationInfo>): ContractOperationInfo;
    fromAmino(object: ContractOperationInfoAmino): ContractOperationInfo;
    toAmino(message: ContractOperationInfo): ContractOperationInfoAmino;
    fromAminoMsg(object: ContractOperationInfoAminoMsg): ContractOperationInfo;
    fromProtoMsg(message: ContractOperationInfoProtoMsg): ContractOperationInfo;
    toProto(message: ContractOperationInfo): Uint8Array;
    toProtoMsg(message: ContractOperationInfo): ContractOperationInfoProtoMsg;
};
export declare const BlockTracking: {
    typeUrl: string;
    encode(message: BlockTracking, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): BlockTracking;
    fromJSON(object: any): BlockTracking;
    toJSON(message: BlockTracking): unknown;
    fromPartial(object: Partial<BlockTracking>): BlockTracking;
    fromAmino(object: BlockTrackingAmino): BlockTracking;
    toAmino(message: BlockTracking): BlockTrackingAmino;
    fromAminoMsg(object: BlockTrackingAminoMsg): BlockTracking;
    fromProtoMsg(message: BlockTrackingProtoMsg): BlockTracking;
    toProto(message: BlockTracking): Uint8Array;
    toProtoMsg(message: BlockTracking): BlockTrackingProtoMsg;
};
export declare const TxTracking: {
    typeUrl: string;
    encode(message: TxTracking, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): TxTracking;
    fromJSON(object: any): TxTracking;
    toJSON(message: TxTracking): unknown;
    fromPartial(object: Partial<TxTracking>): TxTracking;
    fromAmino(object: TxTrackingAmino): TxTracking;
    toAmino(message: TxTracking): TxTrackingAmino;
    fromAminoMsg(object: TxTrackingAminoMsg): TxTracking;
    fromProtoMsg(message: TxTrackingProtoMsg): TxTracking;
    toProto(message: TxTracking): Uint8Array;
    toProtoMsg(message: TxTracking): TxTrackingProtoMsg;
};
