/**
 * Shared `contacts.jsonc` mutations — denylist + preferred.
 *
 * Pure logic with cloud I/O injected, so the desktop service
 * (`mailx-service`, Node) and the Android service (`mailx-store-web`, in the
 * WebView) run ONE implementation instead of each keeping its own copy.
 * `web-service.ts` used to stub `addToDenylist` / `addPreferredContact` as
 * `notImpl()`, which is why the phone's ⊘ / ★ buttons did nothing.
 *
 * Nothing here is platform-specific: it's a `cloudRead` → mutate → `cloudWrite`
 * round-trip. Each caller passes its own platform's cloud functions.
 */
export type CloudReadFn = (filename: string) => Promise<string | null>;
export type CloudWriteFn = (filename: string, content: string) => Promise<unknown>;
export interface PreferredContactEntry {
    name: string;
    email: string;
    source?: string;
    organization?: string;
}
/** Append an email to `contacts.jsonc#denylist[]` — idempotent and
 *  case-insensitive. Writes only when the entry is genuinely new. */
export declare function addContactsDenylistEntry(email: string, cloudRead: CloudReadFn, cloudWrite: CloudWriteFn): Promise<void>;
/** Append a preferred contact to `contacts.jsonc#preferred[]` — dedup by
 *  source|email|name. Writes only when the entry is genuinely new. */
export declare function addContactsPreferredEntry(entry: PreferredContactEntry, cloudRead: CloudReadFn, cloudWrite: CloudWriteFn): Promise<void>;
//# sourceMappingURL=contacts-config.d.ts.map