import aws from "./aws-sdk";
import Adapt, { BuildData, Component, DeployedWhenMethod, FinalDomElement, ObserveForStatus, PrimitiveComponent, Status, WithChildren } from "@adpt/core";
import { OverwriteT } from "type-ops";
import { ResourceIdProps, ResourceIdState } from "../resource_id";
import { WithCredentials } from "./credentials";
declare const resourceIds: ["StackName"];
/** @beta */
export declare type CFStackPrimitiveProps = aws.CloudFormation.CreateStackInput & WithChildren & WithCredentials;
/** @beta */
export declare type Capability = "CAPABILITY_IAM" | "CAPABILITY_NAMED_IAM" | "CAPABILITY_AUTO_EXPAND";
/** @beta */
export interface StackDriftInformation {
    StackDriftStatus: "DRIFTED" | "IN_SYNC" | "UNKNOWN" | "NOT_CHECKED";
    LastCheckTimestamp: string | null;
}
/** @beta */
export interface Output {
    OutputKey: string | null;
    OutputValue: string | null;
    Description: string | null;
    ExportName: string | null;
}
/** @beta */
export interface Parameter {
    ParameterKey: string | null;
    ParameterValue: string | null;
    UsePreviousValue: boolean | null;
    ResolvedValue: string | null;
}
/** @beta */
export interface RollbackTrigger {
    Arn: string;
    Type: string;
}
/** @beta */
export interface RollbackConfiguration {
    RollbackTriggers: RollbackTrigger[];
    MonitoringTimeInMinutes: number | null;
}
/** @beta */
export interface Tag {
    Key: string;
    Value: string;
}
/** @beta */
export interface CFStackStatus extends Status {
    Capabilities: Capability[];
    ChangeSetId: string | null;
    CreationTime: string;
    DeletionTime: string | null;
    Description: string | null;
    DisableRollback: boolean;
    DriftInformation: StackDriftInformation | null;
    EnableTerminationProtection: boolean;
    LastUpdatedTime: string | null;
    NotificationARNs: string[];
    Outputs: Output[];
    Parameters: Parameter[];
    ParentId: string | null;
    RoleARN: string | null;
    RollbackConfiguration: RollbackConfiguration;
    RootId: string | null;
    StackId: string | null;
    StackName: string;
    StackStatus: string;
    StackStatusReason: string | null;
    Tags: Tag[];
    TimeoutInMinutes: number | null;
}
/** @beta */
export declare class CFStackPrimitive extends PrimitiveComponent<CFStackPrimitiveProps> {
    deployedWhen: DeployedWhenMethod;
    validate(): "Nested CFStacks are not currently supported" | undefined;
    validateChildren(children: any): void;
    status(observe: ObserveForStatus, buildData: BuildData): Promise<Status>;
}
/** @beta */
export declare type CFStackProps = OverwriteT<CFStackPrimitiveProps, ResourceIdProps<typeof resourceIds>>;
/** @beta */
export interface CFStackState extends ResourceIdState<typeof resourceIds> {
}
/** @beta */
export declare class CFStackBase extends Component<CFStackProps, CFStackState> {
    constructor(props: CFStackProps);
    initialState(): {};
    build(): Adapt.AdaptElementOrNull;
}
/** @beta */
export declare function isCFStackPrimitiveFinalElement(val: any): val is FinalDomElement<CFStackPrimitiveProps>;
/** @beta */
export declare const CFStack: (props: Pick<CFStackPrimitiveProps, "children" | "OnFailure" | "Tags" | "awsCredentials" | "TemplateBody" | "TemplateURL" | "Parameters" | "DisableRollback" | "RollbackConfiguration" | "TimeoutInMinutes" | "NotificationARNs" | "Capabilities" | "ResourceTypes" | "RoleARN" | "StackPolicyBody" | "StackPolicyURL" | "ClientRequestToken" | "EnableTerminationProtection"> & Record<"StackName", string | import("../resource_id/resource_id").ResourceId | null> & Adapt.WithChildren) => Adapt.AdaptElement<Adapt.AnyProps>;
export {};
//# sourceMappingURL=CFStack.d.ts.map