import * as HttpClient from "effect/unstable/http/HttpClient";
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 ResourceId = string;
export type Name = string;
export type TagKey = string;
export type TagValue = string;
export type AccountId = string;
export type Rfc3339Timestamp = Date;
export type ExceptionMessage = string;
export type Arn = string;
export type ResourceProperties = string;
export type CreatorRequestId = string;
export type MaxResults = number;
export type NextToken = string;
export interface Tag {
    Key: string;
    Value: string;
}
export declare const Tag: S.Schema<Tag>;
export type TagList = Tag[];
export declare const TagList: S.$Array<S.Schema<Tag>>;
export interface AssociateProfileRequest {
    ProfileId: string;
    ResourceId: string;
    Name: string;
    Tags?: Tag[];
}
export declare const AssociateProfileRequest: S.Schema<AssociateProfileRequest>;
export type ProfileStatus = "COMPLETE" | "DELETING" | "UPDATING" | "CREATING" | "DELETED" | "FAILED" | (string & {});
export declare const ProfileStatus: S.String;
export interface ProfileAssociation {
    Id?: string;
    Name?: string;
    OwnerId?: string;
    ProfileId?: string;
    ResourceId?: string;
    Status?: ProfileStatus;
    StatusMessage?: string;
    CreationTime?: Date;
    ModificationTime?: Date;
}
export declare const ProfileAssociation: S.Schema<ProfileAssociation>;
export interface AssociateProfileResponse {
    ProfileAssociation?: ProfileAssociation;
}
export declare const AssociateProfileResponse: S.Schema<AssociateProfileResponse>;
export interface AssociateResourceToProfileRequest {
    ProfileId: string;
    ResourceArn: string;
    Name: string;
    ResourceProperties?: string;
}
export declare const AssociateResourceToProfileRequest: S.Schema<AssociateResourceToProfileRequest>;
export interface ProfileResourceAssociation {
    Id?: string;
    Name?: string;
    OwnerId?: string;
    ProfileId?: string;
    ResourceArn?: string;
    ResourceType?: string;
    ResourceProperties?: string;
    Status?: ProfileStatus;
    StatusMessage?: string;
    CreationTime?: Date;
    ModificationTime?: Date;
}
export declare const ProfileResourceAssociation: S.Schema<ProfileResourceAssociation>;
export interface AssociateResourceToProfileResponse {
    ProfileResourceAssociation?: ProfileResourceAssociation;
}
export declare const AssociateResourceToProfileResponse: S.Schema<AssociateResourceToProfileResponse>;
export interface CreateProfileRequest {
    Name: string;
    ClientToken: string;
    Tags?: Tag[];
}
export declare const CreateProfileRequest: S.Schema<CreateProfileRequest>;
export type ShareStatus = "NOT_SHARED" | "SHARED_WITH_ME" | "SHARED_BY_ME" | (string & {});
export declare const ShareStatus: S.String;
export interface Profile {
    Id?: string;
    Arn?: string;
    Name?: string;
    OwnerId?: string;
    Status?: ProfileStatus;
    StatusMessage?: string;
    ShareStatus?: ShareStatus;
    CreationTime?: Date;
    ModificationTime?: Date;
    ClientToken?: string;
}
export declare const Profile: S.Schema<Profile>;
export interface CreateProfileResponse {
    Profile?: Profile;
}
export declare const CreateProfileResponse: S.Schema<CreateProfileResponse>;
export interface DeleteProfileRequest {
    ProfileId: string;
}
export declare const DeleteProfileRequest: S.Schema<DeleteProfileRequest>;
export interface DeleteProfileResponse {
    Profile?: Profile;
}
export declare const DeleteProfileResponse: S.Schema<DeleteProfileResponse>;
export interface DisassociateProfileRequest {
    ProfileId: string;
    ResourceId: string;
}
export declare const DisassociateProfileRequest: S.Schema<DisassociateProfileRequest>;
export interface DisassociateProfileResponse {
    ProfileAssociation?: ProfileAssociation;
}
export declare const DisassociateProfileResponse: S.Schema<DisassociateProfileResponse>;
export interface DisassociateResourceFromProfileRequest {
    ProfileId: string;
    ResourceArn: string;
}
export declare const DisassociateResourceFromProfileRequest: S.Schema<DisassociateResourceFromProfileRequest>;
export interface DisassociateResourceFromProfileResponse {
    ProfileResourceAssociation?: ProfileResourceAssociation;
}
export declare const DisassociateResourceFromProfileResponse: S.Schema<DisassociateResourceFromProfileResponse>;
export interface GetProfileRequest {
    ProfileId: string;
}
export declare const GetProfileRequest: S.Schema<GetProfileRequest>;
export interface GetProfileResponse {
    Profile?: Profile;
}
export declare const GetProfileResponse: S.Schema<GetProfileResponse>;
export interface GetProfileAssociationRequest {
    ProfileAssociationId: string;
}
export declare const GetProfileAssociationRequest: S.Schema<GetProfileAssociationRequest>;
export interface GetProfileAssociationResponse {
    ProfileAssociation?: ProfileAssociation;
}
export declare const GetProfileAssociationResponse: S.Schema<GetProfileAssociationResponse>;
export interface GetProfileResourceAssociationRequest {
    ProfileResourceAssociationId: string;
}
export declare const GetProfileResourceAssociationRequest: S.Schema<GetProfileResourceAssociationRequest>;
export interface GetProfileResourceAssociationResponse {
    ProfileResourceAssociation?: ProfileResourceAssociation;
}
export declare const GetProfileResourceAssociationResponse: S.Schema<GetProfileResourceAssociationResponse>;
export interface ListProfileAssociationsRequest {
    ResourceId?: string;
    ProfileId?: string;
    MaxResults?: number;
    NextToken?: string;
}
export declare const ListProfileAssociationsRequest: S.Schema<ListProfileAssociationsRequest>;
export type ProfileAssociations = ProfileAssociation[];
export declare const ProfileAssociations: S.$Array<S.Schema<ProfileAssociation>>;
export interface ListProfileAssociationsResponse {
    ProfileAssociations?: ProfileAssociation[];
    NextToken?: string;
}
export declare const ListProfileAssociationsResponse: S.Schema<ListProfileAssociationsResponse>;
export interface ListProfileResourceAssociationsRequest {
    ProfileId: string;
    ResourceType?: string;
    MaxResults?: number;
    NextToken?: string;
}
export declare const ListProfileResourceAssociationsRequest: S.Schema<ListProfileResourceAssociationsRequest>;
export type ProfileResourceAssociations = ProfileResourceAssociation[];
export declare const ProfileResourceAssociations: S.$Array<S.Schema<ProfileResourceAssociation>>;
export interface ListProfileResourceAssociationsResponse {
    ProfileResourceAssociations?: ProfileResourceAssociation[];
    NextToken?: string;
}
export declare const ListProfileResourceAssociationsResponse: S.Schema<ListProfileResourceAssociationsResponse>;
export interface ListProfilesRequest {
    MaxResults?: number;
    NextToken?: string;
}
export declare const ListProfilesRequest: S.Schema<ListProfilesRequest>;
export interface ProfileSummary {
    Id?: string;
    Arn?: string;
    Name?: string;
    ShareStatus?: ShareStatus;
}
export declare const ProfileSummary: S.Schema<ProfileSummary>;
export type ProfileSummaryList = ProfileSummary[];
export declare const ProfileSummaryList: S.$Array<S.Schema<ProfileSummary>>;
export interface ListProfilesResponse {
    ProfileSummaries?: ProfileSummary[];
    NextToken?: string;
}
export declare const ListProfilesResponse: S.Schema<ListProfilesResponse>;
export interface ListTagsForResourceRequest {
    ResourceArn: 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 interface TagResourceRequest {
    ResourceArn: 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 TagKeyList = string[];
export declare const TagKeyList: S.$Array<S.String>;
export interface UntagResourceRequest {
    ResourceArn: string;
    TagKeys: string[];
}
export declare const UntagResourceRequest: S.Schema<UntagResourceRequest>;
export interface UntagResourceResponse {
}
export declare const UntagResourceResponse: S.Schema<UntagResourceResponse>;
export interface UpdateProfileResourceAssociationRequest {
    ProfileResourceAssociationId: string;
    Name?: string;
    ResourceProperties?: string;
}
export declare const UpdateProfileResourceAssociationRequest: S.Schema<UpdateProfileResourceAssociationRequest>;
export interface UpdateProfileResourceAssociationResponse {
    ProfileResourceAssociation?: ProfileResourceAssociation;
}
export declare const UpdateProfileResourceAssociationResponse: S.Schema<UpdateProfileResourceAssociationResponse>;
declare const AccessDeniedException_base: S.Class<AccessDeniedException, S.TaggedStruct<"AccessDeniedException", {
    readonly Message: S.optional<S.String>;
}>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
    "@distilled.cloud/error/categories": {
        AuthError: true;
    };
});
export declare class AccessDeniedException extends AccessDeniedException_base {
}
declare const ConflictException_base: S.Class<ConflictException, S.TaggedStruct<"ConflictException", {
    readonly Message: S.optional<S.String>;
}>, import("effect/Cause").YieldableError>;
export declare class ConflictException extends ConflictException_base {
}
declare const InvalidParameterException_base: S.Class<InvalidParameterException, S.TaggedStruct<"InvalidParameterException", {
    readonly Message: S.String;
    readonly FieldName: S.optional<S.String>;
}>, import("effect/Cause").YieldableError>;
export declare class InvalidParameterException extends InvalidParameterException_base {
}
declare const LimitExceededException_base: S.Class<LimitExceededException, S.TaggedStruct<"LimitExceededException", {
    readonly Message: S.optional<S.String>;
    readonly ResourceType: S.optional<S.String>;
}>, import("effect/Cause").YieldableError>;
export declare class LimitExceededException extends LimitExceededException_base {
}
declare const ResourceExistsException_base: S.Class<ResourceExistsException, S.TaggedStruct<"ResourceExistsException", {
    readonly Message: S.optional<S.String>;
    readonly ResourceType: S.optional<S.String>;
}>, import("effect/Cause").YieldableError>;
export declare class ResourceExistsException extends ResourceExistsException_base {
}
declare const ResourceNotFoundException_base: S.Class<ResourceNotFoundException, S.TaggedStruct<"ResourceNotFoundException", {
    readonly Message: S.optional<S.String>;
    readonly ResourceType: S.optional<S.String>;
}>, import("effect/Cause").YieldableError>;
export declare class ResourceNotFoundException extends ResourceNotFoundException_base {
}
declare const ThrottlingException_base: S.Class<ThrottlingException, S.TaggedStruct<"ThrottlingException", {
    readonly Message: S.optional<S.String>;
}>, import("effect/Cause").YieldableError>;
export declare class ThrottlingException extends ThrottlingException_base {
}
declare const ValidationException_base: S.Class<ValidationException, S.TaggedStruct<"ValidationException", {
    readonly Message: S.optional<S.String>;
}>, import("effect/Cause").YieldableError>;
export declare class ValidationException extends ValidationException_base {
}
declare const InternalServiceErrorException_base: S.Class<InternalServiceErrorException, S.TaggedStruct<"InternalServiceErrorException", {
    readonly Message: S.optional<S.String>;
}>, import("effect/Cause").YieldableError>;
export declare class InternalServiceErrorException extends InternalServiceErrorException_base {
}
declare const InvalidNextTokenException_base: S.Class<InvalidNextTokenException, S.TaggedStruct<"InvalidNextTokenException", {
    readonly Message: S.optional<S.String>;
}>, import("effect/Cause").YieldableError>;
export declare class InvalidNextTokenException extends InvalidNextTokenException_base {
}
export type AssociateProfileError = AccessDeniedException | ConflictException | InvalidParameterException | LimitExceededException | ResourceExistsException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Associates a Route 53 Profiles profile with a VPC. A VPC can have only one Profile associated with it, but a Profile can be associated with 1000 of VPCs (and you can request a higher quota).
 * For more information, see https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html#limits-api-entities.
 */
