import * as core from "@terrascript/core";
export interface EncryptionKeyArgs extends core.SchemaArgs {
    id: string | core.StringOut;
    type: string | core.StringOut;
}
export declare class EncryptionKey extends core.Schema<EncryptionKeyArgs> {
    id: string | core.StringOut;
    type: string | core.StringOut;
}
export interface ArtifactStoreArgs extends core.SchemaArgs {
    encryptionKey?: EncryptionKey;
    location: string | core.StringOut;
    region?: string | core.StringOut;
    type: string | core.StringOut;
}
export declare class ArtifactStore extends core.Schema<ArtifactStoreArgs> {
    encryptionKey?: EncryptionKey;
    location: string | core.StringOut;
    region?: string | core.StringOut;
    type: string | core.StringOut;
}
export interface ActionArgs extends core.SchemaArgs {
    category: string | core.StringOut;
    configuration?: core.Map<string, string> | core.MapOut<core.StringOut>;
    inputArtifacts?: core.Array<string> | core.ArrayOut<core.StringOut>;
    name: string | core.StringOut;
    namespace?: string | core.StringOut;
    outputArtifacts?: core.Array<string> | core.ArrayOut<core.StringOut>;
    owner: string | core.StringOut;
    provider: string | core.StringOut;
    region?: string | core.StringOut;
    roleArn?: string | core.StringOut;
    runOrder?: number | core.NumberOut;
    version: string | core.StringOut;
}
export declare class Action extends core.Schema<ActionArgs> {
    category: string | core.StringOut;
    configuration?: core.Map<string, string> | core.MapOut<core.StringOut>;
    inputArtifacts?: core.Array<string> | core.ArrayOut<core.StringOut>;
    name: string | core.StringOut;
    namespace?: string | core.StringOut;
    outputArtifacts?: core.Array<string> | core.ArrayOut<core.StringOut>;
    owner: string | core.StringOut;
    provider: string | core.StringOut;
    region?: string | core.StringOut;
    roleArn?: string | core.StringOut;
    runOrder?: number | core.NumberOut;
    version: string | core.StringOut;
}
export interface StageArgs extends core.SchemaArgs {
    action: core.Array<Action> | core.ArrayOut<Action>;
    name: string | core.StringOut;
}
export declare class Stage extends core.Schema<StageArgs> {
    action: core.Array<Action> | core.ArrayOut<Action>;
    name: string | core.StringOut;
}
export interface MainArgs extends core.ResourceArgs {
    artifactStore: core.Array<ArtifactStore> | core.ArrayOut<ArtifactStore>;
    /**
     * (Required) The name of the pipeline.
     */
    name: string | core.StringOut;
    /**
     * (Required) A service role Amazon Resource Name (ARN) that grants AWS CodePipeline permission to make
     * calls to AWS services on your behalf.
     */
    roleArn: string | core.StringOut;
    stage: core.Array<Stage> | core.ArrayOut<Stage>;
    /**
     * (Optional) A map of tags to assign to the resource. If configured with a provider [`default_tags` co
     * nfiguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-co
     * nfiguration-block) present, tags with matching keys will overwrite those defined at the provider-lev
     * el.
     */
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    /**
     * A map of tags assigned to the resource, including those inherited from the provider [`default_tags`
     * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-
     * configuration-block).
     */
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export declare class Main extends core.Resource<MainArgs> {
    /**
     * The codepipeline ARN.
     */
    arn: string | core.StringOut;
    artifactStore: core.Array<ArtifactStore> | core.ArrayOut<ArtifactStore>;
    /**
     * (Required) The KMS key ARN or ID
     */
    id: string | core.StringOut;
    /**
     * (Required) The name of the pipeline.
     */
    name: string | core.StringOut;
    /**
     * (Required) A service role Amazon Resource Name (ARN) that grants AWS CodePipeline permission to make
     * calls to AWS services on your behalf.
     */
    roleArn: string | core.StringOut;
    stage: core.Array<Stage> | core.ArrayOut<Stage>;
    /**
     * (Optional) A map of tags to assign to the resource. If configured with a provider [`default_tags` co
     * nfiguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-co
     * nfiguration-block) present, tags with matching keys will overwrite those defined at the provider-lev
     * el.
     */
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    /**
     * A map of tags assigned to the resource, including those inherited from the provider [`default_tags`
     * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-
     * configuration-block).
     */
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    constructor(name: string, args?: MainArgs);
    getNamespace(): string;
}
//# sourceMappingURL=main.d.ts.map