import { z } from 'zod/v4';
import type { Container, Secret } from '@dagger.io/dagger';
/**
 * Generic configuration for DaggerEnv
 */
export type DaggerEnvConfig = {
    /** Arguments schema */
    args: z.ZodObject<any>;
    /** Environment variables schema */
    env: z.ZodObject<any>;
    /** Secrets schema */
    secrets: z.ZodObject<any>;
    /** Secret presets mapping preset names to arrays of secret names */
    secretPresets: Record<string, readonly string[]>;
    /** Derived environment variables based on secret names */
    derivedEnvVars: Record<string, Record<string, string>>;
};
/**
 * Inferred options type from config
 */
export type DaggerOptionsFromConfig<T extends DaggerEnvConfig> = {
    args: z.infer<T['args']>;
    env: z.infer<T['env']>;
    secrets: z.infer<T['secrets']>;
};
/**
 * Reusable Dagger environment abstraction
 */
export declare class DaggerEnv<T extends DaggerEnvConfig> {
    private readonly config;
    private readonly optionsSchema;
    constructor(config: T);
    /**
     * Parse dagger options from a Secret
     */
    parseDaggerOptions(options: Secret): Promise<DaggerOptionsFromConfig<T>>;
    /**
     * Create a function that applies environment variables and secrets to a container
     * based on the provided Dagger options, secret presets, and additional secret names.
     */
    getWithEnv(daggerOptions: Secret | DaggerOptionsFromConfig<T>, secretPresets: Array<keyof T['secretPresets']>, secretNames?: string[]): Promise<(con: Container) => Container>;
    /**
     * Get the options schema for this DaggerEnv instance
     */
    getOptionsSchema(): z.ZodObject<{
        args: T["args"];
        env: T["env"];
        secrets: T["secrets"];
    }, z.core.$strip>;
    /**
     * Get available secret presets
     */
    getSecretPresets(): Array<keyof T['secretPresets']>;
    /**
     * Get secrets for a specific preset
     */
    getPresetSecrets(preset: keyof T['secretPresets']): readonly string[];
}
/**
 * Helper function to create a DaggerEnv instance with proper typing
 */
export declare function createDaggerEnv<T extends DaggerEnvConfig>(config: T): DaggerEnv<T>;
//# sourceMappingURL=dagger-env.d.ts.map