import * as z from "zod";
import { ClosedEnum } from "../types/enums.js";
import { Result as SafeParseResult } from "../types/fp.js";
import { SDKValidationError } from "./sdkvalidationerror.js";
export declare const LimitedBy: {
    readonly Saml: "saml";
    readonly Mfa: "mfa";
};
export type LimitedBy = ClosedEnum<typeof LimitedBy>;
/**
 * Information for the SAML Single Sign-On configuration.
 */
export type Connection = {
    /**
     * The Identity Provider "type", for example Okta.
     */
    type: string;
    /**
     * Current status of the connection.
     */
    status: string;
    /**
     * Current state of the connection.
     */
    state: string;
    /**
     * Timestamp (in milliseconds) of when the configuration was connected.
     */
    connectedAt: number;
    /**
     * Timestamp (in milliseconds) of when the last webhook event was received from WorkOS.
     */
    lastReceivedWebhookEvent?: number | undefined;
};
/**
 * Information for the Directory Sync configuration.
 */
export type Directory = {
    /**
     * The Identity Provider "type", for example Okta.
     */
    type: string;
    /**
     * Current state of the connection.
     */
    state: string;
    /**
     * Timestamp (in milliseconds) of when the configuration was connected.
     */
    connectedAt: number;
    /**
     * Timestamp (in milliseconds) of when the last webhook event was received from WorkOS.
     */
    lastReceivedWebhookEvent?: number | undefined;
};
/**
 * When "Single Sign-On (SAML)" is configured, this object contains information that allows the client-side to identify whether or not this Team has SAML enforced.
 */
export type Saml = {
    /**
     * Information for the SAML Single Sign-On configuration.
     */
    connection?: Connection | undefined;
    /**
     * Information for the Directory Sync configuration.
     */
    directory?: Directory | undefined;
    /**
     * When `true`, interactions with the Team **must** be done with an authentication token that has been authenticated with the Team's SAML Single Sign-On provider.
     */
    enforced: boolean;
};
export type Entitlements = {
    entitlement: string;
};
export declare const Role: {
    readonly Owner: "OWNER";
    readonly Member: "MEMBER";
    readonly Developer: "DEVELOPER";
    readonly Security: "SECURITY";
    readonly Billing: "BILLING";
    readonly Viewer: "VIEWER";
    readonly Contributor: "CONTRIBUTOR";
};
export type Role = ClosedEnum<typeof Role>;
export declare const TeamRoles: {
    readonly Owner: "OWNER";
    readonly Member: "MEMBER";
    readonly Developer: "DEVELOPER";
    readonly Security: "SECURITY";
    readonly Billing: "BILLING";
    readonly Viewer: "VIEWER";
    readonly Contributor: "CONTRIBUTOR";
};
export type TeamRoles = ClosedEnum<typeof TeamRoles>;
export declare const TeamPermissions: {
    readonly CreateProject: "CreateProject";
    readonly FullProductionDeployment: "FullProductionDeployment";
    readonly UsageViewer: "UsageViewer";
    readonly EnvVariableManager: "EnvVariableManager";
    readonly EnvironmentManager: "EnvironmentManager";
};
export type TeamPermissions = ClosedEnum<typeof TeamPermissions>;
export declare const Origin: {
    readonly Link: "link";
    readonly Saml: "saml";
    readonly Github: "github";
    readonly Gitlab: "gitlab";
    readonly Bitbucket: "bitbucket";
    readonly Mail: "mail";
    readonly Import: "import";
    readonly Teams: "teams";
    readonly Dsync: "dsync";
    readonly Feedback: "feedback";
    readonly OrganizationTeams: "organization-teams";
};
export type Origin = ClosedEnum<typeof Origin>;
export type GitUserId = string | number;
export type JoinedFrom = {
    origin: Origin;
    commitId?: string | undefined;
    repoId?: string | undefined;
    repoPath?: string | undefined;
    gitUserId?: string | number | undefined;
    gitUserLogin?: string | undefined;
    ssoUserId?: string | undefined;
    ssoConnectedAt?: number | undefined;
    idpUserId?: string | undefined;
    dsyncUserId?: string | undefined;
    dsyncConnectedAt?: number | undefined;
};
/**
 * The membership of the authenticated User in relation to the Team.
 */
