export type DomindsAppManifest = Readonly<{
    apiVersion: 'dominds.io/v1alpha1';
    kind: 'DomindsApp';
    id: string;
    dependencies?: ReadonlyArray<DomindsAppDependency>;
    name?: Readonly<{
        zh?: string;
        en?: string;
    }>;
    description?: Readonly<{
        zh?: string;
        en?: string;
    }>;
    contributes?: Readonly<{
        web?: Readonly<{
            staticDir: string;
            mountPath?: string;
        }>;
        teammates?: Readonly<{
            teamYaml: string;
        }>;
        tools?: Readonly<{
            module: string;
        }>;
        rtwsSeed?: Readonly<{
            taskdocs?: ReadonlyArray<Readonly<{
                path: string;
                goals?: string;
                constraints?: string;
                progress?: string;
            }>>;
        }>;
    }>;
}>;
export type DomindsAppDependency = Readonly<{
    id: string;
    optional?: boolean;
}>;
export type AppManifestLoadResult = Readonly<{
    kind: 'ok';
    manifest: DomindsAppManifest;
    raw: string;
    filePathAbs: string;
}> | Readonly<{
    kind: 'error';
    errorText: string;
    filePathAbs: string;
}>;
export declare const DEFAULT_DOMINDS_APP_MANIFEST_REL_PATH = ".minds/app.yaml";
export declare function makeDefaultRtwsAppManifest(id?: string): DomindsAppManifest;
export declare function parseDomindsAppManifest(parsed: unknown, filePathAbs: string): {
    ok: true;
    manifest: DomindsAppManifest;
} | {
    ok: false;
    errorText: string;
};
export declare function loadDomindsAppManifest(params: {
    packageRootAbs: string;
    manifestRelPath: string;
}): Promise<AppManifestLoadResult>;
export declare function writeDomindsAppManifest(params: {
    packageRootAbs: string;
    manifestRelPath: string;
    manifest: DomindsAppManifest;
}): Promise<void>;
export declare function writeDomindsAppManifestIfChanged(params: {
    packageRootAbs: string;
    manifestRelPath: string;
    manifest: DomindsAppManifest;
}): Promise<void>;
export declare function loadRtwsDeclaredAppDependencies(params: {
    rtwsRootAbs: string;
}): Promise<ReadonlyArray<DomindsAppDependency>>;
export declare function hasRtwsDeclaredAppDependency(params: {
    rtwsRootAbs: string;
    appId: string;
}): Promise<boolean>;
export declare function upsertManifestDependency(params: {
    manifest: DomindsAppManifest;
    dependency: DomindsAppDependency;
}): DomindsAppManifest;
export declare function removeManifestDependency(params: {
    manifest: DomindsAppManifest;
    dependencyId: string;
}): DomindsAppManifest;
export declare function resolveAppContribPaths(params: {
    manifest: DomindsAppManifest;
    packageRootAbs: string;
}): Readonly<{
    webStaticDirAbs: string | null;
    webMountPath: string | null;
    teammatesYamlAbs: string | null;
    toolsModuleAbs: string | null;
    seedTaskdocs: ReadonlyArray<Readonly<{
        path: string;
        goals?: string;
        constraints?: string;
        progress?: string;
    }>>;
}>;
