import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import type { Operation, OperationParams } from "./ydb_operation_pb.js";
import type { Message } from "@bufbuild/protobuf";
/**
 * Describes the file protos/ydb_rate_limiter.proto.
 */
export declare const file_protos_ydb_rate_limiter: GenFile;
/**
 * Settings for hierarchical deficit round robin (HDRR) algorithm.
 *
 * @generated from message Ydb.RateLimiter.HierarchicalDrrSettings
 */
export type HierarchicalDrrSettings = Message<"Ydb.RateLimiter.HierarchicalDrrSettings"> & {
    /**
     * Resource consumption speed limit.
     * Value is required for root resource.
     * 0 is equivalent to not set.
     * Must be nonnegative.
     *
     * @generated from field: double max_units_per_second = 1;
     */
    maxUnitsPerSecond: number;
    /**
     * Maximum burst size of resource consumption across the whole cluster
     * divided by max_units_per_second.
     * Default value is 1.
     * This means that maximum burst size might be equal to max_units_per_second.
     * 0 is equivalent to not set.
     * Must be nonnegative.
     *
     * @generated from field: double max_burst_size_coefficient = 2;
     */
    maxBurstSizeCoefficient: number;
    /**
     * Prefetch in local bucket up to prefetch_coefficient*max_units_per_second units (full size).
     * Default value is inherited from parent or 0.2 for root.
     * Disables prefetching if any negative value is set
     * (It is useful to avoid bursts in case of large number of local buckets).
     *
     * @generated from field: double prefetch_coefficient = 3;
     */
    prefetchCoefficient: number;
    /**
     * Prefetching starts if there is less than prefetch_watermark fraction of full local bucket left.
     * Default value is inherited from parent or 0.75 for root.
     * Must be nonnegative and less than or equal to 1.
     *
     * @generated from field: double prefetch_watermark = 4;
     */
    prefetchWatermark: number;
};
/**
 * Describes the message Ydb.RateLimiter.HierarchicalDrrSettings.
 * Use `create(HierarchicalDrrSettingsSchema)` to create a new message.
 */
export declare const HierarchicalDrrSettingsSchema: GenMessage<HierarchicalDrrSettings>;
/**
 * Rate limiter resource description.
 *
 * @generated from message Ydb.RateLimiter.Resource
 */
export type Resource = Message<"Ydb.RateLimiter.Resource"> & {
    /**
     * Resource path. Elements are separated by slash.
     * The first symbol is not slash.
     * The first element is root resource name.
     * Resource path is the path of resource inside coordination node.
     *
     * @generated from field: string resource_path = 1;
     */
    resourcePath: string;
    /**
     * @generated from oneof Ydb.RateLimiter.Resource.type
     */
    type: {
        /**
         * Settings for Hierarchical DRR algorithm.
         *
         * @generated from field: Ydb.RateLimiter.HierarchicalDrrSettings hierarchical_drr = 2;
         */
        value: HierarchicalDrrSettings;
        case: "hierarchicalDrr";
    } | {
        case: undefined;
        value?: undefined;
    };
};
/**
 * Describes the message Ydb.RateLimiter.Resource.
 * Use `create(ResourceSchema)` to create a new message.
 */
export declare const ResourceSchema: GenMessage<Resource>;
/**
 * @generated from message Ydb.RateLimiter.CreateResourceRequest
 */
export type CreateResourceRequest = Message<"Ydb.RateLimiter.CreateResourceRequest"> & {
    /**
     * @generated from field: Ydb.Operations.OperationParams operation_params = 1;
     */
    operationParams?: OperationParams;
    /**
     * Path of a coordination node.
     *
     * @generated from field: string coordination_node_path = 2;
     */
    coordinationNodePath: string;
    /**
     * Resource properties.
     *
     * @generated from field: Ydb.RateLimiter.Resource resource = 3;
     */
    resource?: Resource;
};
/**
 * Describes the message Ydb.RateLimiter.CreateResourceRequest.
 * Use `create(CreateResourceRequestSchema)` to create a new message.
 */
