import { Getter } from '@loopback/core';
import { BelongsToAccessor, Entity, HasManyRepositoryFactory } from '@loopback/repository';
import { IAuthUserWithPermissions } from '@sourceloop/core';
import { SequelizeDataSource } from '@loopback/sequelize';
import { SequelizeUserModifyCrudRepository } from '@sourceloop/core/sequelize';
import { Address, Contact, Lead, Resource, Tenant, TenantRelations } from '../../models';
import { ContactRepository } from './contact.repository';
import { LeadRepository } from './lead.repository';
import { ResourceRepository } from './resource.repository';
import { AddressRepository } from './address.repository';
export declare class TenantRepository<T extends Tenant = Tenant> extends SequelizeUserModifyCrudRepository<T, typeof Tenant.prototype.id, TenantRelations> {
    readonly getCurrentUser: Getter<IAuthUserWithPermissions>;
    protected contactRepositoryGetter: Getter<ContactRepository>;
    protected leadRepositoryGetter: Getter<LeadRepository>;
    protected resourceRepositoryGetter: Getter<ResourceRepository>;
    protected addressRepositoryGetter: Getter<AddressRepository>;
    private readonly tenant;
    readonly contacts: HasManyRepositoryFactory<Contact, typeof Tenant.prototype.id>;
    readonly resources: HasManyRepositoryFactory<Resource, typeof Tenant.prototype.id>;
    readonly lead: BelongsToAccessor<Lead, typeof Tenant.prototype.id>;
    readonly address: BelongsToAccessor<Address, typeof Tenant.prototype.id>;
    constructor(dataSource: SequelizeDataSource, getCurrentUser: Getter<IAuthUserWithPermissions>, contactRepositoryGetter: Getter<ContactRepository>, leadRepositoryGetter: Getter<LeadRepository>, resourceRepositoryGetter: Getter<ResourceRepository>, addressRepositoryGetter: Getter<AddressRepository>, tenant: typeof Entity & {
        prototype: T;
    });
}
