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 { IamResource, IamResource$Outbound } from "./iamresource.js";
export type IamPermission4 = {};
export type IamPermissionSourceValue = IamPermission4 | string | number | boolean | Array<any>;
/**
 * The type of the permission, e.g. read, read_write, delete, etc.
 */
export declare enum IamPermissionValue {
    Read = "read",
    ReadWrite = "read_write",
    Approve = "approve",
    Delete = "delete",
    Use = "use",
    Export = "export",
    UnmappedValue = "unmapped_value"
}
/**
 * The type of the permission, e.g. read, read_write, delete, etc.
 */
export type IamPermissionValueOpen = OpenEnum<typeof IamPermissionValue>;
export type IamPermissionType = {
    sourceValue?: IamPermission4 | string | number | boolean | Array<any> | null | undefined;
    /**
     * The type of the permission, e.g. read, read_write, delete, etc.
     */
    value?: IamPermissionValueOpen | null | undefined;
};
export type IamPermission = {
    createdAt?: Date | null | undefined;
    description?: string | null | undefined;
    /**
     * Unique identifier
     */
    id?: string | null | undefined;
    /**
     * The name of the permission.
     */
    name?: string | null | undefined;
    /**
     * Provider's unique identifier
     */
    remoteId?: string | null | undefined;
    /**
     * The resources that the permission applies to.
     */
    resources?: Array<IamResource> | null | undefined;
    type?: IamPermissionType | null | undefined;
    updatedAt?: Date | null | undefined;
};
/** @internal */
export declare const IamPermission4$inboundSchema: z.ZodType<IamPermission4, z.ZodTypeDef, unknown>;
/** @internal */
export type IamPermission4$Outbound = {};
/** @internal */
export declare const IamPermission4$outboundSchema: z.ZodType<IamPermission4$Outbound, z.ZodTypeDef, IamPermission4>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamPermission4$ {
    /** @deprecated use `IamPermission4$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamPermission4, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamPermission4$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamPermission4$Outbound, z.ZodTypeDef, IamPermission4>;
    /** @deprecated use `IamPermission4$Outbound` instead. */
    type Outbound = IamPermission4$Outbound;
}
export declare function iamPermission4ToJSON(iamPermission4: IamPermission4): string;
export declare function iamPermission4FromJSON(jsonString: string): SafeParseResult<IamPermission4, SDKValidationError>;
/** @internal */
export declare const IamPermissionSourceValue$inboundSchema: z.ZodType<IamPermissionSourceValue, z.ZodTypeDef, unknown>;
/** @internal */
export type IamPermissionSourceValue$Outbound = IamPermission4$Outbound | string | number | boolean | Array<any>;
/** @internal */
export declare const IamPermissionSourceValue$outboundSchema: z.ZodType<IamPermissionSourceValue$Outbound, z.ZodTypeDef, IamPermissionSourceValue>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamPermissionSourceValue$ {
    /** @deprecated use `IamPermissionSourceValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamPermissionSourceValue, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamPermissionSourceValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamPermissionSourceValue$Outbound, z.ZodTypeDef, IamPermissionSourceValue>;
    /** @deprecated use `IamPermissionSourceValue$Outbound` instead. */
    type Outbound = IamPermissionSourceValue$Outbound;
}
export declare function iamPermissionSourceValueToJSON(iamPermissionSourceValue: IamPermissionSourceValue): string;
export declare function iamPermissionSourceValueFromJSON(jsonString: string): SafeParseResult<IamPermissionSourceValue, SDKValidationError>;
/** @internal */
export declare const IamPermissionValue$inboundSchema: z.ZodType<IamPermissionValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const IamPermissionValue$outboundSchema: z.ZodType<IamPermissionValueOpen, z.ZodTypeDef, IamPermissionValueOpen>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamPermissionValue$ {
    /** @deprecated use `IamPermissionValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamPermissionValueOpen, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamPermissionValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamPermissionValueOpen, z.ZodTypeDef, IamPermissionValueOpen>;
}
/** @internal */
export declare const IamPermissionType$inboundSchema: z.ZodType<IamPermissionType, z.ZodTypeDef, unknown>;
/** @internal */
export type IamPermissionType$Outbound = {
    source_value?: IamPermission4$Outbound | string | number | boolean | Array<any> | null | undefined;
    value?: string | null | undefined;
};
/** @internal */
export declare const IamPermissionType$outboundSchema: z.ZodType<IamPermissionType$Outbound, z.ZodTypeDef, IamPermissionType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamPermissionType$ {
    /** @deprecated use `IamPermissionType$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamPermissionType, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamPermissionType$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamPermissionType$Outbound, z.ZodTypeDef, IamPermissionType>;
    /** @deprecated use `IamPermissionType$Outbound` instead. */
    type Outbound = IamPermissionType$Outbound;
}
export declare function iamPermissionTypeToJSON(iamPermissionType: IamPermissionType): string;
export declare function iamPermissionTypeFromJSON(jsonString: string): SafeParseResult<IamPermissionType, SDKValidationError>;
/** @internal */
export declare const IamPermission$inboundSchema: z.ZodType<IamPermission, z.ZodTypeDef, unknown>;
/** @internal */
export type IamPermission$Outbound = {
    created_at?: string | null | undefined;
    description?: string | null | undefined;
    id?: string | null | undefined;
    name?: string | null | undefined;
    remote_id?: string | null | undefined;
    resources?: Array<IamResource$Outbound> | null | undefined;
    type?: IamPermissionType$Outbound | null | undefined;
    updated_at?: string | null | undefined;
};
/** @internal */
export declare const IamPermission$outboundSchema: z.ZodType<IamPermission$Outbound, z.ZodTypeDef, IamPermission>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamPermission$ {
    /** @deprecated use `IamPermission$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamPermission, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamPermission$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamPermission$Outbound, z.ZodTypeDef, IamPermission>;
    /** @deprecated use `IamPermission$Outbound` instead. */
    type Outbound = IamPermission$Outbound;
}
export declare function iamPermissionToJSON(iamPermission: IamPermission): string;
export declare function iamPermissionFromJSON(jsonString: string): SafeParseResult<IamPermission, SDKValidationError>;
//# sourceMappingURL=iampermission.d.ts.map