import { type ConfigPlugin } from '@expo/config-plugins';
import type { ExpoConfig } from '@expo/config-types';
import { type ConnectPluginProps } from './withConnectNSE';
/**
 * Generates the Info.plist content for the ConnectNCE target.
 *
 * The NSExtensionAttributes mirror the canonical bare-workflow reference
 * (Examples/bare-workflow/ios/ConnectNCE/Info.plist), which itself mirrors the
 * iOS-SDK NCE 1:1:
 *  - UNNotificationExtensionCategory: the category identifiers the Connect
 *    APNs payload routes rich-media notifications through. Must match the
 *    category the SDK/Collector sets — keep in sync with the iOS-SDK NCE.
 *  - UNNotificationExtensionDefaultContentHidden=false: keep the default
 *    system body alongside the custom content view.
 *  - UNNotificationExtensionInitialContentSizeRatio=1.0: start full-height;
 *    the SDK content controller resizes to fit the rendered media.
 *
 * RCTNewArchEnabled is intentionally omitted: the NCE links the Connect SDK
 * only — no React Native runtime is present in the extension process. (The
 * bare-workflow reference carries it as an Xcode-template leftover; the
 * plugin-generated target drops it, consistent with the NSE template.)
 */
export declare function buildNCEInfoPlist(): string;
/** Generates the entitlements plist content for the ConnectNCE target. */
export declare function buildNCEEntitlements(appGroupIdentifier: string): string;
/**
 * Returns the Ruby snippet to inject into the Expo-generated Podfile for the
 * ConnectNCE target. Thin wrapper over the shared
 * {@link buildConnectPodTargetBlock} (single source of truth for the
 * AcousticConnect pod-resolution helper), parameterised with the NCE marker,
 * helper name, and target name.
 */
export declare function buildPodfileBlock(): string;
/**
 * Injects the ConnectNCE Podfile block into `podfileContent` if not already
 * present (idempotent, guarded by PODFILE_MARKER).
 */
export declare function injectPodfileBlock(podfileContent: string): string;
/**
 * Adds the ConnectNCE Xcode target (app_extension) to the project.
 *
 * Sibling to withNSEXcodeProject; the only differences are the target name,
 * the Swift source file (NotificationViewController.swift), the NCE Info.plist
 * (content-extension NSExtension keys), and skipping BOTH extension targets'
 * configs when mirroring host build settings.
 *
 * Idempotent: if a target named ConnectNCE already exists, skips target
 * creation but still (re)writes the source files.
 */
export declare function withNCEXcodeProject(config: ExpoConfig, appGroupIdentifier: string, swiftContent: string): ExpoConfig;
/**
 * Injects the ConnectNCE Podfile target block via withDangerousMod.
 * Guarded by a marker comment — re-runs are no-ops.
 *
 * Throws a clear, actionable error when the Podfile does not exist at
 * mod-execution time, instead of silently returning — a silent skip would
 * ship an NCE whose `import Connect` cannot resolve.
 */
export declare function withNCEPodfile(config: ExpoConfig): ExpoConfig;
/**
 * Expo Config Plugin mod that provisions a Notification Content Extension
 * (NCE) Xcode target named `ConnectNCE`.
 *
 * Applies three mutations — all idempotent:
 *  1. Host app entitlements: merges App Group into
 *     `com.apple.security.application-groups` (reuses the NSE host-entitlements
 *     mod — the host shares one App Group across app + NSE + NCE; the merge is
 *     a no-op when the NSE mod already added it).
 *  2. Xcode project: adds ConnectNCE target + files (skips if already present).
 *  3. Podfile: injects `target 'ConnectNCE'` block (guarded by marker comment).
 *
 * `config._internal.projectRoot` is required (injected by Expo CLI during
 * `expo prebuild`); an actionable error is thrown if absent rather than
 * silently falling back to `process.cwd()`.
 *
 * NSE coupling (intentional, tracked for refactor): this mod deliberately
 * reuses three pieces of withConnectNSE — `withNSEEntitlements` (the host App
 * Group is shared across app + NSE + NCE), `buildConnectPodTargetBlock` (one
 * source for the pod-resolution helper), and `getHostBuildSettingForConfig`
 * (the per-config mirroring logic). The composition always runs withConnectNSE
 * before withConnectNCE, so the shared host entitlement and the
 * PBXTargetDependency/PBXContainerItemProxy sections already exist when this
 * runs. Extracting a shared `withConnectExtension` base for NSE + NCE is
 * tracked as a follow-up refactor (see PR description) rather than done here,
 * to keep the already-landed NSE mod stable.
 */
export declare const withConnectNCE: ConfigPlugin<ConnectPluginProps>;
//# sourceMappingURL=withConnectNCE.d.ts.map