import { MessageBuilder } from '@jadl/builders';
import { APIMessageComponentInteraction } from 'discord-api-types/v10';
import { APIButtonComponentWithCustomId, APIButtonComponentBase, ButtonStyle, APIInteraction } from 'discord-api-types/v9';
import { Worker } from 'jadl';
import { WorkerInject } from '../structures/WorkerInject';
interface SectionOptions {
    row: number;
    disableIf?: string[];
}
interface SectionData {
    method: string;
    button: APIButtonComponentWithCustomId;
    options: SectionOptions;
}
declare const sectionsSymbol: unique symbol;
declare type SectionEnabledObject = {
    [sectionsSymbol]: SectionData[];
};
export declare class ButtonMenu<D extends any = {}, W extends Worker = Worker> extends WorkerInject<W> implements SectionEnabledObject {
    [sectionsSymbol]: SectionData[];
    _onInteraction(int: APIInteraction, worker: W): Promise<void>;
    private createButtons;
    start(section: string, data: D, interaction?: APIMessageComponentInteraction): Promise<MessageBuilder>;
}
export declare const Section: (button: Omit<APIButtonComponentBase<Exclude<ButtonStyle, ButtonStyle.Link>>, 'type'>, options?: SectionOptions) => MethodDecorator;
export {};
