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.js";
import * as T from "../traits.js";
import * as C from "../category.js";
import { SensitiveString } from "../sensitive.js";
const svc = T.AwsApiService({
    sdkId: "MailManager",
    serviceShapeName: "MailManagerSvc",
});
const auth = T.AwsAuthSigv4({ name: "ses" });
const ver = T.ServiceVersion("2023-10-17");
const proto = T.AwsProtocolsAwsJson1_0();
const rules = T.EndpointResolver((p, _) => {
    const { Region, UseDualStack = false, UseFIPS = false, Endpoint } = p;
    const e = (u, p = {}, h = {}) => ({
        type: "endpoint",
        endpoint: { url: u, properties: p, headers: h },
    });
    const err = (m) => ({
        type: "error",
        message: m,
    });
    if (Endpoint != null) {
        if (UseFIPS === true) {
            return err("Invalid Configuration: FIPS and custom endpoint are not supported");
        }
        if (UseDualStack === true) {
            return err("Invalid Configuration: Dualstack and custom endpoint are not supported");
        }
        return e(Endpoint);
    }
    if (Region != null) {
        {
            const PartitionResult = _.partition(Region);
            if (PartitionResult != null && PartitionResult !== false) {
                if (UseFIPS === true && UseDualStack === true) {
                    if (true === _.getAttr(PartitionResult, "supportsFIPS") &&
                        true === _.getAttr(PartitionResult, "supportsDualStack")) {
                        return e(`https://mail-manager-fips.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                    }
                    return err("FIPS and DualStack are enabled, but this partition does not support one or both");
                }
                if (UseFIPS === true) {
                    if (_.getAttr(PartitionResult, "supportsFIPS") === true) {
                        return e(`https://mail-manager-fips.${Region}.${_.getAttr(PartitionResult, "dnsSuffix")}`);
                    }
                    return err("FIPS is enabled but this partition does not support FIPS");
                }
                if (UseDualStack === true) {
                    if (true === _.getAttr(PartitionResult, "supportsDualStack")) {
                        return e(`https://mail-manager.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                    }
                    return err("DualStack is enabled but this partition does not support DualStack");
                }
                return e(`https://mail-manager.${Region}.${_.getAttr(PartitionResult, "dnsSuffix")}`);
            }
        }
    }
    return err("Invalid Configuration: Missing Region");
});
export const ImportDataType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ImportDataFormat = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ImportDataType: ImportDataType })).annotate({
    identifier: "ImportDataFormat",
});
export const CreateAddressListImportJobRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ClientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
    AddressListId: S.String,
    Name: S.String,
    ImportDataFormat: ImportDataFormat,
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateAddressListImportJobRequest",
});
export const CreateAddressListImportJobResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ JobId: S.String, PreSignedUrl: SensitiveString })).annotate({
    identifier: "CreateAddressListImportJobResponse",
});
export const DeregisterMemberFromAddressListRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AddressListId: S.String, Address: SensitiveString }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeregisterMemberFromAddressListRequest",
});
export const DeregisterMemberFromAddressListResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeregisterMemberFromAddressListResponse",
});
export const GetAddressListImportJobRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ JobId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetAddressListImportJobRequest",
});
export const ImportJobStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const GetAddressListImportJobResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    JobId: S.String,
    Name: S.String,
    Status: ImportJobStatus,
    PreSignedUrl: SensitiveString,
    ImportedItemsCount: S.optional(S.Number),
    FailedItemsCount: S.optional(S.Number),
    ImportDataFormat: ImportDataFormat,
    AddressListId: S.String,
    CreatedTimestamp: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    StartTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    CompletedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    Error: S.optional(S.String),
})).annotate({
    identifier: "GetAddressListImportJobResponse",
});
export const GetArchiveExportRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ExportId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetArchiveExportRequest",
});
export const ArchiveStringEmailAttribute = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ArchiveStringToEvaluate = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ Attribute: ArchiveStringEmailAttribute }),
]);
export const ArchiveStringOperator = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const StringValueList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const ArchiveStringExpression = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Evaluate: ArchiveStringToEvaluate,
    Operator: ArchiveStringOperator,
    Values: StringValueList,
})).annotate({
    identifier: "ArchiveStringExpression",
});
export const ArchiveBooleanEmailAttribute = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const ArchiveBooleanToEvaluate = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ Attribute: ArchiveBooleanEmailAttribute }),
]);
export const ArchiveBooleanOperator = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ArchiveBooleanExpression = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Evaluate: ArchiveBooleanToEvaluate,
    Operator: ArchiveBooleanOperator,
})).annotate({
    identifier: "ArchiveBooleanExpression",
});
export const ArchiveFilterCondition = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ StringExpression: ArchiveStringExpression }),
    S.Struct({ BooleanExpression: ArchiveBooleanExpression }),
]);
export const ArchiveFilterConditions = /*@__PURE__*/ /*#__PURE__*/ S.Array(ArchiveFilterCondition);
export const ArchiveFilters = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Include: S.optional(ArchiveFilterConditions),
    Unless: S.optional(ArchiveFilterConditions),
})).annotate({ identifier: "ArchiveFilters" });
export const S3ExportDestinationConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ S3Location: S.optional(S.String) })).annotate({
    identifier: "S3ExportDestinationConfiguration",
});
export const ExportDestinationConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ S3: S3ExportDestinationConfiguration }),
]);
export const ExportState = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ExportStatus = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SubmissionTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    CompletionTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    State: S.optional(ExportState),
    ErrorMessage: S.optional(S.String),
})).annotate({ identifier: "ExportStatus" });
export const GetArchiveExportResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ArchiveId: S.optional(S.String),
    Filters: S.optional(ArchiveFilters),
    FromTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    ToTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    MaxResults: S.optional(S.Number),
    ExportDestinationConfiguration: S.optional(ExportDestinationConfiguration),
    Status: S.optional(ExportStatus),
})).annotate({
    identifier: "GetArchiveExportResponse",
});
export const GetArchiveMessageRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ArchivedMessageId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetArchiveMessageRequest",
});
export const Metadata = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Timestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    IngressPointId: S.optional(S.String),
    TrafficPolicyId: S.optional(S.String),
    RuleSetId: S.optional(S.String),
    SenderHostname: S.optional(S.String),
    SenderIpAddress: S.optional(SensitiveString),
    TlsCipherSuite: S.optional(S.String),
    TlsProtocol: S.optional(S.String),
    SendingMethod: S.optional(S.String),
    SourceIdentity: S.optional(S.String),
    SendingPool: S.optional(S.String),
    ConfigurationSet: S.optional(S.String),
    SourceArn: S.optional(S.String),
})).annotate({ identifier: "Metadata" });
export const StringList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const Envelope = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Helo: S.optional(S.String),
    From: S.optional(S.String),
    To: S.optional(StringList),
})).annotate({ identifier: "Envelope" });
export const GetArchiveMessageResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MessageDownloadLink: S.optional(S.String),
    Metadata: S.optional(Metadata),
    Envelope: S.optional(Envelope),
})).annotate({
    identifier: "GetArchiveMessageResponse",
});
export const GetArchiveMessageContentRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ArchivedMessageId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetArchiveMessageContentRequest",
});
export const MessageBody = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Text: S.optional(S.String),
    Html: S.optional(S.String),
    MessageMalformed: S.optional(S.Boolean),
})).annotate({ identifier: "MessageBody" });
export const GetArchiveMessageContentResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Body: S.optional(MessageBody) })).annotate({
    identifier: "GetArchiveMessageContentResponse",
});
export const GetArchiveSearchRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ SearchId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetArchiveSearchRequest",
});
export const SearchState = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SearchStatus = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SubmissionTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    CompletionTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    State: S.optional(SearchState),
    ErrorMessage: S.optional(S.String),
})).annotate({ identifier: "SearchStatus" });
export const GetArchiveSearchResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ArchiveId: S.optional(S.String),
    Filters: S.optional(ArchiveFilters),
    FromTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    ToTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    MaxResults: S.optional(S.Number),
    Status: S.optional(SearchStatus),
})).annotate({
    identifier: "GetArchiveSearchResponse",
});
export const GetArchiveSearchResultsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ SearchId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetArchiveSearchResultsRequest",
});
export const EmailReceivedHeadersList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const Row = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ArchivedMessageId: S.optional(S.String),
    ReceivedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    Date: S.optional(S.String),
    To: S.optional(S.String),
    From: S.optional(S.String),
    Cc: S.optional(S.String),
    Subject: S.optional(S.String),
    MessageId: S.optional(S.String),
    HasAttachments: S.optional(S.Boolean),
    ReceivedHeaders: S.optional(EmailReceivedHeadersList),
    InReplyTo: S.optional(S.String),
    XMailer: S.optional(S.String),
    XOriginalMailer: S.optional(S.String),
    XPriority: S.optional(S.String),
    IngressPointId: S.optional(S.String),
    SenderHostname: S.optional(S.String),
    SenderIpAddress: S.optional(SensitiveString),
    Envelope: S.optional(Envelope),
    SourceArn: S.optional(S.String),
})).annotate({ identifier: "Row" });
export const RowsList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Row);
export const GetArchiveSearchResultsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Rows: S.optional(RowsList) })).annotate({
    identifier: "GetArchiveSearchResultsResponse",
});
export const GetMemberOfAddressListRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AddressListId: S.String, Address: SensitiveString }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetMemberOfAddressListRequest",
});
export const GetMemberOfAddressListResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Address: SensitiveString,
    CreatedTimestamp: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
})).annotate({
    identifier: "GetMemberOfAddressListResponse",
});
export const ListAddressListImportJobsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AddressListId: S.String,
    NextToken: S.optional(S.String),
    PageSize: S.optional(S.Number),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListAddressListImportJobsRequest",
});
export const ImportJob = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    JobId: S.String,
    Name: S.String,
    Status: ImportJobStatus,
    PreSignedUrl: SensitiveString,
    ImportedItemsCount: S.optional(S.Number),
    FailedItemsCount: S.optional(S.Number),
    ImportDataFormat: ImportDataFormat,
    AddressListId: S.String,
    CreatedTimestamp: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    StartTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    CompletedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    Error: S.optional(S.String),
})).annotate({ identifier: "ImportJob" });
export const ImportJobs = /*@__PURE__*/ /*#__PURE__*/ S.Array(ImportJob);
export const ListAddressListImportJobsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ImportJobs: ImportJobs, NextToken: S.optional(S.String) })).annotate({
    identifier: "ListAddressListImportJobsResponse",
});
export const ListArchiveExportsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ArchiveId: S.String,
    NextToken: S.optional(S.String),
    PageSize: S.optional(S.Number),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListArchiveExportsRequest",
});
export const ExportSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ExportId: S.optional(S.String),
    Status: S.optional(ExportStatus),
})).annotate({ identifier: "ExportSummary" });
export const ExportSummaryList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ExportSummary);
export const ListArchiveExportsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Exports: S.optional(ExportSummaryList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListArchiveExportsResponse",
});
export const ListArchiveSearchesRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ArchiveId: S.String,
    NextToken: S.optional(S.String),
    PageSize: S.optional(S.Number),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListArchiveSearchesRequest",
});
export const SearchSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SearchId: S.optional(S.String),
    Status: S.optional(SearchStatus),
})).annotate({ identifier: "SearchSummary" });
export const SearchSummaryList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SearchSummary);
export const ListArchiveSearchesResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Searches: S.optional(SearchSummaryList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListArchiveSearchesResponse",
});
export const AddressFilter = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AddressPrefix: S.optional(SensitiveString) })).annotate({ identifier: "AddressFilter" });
export const ListMembersOfAddressListRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AddressListId: S.String,
    Filter: S.optional(AddressFilter),
    NextToken: S.optional(S.String),
    PageSize: S.optional(S.Number),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListMembersOfAddressListRequest",
});
export const SavedAddress = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Address: SensitiveString,
    CreatedTimestamp: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
})).annotate({ identifier: "SavedAddress" });
export const SavedAddresses = /*@__PURE__*/ /*#__PURE__*/ S.Array(SavedAddress);
export const ListMembersOfAddressListResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Addresses: SavedAddresses, NextToken: S.optional(S.String) })).annotate({
    identifier: "ListMembersOfAddressListResponse",
});
export const ListTagsForResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ResourceArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListTagsForResourceRequest",
});
export const Tag = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Key: S.String, Value: S.String })).annotate({ identifier: "Tag" });
export const TagList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Tag);
export const ListTagsForResourceResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Tags: TagList })).annotate({
    identifier: "ListTagsForResourceResponse",
});
export const RegisterMemberToAddressListRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AddressListId: S.String, Address: SensitiveString }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "RegisterMemberToAddressListRequest",
});
export const RegisterMemberToAddressListResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "RegisterMemberToAddressListResponse",
});
export const StartAddressListImportJobRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ JobId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "StartAddressListImportJobRequest",
});
export const StartAddressListImportJobResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "StartAddressListImportJobResponse",
});
export const StartArchiveExportRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ArchiveId: S.String,
    Filters: S.optional(ArchiveFilters),
    FromTimestamp: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ToTimestamp: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    MaxResults: S.optional(S.Number),
    ExportDestinationConfiguration: ExportDestinationConfiguration,
    IncludeMetadata: S.optional(S.Boolean),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "StartArchiveExportRequest",
});
export const StartArchiveExportResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ExportId: S.optional(S.String) })).annotate({
    identifier: "StartArchiveExportResponse",
});
export const StartArchiveSearchRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ArchiveId: S.String,
    Filters: S.optional(ArchiveFilters),
    FromTimestamp: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ToTimestamp: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    MaxResults: S.Number,
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "StartArchiveSearchRequest",
});
export const StartArchiveSearchResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ SearchId: S.optional(S.String) })).annotate({
    identifier: "StartArchiveSearchResponse",
});
export const StopAddressListImportJobRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ JobId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "StopAddressListImportJobRequest",
});
export const StopAddressListImportJobResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "StopAddressListImportJobResponse",
});
export const StopArchiveExportRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ExportId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "StopArchiveExportRequest",
});
export const StopArchiveExportResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "StopArchiveExportResponse",
});
export const StopArchiveSearchRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ SearchId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "StopArchiveSearchRequest",
});
export const StopArchiveSearchResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "StopArchiveSearchResponse",
});
export const TagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ResourceArn: S.String, Tags: TagList }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "TagResourceRequest",
});
export const TagResourceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "TagResourceResponse",
});
export const TagKeyList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const UntagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ResourceArn: S.String, TagKeys: TagKeyList }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UntagResourceRequest",
});
export const UntagResourceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UntagResourceResponse",
});
export const CreateAddonInstanceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ClientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
    AddonSubscriptionId: S.String,
    Tags: S.optional(TagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateAddonInstanceRequest",
});
export const CreateAddonInstanceResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AddonInstanceId: S.String })).annotate({
    identifier: "CreateAddonInstanceResponse",
});
export const GetAddonInstanceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AddonInstanceId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetAddonInstanceRequest",
});
export const GetAddonInstanceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AddonSubscriptionId: S.optional(S.String),
    AddonName: S.optional(S.String),
    AddonInstanceArn: S.optional(S.String),
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "GetAddonInstanceResponse",
});
export const DeleteAddonInstanceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AddonInstanceId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteAddonInstanceRequest",
});
export const DeleteAddonInstanceResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteAddonInstanceResponse",
});
export const ListAddonInstancesRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    NextToken: S.optional(S.String),
    PageSize: S.optional(S.Number),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListAddonInstancesRequest",
});
export const AddonInstance = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AddonInstanceId: S.optional(S.String),
    AddonSubscriptionId: S.optional(S.String),
    AddonName: S.optional(S.String),
    AddonInstanceArn: S.optional(S.String),
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({ identifier: "AddonInstance" });
export const AddonInstances = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(AddonInstance);
export const ListAddonInstancesResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AddonInstances: S.optional(AddonInstances),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListAddonInstancesResponse",
});
export const CreateAddonSubscriptionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ClientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
    AddonName: S.String,
    Tags: S.optional(TagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateAddonSubscriptionRequest",
});
export const CreateAddonSubscriptionResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AddonSubscriptionId: S.String })).annotate({
    identifier: "CreateAddonSubscriptionResponse",
});
export const GetAddonSubscriptionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AddonSubscriptionId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetAddonSubscriptionRequest",
});
export const GetAddonSubscriptionResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AddonName: S.optional(S.String),
    AddonSubscriptionArn: S.optional(S.String),
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "GetAddonSubscriptionResponse",
});
export const DeleteAddonSubscriptionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AddonSubscriptionId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteAddonSubscriptionRequest",
});
export const DeleteAddonSubscriptionResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteAddonSubscriptionResponse",
});
export const ListAddonSubscriptionsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    NextToken: S.optional(S.String),
    PageSize: S.optional(S.Number),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListAddonSubscriptionsRequest",
});
export const AddonSubscription = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AddonSubscriptionId: S.optional(S.String),
    AddonName: S.optional(S.String),
    AddonSubscriptionArn: S.optional(S.String),
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "AddonSubscription",
});
export const AddonSubscriptions = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(AddonSubscription);
export const ListAddonSubscriptionsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AddonSubscriptions: S.optional(AddonSubscriptions),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListAddonSubscriptionsResponse",
});
export const CreateAddressListRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ClientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
    AddressListName: S.String,
    Tags: S.optional(TagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateAddressListRequest",
});
export const CreateAddressListResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AddressListId: S.String })).annotate({
    identifier: "CreateAddressListResponse",
});
export const GetAddressListRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AddressListId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetAddressListRequest",
});
export const GetAddressListResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AddressListId: S.String,
    AddressListArn: S.String,
    AddressListName: S.String,
    CreatedTimestamp: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    LastUpdatedTimestamp: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
})).annotate({
    identifier: "GetAddressListResponse",
});
export const DeleteAddressListRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AddressListId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteAddressListRequest",
});
export const DeleteAddressListResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteAddressListResponse",
});
export const ListAddressListsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    NextToken: S.optional(S.String),
    PageSize: S.optional(S.Number),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListAddressListsRequest",
});
export const AddressList = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AddressListId: S.String,
    AddressListArn: S.String,
    AddressListName: S.String,
    CreatedTimestamp: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    LastUpdatedTimestamp: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
})).annotate({ identifier: "AddressList" });
export const AddressLists = /*@__PURE__*/ /*#__PURE__*/ S.Array(AddressList);
export const ListAddressListsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AddressLists: AddressLists, NextToken: S.optional(S.String) })).annotate({
    identifier: "ListAddressListsResponse",
});
export const RetentionPeriod = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ArchiveRetention = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ RetentionPeriod: RetentionPeriod }),
]);
export const CreateArchiveRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ClientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
    ArchiveName: S.String,
    Retention: S.optional(ArchiveRetention),
    KmsKeyArn: S.optional(S.String),
    Tags: S.optional(TagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateArchiveRequest",
});
export const CreateArchiveResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ArchiveId: S.String })).annotate({
    identifier: "CreateArchiveResponse",
});
export const GetArchiveRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ArchiveId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetArchiveRequest",
});
export const ArchiveState = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const GetArchiveResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ArchiveId: S.String,
    ArchiveName: S.String,
    ArchiveArn: S.String,
    ArchiveState: ArchiveState,
    Retention: ArchiveRetention,
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    LastUpdatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    KmsKeyArn: S.optional(S.String),
})).annotate({
    identifier: "GetArchiveResponse",
});
export const UpdateArchiveRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ArchiveId: S.String,
    ArchiveName: S.optional(S.String),
    Retention: S.optional(ArchiveRetention),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateArchiveRequest",
});
export const UpdateArchiveResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateArchiveResponse",
});
export const DeleteArchiveRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ArchiveId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteArchiveRequest",
});
export const DeleteArchiveResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteArchiveResponse",
});
export const ListArchivesRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    NextToken: S.optional(S.String),
    PageSize: S.optional(S.Number),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListArchivesRequest",
});
export const Archive = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ArchiveId: S.String,
    ArchiveName: S.optional(S.String),
    ArchiveState: S.optional(ArchiveState),
    LastUpdatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({ identifier: "Archive" });
