import { SecretsManagerClient } from "@aws-sdk/client-secrets-manager";
import type { AwsConfig, AwsCredentialMode } from "./types.js";
type AwsClient = Pick<SecretsManagerClient, "send">;
type AwsClientFactory = (config: ResolvedAwsConfig) => AwsClient;
export interface AwsCommandOptions {
    credentialMode?: AwsCredentialMode;
    region?: string;
    prefix?: string;
    profile?: string;
    roleArn?: string;
    sourceProfile?: string;
    externalId?: string;
    sessionName?: string;
    dryRun?: boolean;
}
export interface ResolvedAwsConfig {
    credentialMode: AwsCredentialMode;
    credentialSource: "static" | "default" | "profile" | "role";
    region: string;
    prefix?: string;
    profile?: string;
    roleArn?: string;
    sourceProfile?: string;
    externalId?: string;
    sessionName?: string;
    staticCredentials?: {
        accessKeyId: string;
        secretAccessKey: string;
        sessionToken?: string;
    };
}
export interface AwsPlanAction {
    action: "push" | "pull" | "list-remote";
    key?: string;
    awsName?: string;
    localState?: "exists" | "missing" | "not-checked";
    remoteState?: "exists" | "missing" | "not-checked" | "unknown";
    mutation: "none" | "aws-write" | "local-write";
    note: string;
}
export interface AwsPlanResult {
    dryRun: true;
    operation: "push" | "pull" | "sync";
    config: AwsConfigSummary;
    actions: AwsPlanAction[];
    errors: string[];
}
export interface AwsSyncResult {
    pushed: string[];
    pulled: string[];
    errors: string[];
    plan?: AwsPlanResult;
}
export interface AwsConfigSummary {
    credentialMode: AwsCredentialMode;
    credentialSource: ResolvedAwsConfig["credentialSource"];
    region: string;
    prefix?: string;
    profile?: string;
    roleArn?: string;
    sourceProfile?: string;
    sessionName?: string;
}
export declare function loadAwsConfig(): AwsConfig | null;
export declare function saveAwsConfig(config: AwsConfig): void;
export declare function setAwsClientFactoryForTests(factory?: AwsClientFactory): void;
export declare function resolveAwsConfig(options?: AwsCommandOptions, storedConfig?: AwsConfig | null): ResolvedAwsConfig;
export declare function summarizeAwsConfig(config: ResolvedAwsConfig): AwsConfigSummary;
export declare function pushSecret(key: string, options?: AwsCommandOptions): Promise<AwsPlanResult | undefined>;
export declare function pullSecret(key: string, options?: AwsCommandOptions): Promise<AwsPlanResult | undefined>;
export declare function syncAll(options?: AwsCommandOptions): Promise<AwsSyncResult>;
export {};
//# sourceMappingURL=aws.d.ts.map