/**
* Fully qualified name (FQN) parsing and formatting for 3-segment extension names.
*
* FQN format: `@owner/type-plural/name` (e.g., `@acme/skills/code-review`)
*
* @experimental This API is unstable and may change without notice.
*/
import * as Result from "effect/Result";
import { type AppError } from "../app-error/index.js";
import { type ExtensionFqnParts } from "./common.js";
declare const FqnInvalidError_base: new = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
readonly _tag: "FqnInvalidError";
} & Readonly;
/**
* Failure produced when an FQN string does not match the canonical
* `@owner/type-plural/name` shape.
*
* @experimental This API is unstable and may change without notice.
*/
export declare class FqnInvalidError extends FqnInvalidError_base<{
readonly input: string;
}> {
}
/**
* Parse a 3-segment FQN string into its parts.
*
* Pure synchronous validation — yield the Result in `Effect.gen` to bridge
* failures into the surrounding error channel, or pattern-match on it directly
* for synchronous callers.
*
* @experimental This API is unstable and may change without notice.
*/
export declare const parseFqn: (input: string) => Result.Result;
/**
* Translate a `FqnInvalidError` into a CLI-facing `AppError` with the canonical
* format suggestion. Use at user-input boundaries (CLI handlers, publish
* operations) where the parse failure is a user error.
*
* @experimental This API is unstable and may change without notice.
*/
export declare const fqnInvalidErrorToAppError: (error: FqnInvalidError) => AppError;
/**
* Parse a schema-validated FQN, throwing as a defect on failure.
*
* Use only at call sites where the input has already been validated against
* an FQN schema (e.g., manifest dependency keys, lockfile resolved maps).
* A failure here is an invariant violation, not a user error — inside
* `Effect.gen`, the synchronous throw surfaces as `Cause.Die`.
*
* @experimental This API is unstable and may change without notice.
*/
export declare const parseFqnOrThrow: (input: string) => ExtensionFqnParts;
/**
* Format a parsed FQN back into a string.
*
* @experimental This API is unstable and may change without notice.
*/
export declare const formatFqn: (fqn: ExtensionFqnParts) => string;
export {};
//# sourceMappingURL=fqn.d.ts.map