/**
 * Universal-git repository URL builder.
 *
 * Implements the `RepoUrlBuilder` interface from `@kici-dev/engine`. Each
 * universal-git source provides a `gitUrlTemplate` (e.g.
 * `https://forgejo.example.com/{owner}/{name}.git` or
 * `ssh://git@forgejo.example.com/{owner}/{name}.git`) plus a `repoIdentifier`
 * that appears in the normalized webhook (typically `owner/name`). This class
 * substitutes `{owner}`, `{name}`, and `{repo}` placeholders to build the
 * concrete clone URL used by agents.
 */
import type { RepoUrlBuilder } from '@kici-dev/engine';
/**
 * Universal-git implementation of RepoUrlBuilder.
 *
 * Bound to a single source's URL template — the orchestrator constructs one
 * per registered universal-git source.
 */
export declare class UniversalGitRepoUrlBuilder implements RepoUrlBuilder {
    private readonly gitUrlTemplate;
    readonly provider: "generic";
    constructor(gitUrlTemplate: string);
    /**
     * Build the clone URL by substituting placeholders in the template with
     * values from the repo identifier (expected as `owner/name`).
     *
     * Accepts identifiers with a single slash (`owner/name`) or with multiple
     * segments (GitLab groups: `group/subgroup/project`); the trailing segment
     * is always treated as the repo name and everything before it as the
     * owner path.
     */
    buildCloneUrl(repoIdentifier: string): string;
    /**
     * Raw file URLs are not supported for universal-git sources — the agent
     * always shallow-clones the repo to fetch files. Returning the clone URL
     * keeps the interface contract honest; callers that need raw content must
     * use the shallow-clone path instead.
     */
    buildRawFileUrl(repoIdentifier: string, _ref: string, _path: string): string;
}
/**
 * Split `owner/name` or `group/subgroup/project` into the owner path plus
 * the final repo name. Throws on malformed input so misconfigured sources
 * fail loudly rather than producing broken clone URLs.
 */
export declare function splitRepoIdentifier(repoIdentifier: string): {
    owner: string;
    name: string;
};
//# sourceMappingURL=repo-url.d.ts.map