export declare const associateProfile: API.OperationMethod<AssociateProfileRequest, AssociateProfileResponse, AssociateProfileError, Credentials | Region | HttpClient.HttpClient>;
export type AssociateResourceToProfileError = AccessDeniedException | ConflictException | InternalServiceErrorException | InvalidParameterException | LimitExceededException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Associates a DNS reource configuration to a Route 53 Profile.
 */
export declare const associateResourceToProfile: API.OperationMethod<AssociateResourceToProfileRequest, AssociateResourceToProfileResponse, AssociateResourceToProfileError, Credentials | Region | HttpClient.HttpClient>;
export type CreateProfileError = AccessDeniedException | InvalidParameterException | LimitExceededException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Creates an empty Route 53 Profile.
 */
export declare const createProfile: API.OperationMethod<CreateProfileRequest, CreateProfileResponse, CreateProfileError, Credentials | Region | HttpClient.HttpClient>;
export type DeleteProfileError = AccessDeniedException | ConflictException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Deletes the specified Route 53 Profile. Before you can delete a profile, you must first disassociate it from all VPCs.
 */
export declare const deleteProfile: API.OperationMethod<DeleteProfileRequest, DeleteProfileResponse, DeleteProfileError, Credentials | Region | HttpClient.HttpClient>;
export type DisassociateProfileError = AccessDeniedException | InvalidParameterException | LimitExceededException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Dissociates a specified Route 53 Profile from the specified VPC.
 */
