import { Prisma, PrismaClient, User } from '@prisma/client';
import { Context } from '../../context';
import { CreateImageInput } from '../image/image.private-mutation';
type UpdatePaymentProviderCustomers = {
    paymentProviderID: string;
    customerID: string;
}[];
export declare const updatePaymentProviderCustomers: (paymentProviderCustomers: UpdatePaymentProviderCustomers, authenticateUser: Context['authenticateUser'], userClient: PrismaClient['user']) => Promise<(import("@prisma/client/runtime/library").GetResult<{
    id: string;
    createdAt: Date;
    modifiedAt: Date;
    paymentProviderID: string;
    customerID: string;
    userId: string;
}, unknown> & {})[]>;
/**
 * Uploads the user profile image and returns the image and updated user
 * @param uploadImageInput
 * @param authenticateUser
 * @param mediaAdapter
 * @param imageClient
 * @param userClient
 */
export declare function uploadPublicUserProfileImage(uploadImageInput: CreateImageInput, authenticateUser: Context['authenticateUser'], mediaAdapter: Context['mediaAdapter'], imageClient: PrismaClient['image'], userClient: PrismaClient['user']): Promise<null | User>;
type UpdateUserInput = Prisma.UserUncheckedUpdateInput & {
    address: Prisma.UserAddressUncheckedCreateWithoutUserInput | null;
} & {
    uploadImageInput: CreateImageInput;
};
export declare const updatePublicUser: ({ address, name, email, firstName, preferredName, flair, uploadImageInput }: UpdateUserInput, authenticateUser: Context['authenticateUser'], mediaAdapter: Context['mediaAdapter'], userClient: PrismaClient['user'], imageClient: PrismaClient['image']) => Promise<{
    name: string;
    id: string;
    createdAt: Date;
    modifiedAt: Date;
    firstName: string;
    email: string;
    emailVerifiedAt: Date;
    preferredName: string;
    flair: string;
    password: string;
    active: boolean;
    lastLogin: Date;
    roleIDs: string[];
    userImageID: string;
    address: import("@prisma/client/runtime/library").GetResult<{
        createdAt: Date;
        modifiedAt: Date;
        company: string;
        streetAddress: string;
        streetAddress2: string;
        zipCode: string;
        city: string;
        country: string;
        userId: string;
    }, unknown> & {};
    properties: (import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        key: string;
        value: string;
        public: boolean;
        articleRevisionId: string;
        pageRevisionId: string;
        subscriptionId: string;
        userId: string;
    }, unknown> & {})[];
    oauth2Accounts: (import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        type: string;
        provider: string;
        providerAccountId: string;
        refreshToken: string;
        accessToken: string;
        expiresAt: number;
        tokenType: string;
        scope: string;
        idToken: string;
        oauthTokenSecret: string;
        oauthToken: string;
        sessionState: string;
        userId: string;
    }, unknown> & {})[];
    paymentProviderCustomers: (import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        paymentProviderID: string;
        customerID: string;
        userId: string;
    }, unknown> & {})[];
}>;
export declare const updateUserPassword: (password: string, passwordRepeated: string, hashCostFactor: number, authenticateUser: Context['authenticateUser'], userClient: PrismaClient['user']) => Promise<{
    name: string;
    id: string;
    createdAt: Date;
    modifiedAt: Date;
    firstName: string;
    email: string;
    emailVerifiedAt: Date;
    preferredName: string;
    flair: string;
    password: string;
    active: boolean;
    lastLogin: Date;
    roleIDs: string[];
    userImageID: string;
    address: import("@prisma/client/runtime/library").GetResult<{
        createdAt: Date;
        modifiedAt: Date;
        company: string;
        streetAddress: string;
        streetAddress2: string;
        zipCode: string;
        city: string;
        country: string;
        userId: string;
    }, unknown> & {};
    properties: (import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        key: string;
        value: string;
        public: boolean;
        articleRevisionId: string;
        pageRevisionId: string;
        subscriptionId: string;
        userId: string;
    }, unknown> & {})[];
    oauth2Accounts: (import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        type: string;
        provider: string;
        providerAccountId: string;
        refreshToken: string;
        accessToken: string;
        expiresAt: number;
        tokenType: string;
        scope: string;
        idToken: string;
        oauthTokenSecret: string;
        oauthToken: string;
        sessionState: string;
        userId: string;
    }, unknown> & {})[];
    paymentProviderCustomers: (import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        paymentProviderID: string;
        customerID: string;
        userId: string;
    }, unknown> & {})[];
}>;
export {};
