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 type GetUserRequest = {
    /**
     * The sourcedId of the user
     */
    sourcedId: string;
};
export declare const GetUserStatus: {
    readonly Active: "active";
    readonly Tobedeleted: "tobedeleted";
};
export type GetUserStatus = ClosedEnum<typeof GetUserStatus>;
export type GetUserUserId = {
    type: string;
    identifier: string;
};
export declare const GetUserRoleType: {
    readonly Primary: "primary";
    readonly Secondary: "secondary";
};
export type GetUserRoleType = ClosedEnum<typeof GetUserRoleType>;
export declare const GetUserRoleEnum: {
    readonly Administrator: "administrator";
    readonly Aide: "aide";
    readonly Guardian: "guardian";
    readonly Parent: "parent";
    readonly Proctor: "proctor";
    readonly Relative: "relative";
    readonly Student: "student";
    readonly Teacher: "teacher";
};
export type GetUserRoleEnum = ClosedEnum<typeof GetUserRoleEnum>;
export type GetUserOrg = {
    href: string;
    sourcedId: string;
    type: string;
};
export type GetUserRole = {
    roleType: GetUserRoleType;
    role: GetUserRoleEnum;
    org: GetUserOrg;
    userProfile?: string | undefined;
    beginDate: string | null;
    endDate: string | null;
};
export declare const GetUserType: {
    readonly AcademicSession: "academicSession";
    readonly AssessmentLineItem: "assessmentLineItem";
    readonly Category: "category";
    readonly Class: "class";
    readonly Course: "course";
    readonly Demographics: "demographics";
    readonly Enrollment: "enrollment";
    readonly GradingPeriod: "gradingPeriod";
    readonly LineItem: "lineItem";
    readonly Org: "org";
    readonly Resource: "resource";
    readonly Result: "result";
    readonly ScoreScale: "scoreScale";
    readonly Student: "student";
    readonly Teacher: "teacher";
    readonly Term: "term";
    readonly User: "user";
    readonly ComponentResource: "componentResource";
    readonly CourseComponent: "courseComponent";
};
export type GetUserType = ClosedEnum<typeof GetUserType>;
export type GetUserAgent = {
    href: string;
    sourcedId: string;
    type: GetUserType;
};
export type GetUserPrimaryOrg = {
    href: string;
    sourcedId: string;
    type: string;
};
export type GetUserUser = {
    sourcedId: string;
    status: GetUserStatus;
    dateLastModified?: Date | undefined;
    metadata?: {
        [k: string]: any;
    } | null | undefined;
    userMasterIdentifier?: string | null | undefined;
    username?: string | null | undefined;
    userIds?: Array<GetUserUserId> | undefined;
    enabledUser: boolean;
    givenName: string;
    familyName: string;
    middleName?: string | null | undefined;
    roles: Array<GetUserRole>;
    agents: Array<GetUserAgent>;
    primaryOrg?: GetUserPrimaryOrg | undefined;
    email?: string | null | undefined;
    preferredFirstName?: string | null | undefined;
    preferredMiddleName?: string | null | undefined;
    preferredLastName?: string | null | undefined;
    pronouns?: string | null | undefined;
    grades?: Array<string> | undefined;
    password?: string | null | undefined;
    sms?: string | null | undefined;
    phone?: string | null | undefined;
};
/**
 * Successful response with the user
 */
