import { RegisterCustomerAccountResult, RegisterCustomerInput, UpdateCustomerInput as UpdateCustomerShopInput, VerifyCustomerAccountResult } from '@subit/common/lib/generated-shop-types'; import { AddNoteToCustomerInput, CreateAddressInput, CreateCustomerInput, CreateCustomerResult, DeletionResponse, UpdateAddressInput, UpdateCustomerInput, UpdateCustomerNoteInput, UpdateCustomerResult } from '@subit/common/lib/generated-types'; import { ID, PaginatedList } from '@subit/common/lib/shared-types'; import { RequestContext } from '../../api/common/request-context'; import { ErrorResultUnion } from '../../common/error/error-result'; import { EmailAddressConflictError, IdentifierChangeTokenExpiredError, IdentifierChangeTokenInvalidError, PasswordResetTokenExpiredError, PasswordResetTokenInvalidError } from '../../common/error/generated-graphql-shop-errors'; import { ListQueryOptions } from '../../common/types/common-types'; import { ConfigService } from '../../config/config.service'; import { Address } from '../../entity/address/address.entity'; import { CustomerGroup } from '../../entity/customer-group/customer-group.entity'; import { Customer } from '../../entity/customer/customer.entity'; import { HistoryEntry } from '../../entity/history-entry/history-entry.entity'; import { User } from '../../entity/user/user.entity'; import { EventBus } from '../../event-bus/event-bus'; import { CustomFieldRelationService } from '../helpers/custom-field-relation/custom-field-relation.service'; import { ListQueryBuilder } from '../helpers/list-query-builder/list-query-builder'; import { TransactionalConnection } from '../transaction/transactional-connection'; import { ChannelService } from './channel.service'; import { CountryService } from './country.service'; import { HistoryService } from './history.service'; import { UserService } from './user.service'; export declare class CustomerService { private connection; private configService; private userService; private countryService; private listQueryBuilder; private eventBus; private historyService; private channelService; private customFieldRelationService; constructor(connection: TransactionalConnection, configService: ConfigService, userService: UserService, countryService: CountryService, listQueryBuilder: ListQueryBuilder, eventBus: EventBus, historyService: HistoryService, channelService: ChannelService, customFieldRelationService: CustomFieldRelationService); findAll(ctx: RequestContext, options: ListQueryOptions | undefined): Promise>; findOne(ctx: RequestContext, id: ID): Promise; findOneByUserId(ctx: RequestContext, userId: ID, filterOnChannel?: boolean): Promise; findAddressesByCustomerId(ctx: RequestContext, customerId: ID): Promise; getCustomerGroups(ctx: RequestContext, customerId: ID): Promise; create(ctx: RequestContext, input: CreateCustomerInput, password?: string): Promise>; update(ctx: RequestContext, input: UpdateCustomerShopInput & { id: ID; }): Promise; update(ctx: RequestContext, input: UpdateCustomerInput): Promise>; registerCustomerAccount(ctx: RequestContext, input: RegisterCustomerInput): Promise; refreshVerificationToken(ctx: RequestContext, emailAddress: string): Promise; verifyCustomerEmailAddress(ctx: RequestContext, verificationToken: string, password?: string): Promise>; requestPasswordReset(ctx: RequestContext, emailAddress: string): Promise; resetPassword(ctx: RequestContext, passwordResetToken: string, password: string): Promise; requestUpdateEmailAddress(ctx: RequestContext, userId: ID, newEmailAddress: string): Promise; updateEmailAddress(ctx: RequestContext, token: string): Promise; /** * For guest checkouts, we assume that a matching email address is the same customer. */ createOrUpdate(ctx: RequestContext, input: Partial & { emailAddress: string; }, errorOnExistingUser?: boolean): Promise; createAddress(ctx: RequestContext, customerId: ID, input: CreateAddressInput): Promise
; updateAddress(ctx: RequestContext, input: UpdateAddressInput): Promise
; deleteAddress(ctx: RequestContext, id: ID): Promise; softDelete(ctx: RequestContext, customerId: ID): Promise; addNoteToCustomer(ctx: RequestContext, input: AddNoteToCustomerInput): Promise; updateCustomerNote(ctx: RequestContext, input: UpdateCustomerNoteInput): Promise; deleteCustomerNote(ctx: RequestContext, id: ID): Promise; private enforceSingleDefaultAddress; /** * If a Customer Address is to be deleted, check if it is assigned as a default for shipping or * billing. If so, attempt to transfer default status to one of the other addresses if there are * any. */ private reassignDefaultsForDeletedAddress; }