import { SMap, ResourceError, Aliasable } from "../general"; import { resourceIdentifier, checkValid, prepareQueue, generateObject, getName, s_isAliased, toJson } from "../symbols"; import { stackPreparable } from "../stackBackend"; import { GeneratableAdvField } from "../field"; import { pathItem } from "../path"; import { s_jsonLiteral } from "../fields/jsonField"; type ParamType = ("String" | "Number" | "List" | "CommaDelimitedList" | "AWS::EC2::AvailabilityZone::Name" | "AWS::EC2::Image::Id" | "AWS::EC2::Instance::Id" | "AWS::EC2::KeyPair::KeyName" | "AWS::EC2::SecurityGroup::GroupName" | "AWS::EC2::SecurityGroup::Id" | "AWS::EC2::Subnet::Id" | "AWS::EC2::Volume::Id" | "AWS::EC2::VPC::Id" | "AWS::Route53::HostedZone::Id" | "List" | "List" | "List" | "List" | "List" | "List" | "List" | "List" | "List" | "AWS::SSM::Parameter::Name" | "AWS::SSM::Parameter::Value" | "AWS::SSM::Parameter::Value>" | "AWS::SSM::Parameter::Value" | "AWS::SSM::Parameter::Value" | "AWS::SSM::Parameter::Value" | "AWS::SSM::Parameter::Value>" | "AWS::SSM::Parameter::Value>"); /** * what this outputs to the template */ type ParmOutTypeToTsType = (T extends ("String" | "AWS::EC2::AvailabilityZone::Name" | "AWS::EC2::Image::Id" | "AWS::EC2::Instance::Id" | "AWS::EC2::KeyPair::KeyName" | "AWS::EC2::SecurityGroup::GroupName" | "AWS::EC2::SecurityGroup::Id" | "AWS::EC2::Subnet::Id" | "AWS::EC2::Volume::Id" | "AWS::EC2::VPC::Id" | "AWS::Route53::HostedZone::Id" | "AWS::SSM::Parameter::Name" | "AWS::SSM::Parameter::Value" | "AWS::SSM::Parameter::Value" | "AWS::SSM::Parameter::Value") ? string : T extends ("Number") ? number : T extends ("List" | "CommaDelimitedList" | "List" | "List" | "List" | "List" | "List" | "List" | "List" | "List" | "List" | "AWS::SSM::Parameter::Value>" | "AWS::SSM::Parameter::Value" | "AWS::SSM::Parameter::Value>" | "AWS::SSM::Parameter::Value>") ? string[] : any); /** * what you need to enter for a default */ type ParmInTypeToTsType = (T extends ("String" | "AWS::EC2::AvailabilityZone::Name" | "AWS::EC2::Image::Id" | "AWS::EC2::Instance::Id" | "AWS::EC2::KeyPair::KeyName" | "AWS::EC2::SecurityGroup::GroupName" | "AWS::EC2::SecurityGroup::Id" | "AWS::EC2::Subnet::Id" | "AWS::EC2::Volume::Id" | "AWS::EC2::VPC::Id" | "AWS::Route53::HostedZone::Id" | "AWS::SSM::Parameter::Name" | "AWS::SSM::Parameter::Value" | "AWS::SSM::Parameter::Value>" | "AWS::SSM::Parameter::Value" | "AWS::SSM::Parameter::Value" | "AWS::SSM::Parameter::Value" | "AWS::SSM::Parameter::Value>" | "AWS::SSM::Parameter::Value>") ? string : T extends ("Number") ? number | string : T extends ("List") ? number[] | string : T extends ("CommaDelimitedList" | "List" | "List" | "List" | "List" | "List" | "List" | "List" | "List" | "List") ? string[] | string : any); export declare class Parameter extends GeneratableAdvField> implements Aliasable { readonly [resourceIdentifier] = "Parameter"; private _; get [s_isAliased](): boolean; get [s_jsonLiteral](): string; constructor(name?: string, type?: T); name(name: string): this; Type(name: U): Parameter; default(val: ParmInTypeToTsType): this; description(text: string): this; constraintDescription(text: string): this; max(max: number): this; min(min: number): this; noEcho(bool?: boolean): this; [checkValid](): SMap; [prepareQueue](stack: stackPreparable, path: pathItem, ref: boolean): void; [toJson](): { Ref: string; }; [generateObject](): { MaxValue: number; MinValue: number; AllowedPattern: RegExp; AllowedValues: ParmInTypeToTsType[]; ConstraintDescription: string; Default: string | (ParmInTypeToTsType & number); Description: string; NoEcho: boolean; Type: T; } | { MaxLength: number; MinLength: number; AllowedPattern: RegExp; AllowedValues: ParmInTypeToTsType[]; ConstraintDescription: string; Default: string | (ParmInTypeToTsType & number); Description: string; NoEcho: boolean; Type: T; }; [getName](): string; } export {};