export const ArchivesList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Archive);
export const ListArchivesResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Archives: ArchivesList, NextToken: S.optional(S.String) })).annotate({
    identifier: "ListArchivesResponse",
});
export const IngressPointType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TrustStore = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    CAContent: SensitiveString,
    CrlContent: S.optional(SensitiveString),
    KmsKeyArn: S.optional(S.String),
})).annotate({ identifier: "TrustStore" });
export const TlsAuthConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TrustStore: S.optional(TrustStore) })).annotate({
    identifier: "TlsAuthConfiguration",
});
export const IngressPointConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ SmtpPassword: SensitiveString }),
    S.Struct({ SecretArn: S.String }),
    S.Struct({ TlsAuthConfiguration: TlsAuthConfiguration }),
]);
export const IpType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const PublicNetworkConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ IpType: IpType })).annotate({
    identifier: "PublicNetworkConfiguration",
});
export const PrivateNetworkConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ VpcEndpointId: S.String })).annotate({
    identifier: "PrivateNetworkConfiguration",
});
export const NetworkConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ PublicNetworkConfiguration: PublicNetworkConfiguration }),
    S.Struct({ PrivateNetworkConfiguration: PrivateNetworkConfiguration }),
]);
export const TlsPolicy = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const CreateIngressPointRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ClientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
    IngressPointName: S.String,
    Type: IngressPointType,
    RuleSetId: S.String,
    TrafficPolicyId: S.String,
    IngressPointConfiguration: S.optional(IngressPointConfiguration),
    NetworkConfiguration: S.optional(NetworkConfiguration),
    TlsPolicy: S.optional(TlsPolicy),
    Tags: S.optional(TagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateIngressPointRequest",
});
export const CreateIngressPointResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ IngressPointId: S.String })).annotate({
    identifier: "CreateIngressPointResponse",
});
export const TrustStoreResponseOption = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const GetIngressPointRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    IngressPointId: S.String,
    IncludeTrustStoreContents: S.optional(TrustStoreResponseOption),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetIngressPointRequest",
});
export const IngressPointStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const IngressPointPasswordConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SmtpPasswordVersion: S.optional(S.String),
    PreviousSmtpPasswordVersion: S.optional(S.String),
    PreviousSmtpPasswordExpiryTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "IngressPointPasswordConfiguration",
});
export const IngressPointAuthConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    IngressPointPasswordConfiguration: S.optional(IngressPointPasswordConfiguration),
    SecretArn: S.optional(S.String),
    TlsAuthConfiguration: S.optional(TlsAuthConfiguration),
})).annotate({
    identifier: "IngressPointAuthConfiguration",
});
export const GetIngressPointResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    IngressPointId: S.String,
    IngressPointName: S.String,
    IngressPointArn: S.optional(S.String),
    Status: S.optional(IngressPointStatus),
    Type: S.optional(IngressPointType),
    ARecord: S.optional(S.String),
    RuleSetId: S.optional(S.String),
    TrafficPolicyId: S.optional(S.String),
    IngressPointAuthConfiguration: S.optional(IngressPointAuthConfiguration),
    NetworkConfiguration: S.optional(NetworkConfiguration),
    TlsPolicy: S.optional(TlsPolicy),
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    LastUpdatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "GetIngressPointResponse",
});
export const IngressPointStatusToUpdate = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const UpdateIngressPointRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    IngressPointId: S.String,
    IngressPointName: S.optional(S.String),
    StatusToUpdate: S.optional(IngressPointStatusToUpdate),
    RuleSetId: S.optional(S.String),
    TrafficPolicyId: S.optional(S.String),
    IngressPointConfiguration: S.optional(IngressPointConfiguration),
    TlsPolicy: S.optional(TlsPolicy),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateIngressPointRequest",
});
export const UpdateIngressPointResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateIngressPointResponse",
});
export const DeleteIngressPointRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ IngressPointId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteIngressPointRequest",
});
export const DeleteIngressPointResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteIngressPointResponse",
});
export const ListIngressPointsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    PageSize: S.optional(S.Number),
    NextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListIngressPointsRequest",
});
export const IngressPoint = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    IngressPointName: S.String,
    IngressPointId: S.String,
    Status: IngressPointStatus,
    Type: IngressPointType,
    ARecord: S.optional(S.String),
})).annotate({ identifier: "IngressPoint" });
export const IngressPointsList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(IngressPoint);
export const ListIngressPointsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    IngressPoints: S.optional(IngressPointsList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListIngressPointsResponse",
});
export const NoAuthentication = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "NoAuthentication",
});
export const RelayAuthentication = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ SecretArn: S.String }),
    S.Struct({ NoAuthentication: NoAuthentication }),
]);
export const CreateRelayRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ClientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
    RelayName: S.String,
    ServerName: S.String,
    ServerPort: S.Number,
    Authentication: RelayAuthentication,
    Tags: S.optional(TagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateRelayRequest",
});
export const CreateRelayResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ RelayId: S.String })).annotate({
    identifier: "CreateRelayResponse",
});
export const GetRelayRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ RelayId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetRelayRequest",
});
export const GetRelayResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    RelayId: S.String,
    RelayArn: S.optional(S.String),
    RelayName: S.optional(S.String),
    ServerName: S.optional(S.String),
    ServerPort: S.optional(S.Number),
    Authentication: S.optional(RelayAuthentication),
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    LastModifiedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "GetRelayResponse",
});
export const UpdateRelayRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    RelayId: S.String,
    RelayName: S.optional(S.String),
    ServerName: S.optional(S.String),
    ServerPort: S.optional(S.Number),
    Authentication: S.optional(RelayAuthentication),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateRelayRequest",
});
export const UpdateRelayResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateRelayResponse",
});
export const DeleteRelayRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ RelayId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteRelayRequest",
});
export const DeleteRelayResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteRelayResponse",
});
export const ListRelaysRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    PageSize: S.optional(S.Number),
    NextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListRelaysRequest",
});
export const Relay = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    RelayId: S.optional(S.String),
    RelayName: S.optional(S.String),
    LastModifiedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({ identifier: "Relay" });
