import { Repository } from 'typeorm';
import { BaseService } from 'src/services/base.service';
import { ERefCat, ETableName } from 'src/enums/base.enum';
import { OrganisationEntity } from 'src/entities/organisation.entity';
import { ToggleActiveDTO, SaveOrganisationDTO } from 'src/dtos/organisation.dto';
import { TokenService, TokenSessionService } from './token.service';
import { SearchQueryDto } from '@serene-dev/la-nest-library';
import { UserDetailEntity } from 'src/modules/authentication/entities/authentication.entity';
export declare abstract class OrganisationService<TEntity extends OrganisationEntity, TSearchDTO extends SearchQueryDto = SearchQueryDto> extends BaseService<TEntity, TSearchDTO> {
    protected readonly repo: Repository<OrganisationEntity>;
    tokenService: TokenService;
    tokenSessionService: TokenSessionService;
    repoUserDetail: Repository<UserDetailEntity>;
    refCat: ERefCat.client | ERefCat.provider;
    constructor(repo: Repository<OrganisationEntity>, tokenService: TokenService, tokenSessionService: TokenSessionService, repoUserDetail: Repository<UserDetailEntity>, tableName: ETableName.clients | ETableName.providers, refCat: ERefCat.client | ERefCat.provider);
    createObjMap: (obj: OrganisationEntity) => Promise<OrganisationEntity>;
    create(data: SaveOrganisationDTO, isPublic?: boolean): Promise<TEntity>;
    generateAPIKey(orgID: string, creatorID: string, notify?: boolean): Promise<{
        apiKey: string;
    }>;
    update(id: string, data: Partial<SaveOrganisationDTO>): Promise<TEntity>;
    toggleStatus(id: string, data: ToggleActiveDTO): Promise<TEntity>;
    createContactInfo(): Promise<void>;
}
