declare type GUID = string;
declare type Datetime = string;
export declare type NoProperties = never;
export declare type Area = keyof COMMANDS & string;
export declare type Action<Ar extends Area> = keyof COMMANDS[Ar] & string;
export declare type Properties<Ar extends Area, Ac extends Action<Ar>> = (COMMANDS[Ar][Ac]);
export declare type PropertyKey<Ar extends Area, Ac extends Action<Ar>> = (keyof Properties<Ar, Ac> & string);
export declare type PropertyValue<Ar extends Area, Ac extends Action<Ar>, Key extends PropertyKey<Ar, Ac>> = (COMMANDS[Ar][Ac][Key]);
export declare type COMMANDS = {
    artifact: {
        associate: {
            artifactname: string;
            type: "container" | "filepath" | "versioncontrol" | "gitref" | "tfvclabel";
        };
        upload: {
            artifactname?: string;
            containerfolder: string;
        };
    };
    build: {
        uploadlog: NoProperties;
        updatebuildnumber: NoProperties;
        addbuildtag: NoProperties;
    };
    release: {
        updatereleasename: NoProperties;
    };
    task: {
        addattachment: {
            type: string;
            name: string;
        };
        complete: {
            result: "Succeeded" | "SucceededWithIssues" | "Failed";
        };
        logdetail: {
            id: GUID;
            parentid?: GUID;
            type?: string;
            name?: string;
            order?: number;
            starttime?: Datetime;
            finishtime?: Datetime;
            progress?: number;
            state?: "Unknown" | "Initialized" | "InProgress" | "Completed";
            result?: "Succeeded" | "SucceededWithIssues" | "Failed";
        };
        logissue: {
            type: "error" | "warning";
            sourcepath?: string;
            linenumber?: number;
            columnnumber?: number;
            code?: number;
        };
        prependpath: NoProperties;
        setendpoint: {
            id: string;
        } & ({
            field: "authParameter" | "dataParameter";
            key: string;
        } | {
            field: "url";
            key?: string;
        });
        setprogress: {
            value: number;
        };
        setvariable: {
            variable: string;
            issecret?: boolean;
            isoutput?: boolean;
            isreadonly?: boolean;
        };
        uploadfile: NoProperties;
        uploadsummary: NoProperties;
    };
};
export declare function serializeProperties<Ar extends Area, Ac extends Action<Ar>>(properties: Properties<Ar, Ac>): string;
export {};