export const Relays = /*@__PURE__*/ /*#__PURE__*/ S.Array(Relay);
export const ListRelaysResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Relays: Relays, NextToken: S.optional(S.String) })).annotate({
    identifier: "ListRelaysResponse",
});
export const RuleBooleanEmailAttribute = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const Analysis = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Analyzer: S.String, ResultField: S.String })).annotate({ identifier: "Analysis" });
export const RuleAddressListEmailAttribute = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const RuleAddressListArnList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const RuleIsInAddressList = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Attribute: RuleAddressListEmailAttribute,
    AddressLists: RuleAddressListArnList,
})).annotate({
    identifier: "RuleIsInAddressList",
});
export const RuleBooleanToEvaluate = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ Attribute: RuleBooleanEmailAttribute }),
    S.Struct({ Analysis: Analysis }),
    S.Struct({ IsInAddressList: RuleIsInAddressList }),
]);
export const RuleBooleanOperator = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RuleBooleanExpression = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Evaluate: RuleBooleanToEvaluate, Operator: RuleBooleanOperator })).annotate({
    identifier: "RuleBooleanExpression",
});
export const RuleStringEmailAttribute = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RuleClientCertificateAttribute = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const RuleStringToEvaluate = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ Attribute: RuleStringEmailAttribute }),
    S.Struct({ MimeHeaderAttribute: S.String }),
    S.Struct({ Analysis: Analysis }),
    S.Struct({ ClientCertificateAttribute: RuleClientCertificateAttribute }),
]);
export const RuleStringOperator = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RuleStringList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SensitiveString);
export const RuleStringExpression = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Evaluate: RuleStringToEvaluate,
    Operator: RuleStringOperator,
    Values: RuleStringList,
})).annotate({
    identifier: "RuleStringExpression",
});
export const RuleNumberEmailAttribute = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RuleNumberToEvaluate = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ Attribute: RuleNumberEmailAttribute }),
]);
export const RuleNumberOperator = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RuleNumberExpression = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Evaluate: RuleNumberToEvaluate,
    Operator: RuleNumberOperator,
    Value: S.Number,
})).annotate({
    identifier: "RuleNumberExpression",
});
export const RuleIpEmailAttribute = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RuleIpToEvaluate = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ Attribute: RuleIpEmailAttribute }),
]);
export const RuleIpOperator = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RuleIpValueList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const RuleIpExpression = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Evaluate: RuleIpToEvaluate,
    Operator: RuleIpOperator,
    Values: RuleIpValueList,
})).annotate({
    identifier: "RuleIpExpression",
});
export const RuleVerdictAttribute = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RuleVerdictToEvaluate = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ Attribute: RuleVerdictAttribute }),
    S.Struct({ Analysis: Analysis }),
]);
export const RuleVerdictOperator = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RuleVerdict = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RuleVerdictValueList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(RuleVerdict);
export const RuleVerdictExpression = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Evaluate: RuleVerdictToEvaluate,
    Operator: RuleVerdictOperator,
    Values: RuleVerdictValueList,
})).annotate({
    identifier: "RuleVerdictExpression",
});
export const RuleDmarcOperator = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RuleDmarcPolicy = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RuleDmarcValueList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(RuleDmarcPolicy);
export const RuleDmarcExpression = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Operator: RuleDmarcOperator, Values: RuleDmarcValueList })).annotate({
    identifier: "RuleDmarcExpression",
});
export const RuleCondition = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ BooleanExpression: RuleBooleanExpression }),
    S.Struct({ StringExpression: RuleStringExpression }),
    S.Struct({ NumberExpression: RuleNumberExpression }),
    S.Struct({ IpExpression: RuleIpExpression }),
    S.Struct({ VerdictExpression: RuleVerdictExpression }),
    S.Struct({ DmarcExpression: RuleDmarcExpression }),
]);
export const RuleConditions = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(RuleCondition);
export const DropAction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({ identifier: "DropAction" });
export const ActionFailurePolicy = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const MailFrom = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RelayAction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ActionFailurePolicy: S.optional(ActionFailurePolicy),
    Relay: S.String,
    MailFrom: S.optional(MailFrom),
})).annotate({ identifier: "RelayAction" });
export const ArchiveAction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ActionFailurePolicy: S.optional(ActionFailurePolicy),
    TargetArchive: S.String,
})).annotate({ identifier: "ArchiveAction" });
export const S3Action = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ActionFailurePolicy: S.optional(ActionFailurePolicy),
    RoleArn: S.String,
    S3Bucket: S.String,
    S3Prefix: S.optional(S.String),
    S3SseKmsKeyId: S.optional(S.String),
})).annotate({ identifier: "S3Action" });
export const SendAction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ActionFailurePolicy: S.optional(ActionFailurePolicy),
    RoleArn: S.String,
})).annotate({ identifier: "SendAction" });
export const AddHeaderAction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ HeaderName: S.String, HeaderValue: S.String })).annotate({
    identifier: "AddHeaderAction",
});
export const Recipients = /*@__PURE__*/ /*#__PURE__*/ S.Array(SensitiveString);
export const ReplaceRecipientAction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ReplaceWith: S.optional(Recipients) })).annotate({
    identifier: "ReplaceRecipientAction",
});
export const DeliverToMailboxAction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ActionFailurePolicy: S.optional(ActionFailurePolicy),
    MailboxArn: S.String,
    RoleArn: S.String,
})).annotate({
    identifier: "DeliverToMailboxAction",
});
export const DeliverToQBusinessAction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ActionFailurePolicy: S.optional(ActionFailurePolicy),
    ApplicationId: S.String,
    IndexId: S.String,
    RoleArn: S.String,
})).annotate({
    identifier: "DeliverToQBusinessAction",
});
export const SnsNotificationEncoding = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SnsNotificationPayloadType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SnsAction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ActionFailurePolicy: S.optional(ActionFailurePolicy),
    TopicArn: S.String,
    RoleArn: S.String,
    Encoding: S.optional(SnsNotificationEncoding),
    PayloadType: S.optional(SnsNotificationPayloadType),
})).annotate({ identifier: "SnsAction" });
export const BounceAction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ActionFailurePolicy: S.optional(ActionFailurePolicy),
    RoleArn: S.String,
    Sender: SensitiveString,
    StatusCode: S.String,
    SmtpReplyCode: S.String,
    DiagnosticMessage: SensitiveString,
    Message: S.optional(SensitiveString),
})).annotate({ identifier: "BounceAction" });
export const LambdaInvocationType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const InvokeLambdaAction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ActionFailurePolicy: S.optional(ActionFailurePolicy),
    FunctionArn: S.String,
    InvocationType: LambdaInvocationType,
    RoleArn: S.String,
    RetryTimeMinutes: S.optional(S.Number),
})).annotate({
    identifier: "InvokeLambdaAction",
});
export const RuleAction = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ Drop: DropAction }),
    S.Struct({ Relay: RelayAction }),
    S.Struct({ Archive: ArchiveAction }),
    S.Struct({ WriteToS3: S3Action }),
    S.Struct({ Send: SendAction }),
    S.Struct({ AddHeader: AddHeaderAction }),
    S.Struct({ ReplaceRecipient: ReplaceRecipientAction }),
    S.Struct({ DeliverToMailbox: DeliverToMailboxAction }),
    S.Struct({ DeliverToQBusiness: DeliverToQBusinessAction }),
    S.Struct({ PublishToSns: SnsAction }),
    S.Struct({ Bounce: BounceAction }),
    S.Struct({ InvokeLambda: InvokeLambdaAction }),
]);
export const RuleActions = /*@__PURE__*/ /*#__PURE__*/ S.Array(RuleAction);
export const Rule = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Name: S.optional(S.String),
    Conditions: S.optional(RuleConditions),
    Unless: S.optional(RuleConditions),
    Actions: RuleActions,
})).annotate({ identifier: "Rule" });
export const Rules = /*@__PURE__*/ /*#__PURE__*/ S.Array(Rule);
export const CreateRuleSetRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ClientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
    RuleSetName: S.String,
    Rules: Rules,
    Tags: S.optional(TagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateRuleSetRequest",
});
export const CreateRuleSetResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ RuleSetId: S.String })).annotate({
    identifier: "CreateRuleSetResponse",
});
export const GetRuleSetRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ RuleSetId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetRuleSetRequest",
});
export const GetRuleSetResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    RuleSetId: S.String,
    RuleSetArn: S.String,
    RuleSetName: S.String,
    CreatedDate: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    LastModificationDate: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    Rules: Rules,
})).annotate({
    identifier: "GetRuleSetResponse",
});
export const UpdateRuleSetRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    RuleSetId: S.String,
    RuleSetName: S.optional(S.String),
    Rules: S.optional(Rules),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateRuleSetRequest",
});
export const UpdateRuleSetResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateRuleSetResponse",
});
export const DeleteRuleSetRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ RuleSetId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteRuleSetRequest",
});
export const DeleteRuleSetResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteRuleSetResponse",
});
export const ListRuleSetsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    NextToken: S.optional(S.String),
    PageSize: S.optional(S.Number),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListRuleSetsRequest",
});
export const RuleSet = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    RuleSetId: S.optional(S.String),
    RuleSetName: S.optional(S.String),
    LastModificationDate: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({ identifier: "RuleSet" });
