/**
 * Cloudflare IAM API
 *
 * Generated from Cloudflare TypeScript SDK.
 * DO NOT EDIT - regenerate with: bun scripts/generate.ts --service iam
 */
import * as Schema from "effect/Schema";
import type * as HttpClient from "effect/unstable/http/HttpClient";
import * as API from "../client/api.ts";
import type { Credentials } from "../credentials.ts";
import { type DefaultErrors } from "../errors.ts";
declare const InvalidMember_base: Schema.Class<InvalidMember, Schema.TaggedStruct<"InvalidMember", {
    readonly code: Schema.Number;
    readonly message: Schema.String;
}>, import("effect/Cause").YieldableError>;
export declare class InvalidMember extends InvalidMember_base {
}
export interface GetPermissionGroupRequest {
    permissionGroupId: string;
    /** Account identifier tag. */
    accountId: string;
}
export declare const GetPermissionGroupRequest: Schema.Schema<GetPermissionGroupRequest>;
export interface GetPermissionGroupResponse {
    /** Identifier of the permission group. */
    id: string;
    /** Attributes associated to the permission group. */
    meta?: {
        key?: string | null;
        value?: string | null;
    } | null;
    /** Name of the permission group. */
    name?: string | null;
}
export declare const GetPermissionGroupResponse: Schema.Schema<GetPermissionGroupResponse>;
export type GetPermissionGroupError = DefaultErrors;
export declare const getPermissionGroup: API.OperationMethod<GetPermissionGroupRequest, GetPermissionGroupResponse, GetPermissionGroupError, Credentials | HttpClient.HttpClient>;
export interface ListPermissionGroupsRequest {
    /** Path param: Account identifier tag. */
    accountId: string;
    page?: number;
    perPage?: number;
    /** Query param: ID of the permission group to be fetched. */
    id?: string;
    /** Query param: Label of the permission group to be fetched. */
    label?: string;
    /** Query param: Name of the permission group to be fetched. */
    name?: string;
}
export declare const ListPermissionGroupsRequest: Schema.Schema<ListPermissionGroupsRequest>;
export interface ListPermissionGroupsResponse {
    result: {
        id: string;
        meta?: {
            key?: string | null;
            value?: string | null;
        } | null;
        name?: string | null;
    }[];
    resultInfo?: {
        count?: number | null;
        page?: number | null;
        perPage?: number | null;
        totalCount?: number | null;
    } | null;
}
export declare const ListPermissionGroupsResponse: Schema.Schema<ListPermissionGroupsResponse>;
export type ListPermissionGroupsError = DefaultErrors;
export declare const listPermissionGroups: API.PaginatedOperationMethod<ListPermissionGroupsRequest, ListPermissionGroupsResponse, ListPermissionGroupsError, Credentials | HttpClient.HttpClient>;
export interface GetResourceGroupRequest {
    resourceGroupId: string;
    /** Account identifier tag. */
    accountId: string;
}
export declare const GetResourceGroupRequest: Schema.Schema<GetResourceGroupRequest>;
export interface GetResourceGroupResponse {
    /** Identifier of the resource group. */
    id: string;
    /** The scope associated to the resource group */
    scope: unknown;
    /** Attributes associated to the resource group. */
    meta?: {
        key?: string | null;
        value?: string | null;
    } | null;
    /** Name of the resource group. */
    name?: string | null;
}
export declare const GetResourceGroupResponse: Schema.Schema<GetResourceGroupResponse>;
export type GetResourceGroupError = DefaultErrors;
export declare const getResourceGroup: API.OperationMethod<GetResourceGroupRequest, GetResourceGroupResponse, GetResourceGroupError, Credentials | HttpClient.HttpClient>;
export interface ListResourceGroupsRequest {
    /** Path param: Account identifier tag. */
    accountId: string;
    /** Query param: ID of the resource group to be fetched. */
    id?: string;
    /** Query param: Name of the resource group to be fetched. */
    name?: string;
}
export declare const ListResourceGroupsRequest: Schema.Schema<ListResourceGroupsRequest>;
export interface ListResourceGroupsResponse {
    result: {
        id: string;
        scope: unknown;
        meta?: {
            key?: string | null;
            value?: string | null;
        } | null;
        name?: string | null;
    }[];
}
export declare const ListResourceGroupsResponse: Schema.Schema<ListResourceGroupsResponse>;
export type ListResourceGroupsError = DefaultErrors;
export declare const listResourceGroups: API.PaginatedOperationMethod<ListResourceGroupsRequest, ListResourceGroupsResponse, ListResourceGroupsError, Credentials | HttpClient.HttpClient>;
export interface CreateResourceGroupRequest {
    /** Path param: Account identifier tag. */
    accountId: string;
    /** Body param: Name of the resource group */
    name: string;
    /** Body param: A scope is a combination of scope objects which provides additional context. */
    scope: {
        key: string;
        objects: {
            key: string;
        }[];
    };
}
export declare const CreateResourceGroupRequest: Schema.Schema<CreateResourceGroupRequest>;
export interface CreateResourceGroupResponse {
    /** Identifier of the resource group. */
    id: string;
    /** The scope associated to the resource group */
    scope: unknown;
    /** Attributes associated to the resource group. */
    meta?: {
        key?: string | null;
        value?: string | null;
    } | null;
    /** Name of the resource group. */
    name?: string | null;
}
export declare const CreateResourceGroupResponse: Schema.Schema<CreateResourceGroupResponse>;
export type CreateResourceGroupError = DefaultErrors;
export declare const createResourceGroup: API.OperationMethod<CreateResourceGroupRequest, CreateResourceGroupResponse, CreateResourceGroupError, Credentials | HttpClient.HttpClient>;
export interface UpdateResourceGroupRequest {
    resourceGroupId: string;
    /** Path param: Account identifier tag. */
    accountId: string;
    /** Body param: Name of the resource group */
    name?: string;
    /** Body param: A scope is a combination of scope objects which provides additional context. */
    scope?: {
        key: string;
        objects: {
            key: string;
        }[];
    };
}
export declare const UpdateResourceGroupRequest: Schema.Schema<UpdateResourceGroupRequest>;
export interface UpdateResourceGroupResponse {
    /** Identifier of the resource group. */
    id: string;
    /** The scope associated to the resource group */
    scope: unknown;
    /** Attributes associated to the resource group. */
    meta?: {
        key?: string | null;
        value?: string | null;
    } | null;
    /** Name of the resource group. */
    name?: string | null;
}
export declare const UpdateResourceGroupResponse: Schema.Schema<UpdateResourceGroupResponse>;
export type UpdateResourceGroupError = DefaultErrors;
export declare const updateResourceGroup: API.OperationMethod<UpdateResourceGroupRequest, UpdateResourceGroupResponse, UpdateResourceGroupError, Credentials | HttpClient.HttpClient>;
export interface DeleteResourceGroupRequest {
    resourceGroupId: string;
    /** Account identifier tag. */
    accountId: string;
}
export declare const DeleteResourceGroupRequest: Schema.Schema<DeleteResourceGroupRequest>;
export interface DeleteResourceGroupResponse {
    /** Identifier */
    id: string;
}
export declare const DeleteResourceGroupResponse: Schema.Schema<DeleteResourceGroupResponse>;
export type DeleteResourceGroupError = DefaultErrors;
export declare const deleteResourceGroup: API.OperationMethod<DeleteResourceGroupRequest, DeleteResourceGroupResponse, DeleteResourceGroupError, Credentials | HttpClient.HttpClient>;
export interface GetSsoRequest {
    ssoConnectorId: string;
    /** Account identifier tag. */
    accountId: string;
}
export declare const GetSsoRequest: Schema.Schema<GetSsoRequest>;
export interface GetSsoResponse {
    /** SSO Connector identifier tag. */
    id?: string | null;
    /** Timestamp for the creation of the SSO connector */
    createdOn?: string | null;
    emailDomain?: string | null;
    enabled?: boolean | null;
    /** Timestamp for the last update of the SSO connector */
    updatedOn?: string | null;
    /** Controls the display of FedRAMP language to the user during SSO login */
    useFedrampLanguage?: boolean | null;
    verification?: {
        code?: string | null;
        status?: "awaiting" | "pending" | "failed" | "verified" | null;
    } | null;
}
export declare const GetSsoResponse: Schema.Schema<GetSsoResponse>;
export type GetSsoError = DefaultErrors;
export declare const getSso: API.OperationMethod<GetSsoRequest, GetSsoResponse, GetSsoError, Credentials | HttpClient.HttpClient>;
export interface ListSsosRequest {
    /** Account identifier tag. */
    accountId: string;
}
export declare const ListSsosRequest: Schema.Schema<ListSsosRequest>;
export interface ListSsosResponse {
    result: {
        id?: string | null;
        createdOn?: string | null;
        emailDomain?: string | null;
        enabled?: boolean | null;
        updatedOn?: string | null;
        useFedrampLanguage?: boolean | null;
        verification?: {
            code?: string | null;
            status?: "awaiting" | "pending" | "failed" | "verified" | null;
        } | null;
    }[];
}
export declare const ListSsosResponse: Schema.Schema<ListSsosResponse>;
export type ListSsosError = DefaultErrors;
export declare const listSsos: API.PaginatedOperationMethod<ListSsosRequest, ListSsosResponse, ListSsosError, Credentials | HttpClient.HttpClient>;
export interface CreateSsoRequest {
    /** Path param: Account identifier tag. */
    accountId: string;
    /** Body param: Email domain of the new SSO connector */
    emailDomain: string;
    /** Body param: Begin the verification process after creation */
    beginVerification?: boolean;
    /** Body param: Controls the display of FedRAMP language to the user during SSO login */
    useFedrampLanguage?: boolean;
}
export declare const CreateSsoRequest: Schema.Schema<CreateSsoRequest>;
export interface CreateSsoResponse {
    /** SSO Connector identifier tag. */
    id?: string | null;
    /** Timestamp for the creation of the SSO connector */
    createdOn?: string | null;
    emailDomain?: string | null;
    enabled?: boolean | null;
    /** Timestamp for the last update of the SSO connector */
    updatedOn?: string | null;
    /** Controls the display of FedRAMP language to the user during SSO login */
    useFedrampLanguage?: boolean | null;
    verification?: {
        code?: string | null;
        status?: "awaiting" | "pending" | "failed" | "verified" | null;
    } | null;
}
export declare const CreateSsoResponse: Schema.Schema<CreateSsoResponse>;
export type CreateSsoError = DefaultErrors;
export declare const createSso: API.OperationMethod<CreateSsoRequest, CreateSsoResponse, CreateSsoError, Credentials | HttpClient.HttpClient>;
export interface PatchSsoRequest {
    ssoConnectorId: string;
    /** Path param: Account identifier tag. */
    accountId: string;
    /** Body param: SSO Connector enabled state */
    enabled?: boolean;
    /** Body param: Controls the display of FedRAMP language to the user during SSO login */
    useFedrampLanguage?: boolean;
}
export declare const PatchSsoRequest: Schema.Schema<PatchSsoRequest>;
export interface PatchSsoResponse {
    /** SSO Connector identifier tag. */
    id?: string | null;
    /** Timestamp for the creation of the SSO connector */
    createdOn?: string | null;
    emailDomain?: string | null;
    enabled?: boolean | null;
    /** Timestamp for the last update of the SSO connector */
    updatedOn?: string | null;
    /** Controls the display of FedRAMP language to the user during SSO login */
    useFedrampLanguage?: boolean | null;
    verification?: {
        code?: string | null;
        status?: "awaiting" | "pending" | "failed" | "verified" | null;
    } | null;
}
export declare const PatchSsoResponse: Schema.Schema<PatchSsoResponse>;
export type PatchSsoError = DefaultErrors;
export declare const patchSso: API.OperationMethod<PatchSsoRequest, PatchSsoResponse, PatchSsoError, Credentials | HttpClient.HttpClient>;
export interface DeleteSsoRequest {
    ssoConnectorId: string;
    /** Account identifier tag. */
    accountId: string;
}
export declare const DeleteSsoRequest: Schema.Schema<DeleteSsoRequest>;
export interface DeleteSsoResponse {
    /** Identifier */
    id: string;
}
export declare const DeleteSsoResponse: Schema.Schema<DeleteSsoResponse>;
export type DeleteSsoError = DefaultErrors;
export declare const deleteSso: API.OperationMethod<DeleteSsoRequest, DeleteSsoResponse, DeleteSsoError, Credentials | HttpClient.HttpClient>;
export interface GetUserGroupRequest {
    userGroupId: string;
    /** Account identifier tag. */
    accountId: string;
}
export declare const GetUserGroupRequest: Schema.Schema<GetUserGroupRequest>;
export interface GetUserGroupResponse {
    /** User Group identifier tag. */
    id: string;
    /** Timestamp for the creation of the user group */
    createdOn: string;
    /** Last time the user group was modified. */
    modifiedOn: string;
    /** Name of the user group. */
    name: string;
    /** Policies attached to the User group */
    policies?: {
        id?: string | null;
        access?: "allow" | "deny" | null;
        permissionGroups?: {
            id: string;
            meta?: {
                key?: string | null;
                value?: string | null;
            } | null;
            name?: string | null;
        }[] | null;
        resourceGroups?: {
            id: string;
            scope: unknown;
            meta?: {
                key?: string | null;
                value?: string | null;
            } | null;
            name?: string | null;
        }[] | null;
    }[] | null;
}
export declare const GetUserGroupResponse: Schema.Schema<GetUserGroupResponse>;
export type GetUserGroupError = DefaultErrors;
export declare const getUserGroup: API.OperationMethod<GetUserGroupRequest, GetUserGroupResponse, GetUserGroupError, Credentials | HttpClient.HttpClient>;
export interface ListUserGroupsRequest {
    /** Path param: Account identifier tag. */
    accountId: string;
    page?: number;
    perPage?: number;
    /** Query param: ID of the user group to be fetched. */
    id?: string;
    /** Query param: The sort order of returned user groups by name. Default sort order is ascending. To switch to descending, set this parameter to "desc" */
    direction?: string;
    /** Query param: A string used for searching for user groups containing that substring. */
    fuzzyName?: string;
    /** Query param: Name of the user group to be fetched. */
    name?: string;
}
export declare const ListUserGroupsRequest: Schema.Schema<ListUserGroupsRequest>;
export interface ListUserGroupsResponse {
    result: {
        id: string;
        createdOn: string;
        modifiedOn: string;
        name: string;
        policies?: {
            id?: string | null;
            access?: "allow" | "deny" | null;
            permissionGroups?: {
                id: string;
                meta?: {
                    key?: string | null;
                    value?: string | null;
                } | null;
                name?: string | null;
            }[] | null;
            resourceGroups?: {
                id: string;
                scope: unknown;
                meta?: {
                    key?: string | null;
                    value?: string | null;
                } | null;
                name?: string | null;
            }[] | null;
        }[] | null;
    }[];
    resultInfo?: {
        count?: number | null;
        page?: number | null;
        perPage?: number | null;
        totalCount?: number | null;
    } | null;
}
export declare const ListUserGroupsResponse: Schema.Schema<ListUserGroupsResponse>;
export type ListUserGroupsError = DefaultErrors;
export declare const listUserGroups: API.PaginatedOperationMethod<ListUserGroupsRequest, ListUserGroupsResponse, ListUserGroupsError, Credentials | HttpClient.HttpClient>;
export interface CreateUserGroupRequest {
    /** Path param: Account identifier tag. */
    accountId: string;
    /** Body param: Name of the User group. */
    name: string;
    /** Body param: Policies attached to the User group */
    policies: {
        access: "allow" | "deny";
        permissionGroups: {
            id: string;
        }[];
        resourceGroups: {
            id: string;
        }[];
    }[];
}
export declare const CreateUserGroupRequest: Schema.Schema<CreateUserGroupRequest>;
export interface CreateUserGroupResponse {
    /** User Group identifier tag. */
    id: string;
    /** Timestamp for the creation of the user group */
    createdOn: string;
    /** Last time the user group was modified. */
    modifiedOn: string;
    /** Name of the user group. */
    name: string;
    /** Policies attached to the User group */
    policies?: {
        id?: string | null;
        access?: "allow" | "deny" | null;
        permissionGroups?: {
            id: string;
            meta?: {
                key?: string | null;
                value?: string | null;
            } | null;
            name?: string | null;
        }[] | null;
        resourceGroups?: {
            id: string;
            scope: unknown;
            meta?: {
                key?: string | null;
                value?: string | null;
            } | null;
            name?: string | null;
        }[] | null;
    }[] | null;
}
export declare const CreateUserGroupResponse: Schema.Schema<CreateUserGroupResponse>;
export type CreateUserGroupError = DefaultErrors;
export declare const createUserGroup: API.OperationMethod<CreateUserGroupRequest, CreateUserGroupResponse, CreateUserGroupError, Credentials | HttpClient.HttpClient>;
export interface UpdateUserGroupRequest {
    userGroupId: string;
    /** Path param: Account identifier tag. */
    accountId: string;
    /** Body param: Name of the User group. */
    name?: string;
    /** Body param: Policies attached to the User group */
    policies?: {
        id: string;
        access: "allow" | "deny";
        permissionGroups: {
            id: string;
        }[];
        resourceGroups: {
            id: string;
        }[];
    }[];
}
export declare const UpdateUserGroupRequest: Schema.Schema<UpdateUserGroupRequest>;
export interface UpdateUserGroupResponse {
    /** User Group identifier tag. */
    id: string;
    /** Timestamp for the creation of the user group */
    createdOn: string;
    /** Last time the user group was modified. */
    modifiedOn: string;
    /** Name of the user group. */
    name: string;
    /** Policies attached to the User group */
    policies?: {
        id?: string | null;
        access?: "allow" | "deny" | null;
        permissionGroups?: {
            id: string;
            meta?: {
                key?: string | null;
                value?: string | null;
            } | null;
            name?: string | null;
        }[] | null;
        resourceGroups?: {
            id: string;
            scope: unknown;
            meta?: {
                key?: string | null;
                value?: string | null;
            } | null;
            name?: string | null;
        }[] | null;
    }[] | null;
}
export declare const UpdateUserGroupResponse: Schema.Schema<UpdateUserGroupResponse>;
export type UpdateUserGroupError = DefaultErrors;
export declare const updateUserGroup: API.OperationMethod<UpdateUserGroupRequest, UpdateUserGroupResponse, UpdateUserGroupError, Credentials | HttpClient.HttpClient>;
export interface DeleteUserGroupRequest {
    userGroupId: string;
    /** Account identifier tag. */
    accountId: string;
}
export declare const DeleteUserGroupRequest: Schema.Schema<DeleteUserGroupRequest>;
export interface DeleteUserGroupResponse {
    /** Identifier */
    id: string;
}
export declare const DeleteUserGroupResponse: Schema.Schema<DeleteUserGroupResponse>;
export type DeleteUserGroupError = DefaultErrors;
export declare const deleteUserGroup: API.OperationMethod<DeleteUserGroupRequest, DeleteUserGroupResponse, DeleteUserGroupError, Credentials | HttpClient.HttpClient>;
export interface ListUserGroupMembersRequest {
    userGroupId: string;
    /** Path param: Account identifier tag. */
    accountId: string;
    page?: number;
    perPage?: number;
}
export declare const ListUserGroupMembersRequest: Schema.Schema<ListUserGroupMembersRequest>;
export interface ListUserGroupMembersResponse {
    result: {
        id: string;
        email?: string | null;
        status?: "accepted" | "pending" | null;
    }[];
    resultInfo?: {
        count?: number | null;
        page?: number | null;
        perPage?: number | null;
        totalCount?: number | null;
    } | null;
}
export declare const ListUserGroupMembersResponse: Schema.Schema<ListUserGroupMembersResponse>;
export type ListUserGroupMembersError = DefaultErrors;
export declare const listUserGroupMembers: API.PaginatedOperationMethod<ListUserGroupMembersRequest, ListUserGroupMembersResponse, ListUserGroupMembersError, Credentials | HttpClient.HttpClient>;
export interface CreateUserGroupMemberRequest {
    userGroupId: string;
    /** Path param: Account identifier tag. */
    accountId: string;
    /** Body param: */
    body: {
        id: string;
    }[];
}
export declare const CreateUserGroupMemberRequest: Schema.Schema<CreateUserGroupMemberRequest>;
export interface CreateUserGroupMemberResponse {
    /** Account member identifier. */
    id: string;
    /** The contact email address of the user. */
    email?: string | null;
    /** The member's status in the account. */
    status?: "accepted" | "pending" | null;
}
export declare const CreateUserGroupMemberResponse: Schema.Schema<CreateUserGroupMemberResponse>;
export type CreateUserGroupMemberError = DefaultErrors | InvalidMember;
export declare const createUserGroupMember: API.OperationMethod<CreateUserGroupMemberRequest, CreateUserGroupMemberResponse, CreateUserGroupMemberError, Credentials | HttpClient.HttpClient>;
export interface UpdateUserGroupMemberRequest {
    userGroupId: string;
    /** Path param: Account identifier tag. */
    accountId: string;
    /** Body param: Set/Replace members to a user group. */
    body: {
        id: string;
    }[];
}
export declare const UpdateUserGroupMemberRequest: Schema.Schema<UpdateUserGroupMemberRequest>;
export interface UpdateUserGroupMemberResponse {
    result: {
        id: string;
        email?: string | null;
        status?: "accepted" | "pending" | null;
    }[];
}
export declare const UpdateUserGroupMemberResponse: Schema.Schema<UpdateUserGroupMemberResponse>;
export type UpdateUserGroupMemberError = DefaultErrors;
export declare const updateUserGroupMember: API.PaginatedOperationMethod<UpdateUserGroupMemberRequest, UpdateUserGroupMemberResponse, UpdateUserGroupMemberError, Credentials | HttpClient.HttpClient>;
export interface DeleteUserGroupMemberRequest {
    userGroupId: string;
    memberId: string;
    /** Account identifier tag. */
    accountId: string;
}
export declare const DeleteUserGroupMemberRequest: Schema.Schema<DeleteUserGroupMemberRequest>;
export interface DeleteUserGroupMemberResponse {
    /** Account member identifier. */
    id: string;
    /** The contact email address of the user. */
    email?: string | null;
    /** The member's status in the account. */
    status?: "accepted" | "pending" | null;
}
export declare const DeleteUserGroupMemberResponse: Schema.Schema<DeleteUserGroupMemberResponse>;
export type DeleteUserGroupMemberError = DefaultErrors | InvalidMember;
export declare const deleteUserGroupMember: API.OperationMethod<DeleteUserGroupMemberRequest, DeleteUserGroupMemberResponse, DeleteUserGroupMemberError, Credentials | HttpClient.HttpClient>;
export interface BeginVerificationSsoRequest {
    ssoConnectorId: string;
    /** Account identifier tag. */
    accountId: string;
}
export declare const BeginVerificationSsoRequest: Schema.Schema<BeginVerificationSsoRequest>;
export interface BeginVerificationSsoResponse {
    errors: {
        code: number;
        message: string;
        documentationUrl?: string | null;
        source?: {
            pointer?: string | null;
        } | null;
    }[];
    messages: {
        code: number;
        message: string;
        documentationUrl?: string | null;
        source?: {
            pointer?: string | null;
        } | null;
    }[];
    /** Whether the API call was successful. */
    success: true;
}
export declare const BeginVerificationSsoResponse: Schema.Schema<BeginVerificationSsoResponse>;
export type BeginVerificationSsoError = DefaultErrors;
export declare const beginVerificationSso: API.OperationMethod<BeginVerificationSsoRequest, BeginVerificationSsoResponse, BeginVerificationSsoError, Credentials | HttpClient.HttpClient>;
export {};
//# sourceMappingURL=iam.d.ts.map