/**
 * Lock file generation and parsing for repertoire packages.
 *
 * The .takt-repertoire-lock.yaml records the installation provenance:
 *   source:      github:{owner}/{repo}
 *   ref:         tag or branch (defaults to "HEAD")
 *   commit:      full SHA from tarball directory name
 *   imported_at: ISO 8601 timestamp
 */
export interface PackageLock {
    source: string;
    ref: string;
    commit: string;
    imported_at: string;
}
interface GenerateLockFileParams {
    source: string;
    ref: string | undefined;
    commitSha: string;
    importedAt: Date;
}
/**
 * Extract the commit SHA from a GitHub tarball directory name.
 *
 * GitHub tarball directories follow the format: {owner}-{repo}-{sha}
 * The SHA is always the last hyphen-separated segment.
 *
 * @param dirName - directory name without trailing slash
 */
export declare function extractCommitSha(dirName: string): string;
/**
 * Generate a PackageLock object from installation parameters.
 *
 * @param params.source     - e.g. "github:nrslib/takt-fullstack"
 * @param params.ref        - tag, branch, or undefined (defaults to "HEAD")
 * @param params.commitSha  - full commit SHA from tarball directory
 * @param params.importedAt - installation timestamp
 */
export declare function generateLockFile(params: GenerateLockFileParams): PackageLock;
/**
 * Parse .takt-repertoire-lock.yaml content into a PackageLock object.
 * Returns empty-valued lock when yaml is empty (lock file missing).
 */
export declare function parseLockFile(yaml: string): PackageLock;
export {};
//# sourceMappingURL=lock-file.d.ts.map