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: "Bedrock Data Automation",
    serviceShapeName: "AmazonBedrockKeystoneBuildTimeService",
});
const auth = T.AwsAuthSigv4({ name: "bedrock" });
const ver = T.ServiceVersion("2023-07-26");
const proto = T.AwsProtocolsRestJson1();
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://bedrock-data-automation-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://bedrock-data-automation-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://bedrock-data-automation.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                    }
                    return err("DualStack is enabled but this partition does not support DualStack");
                }
                return e(`https://bedrock-data-automation.${Region}.${_.getAttr(PartitionResult, "dnsSuffix")}`);
            }
        }
    }
    return err("Invalid Configuration: Missing Region");
});
export const BlueprintStage = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const CopyBlueprintStageRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    blueprintArn: S.String.pipe(T.HttpLabel("blueprintArn")),
    sourceStage: BlueprintStage,
    targetStage: BlueprintStage,
    clientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
}).pipe(T.all(T.Http({ method: "PUT", uri: "/blueprints/{blueprintArn}/copy-stage" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CopyBlueprintStageRequest",
});
export const CopyBlueprintStageResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "CopyBlueprintStageResponse",
});
export const ValidationExceptionField = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ name: S.String, message: S.String })).annotate({
    identifier: "ValidationExceptionField",
});
export const ValidationExceptionFieldList = /*@__PURE__*/ /*#__PURE__*/ S.Array(ValidationExceptionField);
export const CreateBlueprintVersionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    blueprintArn: S.String.pipe(T.HttpLabel("blueprintArn")),
    clientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
}).pipe(T.all(T.Http({ method: "POST", uri: "/blueprints/{blueprintArn}/versions/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateBlueprintVersionRequest",
});
export const Type = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const KmsEncryptionContext = /*@__PURE__*/ /*#__PURE__*/ S.Record(S.String, S.String.pipe(S.optional));
export const S3Object = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ s3Uri: S.String, version: S.optional(S.String) })).annotate({ identifier: "S3Object" });
export const BlueprintOptimizationSample = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ assetS3Object: S3Object, groundTruthS3Object: S3Object })).annotate({
    identifier: "BlueprintOptimizationSample",
});
export const BlueprintOptimizationSamples = /*@__PURE__*/ /*#__PURE__*/ S.Array(BlueprintOptimizationSample);
export const Blueprint = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    blueprintArn: S.String,
    schema: SensitiveString,
    type: Type,
    creationTime: T.DateFromString.pipe(T.TimestampFormat("date-time")),
    lastModifiedTime: T.DateFromString.pipe(T.TimestampFormat("date-time")),
    blueprintName: SensitiveString,
    blueprintVersion: S.optional(S.String),
    blueprintStage: S.optional(BlueprintStage),
    kmsKeyId: S.optional(S.String),
    kmsEncryptionContext: S.optional(KmsEncryptionContext),
    optimizationSamples: S.optional(BlueprintOptimizationSamples),
    optimizationTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
})).annotate({ identifier: "Blueprint" });
export const CreateBlueprintVersionResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ blueprint: Blueprint })).annotate({
    identifier: "CreateBlueprintVersionResponse",
});
export const EntityType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const GetDataAutomationLibraryEntityRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    libraryArn: S.String.pipe(T.HttpLabel("libraryArn")),
    entityType: EntityType.pipe(T.HttpLabel("entityType")),
    entityId: S.String.pipe(T.HttpLabel("entityId")),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/data-automation-libraries/{libraryArn}/entityType/{entityType}/entities/{entityId}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetDataAutomationLibraryEntityRequest",
});
export const Language = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const Phrase = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    text: SensitiveString,
    displayAsText: S.optional(SensitiveString),
})).annotate({ identifier: "Phrase" });
export const PhraseList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Phrase);
export const VocabularyEntity = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    entityId: S.optional(S.String),
    description: S.optional(SensitiveString),
    language: S.optional(Language),
    phrases: S.optional(PhraseList),
    lastModifiedTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
})).annotate({
    identifier: "VocabularyEntity",
});
export const EntityDetails = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ vocabulary: VocabularyEntity }),
]);
export const GetDataAutomationLibraryEntityResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ entity: S.optional(EntityDetails) })).annotate({
    identifier: "GetDataAutomationLibraryEntityResponse",
});
export const ListDataAutomationLibraryEntitiesRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    libraryArn: S.String.pipe(T.HttpLabel("libraryArn")),
    entityType: EntityType.pipe(T.HttpLabel("entityType")),
    maxResults: S.optional(S.Number),
    nextToken: S.optional(S.String),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/data-automation-libraries/{libraryArn}/entityType/{entityType}/entities/",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListDataAutomationLibraryEntitiesRequest",
});
export const VocabularyEntitySummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    entityId: S.optional(S.String),
    description: S.optional(SensitiveString),
    language: S.optional(Language),
    numOfPhrases: S.optional(S.Number),
    lastModifiedTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
})).annotate({
    identifier: "VocabularyEntitySummary",
});
export const DataAutomationLibraryEntitySummary = 
/*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ vocabulary: VocabularyEntitySummary }),
]);
export const DataAutomationLibraryEntitySummaries = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(DataAutomationLibraryEntitySummary);
export const ListDataAutomationLibraryEntitiesResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    entities: S.optional(DataAutomationLibraryEntitySummaries),
    nextToken: S.optional(S.String),
})).annotate({
    identifier: "ListDataAutomationLibraryEntitiesResponse",
});
export const ListTagsForResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ resourceARN: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/listTagsForResource" }), 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: S.optional(TagList) })).annotate({
    identifier: "ListTagsForResourceResponse",
});
export const TagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ resourceARN: S.String, tags: TagList }).pipe(T.all(T.Http({ method: "POST", uri: "/tagResource" }), 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: "/untagResource" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UntagResourceRequest",
});
export const UntagResourceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UntagResourceResponse",
});
export const BlueprintOptimizationObject = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ blueprintArn: S.String, stage: S.optional(BlueprintStage) })).annotate({
    identifier: "BlueprintOptimizationObject",
});
export const BlueprintOptimizationOutputConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ s3Object: S3Object })).annotate({
    identifier: "BlueprintOptimizationOutputConfiguration",
});
export const EncryptionConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    kmsKeyId: S.String,
    kmsEncryptionContext: S.optional(KmsEncryptionContext),
})).annotate({
    identifier: "EncryptionConfiguration",
});
export const InvokeBlueprintOptimizationAsyncRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    blueprint: BlueprintOptimizationObject,
    samples: BlueprintOptimizationSamples,
    outputConfiguration: BlueprintOptimizationOutputConfiguration,
    dataAutomationProfileArn: S.String,
    encryptionConfiguration: S.optional(EncryptionConfiguration),
    tags: S.optional(TagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/invokeBlueprintOptimizationAsync" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "InvokeBlueprintOptimizationAsyncRequest",
});
export const InvokeBlueprintOptimizationAsyncResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ invocationArn: S.String })).annotate({
    identifier: "InvokeBlueprintOptimizationAsyncResponse",
});
export const GetBlueprintOptimizationStatusRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    invocationArn: S.String.pipe(T.HttpLabel("invocationArn")),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/getBlueprintOptimizationStatus/{invocationArn}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetBlueprintOptimizationStatusRequest",
});
export const BlueprintOptimizationJobStatus = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const GetBlueprintOptimizationStatusResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    status: S.optional(BlueprintOptimizationJobStatus),
    errorType: S.optional(S.String),
    errorMessage: S.optional(S.String),
    outputConfiguration: S.optional(BlueprintOptimizationOutputConfiguration),
})).annotate({
    identifier: "GetBlueprintOptimizationStatusResponse",
});
export const CreateBlueprintRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    blueprintName: SensitiveString,
    type: Type,
    blueprintStage: S.optional(BlueprintStage),
    schema: SensitiveString,
    clientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
    encryptionConfiguration: S.optional(EncryptionConfiguration),
    tags: S.optional(TagList),
}).pipe(T.all(T.Http({ method: "PUT", uri: "/blueprints/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateBlueprintRequest",
});
export const CreateBlueprintResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ blueprint: Blueprint })).annotate({
    identifier: "CreateBlueprintResponse",
});
export const GetBlueprintRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    blueprintArn: S.String.pipe(T.HttpLabel("blueprintArn")),
    blueprintVersion: S.optional(S.String),
    blueprintStage: S.optional(BlueprintStage),
}).pipe(T.all(T.Http({ method: "POST", uri: "/blueprints/{blueprintArn}/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetBlueprintRequest",
});
export const GetBlueprintResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ blueprint: Blueprint })).annotate({
    identifier: "GetBlueprintResponse",
});
export const UpdateBlueprintRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    blueprintArn: S.String.pipe(T.HttpLabel("blueprintArn")),
    schema: SensitiveString,
    blueprintStage: S.optional(BlueprintStage),
    encryptionConfiguration: S.optional(EncryptionConfiguration),
}).pipe(T.all(T.Http({ method: "PUT", uri: "/blueprints/{blueprintArn}/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateBlueprintRequest",
});
export const UpdateBlueprintResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ blueprint: Blueprint })).annotate({
    identifier: "UpdateBlueprintResponse",
});
export const DeleteBlueprintRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    blueprintArn: S.String.pipe(T.HttpLabel("blueprintArn")),
    blueprintVersion: S.optional(S.String).pipe(T.HttpQuery("blueprintVersion")),
}).pipe(T.all(T.Http({ method: "DELETE", uri: "/blueprints/{blueprintArn}/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteBlueprintRequest",
});
export const DeleteBlueprintResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteBlueprintResponse",
});
export const ResourceOwner = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const BlueprintStageFilter = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DataAutomationProjectStage = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DataAutomationProjectFilter = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    projectArn: S.String,
    projectStage: S.optional(DataAutomationProjectStage),
})).annotate({
    identifier: "DataAutomationProjectFilter",
});
export const ListBlueprintsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    blueprintArn: S.optional(S.String),
    resourceOwner: S.optional(ResourceOwner),
    blueprintStageFilter: S.optional(BlueprintStageFilter),
    maxResults: S.optional(S.Number),
    nextToken: S.optional(S.String),
    projectFilter: S.optional(DataAutomationProjectFilter),
}).pipe(T.all(T.Http({ method: "POST", uri: "/blueprints/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListBlueprintsRequest",
});
export const BlueprintSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    blueprintArn: S.String,
    blueprintVersion: S.optional(S.String),
    blueprintStage: S.optional(BlueprintStage),
    blueprintName: S.optional(SensitiveString),
    creationTime: T.DateFromString.pipe(T.TimestampFormat("date-time")),
    lastModifiedTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
})).annotate({
    identifier: "BlueprintSummary",
});
export const Blueprints = /*@__PURE__*/ /*#__PURE__*/ S.Array(BlueprintSummary);
export const ListBlueprintsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ blueprints: Blueprints, nextToken: S.optional(S.String) })).annotate({
    identifier: "ListBlueprintsResponse",
});
export const VocabularyEntityInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    entityId: S.optional(S.String),
    description: S.optional(SensitiveString),
    language: Language,
    phrases: PhraseList,
})).annotate({
    identifier: "VocabularyEntityInfo",
});
export const UpsertEntityInfo = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ vocabulary: VocabularyEntityInfo }),
]);
export const UpsertEntitiesInfo = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(UpsertEntityInfo);
export const EntityIdList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const DeleteEntitiesInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ entityIds: EntityIdList })).annotate({
    identifier: "DeleteEntitiesInfo",
});
export const InlinePayload = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ upsertEntitiesInfo: UpsertEntitiesInfo }),
    S.Struct({ deleteEntitiesInfo: DeleteEntitiesInfo }),
]);
export const InputConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    s3Object: S.optional(S3Object),
    inlinePayload: S.optional(InlinePayload),
})).annotate({
    identifier: "InputConfiguration",
});
export const LibraryIngestionJobOperationType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const OutputConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ s3Uri: S.String })).annotate({
    identifier: "OutputConfiguration",
});
export const EventBridgeConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ eventBridgeEnabled: S.Boolean })).annotate({
    identifier: "EventBridgeConfiguration",
});
export const NotificationConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ eventBridgeConfiguration: EventBridgeConfiguration })).annotate({
    identifier: "NotificationConfiguration",
});
export const InvokeDataAutomationLibraryIngestionJobRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    libraryArn: S.String.pipe(T.HttpLabel("libraryArn")),
    clientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
    inputConfiguration: InputConfiguration,
    entityType: EntityType,
    operationType: LibraryIngestionJobOperationType,
    outputConfiguration: OutputConfiguration,
    notificationConfiguration: S.optional(NotificationConfiguration),
    tags: S.optional(TagList),
}).pipe(T.all(T.Http({
    method: "PUT",
    uri: "/data-automation-libraries/{libraryArn}/library-ingestion-jobs/",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "InvokeDataAutomationLibraryIngestionJobRequest",
});
export const InvokeDataAutomationLibraryIngestionJobResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ jobArn: S.optional(S.String) })).annotate({
    identifier: "InvokeDataAutomationLibraryIngestionJobResponse",
});
export const GetDataAutomationLibraryIngestionJobRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    libraryArn: S.String.pipe(T.HttpLabel("libraryArn")),
    jobArn: S.String.pipe(T.HttpLabel("jobArn")),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/data-automation-libraries/{libraryArn}/library-ingestion-jobs/{jobArn}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetDataAutomationLibraryIngestionJobRequest",
});
export const LibraryIngestionJobStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DataAutomationLibraryIngestionJob = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    jobArn: S.String,
    creationTime: T.DateFromString.pipe(T.TimestampFormat("date-time")),
    entityType: EntityType,
    operationType: LibraryIngestionJobOperationType,
    jobStatus: LibraryIngestionJobStatus,
    outputConfiguration: OutputConfiguration,
    completionTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    errorMessage: S.optional(S.String),
    errorType: S.optional(S.String),
})).annotate({
    identifier: "DataAutomationLibraryIngestionJob",
});
export const GetDataAutomationLibraryIngestionJobResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ job: S.optional(DataAutomationLibraryIngestionJob) })).annotate({
    identifier: "GetDataAutomationLibraryIngestionJobResponse",
});
export const ListDataAutomationLibraryIngestionJobsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    libraryArn: S.String.pipe(T.HttpLabel("libraryArn")),
    maxResults: S.optional(S.Number),
    nextToken: S.optional(S.String),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/data-automation-libraries/{libraryArn}/library-ingestion-jobs/",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListDataAutomationLibraryIngestionJobsRequest",
});
export const DataAutomationLibraryIngestionJobSummary = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    jobArn: S.String,
    jobStatus: LibraryIngestionJobStatus,
    entityType: EntityType,
    operationType: LibraryIngestionJobOperationType,
    creationTime: T.DateFromString.pipe(T.TimestampFormat("date-time")),
    completionTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
})).annotate({
    identifier: "DataAutomationLibraryIngestionJobSummary",
});
export const DataAutomationLibraryIngestionJobSummaries = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(DataAutomationLibraryIngestionJobSummary);
export const ListDataAutomationLibraryIngestionJobsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    jobs: S.optional(DataAutomationLibraryIngestionJobSummaries),
    nextToken: S.optional(S.String),
})).annotate({
    identifier: "ListDataAutomationLibraryIngestionJobsResponse",
});
export const CreateDataAutomationLibraryRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    libraryName: SensitiveString,
    libraryDescription: S.optional(SensitiveString),
    clientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
    encryptionConfiguration: S.optional(EncryptionConfiguration),
    tags: S.optional(TagList),
}).pipe(T.all(T.Http({ method: "PUT", uri: "/data-automation-libraries/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateDataAutomationLibraryRequest",
});
export const DataAutomationLibraryStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const CreateDataAutomationLibraryResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    libraryArn: S.optional(S.String),
    status: S.optional(DataAutomationLibraryStatus),
})).annotate({
    identifier: "CreateDataAutomationLibraryResponse",
});
export const GetDataAutomationLibraryRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ libraryArn: S.String.pipe(T.HttpLabel("libraryArn")) }).pipe(T.all(T.Http({
    method: "POST",
    uri: "/data-automation-libraries/{libraryArn}/",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetDataAutomationLibraryRequest",
});
export const EntityTypeInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ entityType: EntityType, entityMetadata: S.optional(S.String) })).annotate({ identifier: "EntityTypeInfo" });
export const EntityTypeInfoList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(EntityTypeInfo);
export const DataAutomationLibrary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    libraryArn: S.String,
    creationTime: T.DateFromString.pipe(T.TimestampFormat("date-time")),
    libraryName: SensitiveString,
    libraryDescription: S.optional(SensitiveString),
    status: DataAutomationLibraryStatus,
    entityTypes: S.optional(EntityTypeInfoList),
    kmsKeyId: S.optional(S.String),
    kmsEncryptionContext: S.optional(KmsEncryptionContext),
})).annotate({
    identifier: "DataAutomationLibrary",
});
export const GetDataAutomationLibraryResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ library: S.optional(DataAutomationLibrary) })).annotate({
    identifier: "GetDataAutomationLibraryResponse",
});
export const UpdateDataAutomationLibraryRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    libraryArn: S.String.pipe(T.HttpLabel("libraryArn")),
    libraryDescription: S.optional(SensitiveString),
    clientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
}).pipe(T.all(T.Http({
    method: "PUT",
    uri: "/data-automation-libraries/{libraryArn}/",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateDataAutomationLibraryRequest",
});
export const UpdateDataAutomationLibraryResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    libraryArn: S.optional(S.String),
    status: S.optional(DataAutomationLibraryStatus),
})).annotate({
    identifier: "UpdateDataAutomationLibraryResponse",
});
export const DeleteDataAutomationLibraryRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ libraryArn: S.String.pipe(T.HttpLabel("libraryArn")) }).pipe(T.all(T.Http({
    method: "DELETE",
    uri: "/data-automation-libraries/{libraryArn}/",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteDataAutomationLibraryRequest",
});
export const DeleteDataAutomationLibraryResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    libraryArn: S.optional(S.String),
    status: S.optional(DataAutomationLibraryStatus),
})).annotate({
    identifier: "DeleteDataAutomationLibraryResponse",
});
export const ListDataAutomationLibrariesRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    maxResults: S.optional(S.Number),
    nextToken: S.optional(S.String),
    projectFilter: S.optional(DataAutomationProjectFilter),
}).pipe(T.all(T.Http({ method: "POST", uri: "/data-automation-libraries/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListDataAutomationLibrariesRequest",
});
export const DataAutomationLibrarySummary = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    libraryArn: S.String,
    libraryName: S.optional(SensitiveString),
    creationTime: T.DateFromString.pipe(T.TimestampFormat("date-time")),
})).annotate({
    identifier: "DataAutomationLibrarySummary",
});
export const DataAutomationLibrarySummaries = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(DataAutomationLibrarySummary);
export const ListDataAutomationLibrariesResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    libraries: S.optional(DataAutomationLibrarySummaries),
    nextToken: S.optional(S.String),
})).annotate({
    identifier: "ListDataAutomationLibrariesResponse",
});
export const DataAutomationProjectType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DocumentExtractionGranularityType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const DocumentExtractionGranularityTypes = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(DocumentExtractionGranularityType);
export const DocumentExtractionGranularity = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ types: S.optional(DocumentExtractionGranularityTypes) })).annotate({
    identifier: "DocumentExtractionGranularity",
});
export const State = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DocumentBoundingBox = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ state: State })).annotate({
    identifier: "DocumentBoundingBox",
});
export const DocumentStandardExtraction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    granularity: DocumentExtractionGranularity,
    boundingBox: DocumentBoundingBox,
})).annotate({
    identifier: "DocumentStandardExtraction",
});
export const DocumentStandardGenerativeField = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ state: State })).annotate({
    identifier: "DocumentStandardGenerativeField",
});
export const DocumentOutputTextFormatType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const DocumentOutputTextFormatTypes = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(DocumentOutputTextFormatType);
export const DocumentOutputTextFormat = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ types: S.optional(DocumentOutputTextFormatTypes) })).annotate({
    identifier: "DocumentOutputTextFormat",
});
export const DocumentOutputAdditionalFileFormat = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ state: State })).annotate({
    identifier: "DocumentOutputAdditionalFileFormat",
});
export const DocumentOutputFormat = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    textFormat: DocumentOutputTextFormat,
    additionalFileFormat: DocumentOutputAdditionalFileFormat,
})).annotate({
    identifier: "DocumentOutputFormat",
});
export const DocumentStandardOutputConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    extraction: S.optional(DocumentStandardExtraction),
    generativeField: S.optional(DocumentStandardGenerativeField),
    outputFormat: S.optional(DocumentOutputFormat),
})).annotate({
    identifier: "DocumentStandardOutputConfiguration",
});
export const ImageExtractionCategoryType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ImageExtractionCategoryTypes = /*@__PURE__*/ /*#__PURE__*/ S.Array(ImageExtractionCategoryType);
export const ImageExtractionCategory = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ state: State, types: S.optional(ImageExtractionCategoryTypes) })).annotate({
    identifier: "ImageExtractionCategory",
});
export const ImageBoundingBox = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ state: State })).annotate({
    identifier: "ImageBoundingBox",
});
export const ImageStandardExtraction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    category: ImageExtractionCategory,
    boundingBox: ImageBoundingBox,
})).annotate({
    identifier: "ImageStandardExtraction",
});
export const ImageStandardGenerativeFieldType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const ImageStandardGenerativeFieldTypes = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ImageStandardGenerativeFieldType);
export const ImageStandardGenerativeField = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    state: State,
    types: S.optional(ImageStandardGenerativeFieldTypes),
})).annotate({
    identifier: "ImageStandardGenerativeField",
});
export const ImageStandardOutputConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    extraction: S.optional(ImageStandardExtraction),
    generativeField: S.optional(ImageStandardGenerativeField),
})).annotate({
    identifier: "ImageStandardOutputConfiguration",
});
export const VideoExtractionCategoryType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const VideoExtractionCategoryTypes = /*@__PURE__*/ /*#__PURE__*/ S.Array(VideoExtractionCategoryType);
export const VideoExtractionCategory = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ state: State, types: S.optional(VideoExtractionCategoryTypes) })).annotate({
    identifier: "VideoExtractionCategory",
});
export const VideoBoundingBox = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ state: State })).annotate({
    identifier: "VideoBoundingBox",
});
export const VideoStandardExtraction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    category: VideoExtractionCategory,
    boundingBox: VideoBoundingBox,
})).annotate({
    identifier: "VideoStandardExtraction",
});
export const VideoStandardGenerativeFieldType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const VideoStandardGenerativeFieldTypes = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(VideoStandardGenerativeFieldType);
export const VideoStandardGenerativeField = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    state: State,
    types: S.optional(VideoStandardGenerativeFieldTypes),
})).annotate({
    identifier: "VideoStandardGenerativeField",
});
export const VideoStandardOutputConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    extraction: S.optional(VideoStandardExtraction),
    generativeField: S.optional(VideoStandardGenerativeField),
})).annotate({
    identifier: "VideoStandardOutputConfiguration",
});
export const AudioExtractionCategoryType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const AudioExtractionCategoryTypes = /*@__PURE__*/ /*#__PURE__*/ S.Array(AudioExtractionCategoryType);
export const SpeakerLabelingConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ state: State })).annotate({
    identifier: "SpeakerLabelingConfiguration",
});
export const ChannelLabelingConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ state: State })).annotate({
    identifier: "ChannelLabelingConfiguration",
});
export const TranscriptConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    speakerLabeling: S.optional(SpeakerLabelingConfiguration),
    channelLabeling: S.optional(ChannelLabelingConfiguration),
})).annotate({
    identifier: "TranscriptConfiguration",
});
export const AudioExtractionCategoryTypeConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ transcript: S.optional(TranscriptConfiguration) })).annotate({
    identifier: "AudioExtractionCategoryTypeConfiguration",
});
export const AudioExtractionCategory = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    state: State,
    types: S.optional(AudioExtractionCategoryTypes),
    typeConfiguration: S.optional(AudioExtractionCategoryTypeConfiguration),
})).annotate({
    identifier: "AudioExtractionCategory",
});
export const AudioStandardExtraction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ category: AudioExtractionCategory })).annotate({
    identifier: "AudioStandardExtraction",
});
export const AudioStandardGenerativeFieldType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const AudioStandardGenerativeFieldTypes = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(AudioStandardGenerativeFieldType);
export const AudioStandardGenerativeField = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    state: State,
    types: S.optional(AudioStandardGenerativeFieldTypes),
})).annotate({
    identifier: "AudioStandardGenerativeField",
});
export const AudioStandardOutputConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    extraction: S.optional(AudioStandardExtraction),
    generativeField: S.optional(AudioStandardGenerativeField),
})).annotate({
    identifier: "AudioStandardOutputConfiguration",
});
export const StandardOutputConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    document: S.optional(DocumentStandardOutputConfiguration),
    image: S.optional(ImageStandardOutputConfiguration),
    video: S.optional(VideoStandardOutputConfiguration),
    audio: S.optional(AudioStandardOutputConfiguration),
})).annotate({
    identifier: "StandardOutputConfiguration",
});
export const BlueprintItem = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    blueprintArn: S.String,
    blueprintVersion: S.optional(S.String),
    blueprintStage: S.optional(BlueprintStage),
})).annotate({ identifier: "BlueprintItem" });
export const BlueprintItems = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(BlueprintItem);
export const CustomOutputConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ blueprints: S.optional(BlueprintItems) })).annotate({
    identifier: "CustomOutputConfiguration",
});
export const SplitterConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ state: S.optional(State) })).annotate({
    identifier: "SplitterConfiguration",
});
export const ModalityProcessingConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ state: S.optional(State) })).annotate({
    identifier: "ModalityProcessingConfiguration",
});
export const SensitiveDataDetectionMode = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SensitiveDataDetectionScopeType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const SensitiveDataDetectionScope = /*@__PURE__*/ /*#__PURE__*/ S.Array(SensitiveDataDetectionScopeType);
export const PIIEntityType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const PIIEntityTypes = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(PIIEntityType);
export const PIIRedactionMaskMode = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const PIIEntitiesConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    piiEntityTypes: S.optional(PIIEntityTypes),
    redactionMaskMode: S.optional(PIIRedactionMaskMode),
})).annotate({
    identifier: "PIIEntitiesConfiguration",
});
export const SensitiveDataConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    detectionMode: SensitiveDataDetectionMode,
    detectionScope: S.optional(SensitiveDataDetectionScope),
    piiEntitiesConfiguration: S.optional(PIIEntitiesConfiguration),
})).annotate({
    identifier: "SensitiveDataConfiguration",
});
export const DocumentOverrideConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    splitter: S.optional(SplitterConfiguration),
    modalityProcessing: S.optional(ModalityProcessingConfiguration),
    sensitiveDataConfiguration: S.optional(SensitiveDataConfiguration),
})).annotate({
    identifier: "DocumentOverrideConfiguration",
});
export const ImageOverrideConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    modalityProcessing: S.optional(ModalityProcessingConfiguration),
    sensitiveDataConfiguration: S.optional(SensitiveDataConfiguration),
})).annotate({
    identifier: "ImageOverrideConfiguration",
});
export const VideoOverrideConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    modalityProcessing: S.optional(ModalityProcessingConfiguration),
    sensitiveDataConfiguration: S.optional(SensitiveDataConfiguration),
})).annotate({
    identifier: "VideoOverrideConfiguration",
});
export const AudioInputLanguages = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(Language);
export const AudioGenerativeOutputLanguage = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const AudioLanguageConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    inputLanguages: S.optional(AudioInputLanguages),
    generativeOutputLanguage: S.optional(AudioGenerativeOutputLanguage),
    identifyMultipleLanguages: S.optional(S.Boolean),
})).annotate({
    identifier: "AudioLanguageConfiguration",
});
export const AudioOverrideConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    modalityProcessing: S.optional(ModalityProcessingConfiguration),
    languageConfiguration: S.optional(AudioLanguageConfiguration),
    sensitiveDataConfiguration: S.optional(SensitiveDataConfiguration),
})).annotate({
    identifier: "AudioOverrideConfiguration",
});
export const DesiredModality = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ModalityRoutingConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    jpeg: S.optional(DesiredModality),
    png: S.optional(DesiredModality),
    mp4: S.optional(DesiredModality),
    mov: S.optional(DesiredModality),
})).annotate({
    identifier: "ModalityRoutingConfiguration",
});
export const OverrideConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    document: S.optional(DocumentOverrideConfiguration),
    image: S.optional(ImageOverrideConfiguration),
    video: S.optional(VideoOverrideConfiguration),
    audio: S.optional(AudioOverrideConfiguration),
    modalityRouting: S.optional(ModalityRoutingConfiguration),
})).annotate({
    identifier: "OverrideConfiguration",
});
export const DataAutomationLibraryItem = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ libraryArn: S.String })).annotate({
    identifier: "DataAutomationLibraryItem",
});
export const DataAutomationLibraryItems = /*@__PURE__*/ /*#__PURE__*/ S.Array(DataAutomationLibraryItem);
export const DataAutomationLibraryConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ libraries: S.optional(DataAutomationLibraryItems) })).annotate({
    identifier: "DataAutomationLibraryConfiguration",
});
export const CreateDataAutomationProjectRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    projectName: SensitiveString,
    projectDescription: S.optional(SensitiveString),
    projectStage: S.optional(DataAutomationProjectStage),
    projectType: S.optional(DataAutomationProjectType),
    standardOutputConfiguration: StandardOutputConfiguration,
    customOutputConfiguration: S.optional(CustomOutputConfiguration),
    overrideConfiguration: S.optional(OverrideConfiguration),
    dataAutomationLibraryConfiguration: S.optional(DataAutomationLibraryConfiguration),
    clientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
    encryptionConfiguration: S.optional(EncryptionConfiguration),
    tags: S.optional(TagList),
}).pipe(T.all(T.Http({ method: "PUT", uri: "/data-automation-projects/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateDataAutomationProjectRequest",
});
export const DataAutomationProjectStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const CreateDataAutomationProjectResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    projectArn: S.String,
    projectStage: S.optional(DataAutomationProjectStage),
    status: S.optional(DataAutomationProjectStatus),
})).annotate({
    identifier: "CreateDataAutomationProjectResponse",
});
export const GetDataAutomationProjectRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    projectArn: S.String.pipe(T.HttpLabel("projectArn")),
    projectStage: S.optional(DataAutomationProjectStage),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/data-automation-projects/{projectArn}/",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetDataAutomationProjectRequest",
});
export const DataAutomationProject = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    projectArn: S.String,
    creationTime: T.DateFromString.pipe(T.TimestampFormat("date-time")),
    lastModifiedTime: T.DateFromString.pipe(T.TimestampFormat("date-time")),
    projectName: SensitiveString,
    projectStage: S.optional(DataAutomationProjectStage),
    projectType: S.optional(DataAutomationProjectType),
    projectDescription: S.optional(SensitiveString),
    standardOutputConfiguration: S.optional(StandardOutputConfiguration),
    customOutputConfiguration: S.optional(CustomOutputConfiguration),
    overrideConfiguration: S.optional(OverrideConfiguration),
    dataAutomationLibraryConfiguration: S.optional(DataAutomationLibraryConfiguration),
    status: DataAutomationProjectStatus,
    kmsKeyId: S.optional(S.String),
    kmsEncryptionContext: S.optional(KmsEncryptionContext),
})).annotate({
    identifier: "DataAutomationProject",
});
export const GetDataAutomationProjectResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ project: DataAutomationProject })).annotate({
    identifier: "GetDataAutomationProjectResponse",
});
export const UpdateDataAutomationProjectRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    projectArn: S.String.pipe(T.HttpLabel("projectArn")),
    projectStage: S.optional(DataAutomationProjectStage),
    projectDescription: S.optional(SensitiveString),
    standardOutputConfiguration: StandardOutputConfiguration,
    customOutputConfiguration: S.optional(CustomOutputConfiguration),
    overrideConfiguration: S.optional(OverrideConfiguration),
    dataAutomationLibraryConfiguration: S.optional(DataAutomationLibraryConfiguration),
    encryptionConfiguration: S.optional(EncryptionConfiguration),
}).pipe(T.all(T.Http({
    method: "PUT",
    uri: "/data-automation-projects/{projectArn}/",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateDataAutomationProjectRequest",
});
export const UpdateDataAutomationProjectResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    projectArn: S.String,
    projectStage: S.optional(DataAutomationProjectStage),
    status: S.optional(DataAutomationProjectStatus),
})).annotate({
    identifier: "UpdateDataAutomationProjectResponse",
});
export const DeleteDataAutomationProjectRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ projectArn: S.String.pipe(T.HttpLabel("projectArn")) }).pipe(T.all(T.Http({
    method: "DELETE",
    uri: "/data-automation-projects/{projectArn}/",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteDataAutomationProjectRequest",
});
export const DeleteDataAutomationProjectResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    projectArn: S.String,
    status: S.optional(DataAutomationProjectStatus),
})).annotate({
    identifier: "DeleteDataAutomationProjectResponse",
});
export const DataAutomationProjectStageFilter = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const BlueprintFilter = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    blueprintArn: S.String,
    blueprintVersion: S.optional(S.String),
    blueprintStage: S.optional(BlueprintStage),
})).annotate({
    identifier: "BlueprintFilter",
});
export const DataAutomationLibraryFilter = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ libraryArn: S.String })).annotate({
    identifier: "DataAutomationLibraryFilter",
});
export const ListDataAutomationProjectsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    maxResults: S.optional(S.Number),
    nextToken: S.optional(S.String),
    projectStageFilter: S.optional(DataAutomationProjectStageFilter),
    blueprintFilter: S.optional(BlueprintFilter),
    resourceOwner: S.optional(ResourceOwner),
    libraryFilter: S.optional(DataAutomationLibraryFilter),
}).pipe(T.all(T.Http({ method: "POST", uri: "/data-automation-projects/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListDataAutomationProjectsRequest",
});
export const DataAutomationProjectSummary = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    projectArn: S.String,
    projectStage: S.optional(DataAutomationProjectStage),
    projectType: S.optional(DataAutomationProjectType),
    projectName: S.optional(SensitiveString),
    creationTime: T.DateFromString.pipe(T.TimestampFormat("date-time")),
})).annotate({
    identifier: "DataAutomationProjectSummary",
});
export const DataAutomationProjectSummaries = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(DataAutomationProjectSummary);
export const ListDataAutomationProjectsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    projects: DataAutomationProjectSummaries,
    nextToken: S.optional(S.String),
})).annotate({
    identifier: "ListDataAutomationProjectsResponse",
});
//# Errors
export class AccessDeniedException extends S.TaggedErrorClass()("AccessDeniedException", { message: S.optional(S.String) }).pipe(C.withAuthError) {
}
export class InternalServerException extends S.TaggedErrorClass()("InternalServerException", { message: S.optional(S.String) }).pipe(C.withServerError) {
}
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),
    fieldList: S.optional(ValidationExceptionFieldList),
}).pipe(C.withBadRequestError) {
}
export class ServiceQuotaExceededException extends S.TaggedErrorClass()("ServiceQuotaExceededException", { message: S.optional(S.String) }).pipe(C.withQuotaError) {
}
export class ConflictException extends S.TaggedErrorClass()("ConflictException", { message: S.optional(S.String) }).pipe(C.withConflictError) {
}
/**
 * Copies a Blueprint from one stage to another
 */
