export type PremiumBundleMode = {
    mode: 'all';
} | {
    mode: 'allowlist';
    allow: ReadonlySet<string>;
} | {
    mode: 'none';
};
/** Read brand.json and resolve `shipsPremiumBundles` into one of the three
 *  modes paths.ts already enforces for the UI. Missing file, malformed JSON,
 *  or missing field defaults to `'none'` (fail-closed). */
export declare function readBrandShipsPremiumBundles(platformRoot: string, logger: (line: string) => void): PremiumBundleMode;
export interface AgentDirCandidate {
    /** Absolute path to the `<bundle>/agents/` dir. */
    path: string;
    /** Plugin / bundle directory name (the parent of `agents/`). */
    bundle: string;
    /** True when this candidate sits under the premium-plugins root. */
    premium: boolean;
}
export interface FilterResult {
    kept: AgentDirCandidate[];
    skipped: AgentDirCandidate[];
}
/** Filter candidate agents/ dirs against the resolved premium-bundle mode.
 *  Non-premium candidates (platform/plugins/) are always kept. Premium
 *  candidates are kept if mode is 'all', or if mode is 'allowlist' and the
 *  bundle name is in the allow set; otherwise dropped. */
export declare function filterBrandForeignAgentDirs(candidates: readonly AgentDirCandidate[], premiumMode: PremiumBundleMode): FilterResult;
//# sourceMappingURL=brand-foreign-filter.d.ts.map