import { GitIdentity } from "./task-workflow";
import { JobStepConfiguration, JobStep } from "./workflows-model";
/**
 * A collection of very commonly used, individual, GitHub Workflow Job steps.
 */
export declare class WorkflowSteps {
    /**
     * Checks out a repository.
     *
     * @param options Options
     * @returns Job steps
     */
    static checkout(options?: CheckoutOptions): JobStep;
    /**
     * Configures the git identity (user name and email).
     * @param options Options to configure the git identity JobStep
     * @returns Job steps
     */
    static setupGitIdentity(options: SetupGitIdentityOptions): JobStep;
    static uploadArtifact(options: UploadArtifactOptions): JobStep;
    private static buildJobStepConfig;
}
export interface CheckoutOptions extends JobStepConfiguration {
    /**
     * Options for `checkout`.
     */
    readonly with?: CheckoutWith;
}
/**
 * Options for `checkout`.
 */
export interface CheckoutWith {
    /**
     * Number of commits to fetch. 0 indicates all history for all branches and tags.
     *
     * @default 1
     */
    readonly fetchDepth?: number;
    /**
     * Whether LFS is enabled for the GitHub repository
     *
     * @default false
     */
    readonly lfs?: boolean;
    /**
     * Branch or tag name.
     * @default - the default branch is implicitly used
     */
    readonly ref?: string;
    /**
     * The repository (owner/repo) to use.
     * @default - the default repository is implicitly used
     */
    readonly repository?: string;
    /**
     * A GitHub token to use when checking out the repository.
     *
     * If the intent is to push changes back to the branch, then you must use a
     * PAT with `repo` (and possibly `workflows`) permissions.
     * @default - the default GITHUB_TOKEN is implicitly used
     */
    readonly token?: string;
}
export interface SetupGitIdentityOptions extends JobStepConfiguration {
    /**
     * The identity to use.
     */
    readonly gitIdentity: GitIdentity;
}
export interface UploadArtifactWith {
    /**
     * Name of the artifact to upload.
     *
     * @default "artifact"
     */
    readonly name?: string;
    /**
     * A file, directory or wildcard pattern that describes what to upload
     */
    readonly path: string;
    /**
     * The desired behavior if no files are found using the provided path.
     * Available Options:
     *   warn: Output a warning but do not fail the action
     *   error: Fail the action with an error message
     *   ignore: Do not output any warnings or errors, the action does not fail
     *
     * @default "warn"
     */
    readonly ifNoFilesFound?: "error" | "warn" | "ignore";
    /**
     * Duration after which artifact will expire in days. 0 means using default repository retention.
     *
     * Minimum 1 day.
     * Maximum 90 days unless changed from the repository settings page.
     *
     * @default - The default repository retention
     */
    readonly retentionDays?: number;
    /**
     * The level of compression for Zlib to be applied to the artifact archive.
     *
     * The value can range from 0 to 9.
     * For large files that are not easily compressed, a value of 0 is recommended for significantly faster uploads.
     *
     * @default 6
     */
    readonly compressionLevel?: number;
}
export interface UploadArtifactOptions extends JobStepConfiguration {
    /**
     * Options for `upload-artifact`.
     */
    readonly with: UploadArtifactWith;
}
