import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import type { VirtualTimestamp } from "./ydb_common_pb.js";
import type { Operation, OperationParams } from "./ydb_operation_pb.js";
import type { Message } from "@bufbuild/protobuf";
/**
 * Describes the file protos/ydb_scheme.proto.
 */
export declare const file_protos_ydb_scheme: GenFile;
/**
 * Create directory.
 * All intermediate directories must be created
 *
 * @generated from message Ydb.Scheme.MakeDirectoryRequest
 */
export type MakeDirectoryRequest = Message<"Ydb.Scheme.MakeDirectoryRequest"> & {
    /**
     * @generated from field: Ydb.Operations.OperationParams operation_params = 1;
     */
    operationParams?: OperationParams;
    /**
     * @generated from field: string path = 2;
     */
    path: string;
};
/**
 * Describes the message Ydb.Scheme.MakeDirectoryRequest.
 * Use `create(MakeDirectoryRequestSchema)` to create a new message.
 */
export declare const MakeDirectoryRequestSchema: GenMessage<MakeDirectoryRequest>;
/**
 * @generated from message Ydb.Scheme.MakeDirectoryResponse
 */
export type MakeDirectoryResponse = Message<"Ydb.Scheme.MakeDirectoryResponse"> & {
    /**
     * @generated from field: Ydb.Operations.Operation operation = 1;
     */
    operation?: Operation;
};
/**
 * Describes the message Ydb.Scheme.MakeDirectoryResponse.
 * Use `create(MakeDirectoryResponseSchema)` to create a new message.
 */
export declare const MakeDirectoryResponseSchema: GenMessage<MakeDirectoryResponse>;
/**
 * Remove directory
 *
 * @generated from message Ydb.Scheme.RemoveDirectoryRequest
 */
export type RemoveDirectoryRequest = Message<"Ydb.Scheme.RemoveDirectoryRequest"> & {
    /**
     * @generated from field: Ydb.Operations.OperationParams operation_params = 1;
     */
    operationParams?: OperationParams;
    /**
     * @generated from field: string path = 2;
     */
    path: string;
};
/**
 * Describes the message Ydb.Scheme.RemoveDirectoryRequest.
 * Use `create(RemoveDirectoryRequestSchema)` to create a new message.
 */
export declare const RemoveDirectoryRequestSchema: GenMessage<RemoveDirectoryRequest>;
/**
 * @generated from message Ydb.Scheme.RemoveDirectoryResponse
 */
export type RemoveDirectoryResponse = Message<"Ydb.Scheme.RemoveDirectoryResponse"> & {
    /**
     * @generated from field: Ydb.Operations.Operation operation = 1;
     */
    operation?: Operation;
};
/**
 * Describes the message Ydb.Scheme.RemoveDirectoryResponse.
 * Use `create(RemoveDirectoryResponseSchema)` to create a new message.
 */
export declare const RemoveDirectoryResponseSchema: GenMessage<RemoveDirectoryResponse>;
/**
 * List directory
 *
 * @generated from message Ydb.Scheme.ListDirectoryRequest
 */
export type ListDirectoryRequest = Message<"Ydb.Scheme.ListDirectoryRequest"> & {
    /**
     * @generated from field: Ydb.Operations.OperationParams operation_params = 1;
     */
    operationParams?: OperationParams;
    /**
     * @generated from field: string path = 2;
     */
    path: string;
};
/**
 * Describes the message Ydb.Scheme.ListDirectoryRequest.
 * Use `create(ListDirectoryRequestSchema)` to create a new message.
 */
export declare const ListDirectoryRequestSchema: GenMessage<ListDirectoryRequest>;
/**
 * @generated from message Ydb.Scheme.ListDirectoryResponse
 */
export type ListDirectoryResponse = Message<"Ydb.Scheme.ListDirectoryResponse"> & {
    /**
     * Holds ListDirectoryResult in case of successful call
     *
     * @generated from field: Ydb.Operations.Operation operation = 1;
     */
    operation?: Operation;
};
/**
 * Describes the message Ydb.Scheme.ListDirectoryResponse.
 * Use `create(ListDirectoryResponseSchema)` to create a new message.
 */
export declare const ListDirectoryResponseSchema: GenMessage<ListDirectoryResponse>;
/**
 * @generated from message Ydb.Scheme.Permissions
 */
export type Permissions = Message<"Ydb.Scheme.Permissions"> & {
    /**
     * SID (Security ID) of user or group
     *
     * @generated from field: string subject = 1;
     */
    subject: string;
    /**
     * @generated from field: repeated string permission_names = 2;
     */
    permissionNames: string[];
};
/**
 * Describes the message Ydb.Scheme.Permissions.
 * Use `create(PermissionsSchema)` to create a new message.
 */
