import { Construct } from '../core/construct';
import { Token } from '../core/tokens';
import { Referenceable } from './stack';
export interface ParameterProps {
    /**
     * The data type for the parameter (DataType).
     */
    type: string;
    /**
     * A value of the appropriate type for the template to use if no value is specified
     * when a stack is created. If you define constraints for the parameter, you must specify
     * a value that adheres to those constraints.
     */
    default?: any;
    /**
     * A regular expression that represents the patterns to allow for String types.
     */
    allowedPattern?: string;
    /**
     * An array containing the list of values allowed for the parameter.
     */
    allowedValues?: string[];
    /**
     * A string that explains a constraint when the constraint is violated.
     * For example, without a constraint description, a parameter that has an allowed
     * pattern of [A-Za-z0-9]+ displays the following error message when the user specifies
     * an invalid value:
     */
    constraintDescription?: string;
    /**
     * A string of up to 4000 characters that describes the parameter.
     */
    description?: string;
    /**
     * An integer value that determines the largest number of characters you want to allow for String types.
     */
    maxLength?: number;
    /**
     * A numeric value that determines the largest numeric value you want to allow for Number types.
     */
    maxValue?: number;
    /**
     * An integer value that determines the smallest number of characters you want to allow for String types.
     */
    minLength?: number;
    /**
     * A numeric value that determines the smallest numeric value you want to allow for Number types.
     */
    minValue?: number;
    /**
     * Whether to mask the parameter value when anyone makes a call that describes the stack.
     * If you set the value to ``true``, the parameter value is masked with asterisks (``*****``).
     */
    noEcho?: boolean;
}
/**
 * Use the optional Parameters section to customize your templates.
 * Parameters enable you to input custom values to your template each time you create or
 * update a stack.
 */
export declare class Parameter extends Referenceable {
    /**
     * A token that represents the actual value of this parameter.
     */
    value: Token;
    private properties;
    /**
     * Creates a parameter construct.
     * Note that the name (logical ID) of the parameter will derive from it's `coname` and location
     * within the stack. Therefore, it is recommended that parameters are defined at the stack level.
     *
     * @param parent The parent construct.
     * @param props The parameter properties.
     */
    constructor(parent: Construct, name: string, props: ParameterProps);
    toCloudFormation(): object;
    /**
     * Allows using parameters as tokens without the need to dereference them.
     * This implicitly implements Token, until we make it an interface.
     */
    resolve(): any;
}