export const RuleSets = /*@__PURE__*/ /*#__PURE__*/ S.Array(RuleSet);
export const ListRuleSetsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ RuleSets: RuleSets, NextToken: S.optional(S.String) })).annotate({
    identifier: "ListRuleSetsResponse",
});
export const IngressStringEmailAttribute = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const IngressAnalysis = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Analyzer: S.String, ResultField: S.String })).annotate({
    identifier: "IngressAnalysis",
});
export const IngressStringToEvaluate = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ Attribute: IngressStringEmailAttribute }),
    S.Struct({ Analysis: IngressAnalysis }),
]);
export const IngressStringOperator = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const IngressStringExpression = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Evaluate: IngressStringToEvaluate,
    Operator: IngressStringOperator,
    Values: StringList,
})).annotate({
    identifier: "IngressStringExpression",
});
export const IngressIpv4Attribute = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const IngressIpToEvaluate = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ Attribute: IngressIpv4Attribute }),
]);
export const IngressIpOperator = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const Ipv4Cidrs = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const IngressIpv4Expression = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Evaluate: IngressIpToEvaluate,
    Operator: IngressIpOperator,
    Values: Ipv4Cidrs,
})).annotate({
    identifier: "IngressIpv4Expression",
});
export const IngressIpv6Attribute = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const IngressIpv6ToEvaluate = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ Attribute: IngressIpv6Attribute }),
]);
export const Ipv6Cidrs = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const IngressIpv6Expression = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Evaluate: IngressIpv6ToEvaluate,
    Operator: IngressIpOperator,
    Values: Ipv6Cidrs,
})).annotate({
    identifier: "IngressIpv6Expression",
});
export const IngressTlsAttribute = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const IngressTlsProtocolToEvaluate = /*@__PURE__*/ /*#__PURE__*/ S.Union([S.Struct({ Attribute: IngressTlsAttribute })]);
export const IngressTlsProtocolOperator = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const IngressTlsProtocolAttribute = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const IngressTlsProtocolExpression = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Evaluate: IngressTlsProtocolToEvaluate,
    Operator: IngressTlsProtocolOperator,
    Value: IngressTlsProtocolAttribute,
})).annotate({
    identifier: "IngressTlsProtocolExpression",
});
export const IngressAddressListEmailAttribute = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const IngressAddressListArnList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const IngressIsInAddressList = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Attribute: IngressAddressListEmailAttribute,
    AddressLists: IngressAddressListArnList,
})).annotate({
    identifier: "IngressIsInAddressList",
});
export const IngressBooleanToEvaluate = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ Analysis: IngressAnalysis }),
    S.Struct({ IsInAddressList: IngressIsInAddressList }),
]);
export const IngressBooleanOperator = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const IngressBooleanExpression = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Evaluate: IngressBooleanToEvaluate,
    Operator: IngressBooleanOperator,
})).annotate({
    identifier: "IngressBooleanExpression",
});
export const PolicyCondition = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ StringExpression: IngressStringExpression }),
    S.Struct({ IpExpression: IngressIpv4Expression }),
    S.Struct({ Ipv6Expression: IngressIpv6Expression }),
    S.Struct({ TlsExpression: IngressTlsProtocolExpression }),
    S.Struct({ BooleanExpression: IngressBooleanExpression }),
]);
export const PolicyConditions = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(PolicyCondition);
export const AcceptAction = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const PolicyStatement = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Conditions: PolicyConditions, Action: AcceptAction })).annotate({
    identifier: "PolicyStatement",
});
export const PolicyStatementList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(PolicyStatement);
export const CreateTrafficPolicyRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ClientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
    TrafficPolicyName: S.String,
    PolicyStatements: PolicyStatementList,
    DefaultAction: AcceptAction,
    MaxMessageSizeBytes: S.optional(S.Number),
    Tags: S.optional(TagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateTrafficPolicyRequest",
});
export const CreateTrafficPolicyResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TrafficPolicyId: S.String })).annotate({
    identifier: "CreateTrafficPolicyResponse",
});
export const GetTrafficPolicyRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TrafficPolicyId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetTrafficPolicyRequest",
});
export const GetTrafficPolicyResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TrafficPolicyName: S.String,
    TrafficPolicyId: S.String,
    TrafficPolicyArn: S.optional(S.String),
    PolicyStatements: S.optional(PolicyStatementList),
    MaxMessageSizeBytes: S.optional(S.Number),
    DefaultAction: S.optional(AcceptAction),
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    LastUpdatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "GetTrafficPolicyResponse",
});
export const UpdateTrafficPolicyRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TrafficPolicyId: S.String,
    TrafficPolicyName: S.optional(S.String),
    PolicyStatements: S.optional(PolicyStatementList),
    DefaultAction: S.optional(AcceptAction),
    MaxMessageSizeBytes: S.optional(S.Number),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateTrafficPolicyRequest",
});
export const UpdateTrafficPolicyResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateTrafficPolicyResponse",
});
export const DeleteTrafficPolicyRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TrafficPolicyId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteTrafficPolicyRequest",
});
export const DeleteTrafficPolicyResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteTrafficPolicyResponse",
});
export const ListTrafficPoliciesRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    PageSize: S.optional(S.Number),
    NextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListTrafficPoliciesRequest",
});
export const TrafficPolicy = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TrafficPolicyName: S.String,
    TrafficPolicyId: S.String,
    DefaultAction: AcceptAction,
})).annotate({ identifier: "TrafficPolicy" });
export const TrafficPolicyList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(TrafficPolicy);
export const ListTrafficPoliciesResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TrafficPolicies: S.optional(TrafficPolicyList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListTrafficPoliciesResponse",
});
//# Errors
export class AccessDeniedException extends S.TaggedErrorClass()("AccessDeniedException", { Message: S.optional(S.String) }).pipe(C.withAuthError) {
}
export class ResourceNotFoundException extends S.TaggedErrorClass()("ResourceNotFoundException", { Message: S.optional(S.String) }).pipe(C.withBadRequestError) {
}
export class ThrottlingException extends S.TaggedErrorClass()("ThrottlingException", { Message: S.optional(S.String) }).pipe(C.withThrottlingError) {
}
export class ValidationException extends S.TaggedErrorClass()("ValidationException", { Message: S.optional(S.String) }).pipe(C.withBadRequestError) {
}
export class ConflictException extends S.TaggedErrorClass()("ConflictException", { Message: S.optional(S.String) }).pipe(C.withConflictError) {
}
export class ServiceQuotaExceededException extends S.TaggedErrorClass()("ServiceQuotaExceededException", { Message: S.optional(S.String) }).pipe(C.withQuotaError) {
}
/**
 * Creates an import job for an address list.
 */
