import type { IApp } from "../entities/App";
import { type IQueryFilter, type IQueryOptions, type IQueryPagination } from "../interfaces";
import type { AppInputSchema } from "../interfaces/AppInterfaces";
import type { Ownership } from "../interfaces/SystemTypes";
import BaseService from "./BaseService";
export declare class AppService extends BaseService<IApp> {
    constructor(ownership?: Ownership);
    create(data: Partial<AppInputSchema & IApp>, options?: IQueryOptions & IQueryPagination & {
        shouldCreateGitRepo?: boolean;
        force?: boolean;
    }): Promise<IApp>;
    createWithGitURL(repoSSH: string, gitProviderID: string, ownership: Ownership, options?: {
        /**
         * `DANGER`
         * ---
         * Delete app and git repo if they were existed.
         * @default false
         */
        force?: boolean;
        /**
         * If `TRUE`, return the existing app instead of throwing errors.
         * @default false;
         */
        returnExisting?: boolean;
        /**
         * @default main
         */
        gitBranch?: string;
        /**
         * If `TRUE`: remove `.github/*` directory after pulling/cloning the repo.
         */
        removeCI?: boolean;
        isDebugging?: boolean;
    }): Promise<IApp>;
    find(filter?: IQueryFilter, options?: IQueryOptions & IQueryPagination, pagination?: IQueryPagination): Promise<IApp[]>;
    update(filter: IQueryFilter<IApp>, data: any, options?: IQueryOptions): Promise<IApp[]>;
    updateOne(filter: IQueryFilter<IApp>, data: any, options?: IQueryOptions): Promise<IApp>;
    delete(filter?: IQueryFilter<IApp>, options?: IQueryOptions): Promise<{
        ok: boolean;
        affected: number;
    }>;
    softDelete(filter?: IQueryFilter<IApp>, options?: IQueryOptions): Promise<{
        ok: boolean;
        affected: number;
    }>;
    deleteGitRepo(filter?: IQueryFilter<IApp>, options?: IQueryOptions): Promise<any>;
    takeDown(app: IApp, options?: IQueryOptions): Promise<IApp>;
    archiveApp(app: IApp, ownership?: Ownership): Promise<IApp>;
    unarchiveApp(app: IApp, ownership?: Ownership): Promise<IApp>;
    /**
     * Get all users that participated in this app.
     */
    getParticipants(app: IApp, options?: IQueryOptions & IQueryPagination): Promise<import("../entities").IUser[]>;
}
//# sourceMappingURL=AppService.d.ts.map