export declare const disassociateProfile: API.OperationMethod<DisassociateProfileRequest, DisassociateProfileResponse, DisassociateProfileError, Credentials | Region | HttpClient.HttpClient>;
export type DisassociateResourceFromProfileError = AccessDeniedException | ConflictException | InternalServiceErrorException | InvalidParameterException | LimitExceededException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Dissoaciated a specified resource, from the Route 53 Profile.
 */
export declare const disassociateResourceFromProfile: API.OperationMethod<DisassociateResourceFromProfileRequest, DisassociateResourceFromProfileResponse, DisassociateResourceFromProfileError, Credentials | Region | HttpClient.HttpClient>;
export type GetProfileError = AccessDeniedException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Returns information about a specified Route 53 Profile, such as whether whether the Profile is shared, and the current status of the Profile.
 */
export declare const getProfile: API.OperationMethod<GetProfileRequest, GetProfileResponse, GetProfileError, Credentials | Region | HttpClient.HttpClient>;
export type GetProfileAssociationError = AccessDeniedException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Retrieves a Route 53 Profile association for a VPC. A VPC can have only one Profile association, but a Profile can be associated with up to 5000 VPCs.
 */
export declare const getProfileAssociation: API.OperationMethod<GetProfileAssociationRequest, GetProfileAssociationResponse, GetProfileAssociationError, Credentials | Region | HttpClient.HttpClient>;
export type GetProfileResourceAssociationError = AccessDeniedException | InvalidParameterException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Returns information about a specified Route 53 Profile resource association.
 */