export const copyBlueprintStage = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CopyBlueprintStageRequest,
    output: CopyBlueprintStageResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Creates a new version of an existing Amazon Bedrock Data Automation Blueprint
 */
export const createBlueprintVersion = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateBlueprintVersionRequest,
    output: CreateBlueprintVersionResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Gets an existing entity based on entity type from the library
 */
export const getDataAutomationLibraryEntity = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetDataAutomationLibraryEntityRequest,
    output: GetDataAutomationLibraryEntityResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Lists all stored entities in the library
 */
export const listDataAutomationLibraryEntities = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListDataAutomationLibraryEntitiesRequest,
    output: ListDataAutomationLibraryEntitiesResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "nextToken",
        outputToken: "nextToken",
        items: "entities",
        pageSize: "maxResults",
    },
}));
/**
 * List tags for an Amazon Bedrock Data Automation resource
 */
export const listTagsForResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ListTagsForResourceRequest,
    output: ListTagsForResourceResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Tag an Amazon Bedrock Data Automation resource
 */
export const tagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: TagResourceRequest,
    output: TagResourceResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Untag an Amazon Bedrock Data Automation resource
 */
export const untagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UntagResourceRequest,
    output: UntagResourceResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Invoke an async job to perform Blueprint Optimization
 */