export type GetUserResponse = {
    user: GetUserUser;
};
/** @internal */
export declare const GetUserRequest$inboundSchema: z.ZodType<GetUserRequest, z.ZodTypeDef, unknown>;
/** @internal */
export type GetUserRequest$Outbound = {
    sourcedId: string;
};
/** @internal */
export declare const GetUserRequest$outboundSchema: z.ZodType<GetUserRequest$Outbound, z.ZodTypeDef, GetUserRequest>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetUserRequest$ {
    /** @deprecated use `GetUserRequest$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetUserRequest, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetUserRequest$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetUserRequest$Outbound, z.ZodTypeDef, GetUserRequest>;
    /** @deprecated use `GetUserRequest$Outbound` instead. */
    type Outbound = GetUserRequest$Outbound;
}
export declare function getUserRequestToJSON(getUserRequest: GetUserRequest): string;
export declare function getUserRequestFromJSON(jsonString: string): SafeParseResult<GetUserRequest, SDKValidationError>;
/** @internal */
export declare const GetUserStatus$inboundSchema: z.ZodNativeEnum<typeof GetUserStatus>;
/** @internal */
export declare const GetUserStatus$outboundSchema: z.ZodNativeEnum<typeof GetUserStatus>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetUserStatus$ {
    /** @deprecated use `GetUserStatus$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Active: "active";
        readonly Tobedeleted: "tobedeleted";
    }>;
    /** @deprecated use `GetUserStatus$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Active: "active";
        readonly Tobedeleted: "tobedeleted";
    }>;
}
/** @internal */
export declare const GetUserUserId$inboundSchema: z.ZodType<GetUserUserId, z.ZodTypeDef, unknown>;
/** @internal */
export type GetUserUserId$Outbound = {
    type: string;
    identifier: string;
};
/** @internal */
export declare const GetUserUserId$outboundSchema: z.ZodType<GetUserUserId$Outbound, z.ZodTypeDef, GetUserUserId>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetUserUserId$ {
    /** @deprecated use `GetUserUserId$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetUserUserId, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetUserUserId$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetUserUserId$Outbound, z.ZodTypeDef, GetUserUserId>;
    /** @deprecated use `GetUserUserId$Outbound` instead. */
    type Outbound = GetUserUserId$Outbound;
}
export declare function getUserUserIdToJSON(getUserUserId: GetUserUserId): string;
export declare function getUserUserIdFromJSON(jsonString: string): SafeParseResult<GetUserUserId, SDKValidationError>;
/** @internal */
export declare const GetUserRoleType$inboundSchema: z.ZodNativeEnum<typeof GetUserRoleType>;
/** @internal */
export declare const GetUserRoleType$outboundSchema: z.ZodNativeEnum<typeof GetUserRoleType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetUserRoleType$ {
    /** @deprecated use `GetUserRoleType$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Primary: "primary";
        readonly Secondary: "secondary";
    }>;
    /** @deprecated use `GetUserRoleType$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Primary: "primary";
        readonly Secondary: "secondary";
    }>;
}
/** @internal */
export declare const GetUserRoleEnum$inboundSchema: z.ZodNativeEnum<typeof GetUserRoleEnum>;
/** @internal */
export declare const GetUserRoleEnum$outboundSchema: z.ZodNativeEnum<typeof GetUserRoleEnum>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetUserRoleEnum$ {
    /** @deprecated use `GetUserRoleEnum$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Administrator: "administrator";
        readonly Aide: "aide";
        readonly Guardian: "guardian";
        readonly Parent: "parent";
        readonly Proctor: "proctor";
        readonly Relative: "relative";
        readonly Student: "student";
        readonly Teacher: "teacher";
    }>;
    /** @deprecated use `GetUserRoleEnum$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Administrator: "administrator";
        readonly Aide: "aide";
        readonly Guardian: "guardian";
        readonly Parent: "parent";
        readonly Proctor: "proctor";
        readonly Relative: "relative";
        readonly Student: "student";
        readonly Teacher: "teacher";
    }>;
}
/** @internal */
export declare const GetUserOrg$inboundSchema: z.ZodType<GetUserOrg, z.ZodTypeDef, unknown>;
/** @internal */
export type GetUserOrg$Outbound = {
    href: string;
    sourcedId: string;
    type: string;
};
/** @internal */
export declare const GetUserOrg$outboundSchema: z.ZodType<GetUserOrg$Outbound, z.ZodTypeDef, GetUserOrg>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetUserOrg$ {
    /** @deprecated use `GetUserOrg$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetUserOrg, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetUserOrg$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetUserOrg$Outbound, z.ZodTypeDef, GetUserOrg>;
    /** @deprecated use `GetUserOrg$Outbound` instead. */
    type Outbound = GetUserOrg$Outbound;
}
export declare function getUserOrgToJSON(getUserOrg: GetUserOrg): string;
export declare function getUserOrgFromJSON(jsonString: string): SafeParseResult<GetUserOrg, SDKValidationError>;
/** @internal */
export declare const GetUserRole$inboundSchema: z.ZodType<GetUserRole, z.ZodTypeDef, unknown>;
/** @internal */
export type GetUserRole$Outbound = {
    roleType: string;
    role: string;
    org: GetUserOrg$Outbound;
    userProfile?: string | undefined;
    beginDate: string | null;
    endDate: string | null;
};
/** @internal */
export declare const GetUserRole$outboundSchema: z.ZodType<GetUserRole$Outbound, z.ZodTypeDef, GetUserRole>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetUserRole$ {
    /** @deprecated use `GetUserRole$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetUserRole, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetUserRole$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetUserRole$Outbound, z.ZodTypeDef, GetUserRole>;
    /** @deprecated use `GetUserRole$Outbound` instead. */
    type Outbound = GetUserRole$Outbound;
}
export declare function getUserRoleToJSON(getUserRole: GetUserRole): string;
export declare function getUserRoleFromJSON(jsonString: string): SafeParseResult<GetUserRole, SDKValidationError>;
/** @internal */
export declare const GetUserType$inboundSchema: z.ZodNativeEnum<typeof GetUserType>;
/** @internal */
export declare const GetUserType$outboundSchema: z.ZodNativeEnum<typeof GetUserType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetUserType$ {
    /** @deprecated use `GetUserType$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly AcademicSession: "academicSession";
        readonly AssessmentLineItem: "assessmentLineItem";
        readonly Category: "category";
        readonly Class: "class";
        readonly Course: "course";
        readonly Demographics: "demographics";
        readonly Enrollment: "enrollment";
        readonly GradingPeriod: "gradingPeriod";
        readonly LineItem: "lineItem";
        readonly Org: "org";
        readonly Resource: "resource";
        readonly Result: "result";
        readonly ScoreScale: "scoreScale";
        readonly Student: "student";
        readonly Teacher: "teacher";
        readonly Term: "term";
        readonly User: "user";
        readonly ComponentResource: "componentResource";
        readonly CourseComponent: "courseComponent";
    }>;
    /** @deprecated use `GetUserType$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly AcademicSession: "academicSession";
        readonly AssessmentLineItem: "assessmentLineItem";
        readonly Category: "category";
        readonly Class: "class";
        readonly Course: "course";
        readonly Demographics: "demographics";
        readonly Enrollment: "enrollment";
        readonly GradingPeriod: "gradingPeriod";
        readonly LineItem: "lineItem";
        readonly Org: "org";
        readonly Resource: "resource";
        readonly Result: "result";
        readonly ScoreScale: "scoreScale";
        readonly Student: "student";
        readonly Teacher: "teacher";
        readonly Term: "term";
        readonly User: "user";
        readonly ComponentResource: "componentResource";
        readonly CourseComponent: "courseComponent";
    }>;
}
/** @internal */
export declare const GetUserAgent$inboundSchema: z.ZodType<GetUserAgent, z.ZodTypeDef, unknown>;
/** @internal */
export type GetUserAgent$Outbound = {
    href: string;
    sourcedId: string;
    type: string;
};
/** @internal */
export declare const GetUserAgent$outboundSchema: z.ZodType<GetUserAgent$Outbound, z.ZodTypeDef, GetUserAgent>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetUserAgent$ {
    /** @deprecated use `GetUserAgent$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetUserAgent, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetUserAgent$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetUserAgent$Outbound, z.ZodTypeDef, GetUserAgent>;
    /** @deprecated use `GetUserAgent$Outbound` instead. */
    type Outbound = GetUserAgent$Outbound;
}
export declare function getUserAgentToJSON(getUserAgent: GetUserAgent): string;
export declare function getUserAgentFromJSON(jsonString: string): SafeParseResult<GetUserAgent, SDKValidationError>;
/** @internal */
export declare const GetUserPrimaryOrg$inboundSchema: z.ZodType<GetUserPrimaryOrg, z.ZodTypeDef, unknown>;
/** @internal */
export type GetUserPrimaryOrg$Outbound = {
    href: string;
    sourcedId: string;
    type: string;
};
/** @internal */
export declare const GetUserPrimaryOrg$outboundSchema: z.ZodType<GetUserPrimaryOrg$Outbound, z.ZodTypeDef, GetUserPrimaryOrg>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetUserPrimaryOrg$ {
    /** @deprecated use `GetUserPrimaryOrg$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetUserPrimaryOrg, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetUserPrimaryOrg$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetUserPrimaryOrg$Outbound, z.ZodTypeDef, GetUserPrimaryOrg>;
    /** @deprecated use `GetUserPrimaryOrg$Outbound` instead. */
    type Outbound = GetUserPrimaryOrg$Outbound;
}
export declare function getUserPrimaryOrgToJSON(getUserPrimaryOrg: GetUserPrimaryOrg): string;
export declare function getUserPrimaryOrgFromJSON(jsonString: string): SafeParseResult<GetUserPrimaryOrg, SDKValidationError>;
/** @internal */
export declare const GetUserUser$inboundSchema: z.ZodType<GetUserUser, z.ZodTypeDef, unknown>;
/** @internal */
export type GetUserUser$Outbound = {
    sourcedId: string;
    status: string;
    dateLastModified?: string | undefined;
    metadata?: {
        [k: string]: any;
    } | null | undefined;
    userMasterIdentifier?: string | null | undefined;
    username?: string | null | undefined;
    userIds?: Array<GetUserUserId$Outbound> | undefined;
    enabledUser: boolean;
    givenName: string;
    familyName: string;
    middleName?: string | null | undefined;
    roles: Array<GetUserRole$Outbound>;
    agents: Array<GetUserAgent$Outbound>;
    primaryOrg?: GetUserPrimaryOrg$Outbound | undefined;
    email?: string | null | undefined;
    preferredFirstName?: string | null | undefined;
    preferredMiddleName?: string | null | undefined;
    preferredLastName?: string | null | undefined;
    pronouns?: string | null | undefined;
    grades?: Array<string> | undefined;
    password?: string | null | undefined;
    sms?: string | null | undefined;
    phone?: string | null | undefined;
};
/** @internal */
export declare const GetUserUser$outboundSchema: z.ZodType<GetUserUser$Outbound, z.ZodTypeDef, GetUserUser>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetUserUser$ {
    /** @deprecated use `GetUserUser$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetUserUser, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetUserUser$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetUserUser$Outbound, z.ZodTypeDef, GetUserUser>;
    /** @deprecated use `GetUserUser$Outbound` instead. */
    type Outbound = GetUserUser$Outbound;
}
export declare function getUserUserToJSON(getUserUser: GetUserUser): string;
export declare function getUserUserFromJSON(jsonString: string): SafeParseResult<GetUserUser, SDKValidationError>;
/** @internal */
export declare const GetUserResponse$inboundSchema: z.ZodType<GetUserResponse, z.ZodTypeDef, unknown>;
/** @internal */
export type GetUserResponse$Outbound = {
    user: GetUserUser$Outbound;
};
/** @internal */
export declare const GetUserResponse$outboundSchema: z.ZodType<GetUserResponse$Outbound, z.ZodTypeDef, GetUserResponse>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetUserResponse$ {
    /** @deprecated use `GetUserResponse$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetUserResponse, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetUserResponse$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetUserResponse$Outbound, z.ZodTypeDef, GetUserResponse>;
    /** @deprecated use `GetUserResponse$Outbound` instead. */
    type Outbound = GetUserResponse$Outbound;
}
export declare function getUserResponseToJSON(getUserResponse: GetUserResponse): string;
export declare function getUserResponseFromJSON(jsonString: string): SafeParseResult<GetUserResponse, SDKValidationError>;
//# sourceMappingURL=getuser.d.ts.map