/**
 * 1Password CLI (op) integration for importing secrets from vaults.
 */
export interface OpVault {
    id: string;
    name: string;
}
export interface OpItemSummary {
    id: string;
    title: string;
    category: string;
    vault: {
        id: string;
        name: string;
    };
}
export interface OpField {
    id: string;
    label: string;
    type: string;
    value?: string;
    purpose?: string;
}
export interface OpItem extends OpItemSummary {
    fields: OpField[];
}
export interface ImportableSecret {
    envKey: string;
    itemTitle: string;
    fieldLabel: string;
    value: string;
    /**
     * The item's free-form notes (1Password's `notesPlain` / any NOTES-purpose
     * field), carried as descriptive metadata for the imported secret. Never the
     * secret value — omitted when the item has no notes.
     */
    description?: string;
}
export interface SkippedField {
    itemTitle: string;
    fieldLabel: string;
    reason: string;
}
export declare function assertOpAvailable(): void;
export declare function listVaults(): OpVault[];
export declare function listItems(vaultName: string): OpItemSummary[];
export declare function getItem(itemId: string, vaultName: string): OpItem;
export declare function toEnvKey(title: string): string;
export declare function slugify(name: string): string;
/**
 * Pure transform from a fetched 1Password item to an importable secret (or the
 * reason it was skipped). Split out of extractSecrets so the field-selection
 * and notes-extraction logic is exercised directly by tests without shelling
 * out to `op`.
 */
export declare function itemToSecret(item: OpItem): {
    secret: ImportableSecret;
} | {
    skipped: SkippedField;
};
export declare function extractSecrets(items: OpItemSummary[], vaultName: string): {
    secrets: ImportableSecret[];
    skipped: SkippedField[];
};
export interface PasswordItemTemplate {
    title: string;
    category: 'PASSWORD';
    tags: string[];
    fields: Array<{
        id: string;
        type: 'CONCEALED';
        purpose: 'PASSWORD';
        label: string;
        value: string;
    }>;
}
export declare function buildPasswordItemTemplate(title: string, value: string): PasswordItemTemplate;
export declare function itemExistsByTitle(title: string, vaultName: string): boolean;
export declare function deleteItemByTitle(title: string, vaultName: string): void;
export declare function createPasswordItem(title: string, value: string, vaultName: string): void;