export declare const getProfileResourceAssociation: API.OperationMethod<GetProfileResourceAssociationRequest, GetProfileResourceAssociationResponse, GetProfileResourceAssociationError, Credentials | Region | HttpClient.HttpClient>;
export type ListProfileAssociationsError = AccessDeniedException | InvalidNextTokenException | InvalidParameterException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Lists all the VPCs that the specified Route 53 Profile is associated with.
 */
export declare const listProfileAssociations: API.OperationMethod<ListProfileAssociationsRequest, ListProfileAssociationsResponse, ListProfileAssociationsError, Credentials | Region | HttpClient.HttpClient> & {
    pages: (input: ListProfileAssociationsRequest) => stream.Stream<ListProfileAssociationsResponse, ListProfileAssociationsError, Credentials | Region | HttpClient.HttpClient>;
    items: (input: ListProfileAssociationsRequest) => stream.Stream<ProfileAssociation, ListProfileAssociationsError, Credentials | Region | HttpClient.HttpClient>;
};
export type ListProfileResourceAssociationsError = AccessDeniedException | InternalServiceErrorException | InvalidNextTokenException | InvalidParameterException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Lists all the resource associations for the specified Route 53 Profile.
 */
export declare const listProfileResourceAssociations: API.OperationMethod<ListProfileResourceAssociationsRequest, ListProfileResourceAssociationsResponse, ListProfileResourceAssociationsError, Credentials | Region | HttpClient.HttpClient> & {
    pages: (input: ListProfileResourceAssociationsRequest) => stream.Stream<ListProfileResourceAssociationsResponse, ListProfileResourceAssociationsError, Credentials | Region | HttpClient.HttpClient>;
    items: (input: ListProfileResourceAssociationsRequest) => stream.Stream<ProfileResourceAssociation, ListProfileResourceAssociationsError, Credentials | Region | HttpClient.HttpClient>;
};
export type ListProfilesError = AccessDeniedException | InvalidNextTokenException | InvalidParameterException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Lists all the Route 53 Profiles associated with your Amazon Web Services account.
 */
