import { CloudFormationTemplate } from '../template/cloudformation-template';
import { Value } from '../Value';
export declare class AwsResource<T extends string, R extends Record<string, any>, A extends Record<string, string> = {}> {
    type: T;
    properties: R;
    logicalName?: string;
    condition?: string;
    dependsOn?: (AwsResource<any, any, any> | string)[];
    deletionPolicy?: CloudFormationTemplate['Resources'][string]['DeletionPolicy'];
    attributes: {
        [K in keyof A]: <T = any>() => Value<Exclude<T, undefined>>;
    };
    constructor(type: T, properties: R, _attributes?: A);
    attribute(name: keyof A): Value<string>;
    withLogicalName(logicalName: string): this;
    withCondition(condition: string): this;
    withDependency(...dependsOn: (AwsResource<any, any, any> | string)[]): this;
    withDeletionPolicy(deletionPolicy: CloudFormationTemplate['Resources'][string]['DeletionPolicy']): this;
    private static capitalize;
    template(): CloudFormationTemplate['Resources'][string];
    disableLowerCase(): AwsResource<T, R, A>;
}
