import { BaseParameter, BaseValue } from "@atomist/automation-client/lib/internal/metadata/decoratorSupport";
export declare type ParametersDefinition<PARAMS = any> = ParametersListing | ParametersObject<PARAMS>;
/**
 * Interface mixed in with BaseParameter to allow adding a default value to a parameter.
 * When the class-style decorated approach is used, this is unnecessary as any field
 * value will be used as a default.
 */
export interface HasDefaultValue {
    defaultValue?: any;
}
export declare type ParametersObjectValue = BaseParameter & HasDefaultValue;
export declare type MappedParameterOrSecretObjectValue = MappedParameterOrSecretDeclaration;
export declare type ValueParameterObjectValue = ValueDeclaration;
/**
 * Object with properties defining parameters, secrets, mapped parameters and values.
 * Useful for combination via spreads.
 */
export declare type ParametersObject<PARAMS, K extends keyof PARAMS = keyof PARAMS> = Record<K, ParametersObjectValue | MappedParameterOrSecretObjectValue | ValueParameterObjectValue>;
export declare enum DeclarationType {
    Mapped = "mapped",
    Secret = "secret"
}
export interface MappedParameterOrSecretDeclaration {
    declarationType: DeclarationType;
    uri: string;
    /**
     * Only valid on mapped parameters
     */
    required?: boolean;
}
/**
 * Define values to be injected from the SDM configuration
 */
export declare type ValueDeclaration = BaseValue;
/**
 * Define parameters used in a command
 */
export interface ParametersListing {
    readonly parameters: NamedParameter[];
    readonly mappedParameters: NamedMappedParameter[];
    readonly secrets: NamedSecret[];
    readonly values: NamedValue[];
}
export declare type NamedParameter = BaseParameter & {
    name: string;
} & HasDefaultValue;
export interface NamedSecret {
    name: string;
    uri: string;
}
export interface NamedMappedParameter {
    name: string;
    uri: string;
    required?: boolean;
}
export declare type NamedValue = NamedValueParameter;
export interface NamedValueParameter extends BaseValue {
    name: string;
}
//# sourceMappingURL=ParametersDefinition.d.ts.map