import type { Prisma } from '../../../prisma-client';
import z from "zod";
import type { IDomainWideDelegationRepository } from '../../../features/domain-wide-delegation/domain-wide-delegation-repository.interface';
declare const serviceAccountKeySchema: z.ZodObject<{
    client_email: z.ZodString;
    private_key: z.ZodString;
    client_id: z.ZodString;
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
    client_email: z.ZodString;
    private_key: z.ZodString;
    client_id: z.ZodString;
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
    client_email: z.ZodString;
    private_key: z.ZodString;
    client_id: z.ZodString;
}, z.ZodTypeAny, "passthrough">>;
export type ServiceAccountKey = z.infer<typeof serviceAccountKeySchema>;
export declare class DomainWideDelegationRepository implements IDomainWideDelegationRepository {
    private static withParsedServiceAccountKey;
    create(data: {
        domain: string;
        enabled: boolean;
        organizationId: number;
        workspacePlatformId: number;
        serviceAccountKey: Exclude<Prisma.JsonValue, null>;
    }): Promise<{
        id: string;
        enabled: boolean;
        organizationId: number;
        workspacePlatform: {
            name: string;
            slug: string;
        };
        createdAt: Date;
        updatedAt: Date;
        domain: string;
    }>;
    findById({ id }: {
        id: string;
    }): Promise<{
        id: string;
        enabled: boolean;
        organizationId: number;
        workspacePlatform: {
            name: string;
            slug: string;
        };
        createdAt: Date;
        updatedAt: Date;
        domain: string;
    } | null>;
    findByIdIncludeSensitiveServiceAccountKey({ id }: {
        id: string;
    }): Promise<({
        id: string;
        enabled: boolean;
        organizationId: number;
        workspacePlatform: {
            name: string;
            slug: string;
        };
        createdAt: Date;
        updatedAt: Date;
        serviceAccountKey: Prisma.JsonValue;
        domain: string;
    } & {
        serviceAccountKey: z.objectOutputType<{
            client_email: z.ZodString;
            private_key: z.ZodString;
            client_id: z.ZodString;
        }, z.ZodTypeAny, "passthrough"> | null;
    }) | null>;
    findUniqueByOrganizationMemberEmail({ email }: {
        email: string;
    }): Promise<{
        id: string;
        enabled: boolean;
        organizationId: number;
        workspacePlatform: {
            name: string;
            slug: string;
        };
        createdAt: Date;
        updatedAt: Date;
        domain: string;
    } | null>;
    findByUser({ user }: {
        user: {
            email: string;
        };
    }): Promise<{
        id: string;
        enabled: boolean;
        organizationId: number;
        workspacePlatform: {
            name: string;
            slug: string;
        };
        createdAt: Date;
        updatedAt: Date;
        domain: string;
    } | null>;
    static findAllByDomain({ domain }: {
        domain: string;
    }): Promise<{
        id: string;
        enabled: boolean;
        organizationId: number;
        workspacePlatform: {
            name: string;
            slug: string;
        };
        createdAt: Date;
        updatedAt: Date;
        domain: string;
    }[]>;
    static findFirstByOrganizationId({ organizationId }: {
        organizationId: number;
    }): Promise<{
        id: string;
        enabled: boolean;
        organizationId: number;
        workspacePlatform: {
            name: string;
            slug: string;
        };
        createdAt: Date;
        updatedAt: Date;
        domain: string;
    } | null>;
    updateById({ id, data, }: {
        id: string;
        data: Partial<{
            workspacePlatformId: number;
            domain: string;
            enabled: boolean;
            organizationId: number;
        }>;
    }): Promise<{
        id: string;
        enabled: boolean;
        organizationId: number;
        workspacePlatform: {
            name: string;
            slug: string;
        };
        createdAt: Date;
        updatedAt: Date;
        domain: string;
    }>;
    deleteById({ id }: {
        id: string;
    }): Promise<{
        id: string;
        enabled: boolean;
        organizationId: number;
        createdAt: Date;
        updatedAt: Date;
        workspacePlatformId: number;
        serviceAccountKey: Prisma.JsonValue;
        domain: string;
    }>;
    findDelegationsWithServiceAccount({ organizationId }: {
        organizationId: number;
    }): Promise<{
        id: string;
        enabled: boolean;
        organizationId: number;
        workspacePlatform: {
            id: number;
            name: string;
            slug: string;
        };
        createdAt: Date;
        updatedAt: Date;
        serviceAccountKey: Prisma.JsonValue;
        domain: string;
    }[]>;
}
export {};
//# sourceMappingURL=domainWideDelegation.d.ts.map