export type Membership = {
    uid?: string | undefined;
    entitlements?: Array<Entitlements> | undefined;
    confirmed: boolean;
    confirmedAt: number;
    accessRequestedAt?: number | undefined;
    role: Role;
    teamRoles?: Array<TeamRoles> | undefined;
    teamPermissions?: Array<TeamPermissions> | undefined;
    teamId?: string | undefined;
    createdAt: number;
    created: number;
    joinedFrom?: JoinedFrom | undefined;
};
/**
 * A limited form of data representing a Team, due to the authentication token missing privileges to read the full Team data.
 */
export type TeamLimited = {
    /**
     * Property indicating that this Team data contains only limited information, due to the authentication token missing privileges to read the full Team data or due to team having MFA enforced and the user not having MFA enabled. Re-login with the Team's configured SAML Single Sign-On provider in order to upgrade the authentication token with the necessary privileges.
     */
    limited: boolean;
    limitedBy: Array<LimitedBy>;
    /**
     * When "Single Sign-On (SAML)" is configured, this object contains information that allows the client-side to identify whether or not this Team has SAML enforced.
     */
    saml?: Saml | undefined;
    mfaEnforced?: boolean | undefined;
    /**
     * The Team's unique identifier.
     */
    id: string;
    /**
     * The Team's slug, which is unique across the Vercel platform.
     */
    slug: string;
    /**
     * Name associated with the Team account, or `null` if none has been provided.
     */
    name: string | null;
    /**
     * The ID of the file used as avatar for this Team.
     */
    avatar: string | null;
    /**
     * The membership of the authenticated User in relation to the Team.
     */
    membership: Membership;
    /**
     * Will remain undocumented. Remove in v3 API.
     */
    created: string;
    /**
     * UNIX timestamp (in milliseconds) when the Team was created.
     */
    createdAt: number;
};
/** @internal */
export declare const LimitedBy$inboundSchema: z.ZodNativeEnum<typeof LimitedBy>;
/** @internal */
export declare const LimitedBy$outboundSchema: z.ZodNativeEnum<typeof LimitedBy>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace LimitedBy$ {
    /** @deprecated use `LimitedBy$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Saml: "saml";
        readonly Mfa: "mfa";
    }>;
    /** @deprecated use `LimitedBy$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Saml: "saml";
        readonly Mfa: "mfa";
    }>;
}
/** @internal */
export declare const Connection$inboundSchema: z.ZodType<Connection, z.ZodTypeDef, unknown>;
/** @internal */
export type Connection$Outbound = {
    type: string;
    status: string;
    state: string;
    connectedAt: number;
    lastReceivedWebhookEvent?: number | undefined;
};
/** @internal */
export declare const Connection$outboundSchema: z.ZodType<Connection$Outbound, z.ZodTypeDef, Connection>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Connection$ {
    /** @deprecated use `Connection$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Connection, z.ZodTypeDef, unknown>;
    /** @deprecated use `Connection$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Connection$Outbound, z.ZodTypeDef, Connection>;
    /** @deprecated use `Connection$Outbound` instead. */
    type Outbound = Connection$Outbound;
}
export declare function connectionToJSON(connection: Connection): string;
export declare function connectionFromJSON(jsonString: string): SafeParseResult<Connection, SDKValidationError>;
/** @internal */
export declare const Directory$inboundSchema: z.ZodType<Directory, z.ZodTypeDef, unknown>;
/** @internal */
export type Directory$Outbound = {
    type: string;
    state: string;
    connectedAt: number;
    lastReceivedWebhookEvent?: number | undefined;
};
/** @internal */
export declare const Directory$outboundSchema: z.ZodType<Directory$Outbound, z.ZodTypeDef, Directory>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Directory$ {
    /** @deprecated use `Directory$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Directory, z.ZodTypeDef, unknown>;
    /** @deprecated use `Directory$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Directory$Outbound, z.ZodTypeDef, Directory>;
    /** @deprecated use `Directory$Outbound` instead. */
    type Outbound = Directory$Outbound;
}
export declare function directoryToJSON(directory: Directory): string;
export declare function directoryFromJSON(jsonString: string): SafeParseResult<Directory, SDKValidationError>;
/** @internal */
export declare const Saml$inboundSchema: z.ZodType<Saml, z.ZodTypeDef, unknown>;
/** @internal */
export type Saml$Outbound = {
    connection?: Connection$Outbound | undefined;
    directory?: Directory$Outbound | undefined;
    enforced: boolean;
};
/** @internal */
export declare const Saml$outboundSchema: z.ZodType<Saml$Outbound, z.ZodTypeDef, Saml>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Saml$ {
    /** @deprecated use `Saml$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Saml, z.ZodTypeDef, unknown>;
    /** @deprecated use `Saml$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Saml$Outbound, z.ZodTypeDef, Saml>;
    /** @deprecated use `Saml$Outbound` instead. */
    type Outbound = Saml$Outbound;
}
export declare function samlToJSON(saml: Saml): string;
export declare function samlFromJSON(jsonString: string): SafeParseResult<Saml, SDKValidationError>;
/** @internal */
export declare const Entitlements$inboundSchema: z.ZodType<Entitlements, z.ZodTypeDef, unknown>;
/** @internal */
export type Entitlements$Outbound = {
    entitlement: string;
};
/** @internal */
export declare const Entitlements$outboundSchema: z.ZodType<Entitlements$Outbound, z.ZodTypeDef, Entitlements>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Entitlements$ {
    /** @deprecated use `Entitlements$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Entitlements, z.ZodTypeDef, unknown>;
    /** @deprecated use `Entitlements$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Entitlements$Outbound, z.ZodTypeDef, Entitlements>;
    /** @deprecated use `Entitlements$Outbound` instead. */
    type Outbound = Entitlements$Outbound;
}
export declare function entitlementsToJSON(entitlements: Entitlements): string;
export declare function entitlementsFromJSON(jsonString: string): SafeParseResult<Entitlements, SDKValidationError>;
/** @internal */
export declare const Role$inboundSchema: z.ZodNativeEnum<typeof Role>;
/** @internal */
export declare const Role$outboundSchema: z.ZodNativeEnum<typeof Role>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Role$ {
    /** @deprecated use `Role$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Owner: "OWNER";
        readonly Member: "MEMBER";
        readonly Developer: "DEVELOPER";
        readonly Security: "SECURITY";
        readonly Billing: "BILLING";
        readonly Viewer: "VIEWER";
        readonly Contributor: "CONTRIBUTOR";
    }>;
    /** @deprecated use `Role$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Owner: "OWNER";
        readonly Member: "MEMBER";
        readonly Developer: "DEVELOPER";
        readonly Security: "SECURITY";
        readonly Billing: "BILLING";
        readonly Viewer: "VIEWER";
        readonly Contributor: "CONTRIBUTOR";
    }>;
}
/** @internal */
export declare const TeamRoles$inboundSchema: z.ZodNativeEnum<typeof TeamRoles>;
/** @internal */
export declare const TeamRoles$outboundSchema: z.ZodNativeEnum<typeof TeamRoles>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace TeamRoles$ {
    /** @deprecated use `TeamRoles$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Owner: "OWNER";
        readonly Member: "MEMBER";
        readonly Developer: "DEVELOPER";
        readonly Security: "SECURITY";
        readonly Billing: "BILLING";
        readonly Viewer: "VIEWER";
        readonly Contributor: "CONTRIBUTOR";
    }>;
    /** @deprecated use `TeamRoles$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Owner: "OWNER";
        readonly Member: "MEMBER";
        readonly Developer: "DEVELOPER";
        readonly Security: "SECURITY";
        readonly Billing: "BILLING";
        readonly Viewer: "VIEWER";
        readonly Contributor: "CONTRIBUTOR";
    }>;
}
/** @internal */
export declare const TeamPermissions$inboundSchema: z.ZodNativeEnum<typeof TeamPermissions>;
/** @internal */
export declare const TeamPermissions$outboundSchema: z.ZodNativeEnum<typeof TeamPermissions>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace TeamPermissions$ {
    /** @deprecated use `TeamPermissions$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly CreateProject: "CreateProject";
        readonly FullProductionDeployment: "FullProductionDeployment";
        readonly UsageViewer: "UsageViewer";
        readonly EnvVariableManager: "EnvVariableManager";
        readonly EnvironmentManager: "EnvironmentManager";
    }>;
    /** @deprecated use `TeamPermissions$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly CreateProject: "CreateProject";
        readonly FullProductionDeployment: "FullProductionDeployment";
        readonly UsageViewer: "UsageViewer";
        readonly EnvVariableManager: "EnvVariableManager";
        readonly EnvironmentManager: "EnvironmentManager";
    }>;
}
/** @internal */
export declare const Origin$inboundSchema: z.ZodNativeEnum<typeof Origin>;
/** @internal */
export declare const Origin$outboundSchema: z.ZodNativeEnum<typeof Origin>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Origin$ {
    /** @deprecated use `Origin$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Link: "link";
        readonly Saml: "saml";
        readonly Github: "github";
        readonly Gitlab: "gitlab";
        readonly Bitbucket: "bitbucket";
        readonly Mail: "mail";
        readonly Import: "import";
        readonly Teams: "teams";
        readonly Dsync: "dsync";
        readonly Feedback: "feedback";
        readonly OrganizationTeams: "organization-teams";
    }>;
    /** @deprecated use `Origin$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Link: "link";
        readonly Saml: "saml";
        readonly Github: "github";
        readonly Gitlab: "gitlab";
        readonly Bitbucket: "bitbucket";
        readonly Mail: "mail";
        readonly Import: "import";
        readonly Teams: "teams";
        readonly Dsync: "dsync";
        readonly Feedback: "feedback";
        readonly OrganizationTeams: "organization-teams";
    }>;
}
/** @internal */
export declare const GitUserId$inboundSchema: z.ZodType<GitUserId, z.ZodTypeDef, unknown>;
/** @internal */
export type GitUserId$Outbound = string | number;
/** @internal */
export declare const GitUserId$outboundSchema: z.ZodType<GitUserId$Outbound, z.ZodTypeDef, GitUserId>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GitUserId$ {
    /** @deprecated use `GitUserId$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GitUserId, z.ZodTypeDef, unknown>;
    /** @deprecated use `GitUserId$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GitUserId$Outbound, z.ZodTypeDef, GitUserId>;
    /** @deprecated use `GitUserId$Outbound` instead. */
    type Outbound = GitUserId$Outbound;
}
export declare function gitUserIdToJSON(gitUserId: GitUserId): string;
export declare function gitUserIdFromJSON(jsonString: string): SafeParseResult<GitUserId, SDKValidationError>;
/** @internal */
export declare const JoinedFrom$inboundSchema: z.ZodType<JoinedFrom, z.ZodTypeDef, unknown>;
/** @internal */
export type JoinedFrom$Outbound = {
    origin: string;
    commitId?: string | undefined;
    repoId?: string | undefined;
    repoPath?: string | undefined;
    gitUserId?: string | number | undefined;
    gitUserLogin?: string | undefined;
    ssoUserId?: string | undefined;
    ssoConnectedAt?: number | undefined;
    idpUserId?: string | undefined;
    dsyncUserId?: string | undefined;
    dsyncConnectedAt?: number | undefined;
};
/** @internal */
export declare const JoinedFrom$outboundSchema: z.ZodType<JoinedFrom$Outbound, z.ZodTypeDef, JoinedFrom>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace JoinedFrom$ {
    /** @deprecated use `JoinedFrom$inboundSchema` instead. */
    const inboundSchema: z.ZodType<JoinedFrom, z.ZodTypeDef, unknown>;
    /** @deprecated use `JoinedFrom$outboundSchema` instead. */
    const outboundSchema: z.ZodType<JoinedFrom$Outbound, z.ZodTypeDef, JoinedFrom>;
    /** @deprecated use `JoinedFrom$Outbound` instead. */
    type Outbound = JoinedFrom$Outbound;
}
export declare function joinedFromToJSON(joinedFrom: JoinedFrom): string;
export declare function joinedFromFromJSON(jsonString: string): SafeParseResult<JoinedFrom, SDKValidationError>;
/** @internal */
export declare const Membership$inboundSchema: z.ZodType<Membership, z.ZodTypeDef, unknown>;
/** @internal */
export type Membership$Outbound = {
    uid?: string | undefined;
    entitlements?: Array<Entitlements$Outbound> | undefined;
    confirmed: boolean;
    confirmedAt: number;
    accessRequestedAt?: number | undefined;
    role: string;
    teamRoles?: Array<string> | undefined;
    teamPermissions?: Array<string> | undefined;
    teamId?: string | undefined;
    createdAt: number;
    created: number;
    joinedFrom?: JoinedFrom$Outbound | undefined;
};
/** @internal */
export declare const Membership$outboundSchema: z.ZodType<Membership$Outbound, z.ZodTypeDef, Membership>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Membership$ {
    /** @deprecated use `Membership$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Membership, z.ZodTypeDef, unknown>;
    /** @deprecated use `Membership$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Membership$Outbound, z.ZodTypeDef, Membership>;
    /** @deprecated use `Membership$Outbound` instead. */
    type Outbound = Membership$Outbound;
}
export declare function membershipToJSON(membership: Membership): string;
export declare function membershipFromJSON(jsonString: string): SafeParseResult<Membership, SDKValidationError>;
/** @internal */
export declare const TeamLimited$inboundSchema: z.ZodType<TeamLimited, z.ZodTypeDef, unknown>;
/** @internal */
export type TeamLimited$Outbound = {
    limited: boolean;
    limitedBy: Array<string>;
    saml?: Saml$Outbound | undefined;
    mfaEnforced?: boolean | undefined;
    id: string;
    slug: string;
    name: string | null;
    avatar: string | null;
    membership: Membership$Outbound;
    created: string;
    createdAt: number;
};
/** @internal */
export declare const TeamLimited$outboundSchema: z.ZodType<TeamLimited$Outbound, z.ZodTypeDef, TeamLimited>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace TeamLimited$ {
    /** @deprecated use `TeamLimited$inboundSchema` instead. */
    const inboundSchema: z.ZodType<TeamLimited, z.ZodTypeDef, unknown>;
    /** @deprecated use `TeamLimited$outboundSchema` instead. */
    const outboundSchema: z.ZodType<TeamLimited$Outbound, z.ZodTypeDef, TeamLimited>;
    /** @deprecated use `TeamLimited$Outbound` instead. */
    type Outbound = TeamLimited$Outbound;
}
export declare function teamLimitedToJSON(teamLimited: TeamLimited): string;
export declare function teamLimitedFromJSON(jsonString: string): SafeParseResult<TeamLimited, SDKValidationError>;
//# sourceMappingURL=teamlimited.d.ts.map