import * as z from "zod";
import { OpenEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { IamPolicy, IamPolicy$Outbound } from "./iampolicy.js";
export type IamRole4 = {};
export type IamRoleSourceValue = IamRole4 | string | number | boolean | Array<any>;
export declare enum IamRoleValue {
    Admin = "admin",
    Viewer = "viewer",
    Editor = "editor",
    Basic = "basic",
    Guest = "guest",
    Unassigned = "unassigned",
    Restricted = "restricted",
    UnmappedValue = "unmapped_value"
}
export type IamRoleValueOpen = OpenEnum<typeof IamRoleValue>;
export type IamRoleType = {
    sourceValue?: IamRole4 | string | number | boolean | Array<any> | null | undefined;
    value?: IamRoleValueOpen | null | undefined;
};
export type IamRole = {
    createdAt?: Date | null | undefined;
    description?: string | null | undefined;
    /**
     * Unique identifier
     */
    id?: string | null | undefined;
    name?: string | null | undefined;
    /**
     * The set of policies associated with the role.
     */
    policies?: Array<IamPolicy> | null | undefined;
    /**
     * Provider's unique identifier
     */
    remoteId?: string | null | undefined;
    type?: IamRoleType | null | undefined;
    updatedAt?: Date | null | undefined;
};
/** @internal */
export declare const IamRole4$inboundSchema: z.ZodType<IamRole4, z.ZodTypeDef, unknown>;
/** @internal */
export type IamRole4$Outbound = {};
/** @internal */
export declare const IamRole4$outboundSchema: z.ZodType<IamRole4$Outbound, z.ZodTypeDef, IamRole4>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamRole4$ {
    /** @deprecated use `IamRole4$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamRole4, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamRole4$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamRole4$Outbound, z.ZodTypeDef, IamRole4>;
    /** @deprecated use `IamRole4$Outbound` instead. */
    type Outbound = IamRole4$Outbound;
}
export declare function iamRole4ToJSON(iamRole4: IamRole4): string;
export declare function iamRole4FromJSON(jsonString: string): SafeParseResult<IamRole4, SDKValidationError>;
/** @internal */
export declare const IamRoleSourceValue$inboundSchema: z.ZodType<IamRoleSourceValue, z.ZodTypeDef, unknown>;
/** @internal */
export type IamRoleSourceValue$Outbound = IamRole4$Outbound | string | number | boolean | Array<any>;
/** @internal */
export declare const IamRoleSourceValue$outboundSchema: z.ZodType<IamRoleSourceValue$Outbound, z.ZodTypeDef, IamRoleSourceValue>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamRoleSourceValue$ {
    /** @deprecated use `IamRoleSourceValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamRoleSourceValue, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamRoleSourceValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamRoleSourceValue$Outbound, z.ZodTypeDef, IamRoleSourceValue>;
    /** @deprecated use `IamRoleSourceValue$Outbound` instead. */
    type Outbound = IamRoleSourceValue$Outbound;
}
export declare function iamRoleSourceValueToJSON(iamRoleSourceValue: IamRoleSourceValue): string;
export declare function iamRoleSourceValueFromJSON(jsonString: string): SafeParseResult<IamRoleSourceValue, SDKValidationError>;
/** @internal */
export declare const IamRoleValue$inboundSchema: z.ZodType<IamRoleValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const IamRoleValue$outboundSchema: z.ZodType<IamRoleValueOpen, z.ZodTypeDef, IamRoleValueOpen>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamRoleValue$ {
    /** @deprecated use `IamRoleValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamRoleValueOpen, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamRoleValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamRoleValueOpen, z.ZodTypeDef, IamRoleValueOpen>;
}
/** @internal */
export declare const IamRoleType$inboundSchema: z.ZodType<IamRoleType, z.ZodTypeDef, unknown>;
/** @internal */
export type IamRoleType$Outbound = {
    source_value?: IamRole4$Outbound | string | number | boolean | Array<any> | null | undefined;
    value?: string | null | undefined;
};
/** @internal */
export declare const IamRoleType$outboundSchema: z.ZodType<IamRoleType$Outbound, z.ZodTypeDef, IamRoleType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamRoleType$ {
    /** @deprecated use `IamRoleType$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamRoleType, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamRoleType$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamRoleType$Outbound, z.ZodTypeDef, IamRoleType>;
    /** @deprecated use `IamRoleType$Outbound` instead. */
    type Outbound = IamRoleType$Outbound;
}
export declare function iamRoleTypeToJSON(iamRoleType: IamRoleType): string;
export declare function iamRoleTypeFromJSON(jsonString: string): SafeParseResult<IamRoleType, SDKValidationError>;
/** @internal */
export declare const IamRole$inboundSchema: z.ZodType<IamRole, z.ZodTypeDef, unknown>;
/** @internal */
export type IamRole$Outbound = {
    created_at?: string | null | undefined;
    description?: string | null | undefined;
    id?: string | null | undefined;
    name?: string | null | undefined;
    policies?: Array<IamPolicy$Outbound> | null | undefined;
    remote_id?: string | null | undefined;
    type?: IamRoleType$Outbound | null | undefined;
    updated_at?: string | null | undefined;
};
/** @internal */
export declare const IamRole$outboundSchema: z.ZodType<IamRole$Outbound, z.ZodTypeDef, IamRole>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamRole$ {
    /** @deprecated use `IamRole$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamRole, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamRole$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamRole$Outbound, z.ZodTypeDef, IamRole>;
    /** @deprecated use `IamRole$Outbound` instead. */
    type Outbound = IamRole$Outbound;
}
export declare function iamRoleToJSON(iamRole: IamRole): string;
export declare function iamRoleFromJSON(jsonString: string): SafeParseResult<IamRole, SDKValidationError>;
//# sourceMappingURL=iamrole.d.ts.map