import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import type { Message } from "@bufbuild/protobuf";
/**
 * Describes the file protos/perfetto/trace/gpu/vulkan_memory_event.proto.
 */
export declare const file_protos_perfetto_trace_gpu_vulkan_memory_event: GenFile;
/**
 * All the information that cannot be sent within a VulkanMemoryEvent message,
 * are sent as annotations to the main memory event. One example is the
 * properties of the object that consumes the allocated memory, for example, a
 * buffer or an image.
 * key_iid and string_iid are both interned strings. Original string value is
 * stored in vulkan_memory_keys from
 * protos/perfetto/trace/interned_data/interned_data.proto.
 *
 * @generated from message perfetto.protos.VulkanMemoryEventAnnotation
 */
export type VulkanMemoryEventAnnotation = Message<"perfetto.protos.VulkanMemoryEventAnnotation"> & {
    /**
     * @generated from field: optional uint64 key_iid = 1;
     */
    keyIid: bigint;
    /**
     * @generated from oneof perfetto.protos.VulkanMemoryEventAnnotation.value
     */
    value: {
        /**
         * @generated from field: int64 int_value = 2;
         */
        value: bigint;
        case: "intValue";
    } | {
        /**
         * @generated from field: double double_value = 3;
         */
        value: number;
        case: "doubleValue";
    } | {
        /**
         * @generated from field: uint64 string_iid = 4;
         */
        value: bigint;
        case: "stringIid";
    } | {
        case: undefined;
        value?: undefined;
    };
};
/**
 * Describes the message perfetto.protos.VulkanMemoryEventAnnotation.
 * Use `create(VulkanMemoryEventAnnotationSchema)` to create a new message.
 */
export declare const VulkanMemoryEventAnnotationSchema: GenMessage<VulkanMemoryEventAnnotation>;
/**
 * Each VulkanMemoryEvent encompasses information regarding one single function
 * call that results in reserving, binding or freeing host or GPU memory. There
 * is a special message type, ANNOTATIONS, which is used to communicate
 * information that are not directly related to a memory event, nonetheless are
 * essential to understand the memory usage. An example is the size and memory
 * types of the memory heaps.
 *
 * Next reserved id: 10 (up to 15).
 * Next id: 21.
 *
 * @generated from message perfetto.protos.VulkanMemoryEvent
 */
export type VulkanMemoryEvent = Message<"perfetto.protos.VulkanMemoryEvent"> & {
    /**
     * @generated from field: optional perfetto.protos.VulkanMemoryEvent.Source source = 1;
     */
    source: VulkanMemoryEvent_Source;
    /**
     * @generated from field: optional perfetto.protos.VulkanMemoryEvent.Operation operation = 2;
     */
    operation: VulkanMemoryEvent_Operation;
    /**
     * @generated from field: optional int64 timestamp = 3;
     */
    timestamp: bigint;
    /**
     * @generated from field: optional uint32 pid = 4;
     */
    pid: number;
    /**
     * @generated from field: optional fixed64 memory_address = 5;
     */
    memoryAddress: bigint;
    /**
     * @generated from field: optional uint64 memory_size = 6;
     */
    memorySize: bigint;
    /**
     * Interned string. Original string value is stored in function_names from
     * protos/perfetto/trace/interned_data/interned_data.proto.
     *
     * @generated from field: optional uint64 caller_iid = 7;
     */
    callerIid: bigint;
    /**
     * @generated from field: optional perfetto.protos.VulkanMemoryEvent.AllocationScope allocation_scope = 8;
     */
    allocationScope: VulkanMemoryEvent_AllocationScope;
    /**
     * Extra related information, e.g., create configs, etc.
     *
     * @generated from field: repeated perfetto.protos.VulkanMemoryEventAnnotation annotations = 9;
     */
    annotations: VulkanMemoryEventAnnotation[];
    /**
     * Field IDs used for device memory (low sampling rate)
     *
     * @generated from field: optional fixed64 device = 16;
     */
    device: bigint;
    /**
     * @generated from field: optional fixed64 device_memory = 17;
     */
    deviceMemory: bigint;
    /**
     * @generated from field: optional uint32 memory_type = 18;
     */
    memoryType: number;
    /**
     * @generated from field: optional uint32 heap = 19;
     */
    heap: number;
    /**
     * @generated from field: optional fixed64 object_handle = 20;
     */
    objectHandle: bigint;
};
/**
 * Describes the message perfetto.protos.VulkanMemoryEvent.
 * Use `create(VulkanMemoryEventSchema)` to create a new message.
 */
