import { UnkeyCore } from "../core.js";
import { RequestOptions } from "../lib/sdks.js";
import * as components from "../models/components/index.js";
import { ConnectionError, InvalidRequestError, RequestAbortedError, RequestTimeoutError, UnexpectedClientError } from "../models/errors/httpclienterrors.js";
import * as errors from "../models/errors/index.js";
import { ResponseValidationError } from "../models/errors/responsevalidationerror.js";
import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import { UnkeyError } from "../models/errors/unkeyerror.js";
import { APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
/**
 * Create permission
 *
 * @remarks
 * Create a new permission to define specific actions or capabilities in your RBAC system. Permissions can be assigned directly to API keys or included in roles.
 *
 * Use hierarchical naming patterns like `documents.read`, `admin.users.delete`, or `billing.invoices.create` for clear organization.
 *
 * **Important:** Permission names must be unique within the workspace. Once created, permissions are immediately available for assignment.
 *
 * **Required Permissions**
 *
 * Your root key must have the following permission:
 * - `rbac.*.create_permission`
 *
 * If set, this operation will use {@link Security.rootKey} from the global security.
 */
export declare function permissionsCreatePermission(client: UnkeyCore, request: components.V2PermissionsCreatePermissionRequestBody, options?: RequestOptions): APIPromise<Result<components.V2PermissionsCreatePermissionResponseBody, errors.BadRequestErrorResponse | errors.UnauthorizedErrorResponse | errors.ForbiddenErrorResponse | errors.ConflictErrorResponse | errors.TooManyRequestsErrorResponse | errors.InternalServerErrorResponse | UnkeyError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
//# sourceMappingURL=permissionsCreatePermission.d.ts.map