import * as HttpClient from "effect/unstable/http/HttpClient";
import * as redacted from "effect/Redacted";
import * as S from "effect/Schema";
import * as stream from "effect/Stream";
import * as API from "../client/api.ts";
import type { Credentials } from "../credentials.ts";
import type { CommonErrors } from "../errors.ts";
import type { Region } from "../region.ts";
export type EmailContactArn = string;
export type TagKey = string;
export type TagValue = string;
export type ErrorMessage = string;
export type ResourceId = string;
export type ResourceType = string;
export type ServiceCode = string;
export type QuotaCode = string;
export type EmailContactName = string | redacted.Redacted<string>;
export type EmailContactAddress = string;
export type SensitiveEmailContactAddress = string | redacted.Redacted<string>;
export type EmailContactStatus = string;
export type CreationTime = Date;
export type UpdateTime = Date;
export type Token = string | redacted.Redacted<string>;
export interface ListTagsForResourceRequest {
    arn: string;
}
export declare const ListTagsForResourceRequest: S.Schema<ListTagsForResourceRequest>;
export type TagMap = {
    [key: string]: string | undefined;
};
export declare const TagMap: S.$Record<S.String, S.optional<S.String>>;
export interface ListTagsForResourceResponse {
    tags?: {
        [key: string]: string | undefined;
    };
}
export declare const ListTagsForResourceResponse: S.Schema<ListTagsForResourceResponse>;
export type ValidationExceptionReason = "fieldValidationFailed" | "other" | (string & {});
export declare const ValidationExceptionReason: S.String;
export interface ValidationExceptionField {
    name: string;
    message: string;
}
export declare const ValidationExceptionField: S.Schema<ValidationExceptionField>;
export type ValidationExceptionFieldList = ValidationExceptionField[];
export declare const ValidationExceptionFieldList: S.$Array<S.Schema<ValidationExceptionField>>;
export interface TagResourceRequest {
    arn: string;
    tags: {
        [key: string]: string | undefined;
    };
}
export declare const TagResourceRequest: S.Schema<TagResourceRequest>;
export interface TagResourceResponse {
}
export declare const TagResourceResponse: S.Schema<TagResourceResponse>;
export type TagKeys = string[];
export declare const TagKeys: S.$Array<S.String>;
export interface UntagResourceRequest {
    arn: string;
    tagKeys: string[];
}
export declare const UntagResourceRequest: S.Schema<UntagResourceRequest>;
export interface UntagResourceResponse {
}
export declare const UntagResourceResponse: S.Schema<UntagResourceResponse>;
export interface CreateEmailContactRequest {
    name: string | redacted.Redacted<string>;
    emailAddress: string;
    tags?: {
        [key: string]: string | undefined;
    };
}
export declare const CreateEmailContactRequest: S.Schema<CreateEmailContactRequest>;
export interface CreateEmailContactResponse {
    arn: string;
}
export declare const CreateEmailContactResponse: S.Schema<CreateEmailContactResponse>;
export interface GetEmailContactRequest {
    arn: string;
}
export declare const GetEmailContactRequest: S.Schema<GetEmailContactRequest>;
export interface EmailContact {
    arn: string;
    name: string | redacted.Redacted<string>;
    address: string | redacted.Redacted<string>;
    status: string;
    creationTime: Date;
    updateTime: Date;
}
export declare const EmailContact: S.Schema<EmailContact>;
export interface GetEmailContactResponse {
    emailContact: EmailContact;
}
export declare const GetEmailContactResponse: S.Schema<GetEmailContactResponse>;
export interface DeleteEmailContactRequest {
    arn: string;
}
export declare const DeleteEmailContactRequest: S.Schema<DeleteEmailContactRequest>;
export interface DeleteEmailContactResponse {
}
export declare const DeleteEmailContactResponse: S.Schema<DeleteEmailContactResponse>;
export interface ListEmailContactsRequest {
    maxResults?: number;
    nextToken?: string;
}
export declare const ListEmailContactsRequest: S.Schema<ListEmailContactsRequest>;
export type EmailContacts = EmailContact[];
export declare const EmailContacts: S.$Array<S.Schema<EmailContact>>;
export interface ListEmailContactsResponse {
    nextToken?: string;
    emailContacts: EmailContact[];
}
export declare const ListEmailContactsResponse: S.Schema<ListEmailContactsResponse>;
export interface ActivateEmailContactRequest {
    arn: string;
    code: string | redacted.Redacted<string>;
}
export declare const ActivateEmailContactRequest: S.Schema<ActivateEmailContactRequest>;
export interface ActivateEmailContactResponse {
}
export declare const ActivateEmailContactResponse: S.Schema<ActivateEmailContactResponse>;
export interface SendActivationCodeRequest {
    arn: string;
}
export declare const SendActivationCodeRequest: S.Schema<SendActivationCodeRequest>;
export interface SendActivationCodeResponse {
}
export declare const SendActivationCodeResponse: S.Schema<SendActivationCodeResponse>;
declare const AccessDeniedException_base: S.Class<AccessDeniedException, S.TaggedStruct<"AccessDeniedException", {
    readonly message: S.String;
}>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
    "@distilled.cloud/error/categories": {
        AuthError: true;
    };
});
export declare class AccessDeniedException extends AccessDeniedException_base {
}
declare const InternalServerException_base: S.Class<InternalServerException, S.TaggedStruct<"InternalServerException", {
    readonly message: S.String;
}>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
    "@distilled.cloud/error/categories": {
        ServerError: true;
    };
}) & (new (...args: any[]) => {
    "@distilled.cloud/error/categories": {
        RetryableError: true;
    };
});
export declare class InternalServerException extends InternalServerException_base {
}
declare const ResourceNotFoundException_base: S.Class<ResourceNotFoundException, S.TaggedStruct<"ResourceNotFoundException", {
    readonly message: S.String;
    readonly resourceId: S.String;
    readonly resourceType: S.String;
}>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
    "@distilled.cloud/error/categories": {
        BadRequestError: true;
    };
});
export declare class ResourceNotFoundException extends ResourceNotFoundException_base {
}
declare const ThrottlingException_base: S.Class<ThrottlingException, S.TaggedStruct<"ThrottlingException", {
    readonly message: S.String;
    readonly serviceCode: S.optional<S.String>;
    readonly quotaCode: S.optional<S.String>;
    readonly retryAfterSeconds: S.optional<S.Number>;
}>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
    "@distilled.cloud/error/categories": {
        ThrottlingError: true;
    };
}) & (new (...args: any[]) => {
    "@distilled.cloud/error/categories": {
        RetryableError: true;
    };
});
export declare class ThrottlingException extends ThrottlingException_base {
}
declare const ValidationException_base: S.Class<ValidationException, S.TaggedStruct<"ValidationException", {
    readonly message: S.String;
    readonly reason: S.String;
    readonly fieldList: S.optional<S.$Array<S.Schema<ValidationExceptionField>>>;
}>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
    "@distilled.cloud/error/categories": {
        BadRequestError: true;
    };
});
export declare class ValidationException extends ValidationException_base {
}
declare const ConflictException_base: S.Class<ConflictException, S.TaggedStruct<"ConflictException", {
    readonly message: S.String;
    readonly resourceId: S.String;
    readonly resourceType: S.String;
}>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
    "@distilled.cloud/error/categories": {
        ConflictError: true;
    };
});
export declare class ConflictException extends ConflictException_base {
}
declare const ServiceQuotaExceededException_base: S.Class<ServiceQuotaExceededException, S.TaggedStruct<"ServiceQuotaExceededException", {
    readonly message: S.String;
    readonly resourceId: S.String;
    readonly resourceType: S.String;
    readonly serviceCode: S.String;
    readonly quotaCode: S.String;
}>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
    "@distilled.cloud/error/categories": {
        QuotaError: true;
    };
});
export declare class ServiceQuotaExceededException extends ServiceQuotaExceededException_base {
}
export type ListTagsForResourceError = AccessDeniedException | InternalServerException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Lists all of the tags associated with the Amazon Resource Name (ARN) that you specify. The resource can be a user, server, or role.
 */