export declare const VulkanMemoryEventSchema: GenMessage<VulkanMemoryEvent>;
/**
 * @generated from enum perfetto.protos.VulkanMemoryEvent.Source
 */
export declare enum VulkanMemoryEvent_Source {
    /**
     * @generated from enum value: SOURCE_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * @generated from enum value: SOURCE_DRIVER = 1;
     */
    DRIVER = 1,
    /**
     * @generated from enum value: SOURCE_DEVICE = 2;
     */
    DEVICE = 2,
    /**
     * @generated from enum value: SOURCE_DEVICE_MEMORY = 3;
     */
    DEVICE_MEMORY = 3,
    /**
     * @generated from enum value: SOURCE_BUFFER = 4;
     */
    BUFFER = 4,
    /**
     * @generated from enum value: SOURCE_IMAGE = 5;
     */
    IMAGE = 5
}
/**
 * Describes the enum perfetto.protos.VulkanMemoryEvent.Source.
 */
export declare const VulkanMemoryEvent_SourceSchema: GenEnum<VulkanMemoryEvent_Source>;
/**
 * @generated from enum perfetto.protos.VulkanMemoryEvent.Operation
 */
export declare enum VulkanMemoryEvent_Operation {
    /**
     * @generated from enum value: OP_UNSPECIFIED = 0;
     */
    OP_UNSPECIFIED = 0,
    /**
     * alloc, create
     *
     * @generated from enum value: OP_CREATE = 1;
     */
    OP_CREATE = 1,
    /**
     * free, destroy(non-bound)
     *
     * @generated from enum value: OP_DESTROY = 2;
     */
    OP_DESTROY = 2,
    /**
     * bind buffer and image
     *
     * @generated from enum value: OP_BIND = 3;
     */
    OP_BIND = 3,
    /**
     * destroy (bound)
     *
     * @generated from enum value: OP_DESTROY_BOUND = 4;
     */
    OP_DESTROY_BOUND = 4,
    /**
     * only annotations
     *
     * @generated from enum value: OP_ANNOTATIONS = 5;
     */
    OP_ANNOTATIONS = 5
}
/**
 * Describes the enum perfetto.protos.VulkanMemoryEvent.Operation.
 */
export declare const VulkanMemoryEvent_OperationSchema: GenEnum<VulkanMemoryEvent_Operation>;
/**
 * @generated from enum perfetto.protos.VulkanMemoryEvent.AllocationScope
 */
export declare enum VulkanMemoryEvent_AllocationScope {
    /**
     * @generated from enum value: SCOPE_UNSPECIFIED = 0;
     */
    SCOPE_UNSPECIFIED = 0,
    /**
     * @generated from enum value: SCOPE_COMMAND = 1;
     */
    SCOPE_COMMAND = 1,
    /**
     * @generated from enum value: SCOPE_OBJECT = 2;
     */
    SCOPE_OBJECT = 2,
    /**
     * @generated from enum value: SCOPE_CACHE = 3;
     */
    SCOPE_CACHE = 3,
    /**
     * @generated from enum value: SCOPE_DEVICE = 4;
     */
    SCOPE_DEVICE = 4,
    /**
     * @generated from enum value: SCOPE_INSTANCE = 5;
     */
    SCOPE_INSTANCE = 5
}
/**
 * Describes the enum perfetto.protos.VulkanMemoryEvent.AllocationScope.
 */
export declare const VulkanMemoryEvent_AllocationScopeSchema: GenEnum<VulkanMemoryEvent_AllocationScope>;
//# sourceMappingURL=vulkan_memory_event_pb.d.ts.map