import { createAuthEndpoint } from '@better-auth/core/api';

/** All supported route names as const for type safety */
declare const ROUTE_NAMES: {
    readonly getOrCreateCustomer: "getOrCreateCustomer";
    readonly getEntity: "getEntity";
    readonly attach: "attach";
    readonly previewAttach: "previewAttach";
    readonly updateSubscription: "updateSubscription";
    readonly previewUpdateSubscription: "previewUpdateSubscription";
    readonly openCustomerPortal: "openCustomerPortal";
    readonly createReferralCode: "createReferralCode";
    readonly redeemReferralCode: "redeemReferralCode";
    readonly listPlans: "listPlans";
    readonly listEvents: "listEvents";
    readonly aggregateEvents: "aggregateEvents";
    readonly multiAttach: "multiAttach";
    readonly previewMultiAttach: "previewMultiAttach";
    readonly setupPayment: "setupPayment";
};
/** Union of all route names */
type RouteName = keyof typeof ROUTE_NAMES;

/** Type for the handleRoute function used by better-auth endpoints */
type HandleBetterAuthRouteFn = (args: {
    ctx: unknown;
    routeName: RouteName;
}) => Promise<{
    status: number;
    body: unknown;
}>;
type AutumnEndpoint = ReturnType<typeof createAuthEndpoint>;
/**
 * Creates a better-auth endpoint for a given route name.
 * Each route needs its own call to preserve TypeScript literal types for the path.
 */
declare const createAutumnEndpoint: <T extends RouteName>(routeName: T, handleRoute: HandleBetterAuthRouteFn) => AutumnEndpoint;

export { type AutumnEndpoint as A, type HandleBetterAuthRouteFn as H, type RouteName as R, createAutumnEndpoint as c };