export declare const CreateResourceRequestSchema: GenMessage<CreateResourceRequest>;
/**
 * @generated from message Ydb.RateLimiter.CreateResourceResponse
 */
export type CreateResourceResponse = Message<"Ydb.RateLimiter.CreateResourceResponse"> & {
    /**
     * Holds CreateResourceResult in case of successful call.
     *
     * @generated from field: Ydb.Operations.Operation operation = 1;
     */
    operation?: Operation;
};
/**
 * Describes the message Ydb.RateLimiter.CreateResourceResponse.
 * Use `create(CreateResourceResponseSchema)` to create a new message.
 */
export declare const CreateResourceResponseSchema: GenMessage<CreateResourceResponse>;
/**
 * @generated from message Ydb.RateLimiter.CreateResourceResult
 */
export type CreateResourceResult = Message<"Ydb.RateLimiter.CreateResourceResult"> & {};
/**
 * Describes the message Ydb.RateLimiter.CreateResourceResult.
 * Use `create(CreateResourceResultSchema)` to create a new message.
 */
export declare const CreateResourceResultSchema: GenMessage<CreateResourceResult>;
/**
 * @generated from message Ydb.RateLimiter.AlterResourceRequest
 */
export type AlterResourceRequest = Message<"Ydb.RateLimiter.AlterResourceRequest"> & {
    /**
     * @generated from field: Ydb.Operations.OperationParams operation_params = 1;
     */
    operationParams?: OperationParams;
    /**
     * Path of a coordination node.
     *
     * @generated from field: string coordination_node_path = 2;
     */
    coordinationNodePath: string;
    /**
     * New resource properties.
     *
     * @generated from field: Ydb.RateLimiter.Resource resource = 3;
     */
    resource?: Resource;
};
/**
 * Describes the message Ydb.RateLimiter.AlterResourceRequest.
 * Use `create(AlterResourceRequestSchema)` to create a new message.
 */
export declare const AlterResourceRequestSchema: GenMessage<AlterResourceRequest>;
/**
 * @generated from message Ydb.RateLimiter.AlterResourceResponse
 */
export type AlterResourceResponse = Message<"Ydb.RateLimiter.AlterResourceResponse"> & {
    /**
     * Holds AlterResourceResult in case of successful call.
     *
     * @generated from field: Ydb.Operations.Operation operation = 1;
     */
    operation?: Operation;
};
/**
 * Describes the message Ydb.RateLimiter.AlterResourceResponse.
 * Use `create(AlterResourceResponseSchema)` to create a new message.
 */
export declare const AlterResourceResponseSchema: GenMessage<AlterResourceResponse>;
/**
 * @generated from message Ydb.RateLimiter.AlterResourceResult
 */
export type AlterResourceResult = Message<"Ydb.RateLimiter.AlterResourceResult"> & {};
/**
 * Describes the message Ydb.RateLimiter.AlterResourceResult.
 * Use `create(AlterResourceResultSchema)` to create a new message.
 */
export declare const AlterResourceResultSchema: GenMessage<AlterResourceResult>;
/**
 * @generated from message Ydb.RateLimiter.DropResourceRequest
 */
export type DropResourceRequest = Message<"Ydb.RateLimiter.DropResourceRequest"> & {
    /**
     * @generated from field: Ydb.Operations.OperationParams operation_params = 1;
     */
    operationParams?: OperationParams;
    /**
     * Path of a coordination node.
     *
     * @generated from field: string coordination_node_path = 2;
     */
    coordinationNodePath: string;
    /**
     * Path of resource inside a coordination node.
     *
     * @generated from field: string resource_path = 3;
     */
    resourcePath: string;
};
/**
 * Describes the message Ydb.RateLimiter.DropResourceRequest.
 * Use `create(DropResourceRequestSchema)` to create a new message.
 */