export declare const listTagsForResource: API.OperationMethod<ListTagsForResourceRequest, ListTagsForResourceResponse, ListTagsForResourceError, Credentials | Region | HttpClient.HttpClient>;
export type TagResourceError = AccessDeniedException | InternalServerException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Attaches a key-value pair to a resource, as identified by its Amazon Resource Name (ARN). Taggable resources in AWS User Notifications Contacts include email contacts.
 */
export declare const tagResource: API.OperationMethod<TagResourceRequest, TagResourceResponse, TagResourceError, Credentials | Region | HttpClient.HttpClient>;
export type UntagResourceError = AccessDeniedException | InternalServerException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Detaches a key-value pair from a resource, as identified by its Amazon Resource Name (ARN). Taggable resources in AWS User Notifications Contacts include email contacts..
 */
export declare const untagResource: API.OperationMethod<UntagResourceRequest, UntagResourceResponse, UntagResourceError, Credentials | Region | HttpClient.HttpClient>;
export type CreateEmailContactError = AccessDeniedException | ConflictException | InternalServerException | ServiceQuotaExceededException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Creates an email contact for the provided email address.
 */
export declare const createEmailContact: API.OperationMethod<CreateEmailContactRequest, CreateEmailContactResponse, CreateEmailContactError, Credentials | Region | HttpClient.HttpClient>;
export type GetEmailContactError = AccessDeniedException | InternalServerException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Returns an email contact.
 */