export declare const PermissionsSchema: GenMessage<Permissions>;
/**
 * @generated from message Ydb.Scheme.Entry
 */
export type Entry = Message<"Ydb.Scheme.Entry"> & {
    /**
     * Name of scheme entry (dir2 of /dir1/dir2)
     *
     * @generated from field: string name = 1;
     */
    name: string;
    /**
     * SID (Security ID) of user or group
     *
     * @generated from field: string owner = 2;
     */
    owner: string;
    /**
     * @generated from field: Ydb.Scheme.Entry.Type type = 5;
     */
    type: Entry_Type;
    /**
     * @generated from field: repeated Ydb.Scheme.Permissions effective_permissions = 6;
     */
    effectivePermissions: Permissions[];
    /**
     * @generated from field: repeated Ydb.Scheme.Permissions permissions = 7;
     */
    permissions: Permissions[];
    /**
     * Size of entry in bytes. Currently filled for:
     * - TABLE;
     * - DATABASE.
     * Empty (zero) in other cases.
     *
     * @generated from field: uint64 size_bytes = 8;
     */
    sizeBytes: bigint;
    /**
     * Virtual timestamp when the object was created
     *
     * @generated from field: Ydb.VirtualTimestamp created_at = 9;
     */
    createdAt?: VirtualTimestamp;
};
/**
 * Describes the message Ydb.Scheme.Entry.
 * Use `create(EntrySchema)` to create a new message.
 */
export declare const EntrySchema: GenMessage<Entry>;
/**
 * @generated from enum Ydb.Scheme.Entry.Type
 */
export declare enum Entry_Type {
    /**
     * @generated from enum value: TYPE_UNSPECIFIED = 0;
     */
    TYPE_UNSPECIFIED = 0,
    /**
     * @generated from enum value: DIRECTORY = 1;
     */
    DIRECTORY = 1,
    /**
     * @generated from enum value: TABLE = 2;
     */
    TABLE = 2,
    /**
     * @generated from enum value: PERS_QUEUE_GROUP = 3;
     */
    PERS_QUEUE_GROUP = 3,
    /**
     * @generated from enum value: DATABASE = 4;
     */
    DATABASE = 4,
    /**
     * @generated from enum value: RTMR_VOLUME = 5;
     */
    RTMR_VOLUME = 5,
    /**
     * @generated from enum value: BLOCK_STORE_VOLUME = 6;
     */
    BLOCK_STORE_VOLUME = 6,
    /**
     * @generated from enum value: COORDINATION_NODE = 7;
     */
    COORDINATION_NODE = 7,
    /**
     * @generated from enum value: COLUMN_STORE = 12;
     */
    COLUMN_STORE = 12,
    /**
     * @generated from enum value: COLUMN_TABLE = 13;
     */
    COLUMN_TABLE = 13,
    /**
     * @generated from enum value: SEQUENCE = 15;
     */
    SEQUENCE = 15,
    /**
     * @generated from enum value: REPLICATION = 16;
     */
    REPLICATION = 16,
    /**
     * @generated from enum value: TOPIC = 17;
     */
    TOPIC = 17,
    /**
     * @generated from enum value: EXTERNAL_TABLE = 18;
     */
    EXTERNAL_TABLE = 18,
    /**
     * @generated from enum value: EXTERNAL_DATA_SOURCE = 19;
     */
    EXTERNAL_DATA_SOURCE = 19,
    /**
     * @generated from enum value: VIEW = 20;
     */
    VIEW = 20
}
/**
 * Describes the enum Ydb.Scheme.Entry.Type.
 */
export declare const Entry_TypeSchema: GenEnum<Entry_Type>;
/**
 * @generated from message Ydb.Scheme.ListDirectoryResult
 */
export type ListDirectoryResult = Message<"Ydb.Scheme.ListDirectoryResult"> & {
    /**
     * @generated from field: Ydb.Scheme.Entry self = 1;
     */
    self?: Entry;
    /**
     * @generated from field: repeated Ydb.Scheme.Entry children = 2;
     */
    children: Entry[];
};
/**
 * Describes the message Ydb.Scheme.ListDirectoryResult.
 * Use `create(ListDirectoryResultSchema)` to create a new message.
 */
export declare const ListDirectoryResultSchema: GenMessage<ListDirectoryResult>;
/**
 * Returns information about object with given path
 *
 * @generated from message Ydb.Scheme.DescribePathRequest
 */
export type DescribePathRequest = Message<"Ydb.Scheme.DescribePathRequest"> & {
    /**
     * @generated from field: Ydb.Operations.OperationParams operation_params = 1;
     */
    operationParams?: OperationParams;
    /**
     * @generated from field: string path = 2;
     */
    path: string;
};
/**
 * Describes the message Ydb.Scheme.DescribePathRequest.
 * Use `create(DescribePathRequestSchema)` to create a new message.
 */
