import * as z from "zod/v3";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { ServiceAccountOwner, ServiceAccountOwner$Outbound } from "./serviceaccountowner.js";
import { UserOwner, UserOwner$Outbound } from "./userowner.js";
/**
 * Owner attribution drives lifecycle.
 *
 * @remarks
 *
 *  `service_account` keys are workspace-owned and outlive any individual
 *  user. `user` keys are bound to `user_id`: when the user is removed,
 *  disabled, or loses project access, the key is revoked / its scope
 *  shrinks per the cascade rules in ADR 0001.
 */
export type ApiKeyOwner = {
    user?: UserOwner | undefined;
    serviceAccount?: ServiceAccountOwner | undefined;
};
/** @internal */
export declare const ApiKeyOwner$inboundSchema: z.ZodType<ApiKeyOwner, z.ZodTypeDef, unknown>;
/** @internal */
export type ApiKeyOwner$Outbound = {
    user?: UserOwner$Outbound | undefined;
    service_account?: ServiceAccountOwner$Outbound | undefined;
};
/** @internal */
export declare const ApiKeyOwner$outboundSchema: z.ZodType<ApiKeyOwner$Outbound, z.ZodTypeDef, ApiKeyOwner>;
export declare function apiKeyOwnerToJSON(apiKeyOwner: ApiKeyOwner): string;
export declare function apiKeyOwnerFromJSON(jsonString: string): SafeParseResult<ApiKeyOwner, SDKValidationError>;
//# sourceMappingURL=apikeyowner.d.ts.map