import * as z from "zod/v3";
import { ApiKeyOwner, ApiKeyOwner$Outbound } from "./apikeyowner.js";
import { PermissionMode } from "./permissionmode.js";
import { ProjectScope, ProjectScope$Outbound } from "./projectscope.js";
export type CreateApiKeyRequest = {
    /**
     * Human-readable name. Required.
     */
    name: string;
    /**
     * Owner attribution. Defaults to service_account when omitted.
     */
    owner?: ApiKeyOwner | undefined;
    /**
     * Project authorization scope. Defaults to all-projects when omitted.
     */
    projectScope?: ProjectScope | undefined;
    permissionMode?: PermissionMode | undefined;
    /**
     * Per-domain access map. Required when `permission_mode` =
     *
     * @remarks
     *  `PERMISSION_MODE_RESTRICTED`. See `ApiKey.access` for the full
     *  catalog of valid keys (Domain.id) and AccessLevel string values,
     *  or fetch the live catalog via the capability catalog endpoint.
     */
    access?: {
        [k: string]: number;
    } | undefined;
    /**
     * Optional expiration. When set, the authenticate hot-path rejects
     *
     * @remarks
     *  the key once `expires_at` is in the past. Unset means the key
     *  never expires.
     */
    expiresAt?: Date | undefined;
};
/** @internal */
export type CreateApiKeyRequest$Outbound = {
    name: string;
    owner?: ApiKeyOwner$Outbound | undefined;
    project_scope?: ProjectScope$Outbound | undefined;
    permission_mode?: string | undefined;
    access?: {
        [k: string]: number;
    } | undefined;
    expires_at?: string | undefined;
};
/** @internal */
export declare const CreateApiKeyRequest$outboundSchema: z.ZodType<CreateApiKeyRequest$Outbound, z.ZodTypeDef, CreateApiKeyRequest>;
export declare function createApiKeyRequestToJSON(createApiKeyRequest: CreateApiKeyRequest): string;
//# sourceMappingURL=createapikeyrequest.d.ts.map