import { Schema } from "effect";
import { type ApiKeyAuthMethod, type AuthPlacement } from "./auth-method";
export interface AuthTemplateVariable {
    readonly type: "variable";
    readonly name: string;
}
/** Mark where a credential input renders inside a template value:
 *  `["Bearer ", variable("token")]`. */
export declare const variable: (name: string) => AuthTemplateVariable;
/** `string` (a static literal) or `prefix literals… + one variable, last`. */
export declare const AuthTemplateValue: Schema.Union<readonly [Schema.String, Schema.$Array<Schema.Union<readonly [Schema.String, Schema.Struct<{
    readonly type: Schema.Literal<"variable">;
    readonly name: Schema.String;
}>]>>]>;
export type AuthTemplateValue = typeof AuthTemplateValue.Type;
/** The request-shaped apikey authoring dialect. `slug` optional (backfilled
 *  like every other input); `label` optional. */
export declare const ApiKeyAuthTemplate: Schema.Struct<{
    readonly slug: Schema.optional<Schema.String>;
    readonly type: Schema.Literal<"apiKey">;
    readonly label: Schema.optional<Schema.String>;
    readonly headers: Schema.optional<Schema.$Record<Schema.String, Schema.Union<readonly [Schema.String, Schema.$Array<Schema.Union<readonly [Schema.String, Schema.Struct<{
        readonly type: Schema.Literal<"variable">;
        readonly name: Schema.String;
    }>]>>]>>>;
    readonly queryParams: Schema.optional<Schema.$Record<Schema.String, Schema.Union<readonly [Schema.String, Schema.$Array<Schema.Union<readonly [Schema.String, Schema.Struct<{
        readonly type: Schema.Literal<"variable">;
        readonly name: Schema.String;
    }>]>>]>>>;
}>;
export type ApiKeyAuthTemplate = typeof ApiKeyAuthTemplate.Type;
/** Normalize the request-shaped dialect into the canonical apikey method
 *  (sans slug backfill — the caller's normalize pass owns slugs). */
export declare const apiKeyMethodFromAuthTemplate: (template: ApiKeyAuthTemplate) => Omit<ApiKeyAuthMethod, "slug"> & {
    readonly slug?: string;
};
/** Serialize a canonical method back into the request-shaped dialect — the
 *  write side of read-modify-write flows (stored configs and the catalog
 *  read as placements; auth INPUTS accept only this dialect). Same-named
 *  same-carrier placements collapse, exactly as the renderer's header/query
 *  records do. */
export declare const apiKeyAuthTemplateFromMethod: (method: {
    readonly slug?: string;
    readonly label?: string;
    readonly placements: readonly AuthPlacement[];
}) => ApiKeyAuthTemplate;
/** Whether an input union member is the request-shaped dialect. */
export declare const isApiKeyAuthTemplate: (input: {
    readonly kind?: string;
    readonly type?: string;
}) => input is ApiKeyAuthTemplate;
//# sourceMappingURL=authoring.d.ts.map