export declare const DescribePathRequestSchema: GenMessage<DescribePathRequest>;
/**
 * @generated from message Ydb.Scheme.DescribePathResponse
 */
export type DescribePathResponse = Message<"Ydb.Scheme.DescribePathResponse"> & {
    /**
     * Holds DescribePathResult in case of DescribePathResult
     *
     * @generated from field: Ydb.Operations.Operation operation = 1;
     */
    operation?: Operation;
};
/**
 * Describes the message Ydb.Scheme.DescribePathResponse.
 * Use `create(DescribePathResponseSchema)` to create a new message.
 */
export declare const DescribePathResponseSchema: GenMessage<DescribePathResponse>;
/**
 * @generated from message Ydb.Scheme.DescribePathResult
 */
export type DescribePathResult = Message<"Ydb.Scheme.DescribePathResult"> & {
    /**
     * @generated from field: Ydb.Scheme.Entry self = 1;
     */
    self?: Entry;
};
/**
 * Describes the message Ydb.Scheme.DescribePathResult.
 * Use `create(DescribePathResultSchema)` to create a new message.
 */
export declare const DescribePathResultSchema: GenMessage<DescribePathResult>;
/**
 * @generated from message Ydb.Scheme.PermissionsAction
 */
export type PermissionsAction = Message<"Ydb.Scheme.PermissionsAction"> & {
    /**
     * @generated from oneof Ydb.Scheme.PermissionsAction.action
     */
    action: {
        /**
         * Grant permissions
         *
         * @generated from field: Ydb.Scheme.Permissions grant = 1;
         */
        value: Permissions;
        case: "grant";
    } | {
        /**
         * Revoke permissions
         *
         * @generated from field: Ydb.Scheme.Permissions revoke = 2;
         */
        value: Permissions;
        case: "revoke";
    } | {
        /**
         * Rewrite permissions for given subject (last set win in case of multiple set for one subject)
         *
         * @generated from field: Ydb.Scheme.Permissions set = 3;
         */
        value: Permissions;
        case: "set";
    } | {
        /**
         * New owner for object
         *
         * @generated from field: string change_owner = 4;
         */
        value: string;
        case: "changeOwner";
    } | {
        case: undefined;
        value?: undefined;
    };
};
/**
 * Describes the message Ydb.Scheme.PermissionsAction.
 * Use `create(PermissionsActionSchema)` to create a new message.
 */
export declare const PermissionsActionSchema: GenMessage<PermissionsAction>;
/**
 * Modify permissions of given object
 *
 * @generated from message Ydb.Scheme.ModifyPermissionsRequest
 */
export type ModifyPermissionsRequest = Message<"Ydb.Scheme.ModifyPermissionsRequest"> & {
    /**
     * @generated from field: Ydb.Operations.OperationParams operation_params = 1;
     */
    operationParams?: OperationParams;
    /**
     * @generated from field: string path = 2;
     */
    path: string;
    /**
     * @generated from field: repeated Ydb.Scheme.PermissionsAction actions = 3;
     */
    actions: PermissionsAction[];
    /**
     * Clear all permissions on the object for all subjects
     *
     * @generated from field: bool clear_permissions = 4;
     */
    clearPermissions: boolean;
    /**
     * @generated from oneof Ydb.Scheme.ModifyPermissionsRequest.inheritance
     */
    inheritance: {
        /**
         * @generated from field: bool interrupt_inheritance = 5;
         */
        value: boolean;
        case: "interruptInheritance";
    } | {
        case: undefined;
        value?: undefined;
    };
};
/**
 * Describes the message Ydb.Scheme.ModifyPermissionsRequest.
 * Use `create(ModifyPermissionsRequestSchema)` to create a new message.
 */
export declare const ModifyPermissionsRequestSchema: GenMessage<ModifyPermissionsRequest>;
/**
 * @generated from message Ydb.Scheme.ModifyPermissionsResponse
 */
export type ModifyPermissionsResponse = Message<"Ydb.Scheme.ModifyPermissionsResponse"> & {
    /**
     * @generated from field: Ydb.Operations.Operation operation = 1;
     */
    operation?: Operation;
};
/**
 * Describes the message Ydb.Scheme.ModifyPermissionsResponse.
 * Use `create(ModifyPermissionsResponseSchema)` to create a new message.
 */
export declare const ModifyPermissionsResponseSchema: GenMessage<ModifyPermissionsResponse>;
//# sourceMappingURL=ydb_scheme_pb.d.ts.map