export declare const DropResourceRequestSchema: GenMessage<DropResourceRequest>;
/**
 * @generated from message Ydb.RateLimiter.DropResourceResponse
 */
export type DropResourceResponse = Message<"Ydb.RateLimiter.DropResourceResponse"> & {
    /**
     * Holds DropResourceResult in case of successful call.
     *
     * @generated from field: Ydb.Operations.Operation operation = 1;
     */
    operation?: Operation;
};
/**
 * Describes the message Ydb.RateLimiter.DropResourceResponse.
 * Use `create(DropResourceResponseSchema)` to create a new message.
 */
export declare const DropResourceResponseSchema: GenMessage<DropResourceResponse>;
/**
 * @generated from message Ydb.RateLimiter.DropResourceResult
 */
export type DropResourceResult = Message<"Ydb.RateLimiter.DropResourceResult"> & {};
/**
 * Describes the message Ydb.RateLimiter.DropResourceResult.
 * Use `create(DropResourceResultSchema)` to create a new message.
 */
export declare const DropResourceResultSchema: GenMessage<DropResourceResult>;
/**
 * @generated from message Ydb.RateLimiter.ListResourcesRequest
 */
export type ListResourcesRequest = Message<"Ydb.RateLimiter.ListResourcesRequest"> & {
    /**
     * @generated from field: Ydb.Operations.OperationParams operation_params = 1;
     */
    operationParams?: OperationParams;
    /**
     * Path of a coordination node.
     *
     * @generated from field: string coordination_node_path = 2;
     */
    coordinationNodePath: string;
    /**
     * Path of resource inside a coordination node.
     * May be empty.
     * In that case all root resources will be listed.
     *
     * @generated from field: string resource_path = 3;
     */
    resourcePath: string;
    /**
     * List resources recursively.
     *
     * @generated from field: bool recursive = 4;
     */
    recursive: boolean;
};
/**
 * Describes the message Ydb.RateLimiter.ListResourcesRequest.
 * Use `create(ListResourcesRequestSchema)` to create a new message.
 */
export declare const ListResourcesRequestSchema: GenMessage<ListResourcesRequest>;
/**
 * @generated from message Ydb.RateLimiter.ListResourcesResponse
 */
export type ListResourcesResponse = Message<"Ydb.RateLimiter.ListResourcesResponse"> & {
    /**
     * Holds ListResourcesResult in case of successful call.
     *
     * @generated from field: Ydb.Operations.Operation operation = 1;
     */
    operation?: Operation;
};
/**
 * Describes the message Ydb.RateLimiter.ListResourcesResponse.
 * Use `create(ListResourcesResponseSchema)` to create a new message.
 */
export declare const ListResourcesResponseSchema: GenMessage<ListResourcesResponse>;
/**
 * @generated from message Ydb.RateLimiter.ListResourcesResult
 */
export type ListResourcesResult = Message<"Ydb.RateLimiter.ListResourcesResult"> & {
    /**
     * @generated from field: repeated string resource_paths = 1;
     */
    resourcePaths: string[];
};
/**
 * Describes the message Ydb.RateLimiter.ListResourcesResult.
 * Use `create(ListResourcesResultSchema)` to create a new message.
 */
export declare const ListResourcesResultSchema: GenMessage<ListResourcesResult>;
/**
 * @generated from message Ydb.RateLimiter.DescribeResourceRequest
 */
export type DescribeResourceRequest = Message<"Ydb.RateLimiter.DescribeResourceRequest"> & {
    /**
     * @generated from field: Ydb.Operations.OperationParams operation_params = 1;
     */
    operationParams?: OperationParams;
    /**
     * Path of a coordination node.
     *
     * @generated from field: string coordination_node_path = 2;
     */
    coordinationNodePath: string;
    /**
     * Path of resource inside a coordination node.
     *
     * @generated from field: string resource_path = 3;
     */
    resourcePath: string;
};
/**
 * Describes the message Ydb.RateLimiter.DescribeResourceRequest.
 * Use `create(DescribeResourceRequestSchema)` to create a new message.
 */
