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 { IamRole, IamRole$Outbound } from "./iamrole.js";
export type IamGroup4 = {};
export type IamGroupSourceValue = IamGroup4 | string | number | boolean | Array<any>;
export declare enum IamGroupValue {
    Workspace = "workspace",
    Team = "team",
    Department = "department",
    Group = "group",
    Organization = "organization",
    UnmappedValue = "unmapped_value",
    CostCenter = "cost_center"
}
export type IamGroupValueOpen = OpenEnum<typeof IamGroupValue>;
export type IamGroupType = {
    sourceValue?: IamGroup4 | string | number | boolean | Array<any> | null | undefined;
    value?: IamGroupValueOpen | null | undefined;
};
export type IamGroup = {
    createdAt?: Date | null | undefined;
    description?: string | null | undefined;
    /**
     * Unique identifier
     */
    id?: string | null | undefined;
    name?: string | null | undefined;
    /**
     * The parent group id for when a group belongs to another group.
     */
    parentId?: string | null | undefined;
    /**
     * Provider's unique identifier
     */
    remoteId?: string | null | undefined;
    /**
     * Provider's unique identifier of the parent group id for when a group belongs to another group.
     */
    remoteParentId?: string | null | undefined;
    roles?: Array<IamRole> | null | undefined;
    type?: IamGroupType | null | undefined;
    updatedAt?: Date | null | undefined;
};
/** @internal */
export declare const IamGroup4$inboundSchema: z.ZodType<IamGroup4, z.ZodTypeDef, unknown>;
/** @internal */
export type IamGroup4$Outbound = {};
/** @internal */
export declare const IamGroup4$outboundSchema: z.ZodType<IamGroup4$Outbound, z.ZodTypeDef, IamGroup4>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamGroup4$ {
    /** @deprecated use `IamGroup4$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamGroup4, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamGroup4$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamGroup4$Outbound, z.ZodTypeDef, IamGroup4>;
    /** @deprecated use `IamGroup4$Outbound` instead. */
    type Outbound = IamGroup4$Outbound;
}
export declare function iamGroup4ToJSON(iamGroup4: IamGroup4): string;
export declare function iamGroup4FromJSON(jsonString: string): SafeParseResult<IamGroup4, SDKValidationError>;
/** @internal */
export declare const IamGroupSourceValue$inboundSchema: z.ZodType<IamGroupSourceValue, z.ZodTypeDef, unknown>;
/** @internal */
export type IamGroupSourceValue$Outbound = IamGroup4$Outbound | string | number | boolean | Array<any>;
/** @internal */
export declare const IamGroupSourceValue$outboundSchema: z.ZodType<IamGroupSourceValue$Outbound, z.ZodTypeDef, IamGroupSourceValue>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamGroupSourceValue$ {
    /** @deprecated use `IamGroupSourceValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamGroupSourceValue, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamGroupSourceValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamGroupSourceValue$Outbound, z.ZodTypeDef, IamGroupSourceValue>;
    /** @deprecated use `IamGroupSourceValue$Outbound` instead. */
    type Outbound = IamGroupSourceValue$Outbound;
}
export declare function iamGroupSourceValueToJSON(iamGroupSourceValue: IamGroupSourceValue): string;
export declare function iamGroupSourceValueFromJSON(jsonString: string): SafeParseResult<IamGroupSourceValue, SDKValidationError>;
/** @internal */
export declare const IamGroupValue$inboundSchema: z.ZodType<IamGroupValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const IamGroupValue$outboundSchema: z.ZodType<IamGroupValueOpen, z.ZodTypeDef, IamGroupValueOpen>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamGroupValue$ {
    /** @deprecated use `IamGroupValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamGroupValueOpen, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamGroupValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamGroupValueOpen, z.ZodTypeDef, IamGroupValueOpen>;
}
/** @internal */
export declare const IamGroupType$inboundSchema: z.ZodType<IamGroupType, z.ZodTypeDef, unknown>;
/** @internal */
export type IamGroupType$Outbound = {
    source_value?: IamGroup4$Outbound | string | number | boolean | Array<any> | null | undefined;
    value?: string | null | undefined;
};
/** @internal */
export declare const IamGroupType$outboundSchema: z.ZodType<IamGroupType$Outbound, z.ZodTypeDef, IamGroupType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamGroupType$ {
    /** @deprecated use `IamGroupType$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamGroupType, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamGroupType$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamGroupType$Outbound, z.ZodTypeDef, IamGroupType>;
    /** @deprecated use `IamGroupType$Outbound` instead. */
    type Outbound = IamGroupType$Outbound;
}
export declare function iamGroupTypeToJSON(iamGroupType: IamGroupType): string;
export declare function iamGroupTypeFromJSON(jsonString: string): SafeParseResult<IamGroupType, SDKValidationError>;
/** @internal */
export declare const IamGroup$inboundSchema: z.ZodType<IamGroup, z.ZodTypeDef, unknown>;
/** @internal */
export type IamGroup$Outbound = {
    created_at?: string | null | undefined;
    description?: string | null | undefined;
    id?: string | null | undefined;
    name?: string | null | undefined;
    parent_id?: string | null | undefined;
    remote_id?: string | null | undefined;
    remote_parent_id?: string | null | undefined;
    roles?: Array<IamRole$Outbound> | null | undefined;
    type?: IamGroupType$Outbound | null | undefined;
    updated_at?: string | null | undefined;
};
/** @internal */
export declare const IamGroup$outboundSchema: z.ZodType<IamGroup$Outbound, z.ZodTypeDef, IamGroup>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace IamGroup$ {
    /** @deprecated use `IamGroup$inboundSchema` instead. */
    const inboundSchema: z.ZodType<IamGroup, z.ZodTypeDef, unknown>;
    /** @deprecated use `IamGroup$outboundSchema` instead. */
    const outboundSchema: z.ZodType<IamGroup$Outbound, z.ZodTypeDef, IamGroup>;
    /** @deprecated use `IamGroup$Outbound` instead. */
    type Outbound = IamGroup$Outbound;
}
export declare function iamGroupToJSON(iamGroup: IamGroup): string;
export declare function iamGroupFromJSON(jsonString: string): SafeParseResult<IamGroup, SDKValidationError>;
//# sourceMappingURL=iamgroup.d.ts.map