export declare const getEmailContact: API.OperationMethod<GetEmailContactRequest, GetEmailContactResponse, GetEmailContactError, Credentials | Region | HttpClient.HttpClient>;
export type DeleteEmailContactError = AccessDeniedException | ConflictException | InternalServerException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Deletes an email contact.
 *
 * Deleting an email contact removes it from all associated notification configurations.
 */
export declare const deleteEmailContact: API.OperationMethod<DeleteEmailContactRequest, DeleteEmailContactResponse, DeleteEmailContactError, Credentials | Region | HttpClient.HttpClient>;
export type ListEmailContactsError = AccessDeniedException | InternalServerException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Lists all email contacts created under the Account.
 */
export declare const listEmailContacts: API.OperationMethod<ListEmailContactsRequest, ListEmailContactsResponse, ListEmailContactsError, Credentials | Region | HttpClient.HttpClient> & {
    pages: (input: ListEmailContactsRequest) => stream.Stream<ListEmailContactsResponse, ListEmailContactsError, Credentials | Region | HttpClient.HttpClient>;
    items: (input: ListEmailContactsRequest) => stream.Stream<EmailContact, ListEmailContactsError, Credentials | Region | HttpClient.HttpClient>;
};
export type ActivateEmailContactError = AccessDeniedException | ConflictException | InternalServerException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Activates an email contact using an activation code. This code is in the activation email sent to the email address associated with this email contact.
 */
export declare const activateEmailContact: API.OperationMethod<ActivateEmailContactRequest, ActivateEmailContactResponse, ActivateEmailContactError, Credentials | Region | HttpClient.HttpClient>;
export type SendActivationCodeError = AccessDeniedException | ConflictException | InternalServerException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Sends an activation email to the email address associated with the specified email contact.
 *
 * It might take a few minutes for the activation email to arrive. If it doesn't arrive, check in your spam folder or try sending another activation email.
 */
export declare const sendActivationCode: API.OperationMethod<SendActivationCodeRequest, SendActivationCodeResponse, SendActivationCodeError, Credentials | Region | HttpClient.HttpClient>;
export {};
//# sourceMappingURL=notificationscontacts.d.ts.map