export const invokeBlueprintOptimizationAsync = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: InvokeBlueprintOptimizationAsyncRequest,
    output: InvokeBlueprintOptimizationAsyncResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * API used to get blueprint optimization status.
 */
export const getBlueprintOptimizationStatus = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetBlueprintOptimizationStatusRequest,
    output: GetBlueprintOptimizationStatusResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Creates an Amazon Bedrock Data Automation Blueprint
 */
export const createBlueprint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateBlueprintRequest,
    output: CreateBlueprintResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Gets an existing Amazon Bedrock Data Automation Blueprint
 */
export const getBlueprint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetBlueprintRequest,
    output: GetBlueprintResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Updates an existing Amazon Bedrock Data Automation Blueprint
 */
export const updateBlueprint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateBlueprintRequest,
    output: UpdateBlueprintResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Deletes an existing Amazon Bedrock Data Automation Blueprint
 */
export const deleteBlueprint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteBlueprintRequest,
    output: DeleteBlueprintResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Lists all existing Amazon Bedrock Data Automation Blueprints
 */
export const listBlueprints = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListBlueprintsRequest,
    output: ListBlueprintsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "nextToken",
        outputToken: "nextToken",
        items: "blueprints",
        pageSize: "maxResults",
    },
}));
/**
 * Async API: Invoke data automation library ingestion job
 */
