import * as z from "zod";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export declare const OrgStatus: {
    readonly Active: "active";
    readonly Tobedeleted: "tobedeleted";
};
export type OrgStatus = ClosedEnum<typeof OrgStatus>;
export declare const OrgType1: {
    readonly Department: "department";
    readonly School: "school";
    readonly District: "district";
    readonly Local: "local";
    readonly State: "state";
    readonly National: "national";
};
export type OrgType1 = ClosedEnum<typeof OrgType1>;
export type OrgParent = {
    href: string;
    sourcedId: string;
    type: string;
};
export type Child = {
    href: string;
    sourcedId: string;
    type: string;
};
/**
 * Represents an organization.
 */
export type Org = {
    sourcedId: string;
    status: OrgStatus;
    dateLastModified?: Date | undefined;
    metadata?: {
        [k: string]: any;
    } | null | undefined;
    name: string;
    type: OrgType1;
    identifier: string;
    parent: OrgParent | null;
    children: Array<Child>;
};
/** @internal */
export declare const OrgStatus$inboundSchema: z.ZodNativeEnum<typeof OrgStatus>;
/** @internal */
export declare const OrgStatus$outboundSchema: z.ZodNativeEnum<typeof OrgStatus>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace OrgStatus$ {
    /** @deprecated use `OrgStatus$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Active: "active";
        readonly Tobedeleted: "tobedeleted";
    }>;
    /** @deprecated use `OrgStatus$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Active: "active";
        readonly Tobedeleted: "tobedeleted";
    }>;
}
/** @internal */
export declare const OrgType1$inboundSchema: z.ZodNativeEnum<typeof OrgType1>;
/** @internal */
export declare const OrgType1$outboundSchema: z.ZodNativeEnum<typeof OrgType1>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace OrgType1$ {
    /** @deprecated use `OrgType1$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Department: "department";
        readonly School: "school";
        readonly District: "district";
        readonly Local: "local";
        readonly State: "state";
        readonly National: "national";
    }>;
    /** @deprecated use `OrgType1$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Department: "department";
        readonly School: "school";
        readonly District: "district";
        readonly Local: "local";
        readonly State: "state";
        readonly National: "national";
    }>;
}
/** @internal */
export declare const OrgParent$inboundSchema: z.ZodType<OrgParent, z.ZodTypeDef, unknown>;
/** @internal */
export type OrgParent$Outbound = {
    href: string;
    sourcedId: string;
    type: string;
};
/** @internal */
export declare const OrgParent$outboundSchema: z.ZodType<OrgParent$Outbound, z.ZodTypeDef, OrgParent>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace OrgParent$ {
    /** @deprecated use `OrgParent$inboundSchema` instead. */
    const inboundSchema: z.ZodType<OrgParent, z.ZodTypeDef, unknown>;
    /** @deprecated use `OrgParent$outboundSchema` instead. */
    const outboundSchema: z.ZodType<OrgParent$Outbound, z.ZodTypeDef, OrgParent>;
    /** @deprecated use `OrgParent$Outbound` instead. */
    type Outbound = OrgParent$Outbound;
}
export declare function orgParentToJSON(orgParent: OrgParent): string;
export declare function orgParentFromJSON(jsonString: string): SafeParseResult<OrgParent, SDKValidationError>;
/** @internal */
export declare const Child$inboundSchema: z.ZodType<Child, z.ZodTypeDef, unknown>;
/** @internal */
export type Child$Outbound = {
    href: string;
    sourcedId: string;
    type: string;
};
/** @internal */
export declare const Child$outboundSchema: z.ZodType<Child$Outbound, z.ZodTypeDef, Child>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Child$ {
    /** @deprecated use `Child$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Child, z.ZodTypeDef, unknown>;
    /** @deprecated use `Child$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Child$Outbound, z.ZodTypeDef, Child>;
    /** @deprecated use `Child$Outbound` instead. */
    type Outbound = Child$Outbound;
}
export declare function childToJSON(child: Child): string;
export declare function childFromJSON(jsonString: string): SafeParseResult<Child, SDKValidationError>;
/** @internal */
export declare const Org$inboundSchema: z.ZodType<Org, z.ZodTypeDef, unknown>;
/** @internal */
export type Org$Outbound = {
    sourcedId: string;
    status: string;
    dateLastModified?: string | undefined;
    metadata?: {
        [k: string]: any;
    } | null | undefined;
    name: string;
    type: string;
    identifier: string;
    parent: OrgParent$Outbound | null;
    children: Array<Child$Outbound>;
};
/** @internal */
export declare const Org$outboundSchema: z.ZodType<Org$Outbound, z.ZodTypeDef, Org>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Org$ {
    /** @deprecated use `Org$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Org, z.ZodTypeDef, unknown>;
    /** @deprecated use `Org$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Org$Outbound, z.ZodTypeDef, Org>;
    /** @deprecated use `Org$Outbound` instead. */
    type Outbound = Org$Outbound;
}
export declare function orgToJSON(org: Org): string;
export declare function orgFromJSON(jsonString: string): SafeParseResult<Org, SDKValidationError>;
//# sourceMappingURL=org.d.ts.map