export const createAddressListImportJob = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateAddressListImportJobRequest,
    output: CreateAddressListImportJobResponse,
    errors: [
        AccessDeniedException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Removes a member from an address list.
 */
export const deregisterMemberFromAddressList = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeregisterMemberFromAddressListRequest,
    output: DeregisterMemberFromAddressListResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Fetch attributes of an import job.
 */
export const getAddressListImportJob = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetAddressListImportJobRequest,
    output: GetAddressListImportJobResponse,
    errors: [
        AccessDeniedException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves the details and current status of a specific email archive export job.
 */
export const getArchiveExport = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetArchiveExportRequest,
    output: GetArchiveExportResponse,
    errors: [AccessDeniedException, ThrottlingException, ValidationException],
}));
/**
 * Returns a pre-signed URL that provides temporary download access to the specific email message stored in the archive.
 */
export const getArchiveMessage = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetArchiveMessageRequest,
    output: GetArchiveMessageResponse,
    errors: [AccessDeniedException, ThrottlingException, ValidationException],
}));
/**
 * Returns the textual content of a specific email message stored in the archive. Attachments are not included.
 */
export const getArchiveMessageContent = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetArchiveMessageContentRequest,
    output: GetArchiveMessageContentResponse,
    errors: [AccessDeniedException, ThrottlingException, ValidationException],
}));
/**
 * Retrieves the details and current status of a specific email archive search job.
 */
