import * as Context from "effect/Context"; import * as Effect from "effect/Effect"; import * as Layer from "effect/Layer"; import * as Schema from "effect/Schema"; /** * Canonical web host for OAuth provider-agnostic landing pages * (`/auth/success`, `/auth/error`). The CLI's loopback server 302s the * browser to one of these after handling the OAuth callback. Centralized * here so the redirect target lives in exactly one place across all * provider OAuth clients. */ export declare const AUTH_LANDING_HOST = "https://alchemy.run"; export declare const AUTH_SUCCESS_URL = "https://alchemy.run/auth/success"; export declare const AUTH_ERROR_URL = "https://alchemy.run/auth/error"; declare const AuthError_base: Schema.Class; }>, import("effect/Cause").YieldableError>; export declare class AuthError extends AuthError_base { } declare const AuthProviders_base: Context.ServiceClass; }>; export declare class AuthProviders extends AuthProviders_base { } /** * Context passed to {@link AuthProviderImpl.configure}. */ export interface ConfigureContext { /** * `true` when running in a CI/CD environment (resolved from the `CI` * env/config). Providers MUST NOT prompt interactively when `ci` is true; * they should pick a non-interactive default (typically * `{ method: "env" }`) so unattended runs work. */ readonly ci: boolean; /** * Optional human-readable explanation of WHY credentials are being * demanded right now — e.g. which resources in a dev plan require the * real cloud (see `Auth/Demand.ts`). Interactive `configure` * implementations should display it before their first prompt so the * user knows what triggered the flow. */ readonly reason?: string; } export interface AuthProviderImpl { configure(profileName: string, ctx: ConfigureContext): Effect.Effect; login(profileName: string, config: Config): Effect.Effect; logout(profileName: string, config: Config): Effect.Effect; prettyPrint(profileName: string, config: Config): Effect.Effect; read(profileName: string, config: Config): Effect.Effect; } export interface AuthProvider extends AuthProviderImpl { readonly kind: "AuthProvider"; readonly name: string; } export declare const AuthProvider: () => (name: string, impl: AuthProviderImpl | Effect.Effect, never, ImplReq>) => Effect.Effect, never, ImplReq | AuthProviders>; /** * Build a Layer that registers an AuthProvider into the {@link AuthProviders} * registry when its parent layer is built. Use this from a provider's * top-level `providers()` Layer so that `alchemy login` can discover the * provider via the registry without forcing credential resolution. */ export declare const AuthProviderLayer: () => (name: string, impl: AuthProviderImpl | Effect.Effect, never, ImplReq>) => Layer.Layer>; /** * Look up a registered {@link AuthProvider} by name. Fails with * {@link AuthError} if the provider hasn't been registered (typically because * its layer hasn't been built). */ export declare const getAuthProvider: (name: string) => Effect.Effect, AuthError, AuthProviders>; export {}; //# sourceMappingURL=AuthProvider.d.ts.map