export declare const listProfiles: API.OperationMethod<ListProfilesRequest, ListProfilesResponse, ListProfilesError, Credentials | Region | HttpClient.HttpClient> & {
    pages: (input: ListProfilesRequest) => stream.Stream<ListProfilesResponse, ListProfilesError, Credentials | Region | HttpClient.HttpClient>;
    items: (input: ListProfilesRequest) => stream.Stream<ProfileSummary, ListProfilesError, Credentials | Region | HttpClient.HttpClient>;
};
export type ListTagsForResourceError = AccessDeniedException | ConflictException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Lists the tags that you associated with the specified resource.
 */
export declare const listTagsForResource: API.OperationMethod<ListTagsForResourceRequest, ListTagsForResourceResponse, ListTagsForResourceError, Credentials | Region | HttpClient.HttpClient>;
export type TagResourceError = AccessDeniedException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Adds one or more tags to a specified resource.
 */
export declare const tagResource: API.OperationMethod<TagResourceRequest, TagResourceResponse, TagResourceError, Credentials | Region | HttpClient.HttpClient>;
export type UntagResourceError = AccessDeniedException | ConflictException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Removes one or more tags from a specified resource.
 */
export declare const untagResource: API.OperationMethod<UntagResourceRequest, UntagResourceResponse, UntagResourceError, Credentials | Region | HttpClient.HttpClient>;
export type UpdateProfileResourceAssociationError = AccessDeniedException | ConflictException | InternalServiceErrorException | InvalidParameterException | LimitExceededException | ResourceNotFoundException | ThrottlingException | ValidationException | CommonErrors;
/**
 * Updates the specified Route 53 Profile resourse association.
 */
export declare const updateProfileResourceAssociation: API.OperationMethod<UpdateProfileResourceAssociationRequest, UpdateProfileResourceAssociationResponse, UpdateProfileResourceAssociationError, Credentials | Region | HttpClient.HttpClient>;
export {};
//# sourceMappingURL=route53profiles.d.ts.map