import { type ToolCard } from '@frontmcp/auth'; import { type ScopeEntry } from '../common'; /** * Result of projecting the scope's tools into a consent-ready shape. */ export interface ConsentToolProjection { /** Tool cards for the consent screen, with `excludedTools` removed. */ toolCards: ToolCard[]; /** * The offerable tool ids (effective runtime ids), with `excludedTools` * removed. This is what the consent screen offers and what a submitted * selection is validated against. */ availableToolIds: string[]; } /** * Project the scope's tools into consent cards + available ids, applying the * `excludedTools` filter (excluded tools are NEVER offered and NEVER required, * because they are always available regardless of consent). * * Used by BOTH the authorize flow (to seed `pendingAuth.consent.availableToolIds`) * and the callback flow (to render the consent screen + validate a submission), * so the two surfaces can never drift. */ export declare function projectConsentTools(scope: ScopeEntry, excludedTools?: string[]): ConsentToolProjection; //# sourceMappingURL=consent-tools.helper.d.ts.map