export declare const DescribeResourceRequestSchema: GenMessage<DescribeResourceRequest>;
/**
 * @generated from message Ydb.RateLimiter.DescribeResourceResponse
 */
export type DescribeResourceResponse = Message<"Ydb.RateLimiter.DescribeResourceResponse"> & {
    /**
     * Holds DescribeResourceResult in case of successful call.
     *
     * @generated from field: Ydb.Operations.Operation operation = 1;
     */
    operation?: Operation;
};
/**
 * Describes the message Ydb.RateLimiter.DescribeResourceResponse.
 * Use `create(DescribeResourceResponseSchema)` to create a new message.
 */
export declare const DescribeResourceResponseSchema: GenMessage<DescribeResourceResponse>;
/**
 * @generated from message Ydb.RateLimiter.DescribeResourceResult
 */
export type DescribeResourceResult = Message<"Ydb.RateLimiter.DescribeResourceResult"> & {
    /**
     * @generated from field: Ydb.RateLimiter.Resource resource = 1;
     */
    resource?: Resource;
};
/**
 * Describes the message Ydb.RateLimiter.DescribeResourceResult.
 * Use `create(DescribeResourceResultSchema)` to create a new message.
 */
export declare const DescribeResourceResultSchema: GenMessage<DescribeResourceResult>;
/**
 * @generated from message Ydb.RateLimiter.AcquireResourceRequest
 */
export type AcquireResourceRequest = Message<"Ydb.RateLimiter.AcquireResourceRequest"> & {
    /**
     * @generated from field: Ydb.Operations.OperationParams operation_params = 1;
     */
    operationParams?: OperationParams;
    /**
     * Path of a coordination node.
     *
     * @generated from field: string coordination_node_path = 2;
     */
    coordinationNodePath: string;
    /**
     * Path of resource inside a coordination node.
     *
     * @generated from field: string resource_path = 3;
     */
    resourcePath: string;
    /**
     * @generated from oneof Ydb.RateLimiter.AcquireResourceRequest.units
     */
    units: {
        /**
         * Request resource's units for usage.
         *
         * @generated from field: uint64 required = 4;
         */
        value: bigint;
        case: "required";
    } | {
        /**
         * Actually used resource's units by client.
         *
         * @generated from field: uint64 used = 5;
         */
        value: bigint;
        case: "used";
    } | {
        case: undefined;
        value?: undefined;
    };
};
/**
 * Describes the message Ydb.RateLimiter.AcquireResourceRequest.
 * Use `create(AcquireResourceRequestSchema)` to create a new message.
 */
export declare const AcquireResourceRequestSchema: GenMessage<AcquireResourceRequest>;
/**
 * @generated from message Ydb.RateLimiter.AcquireResourceResponse
 */
export type AcquireResourceResponse = Message<"Ydb.RateLimiter.AcquireResourceResponse"> & {
    /**
     * Holds AcquireResourceResult in case of successful call.
     *
     * @generated from field: Ydb.Operations.Operation operation = 1;
     */
    operation?: Operation;
};
/**
 * Describes the message Ydb.RateLimiter.AcquireResourceResponse.
 * Use `create(AcquireResourceResponseSchema)` to create a new message.
 */
export declare const AcquireResourceResponseSchema: GenMessage<AcquireResourceResponse>;
/**
 * @generated from message Ydb.RateLimiter.AcquireResourceResult
 */
export type AcquireResourceResult = Message<"Ydb.RateLimiter.AcquireResourceResult"> & {};
/**
 * Describes the message Ydb.RateLimiter.AcquireResourceResult.
 * Use `create(AcquireResourceResultSchema)` to create a new message.
 */
export declare const AcquireResourceResultSchema: GenMessage<AcquireResourceResult>;
//# sourceMappingURL=ydb_rate_limiter_pb.d.ts.map