import { z } from 'zod';
import { type Options } from '../options.js';
import { File } from './file.js';
declare const schema: z.ZodObject<{
    name: z.ZodLiteral<"CI/CD">;
    on: z.ZodObject<{
        push: z.ZodObject<{
            branches: z.ZodTuple<[z.ZodLiteral<"main">, z.ZodLiteral<"beta">, z.ZodLiteral<"renovate/**">], null>;
        }, z.core.$strip>;
        pull_request: z.ZodNull;
    }, z.core.$strip>;
    permissions: z.ZodObject<{
        contents: z.ZodLiteral<"write">;
        'id-token': z.ZodLiteral<"write">;
        issues: z.ZodLiteral<"write">;
        'pull-requests': z.ZodLiteral<"write">;
    }, z.core.$strict>;
    jobs: z.ZodObject<{
        'lint-commit-messages': z.ZodObject<{
            uses: z.ZodString;
        }, z.core.$strip>;
        lint: z.ZodObject<{
            uses: z.ZodString;
        }, z.core.$strip>;
        build: z.ZodObject<{
            uses: z.ZodString;
        }, z.core.$strip>;
        test: z.ZodObject<{
            uses: z.ZodString;
        }, z.core.$strip>;
        'code-coverage': z.ZodObject<{
            uses: z.ZodString;
            needs: z.ZodTuple<[z.ZodLiteral<"lint">, z.ZodLiteral<"build">, z.ZodLiteral<"test">], null>;
        }, z.core.$strip>;
        release: z.ZodObject<{
            uses: z.ZodString;
            needs: z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"lint-commit-messages">, z.ZodLiteral<"lint">, z.ZodLiteral<"build">, z.ZodLiteral<"test">, z.ZodLiteral<"code-coverage">]>>;
            secrets: z.ZodObject<{
                privateKey: z.ZodString;
            }, z.core.$strict>;
        }, z.core.$strip>;
    }, z.core.$strict>;
}, z.core.$strict>;
type Yaml = z.infer<typeof schema>;
declare class CiCd extends File {
    protected readonly _yaml: Yaml;
    constructor(path: string, options: Options);
    process(): this;
    protected get sha(): string;
    protected get version(): string;
}
export { CiCd };
