import { CrossOriginOpenerPolicyValue } from "./constants.js";
import { CrossOriginOpenerPolicy } from "./types.js";
import { type Middleware } from "./deps.js";
/** Middleware options. */
export interface Options extends Partial<Pick<CrossOriginOpenerPolicy, "reportTo">> {
    /** Opener policy value.
     * @default "same-origin"
     */
    readonly policy?: `${CrossOriginOpenerPolicyValue}`;
    /** Whether header is report-only or not.
     * Depending on the value, the header will be:
     * - `true`: `Cross-Origin-Opener-Policy-Report-Only`
     * - `false`: `Cross-Origin-Opener-Policy`
     * @default false
     */
    readonly reportOnly?: boolean;
}
/** Create cross-origin opener policy middleware.
 *
 * @example
 * ```ts
 * import {
 *   coop,
 *   type Handler,
 * } from "https://deno.land/x/coop_middleware@$VERSION/mod.ts";
 * import { assert } from "https://deno.land/std/testing/asserts.ts";
 *
 * declare const request: Request;
 * declare const handler: Handler;
 *
 * const middleware = coop();
 * const response = await middleware(request, handler);
 *
 * assert(response.headers.has("cross-origin-opener-policy"));
 * ```
 */
export declare function coop(options?: Options): Middleware;