export const getArchiveSearch = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetArchiveSearchRequest,
    output: GetArchiveSearchResponse,
    errors: [AccessDeniedException, ThrottlingException, ValidationException],
}));
/**
 * Returns the results of a completed email archive search job.
 */
export const getArchiveSearchResults = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetArchiveSearchResultsRequest,
    output: GetArchiveSearchResultsResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Fetch attributes of a member in an address list.
 */
export const getMemberOfAddressList = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetMemberOfAddressListRequest,
    output: GetMemberOfAddressListResponse,
    errors: [
        AccessDeniedException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Lists jobs for an address list.
 */
export const listAddressListImportJobs = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListAddressListImportJobsRequest,
    output: ListAddressListImportJobsResponse,
    errors: [
        AccessDeniedException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "ImportJobs",
        pageSize: "PageSize",
    },
}));
/**
 * Returns a list of email archive export jobs.
 */
export const listArchiveExports = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListArchiveExportsRequest,
    output: ListArchiveExportsResponse,
    errors: [
        AccessDeniedException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Exports",
        pageSize: "PageSize",
    },
}));
/**
 * Returns a list of email archive search jobs.
 */
export const listArchiveSearches = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListArchiveSearchesRequest,
    output: ListArchiveSearchesResponse,
    errors: [
        AccessDeniedException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Searches",
        pageSize: "PageSize",
    },
}));
/**
 * Lists members of an address list.
 */
