import { BaseAssociation } from '../shared/base-association';
import { BelongsToManyOptions } from './belongs-to-many-options';
import { ModelClassGetter } from '../../model/shared/model-class-getter';
import { Association } from '../shared/association';
import { Sequelize } from '../../sequelize/sequelize/sequelize';
import { UnionAssociationOptions } from '../shared/union-association-options';
import { ModelType } from '../../model/model/model';
export declare class BelongsToManyAssociation<TCreationAttributes extends {}, TModelAttributes extends {}, TCreationAttributesThrough extends {}, TModelAttributesThrough extends {}> extends BaseAssociation<TCreationAttributes, TModelAttributes> {
    protected options: BelongsToManyOptions<TCreationAttributesThrough, TModelAttributesThrough>;
    constructor(associatedClassGetter: ModelClassGetter<TCreationAttributes, TModelAttributes>, options: BelongsToManyOptions<TCreationAttributesThrough, TModelAttributesThrough>);
    getAssociation(): Association;
    getSequelizeOptions(model: ModelType<TCreationAttributes, TModelAttributes>, sequelize: Sequelize): UnionAssociationOptions;
    private getThroughOptions;
}