export const invokeDataAutomationLibraryIngestionJob = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: InvokeDataAutomationLibraryIngestionJobRequest,
    output: InvokeDataAutomationLibraryIngestionJobResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * API used to get status of data automation library ingestion job
 */
export const getDataAutomationLibraryIngestionJob = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetDataAutomationLibraryIngestionJobRequest,
    output: GetDataAutomationLibraryIngestionJobResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Lists all data automation library ingestion jobs
 */
export const listDataAutomationLibraryIngestionJobs = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListDataAutomationLibraryIngestionJobsRequest,
    output: ListDataAutomationLibraryIngestionJobsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "nextToken",
        outputToken: "nextToken",
        items: "jobs",
        pageSize: "maxResults",
    },
}));
/**
 * Creates an Amazon Bedrock Data Automation Library
 */
export const createDataAutomationLibrary = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateDataAutomationLibraryRequest,
    output: CreateDataAutomationLibraryResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Gets an existing Amazon Bedrock Data Automation Library
 */
export const getDataAutomationLibrary = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetDataAutomationLibraryRequest,
    output: GetDataAutomationLibraryResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Updates an existing Amazon Bedrock Data Automation Library
 */
export const updateDataAutomationLibrary = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateDataAutomationLibraryRequest,
    output: UpdateDataAutomationLibraryResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Deletes an existing Amazon Bedrock Data Automation Library
 */