export const listMembersOfAddressList = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListMembersOfAddressListRequest,
    output: ListMembersOfAddressListResponse,
    errors: [
        AccessDeniedException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Addresses",
        pageSize: "PageSize",
    },
}));
/**
 * Retrieves the list of tags (keys and values) assigned to the resource.
 */
export const listTagsForResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ListTagsForResourceRequest,
    output: ListTagsForResourceResponse,
    errors: [ResourceNotFoundException, ValidationException],
}));
/**
 * Adds a member to an address list.
 */
export const registerMemberToAddressList = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: RegisterMemberToAddressListRequest,
    output: RegisterMemberToAddressListResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Starts an import job for an address list.
 */
export const startAddressListImportJob = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: StartAddressListImportJobRequest,
    output: StartAddressListImportJobResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Initiates an export of emails from the specified archive.
 */
export const startArchiveExport = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: StartArchiveExportRequest,
    output: StartArchiveExportResponse,
    errors: [
        AccessDeniedException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Initiates a search across emails in the specified archive.
 */
export const startArchiveSearch = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: StartArchiveSearchRequest,
    output: StartArchiveSearchResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Stops an ongoing import job for an address list.
 */
export const stopAddressListImportJob = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: StopAddressListImportJobRequest,
    output: StopAddressListImportJobResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Stops an in-progress export of emails from an archive.
 */
export const stopArchiveExport = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: StopArchiveExportRequest,
    output: StopArchiveExportResponse,
    errors: [AccessDeniedException, ThrottlingException, ValidationException],
}));
/**
 * Stops an in-progress archive search job.
 */
export const stopArchiveSearch = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: StopArchiveSearchRequest,
    output: StopArchiveSearchResponse,
    errors: [AccessDeniedException, ThrottlingException, ValidationException],
}));
/**
 * Adds one or more tags (keys and values) to a specified resource.
 */
export const tagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: TagResourceRequest,
    output: TagResourceResponse,
    errors: [
        ConflictException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ValidationException,
    ],
}));
/**
 * Remove one or more tags (keys and values) from a specified resource.
 */
export const untagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UntagResourceRequest,
    output: UntagResourceResponse,
    errors: [ConflictException, ResourceNotFoundException, ValidationException],
}));
/**
 * Creates an Add On instance for the subscription indicated in the request. The resulting Amazon Resource Name (ARN) can be used in a conditional statement for a rule set or traffic policy.
 */
export const createAddonInstance = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateAddonInstanceRequest,
    output: CreateAddonInstanceResponse,
    errors: [
        ConflictException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ValidationException,
    ],
}));
/**
 * Gets detailed information about an Add On instance.
 */
export const getAddonInstance = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetAddonInstanceRequest,
    output: GetAddonInstanceResponse,
    errors: [ResourceNotFoundException, ValidationException],
}));
/**
 * Deletes an Add On instance.
 */
export const deleteAddonInstance = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteAddonInstanceRequest,
    output: DeleteAddonInstanceResponse,
    errors: [ConflictException, ValidationException],
}));
/**
 * Lists all Add On instances in your account.
 */
export const listAddonInstances = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListAddonInstancesRequest,
    output: ListAddonInstancesResponse,
    errors: [ValidationException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "AddonInstances",
        pageSize: "PageSize",
    },
}));
/**
 * Creates a subscription for an Add On representing the acceptance of its terms of use and additional pricing. The subscription can then be used to create an instance for use in rule sets or traffic policies.
 */
export const createAddonSubscription = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateAddonSubscriptionRequest,
    output: CreateAddonSubscriptionResponse,
    errors: [
        ConflictException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Gets detailed information about an Add On subscription.
 */
export const getAddonSubscription = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetAddonSubscriptionRequest,
    output: GetAddonSubscriptionResponse,
    errors: [ResourceNotFoundException, ValidationException],
}));
/**
 * Deletes an Add On subscription.
 */
