import { Getter } from '@loopback/core';
import { Plan, PlanRelations, BillingCycle, Currency } from '../models';
import { DefaultUserModifyCrudRepository, IAuthUserWithPermissions } from '@sourceloop/core';
import { BelongsToAccessor, juggler, Entity } from '@loopback/repository';
import { BillingCycleRepository } from './billing-cycle.repository';
import { CurrencyRepository } from './currency.repository';
export declare class PlanRepository<T extends Plan = Plan> extends DefaultUserModifyCrudRepository<T, typeof Plan.prototype.id, PlanRelations> {
    readonly getCurrentUser: Getter<IAuthUserWithPermissions>;
    protected billingCycleRepositoryGetter: Getter<BillingCycleRepository>;
    protected currencyRepositoryGetter: Getter<CurrencyRepository>;
    private readonly plan;
    readonly billingCycle: BelongsToAccessor<BillingCycle, typeof Plan.prototype.id>;
    readonly currency: BelongsToAccessor<Currency, typeof Plan.prototype.id>;
    constructor(dataSource: juggler.DataSource, getCurrentUser: Getter<IAuthUserWithPermissions>, billingCycleRepositoryGetter: Getter<BillingCycleRepository>, currencyRepositoryGetter: Getter<CurrencyRepository>, plan: typeof Entity & {
        prototype: T;
    });
}
