export type ReasonCode = "CONTENT" | "OUTLINE" | "SESSION_CAP" | "BINARY" | "LOCKFILE" | "MINIFIED" | "BUILD_OUTPUT" | "SECRET" | "GRAFTIGNORE" | "BUDGET_CAP" | "UNSUPPORTED_LANGUAGE"; export type GovernorDepth = "early" | "mid" | "late" | "unknown"; export interface PolicyInput { path: string; lines: number; bytes: number; } export interface PolicyOptions { graftignorePatterns?: string[] | undefined; sessionDepth?: GovernorDepth | undefined; budgetRemaining?: number | undefined; } interface PolicyResultBase { readonly thresholds: { readonly lines: number; readonly bytes: number; }; readonly actual: { readonly lines: number; readonly bytes: number; }; readonly sessionDepth?: GovernorDepth | undefined; } export declare class ContentResult implements PolicyResultBase { readonly projection: "content"; readonly reason: "CONTENT"; readonly thresholds: { readonly lines: number; readonly bytes: number; }; readonly actual: { readonly lines: number; readonly bytes: number; }; readonly sessionDepth?: GovernorDepth | undefined; constructor(opts: { thresholds: { lines: number; bytes: number; }; actual: { lines: number; bytes: number; }; sessionDepth?: GovernorDepth | undefined; }); } export declare class OutlineResult implements PolicyResultBase { readonly projection: "outline"; readonly reason: "OUTLINE" | "SESSION_CAP" | "BUDGET_CAP" | "UNSUPPORTED_LANGUAGE"; readonly thresholds: { readonly lines: number; readonly bytes: number; }; readonly actual: { readonly lines: number; readonly bytes: number; }; readonly sessionDepth?: GovernorDepth | undefined; constructor(opts: { reason: "OUTLINE" | "SESSION_CAP" | "BUDGET_CAP" | "UNSUPPORTED_LANGUAGE"; thresholds: { lines: number; bytes: number; }; actual: { lines: number; bytes: number; }; sessionDepth?: GovernorDepth | undefined; }); } export declare class RefusedResult implements PolicyResultBase { readonly projection: "refused"; readonly reason: ReasonCode; readonly reasonDetail: string; readonly next: readonly string[]; readonly thresholds: { readonly lines: number; readonly bytes: number; }; readonly actual: { readonly lines: number; readonly bytes: number; }; readonly sessionDepth?: GovernorDepth | undefined; constructor(opts: { reason: ReasonCode; reasonDetail: string; next: string[]; thresholds: { lines: number; bytes: number; }; actual: { lines: number; bytes: number; }; sessionDepth?: GovernorDepth | undefined; }); } export type PolicyResult = ContentResult | OutlineResult | RefusedResult; export {}; //# sourceMappingURL=types.d.ts.map