export const deleteAddonSubscription = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteAddonSubscriptionRequest,
    output: DeleteAddonSubscriptionResponse,
    errors: [ConflictException, ValidationException],
}));
/**
 * Lists all Add On subscriptions in your account.
 */
export const listAddonSubscriptions = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListAddonSubscriptionsRequest,
    output: ListAddonSubscriptionsResponse,
    errors: [ValidationException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "AddonSubscriptions",
        pageSize: "PageSize",
    },
}));
/**
 * Creates a new address list.
 */
export const createAddressList = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateAddressListRequest,
    output: CreateAddressListResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Fetch attributes of an address list.
 */
export const getAddressList = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetAddressListRequest,
    output: GetAddressListResponse,
    errors: [
        AccessDeniedException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Deletes an address list.
 */
export const deleteAddressList = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteAddressListRequest,
    output: DeleteAddressListResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Lists address lists for this account.
 */
export const listAddressLists = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListAddressListsRequest,
    output: ListAddressListsResponse,
    errors: [AccessDeniedException, ThrottlingException, ValidationException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "AddressLists",
        pageSize: "PageSize",
    },
}));
/**
 * Creates a new email archive resource for storing and retaining emails.
 */
export const createArchive = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateArchiveRequest,
    output: CreateArchiveResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves the full details and current state of a specified email archive.
 */
export const getArchive = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetArchiveRequest,
    output: GetArchiveResponse,
    errors: [
        AccessDeniedException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Updates the attributes of an existing email archive.
 */
export const updateArchive = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateArchiveRequest,
    output: UpdateArchiveResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Initiates deletion of an email archive. This changes the archive state to pending deletion. In this state, no new emails can be added, and existing archived emails become inaccessible (search, export, download). The archive and all of its contents will be permanently deleted 30 days after entering the pending deletion state, regardless of the configured retention period.
 */
export const deleteArchive = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteArchiveRequest,
    output: DeleteArchiveResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Returns a list of all email archives in your account.
 */
export const listArchives = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListArchivesRequest,
    output: ListArchivesResponse,
    errors: [AccessDeniedException, ThrottlingException, ValidationException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Archives",
        pageSize: "PageSize",
    },
}));
/**
 * Provision a new ingress endpoint resource.
 */
export const createIngressPoint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateIngressPointRequest,
    output: CreateIngressPointResponse,
    errors: [
        ConflictException,
        ServiceQuotaExceededException,
        ValidationException,
    ],
}));
/**
 * Fetch ingress endpoint resource attributes.
 */
export const getIngressPoint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetIngressPointRequest,
    output: GetIngressPointResponse,
    errors: [ResourceNotFoundException, ValidationException],
}));
/**
 * Update attributes of a provisioned ingress endpoint resource.
 */
export const updateIngressPoint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateIngressPointRequest,
    output: UpdateIngressPointResponse,
    errors: [ConflictException, ResourceNotFoundException, ValidationException],
}));
/**
 * Delete an ingress endpoint resource.
 */
export const deleteIngressPoint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteIngressPointRequest,
    output: DeleteIngressPointResponse,
    errors: [ConflictException, ResourceNotFoundException, ValidationException],
}));
/**
 * List all ingress endpoint resources.
 */
export const listIngressPoints = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListIngressPointsRequest,
    output: ListIngressPointsResponse,
    errors: [ValidationException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "IngressPoints",
        pageSize: "PageSize",
    },
}));
/**
 * Creates a relay resource which can be used in rules to relay incoming emails to defined relay destinations.
 */
export const createRelay = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateRelayRequest,
    output: CreateRelayResponse,
    errors: [
        ConflictException,
        ServiceQuotaExceededException,
        ValidationException,
    ],
}));
/**
 * Fetch the relay resource and it's attributes.
 */
export const getRelay = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetRelayRequest,
    output: GetRelayResponse,
    errors: [ResourceNotFoundException, ValidationException],
}));
/**
 * Updates the attributes of an existing relay resource.
 */
export const updateRelay = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateRelayRequest,
    output: UpdateRelayResponse,
    errors: [ConflictException, ResourceNotFoundException, ValidationException],
}));
/**
 * Deletes an existing relay resource.
 */
export const deleteRelay = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteRelayRequest,
    output: DeleteRelayResponse,
    errors: [ConflictException, ResourceNotFoundException, ValidationException],
}));
/**
 * Lists all the existing relay resources.
 */
export const listRelays = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListRelaysRequest,
    output: ListRelaysResponse,
    errors: [ValidationException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Relays",
        pageSize: "PageSize",
    },
}));
/**
 * Provision a new rule set.
 */
export const createRuleSet = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateRuleSetRequest,
    output: CreateRuleSetResponse,
    errors: [
        ConflictException,
        ServiceQuotaExceededException,
        ValidationException,
    ],
}));
/**
 * Fetch attributes of a rule set.
 */
export const getRuleSet = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetRuleSetRequest,
    output: GetRuleSetResponse,
    errors: [ResourceNotFoundException, ValidationException],
}));
/**
 * Update attributes of an already provisioned rule set.
 */
export const updateRuleSet = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateRuleSetRequest,
    output: UpdateRuleSetResponse,
    errors: [ConflictException, ResourceNotFoundException, ValidationException],
}));
/**
 * Delete a rule set.
 */
export const deleteRuleSet = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteRuleSetRequest,
    output: DeleteRuleSetResponse,
    errors: [ConflictException, ValidationException],
}));
/**
 * List rule sets for this account.
 */
export const listRuleSets = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListRuleSetsRequest,
    output: ListRuleSetsResponse,
    errors: [ValidationException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "RuleSets",
        pageSize: "PageSize",
    },
}));
/**
 * Provision a new traffic policy resource.
 */
export const createTrafficPolicy = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateTrafficPolicyRequest,
    output: CreateTrafficPolicyResponse,
    errors: [
        ConflictException,
        ServiceQuotaExceededException,
        ValidationException,
    ],
}));
/**
 * Fetch attributes of a traffic policy resource.
 */
export const getTrafficPolicy = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetTrafficPolicyRequest,
    output: GetTrafficPolicyResponse,
    errors: [ResourceNotFoundException, ValidationException],
}));
/**
 * Update attributes of an already provisioned traffic policy resource.
 */
export const updateTrafficPolicy = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateTrafficPolicyRequest,
    output: UpdateTrafficPolicyResponse,
    errors: [ConflictException, ResourceNotFoundException, ValidationException],
}));
/**
 * Delete a traffic policy resource.
 */
export const deleteTrafficPolicy = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteTrafficPolicyRequest,
    output: DeleteTrafficPolicyResponse,
    errors: [ConflictException, ResourceNotFoundException, ValidationException],
}));
/**
 * List traffic policy resources.
 */
export const listTrafficPolicies = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListTrafficPoliciesRequest,
    output: ListTrafficPoliciesResponse,
    errors: [ValidationException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "TrafficPolicies",
        pageSize: "PageSize",
    },
}));
//# sourceMappingURL=mailmanager.js.map