export const deleteDataAutomationLibrary = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteDataAutomationLibraryRequest,
    output: DeleteDataAutomationLibraryResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Lists all existing Amazon Bedrock Data Automation Libraries
 */
export const listDataAutomationLibraries = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListDataAutomationLibrariesRequest,
    output: ListDataAutomationLibrariesResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "nextToken",
        outputToken: "nextToken",
        items: "libraries",
        pageSize: "maxResults",
    },
}));
/**
 * Creates an Amazon Bedrock Data Automation Project
 */
export const createDataAutomationProject = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateDataAutomationProjectRequest,
    output: CreateDataAutomationProjectResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Gets an existing Amazon Bedrock Data Automation Project
 */
export const getDataAutomationProject = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetDataAutomationProjectRequest,
    output: GetDataAutomationProjectResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Updates an existing Amazon Bedrock Data Automation Project
 */
export const updateDataAutomationProject = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateDataAutomationProjectRequest,
    output: UpdateDataAutomationProjectResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Deletes an existing Amazon Bedrock Data Automation Project
 */
export const deleteDataAutomationProject = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteDataAutomationProjectRequest,
    output: DeleteDataAutomationProjectResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Lists all existing Amazon Bedrock Data Automation Projects
 */
export const listDataAutomationProjects = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListDataAutomationProjectsRequest,
    output: ListDataAutomationProjectsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "nextToken",
        outputToken: "nextToken",
        items: "projects",
        pageSize: "maxResults",
    },
}));
//# sourceMappingURL=bedrock-data-automation.js.map