import * as better_auth from 'better-auth';
import * as better_call from 'better-call';
import { z } from 'zod/v4';
import { AutumnOptions } from './utils/betterAuth/types.js';
import 'better-auth/plugins';
import './utils/AuthFunction.js';
import 'better-auth/api';

declare const autumn: (options?: AutumnOptions) => {
    id: "autumn";
    endpoints: {
        createCustomer: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    errorOnNotFound?: boolean | undefined;
                    expand?: ("invoices" | "rewards" | "trials_used" | "entities" | "referrals" | "payment_method")[] | undefined;
                };
            } & {
                method?: "POST" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params?: Record<string, any>;
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_call.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "POST";
                use: never[];
                body: z.ZodObject<{
                    errorOnNotFound: z.ZodOptional<z.ZodBoolean>;
                    expand: z.ZodOptional<z.ZodArray<z.ZodEnum<{
                        invoices: "invoices";
                        rewards: "rewards";
                        trials_used: "trials_used";
                        entities: "entities";
                        referrals: "referrals";
                        payment_method: "payment_method";
                    }>>>;
                }, z.core.$strip>;
                metadata: {
                    isAction: boolean;
                };
            };
            path: "/autumn/customers";
        };
        listProducts: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0?: ({
                body?: undefined;
            } & {
                method?: "GET" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params?: Record<string, any>;
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }) | undefined): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "GET";
                use: never[];
            } & {
                use: any[];
            };
            path: "/autumn/products";
        };
        checkout: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    productId?: string | undefined;
                    productIds?: string[] | undefined;
                    entityId?: string | undefined;
                    entityData?: any;
                    options?: {
                        featureId: string;
                        quantity: number;
                    }[] | undefined;
                    successUrl?: string | undefined;
                    openInNewTab?: boolean | undefined;
                    dialog?: any;
                    forceCheckout?: boolean | undefined;
                    freeTrial?: boolean | undefined;
                    checkoutSessionParams?: Record<string, any> | undefined;
                    reward?: string | undefined;
                    newBillingSubscription?: boolean | undefined;
                };
            } & {
                method?: "POST" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params?: Record<string, any>;
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "POST";
                use: never[];
                body: z.ZodObject<{
                    productId: z.ZodOptional<z.ZodString>;
                    productIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
                    entityId: z.ZodOptional<z.ZodString>;
                    entityData: z.ZodOptional<z.ZodAny>;
                    options: z.ZodOptional<z.ZodArray<z.ZodObject<{
                        featureId: z.ZodString;
                        quantity: z.ZodNumber;
                    }, z.core.$strip>>>;
                    successUrl: z.ZodOptional<z.ZodString>;
                    openInNewTab: z.ZodOptional<z.ZodBoolean>;
                    dialog: z.ZodOptional<z.ZodAny>;
                    forceCheckout: z.ZodOptional<z.ZodBoolean>;
                    freeTrial: z.ZodOptional<z.ZodBoolean>;
                    checkoutSessionParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
                    reward: z.ZodOptional<z.ZodString>;
                    newBillingSubscription: z.ZodOptional<z.ZodBoolean>;
                }, z.core.$strip>;
            } & {
                use: any[];
            };
            path: "/autumn/checkout";
        };
        attach: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    productId?: string | undefined;
                    entityId?: string | undefined;
                    options?: {
                        featureId: string;
                        quantity: number;
                    }[] | undefined;
                    productIds?: string[] | undefined;
                    freeTrial?: boolean | undefined;
                    successUrl?: string | undefined;
                    metadata?: Record<string, string> | undefined;
                    forceCheckout?: boolean | undefined;
                    dialog?: any;
                    entityData?: any;
                    openInNewTab?: boolean | undefined;
                    reward?: string | undefined;
                    checkoutSessionParams?: Record<string, any> | undefined;
                    newBillingSubscription?: boolean | undefined;
                };
            } & {
                method?: "POST" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params?: Record<string, any>;
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "POST";
                use: never[];
                body: z.ZodObject<{
                    productId: z.ZodOptional<z.ZodString>;
                    entityId: z.ZodOptional<z.ZodString>;
                    options: z.ZodOptional<z.ZodArray<z.ZodObject<{
                        featureId: z.ZodString;
                        quantity: z.ZodNumber;
                    }, z.core.$strip>>>;
                    productIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
                    freeTrial: z.ZodOptional<z.ZodBoolean>;
                    successUrl: z.ZodOptional<z.ZodString>;
                    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
                    forceCheckout: z.ZodOptional<z.ZodBoolean>;
                    dialog: z.ZodOptional<z.ZodAny>;
                    entityData: z.ZodOptional<z.ZodAny>;
                    openInNewTab: z.ZodOptional<z.ZodBoolean>;
                    reward: z.ZodOptional<z.ZodString>;
                    checkoutSessionParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
                    newBillingSubscription: z.ZodOptional<z.ZodBoolean>;
                }, z.core.$strip>;
            } & {
                use: any[];
            };
            path: "/autumn/attach";
        };
        check: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    featureId?: string | undefined;
                    productId?: string | undefined;
                    entityId?: string | undefined;
                    requiredBalance?: number | undefined;
                    sendEvent?: boolean | undefined;
                    withPreview?: boolean | undefined;
                    dialog?: any;
                    entityData?: any;
                    properties?: Record<string, any> | undefined;
                };
            } & {
                method?: "POST" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params?: Record<string, any>;
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "POST";
                use: never[];
                body: z.ZodObject<{
                    featureId: z.ZodOptional<z.ZodString>;
                    productId: z.ZodOptional<z.ZodString>;
                    entityId: z.ZodOptional<z.ZodString>;
                    requiredBalance: z.ZodOptional<z.ZodNumber>;
                    sendEvent: z.ZodOptional<z.ZodBoolean>;
                    withPreview: z.ZodOptional<z.ZodBoolean>;
                    dialog: z.ZodOptional<z.ZodAny>;
                    entityData: z.ZodOptional<z.ZodAny>;
                    properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
                }, z.core.$strip>;
            } & {
                use: any[];
            };
            path: "/autumn/check";
        };
        track: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    featureId?: string | undefined;
                    eventName?: string | undefined;
                    entityId?: string | undefined;
                    value?: number | undefined;
                    idempotencyKey?: string | undefined;
                    entityData?: any;
                };
            } & {
                method?: "POST" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params?: Record<string, any>;
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "POST";
                use: never[];
                body: z.ZodObject<{
                    featureId: z.ZodOptional<z.ZodString>;
                    eventName: z.ZodOptional<z.ZodString>;
                    entityId: z.ZodOptional<z.ZodString>;
                    value: z.ZodOptional<z.ZodNumber>;
                    idempotencyKey: z.ZodOptional<z.ZodString>;
                    entityData: z.ZodOptional<z.ZodAny>;
                }, z.core.$strip>;
            } & {
                use: any[];
            };
            path: "/autumn/track";
        };
        cancel: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    productId: string;
                    entityId?: string | undefined;
                    cancelImmediately?: boolean | undefined;
                };
            } & {
                method?: "POST" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params?: Record<string, any>;
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "POST";
                use: never[];
                body: z.ZodObject<{
                    productId: z.ZodString;
                    entityId: z.ZodOptional<z.ZodString>;
                    cancelImmediately: z.ZodOptional<z.ZodBoolean>;
                }, z.core.$strip>;
            } & {
                use: any[];
            };
            path: "/autumn/cancel";
        };
        query: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    featureId: string | string[];
                    range?: "24h" | "7d" | "30d" | "90d" | "last_cycle" | "1bc" | "3bc" | undefined;
                };
            } & {
                method?: "POST" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params?: Record<string, any>;
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "POST";
                use: never[];
                body: z.ZodObject<{
                    featureId: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString>]>;
                    range: z.ZodOptional<z.ZodEnum<{
                        "24h": "24h";
                        "7d": "7d";
                        "30d": "30d";
                        "90d": "90d";
                        last_cycle: "last_cycle";
                        "1bc": "1bc";
                        "3bc": "3bc";
                    }>>;
                }, z.core.$strip>;
            } & {
                use: any[];
            };
            path: "/autumn/query";
        };
        createReferralCode: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    programId: string;
                };
            } & {
                method?: "POST" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params?: Record<string, any>;
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "POST";
                use: never[];
                body: z.ZodObject<{
                    programId: z.ZodString;
                }, z.core.$strip>;
            } & {
                use: any[];
            };
            path: "/autumn/referrals/code";
        };
        redeemReferralCode: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    code: string;
                };
            } & {
                method?: "POST" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params?: Record<string, any>;
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "POST";
                use: never[];
                body: z.ZodObject<{
                    code: z.ZodString;
                }, z.core.$strip>;
            } & {
                use: any[];
            };
            path: "/autumn/referrals/redeem";
        };
        billingPortal: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    returnUrl?: string | undefined;
                    openInNewTab?: boolean | undefined;
                };
            } & {
                method?: "POST" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params?: Record<string, any>;
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "POST";
                use: never[];
                body: z.ZodObject<{
                    returnUrl: z.ZodOptional<z.ZodString>;
                    openInNewTab: z.ZodOptional<z.ZodBoolean>;
                }, z.core.$strip>;
                metadata: {
                    isAction: boolean;
                };
            } & {
                use: any[];
            };
            path: "/autumn/billing_portal";
        };
        createEntity: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    id: string;
                    featureId: string;
                    name?: string | undefined;
                };
            } & {
                method?: "POST" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params?: Record<string, any>;
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "POST";
                use: never[];
                body: z.ZodObject<{
                    id: z.ZodString;
                    name: z.ZodOptional<z.ZodString>;
                    featureId: z.ZodString;
                }, z.core.$strip>;
            } & {
                use: any[];
            };
            path: "/autumn/entities";
        };
        getEntity: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body?: undefined;
            } & {
                method?: "GET" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params: {
                    entityId: string;
                };
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "GET";
                use: never[];
            } & {
                use: any[];
            };
            path: "/autumn/entities/:entityId";
        };
        deleteEntity: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body?: undefined;
            } & {
                method?: "DELETE" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params: {
                    entityId: string;
                };
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "DELETE";
                use: never[];
            } & {
                use: any[];
            };
            path: "/autumn/entities/:entityId";
        };
        listEvents: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    featureId: string | string[];
                    offset?: unknown;
                    limit?: unknown;
                    customRange?: {
                        start?: unknown;
                        end?: unknown;
                    } | undefined;
                };
            } & {
                method?: "POST" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params?: Record<string, any>;
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "POST";
                use: never[];
                body: z.ZodObject<{
                    offset: z.ZodOptional<z.ZodDefault<z.ZodCoercedNumber<unknown>>>;
                    limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
                    featureId: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString>]>;
                    customRange: z.ZodOptional<z.ZodObject<{
                        start: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
                        end: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
                    }, z.core.$strip>>;
                }, z.core.$strip>;
            } & {
                use: any[];
            };
            path: "/autumn/events/list";
        };
        aggregateEvents: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    featureId: string | string[];
                    groupBy?: string | undefined;
                    range?: "24h" | "7d" | "30d" | "90d" | "last_cycle" | "1bc" | "3bc" | undefined;
                    binSize?: "day" | "hour" | undefined;
                    customRange?: {
                        start: number;
                        end: number;
                    } | undefined;
                };
            } & {
                method?: "POST" | undefined;
            } & {
                query?: Record<string, any> | undefined;
            } & {
                params?: Record<string, any>;
            } & {
                request?: Request;
            } & {
                headers?: HeadersInit;
            } & {
                asResponse?: boolean;
                returnHeaders?: boolean;
                use?: better_auth.Middleware[];
                path?: string;
            } & {
                asResponse?: AsResponse | undefined;
                returnHeaders?: ReturnHeaders | undefined;
            }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
                headers: Headers;
                response: any;
            } : any>;
            options: {
                method: "POST";
                use: never[];
                body: z.ZodObject<{
                    featureId: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString>]>;
                    groupBy: z.ZodOptional<z.ZodString>;
                    range: z.ZodOptional<z.ZodEnum<{
                        "24h": "24h";
                        "7d": "7d";
                        "30d": "30d";
                        "90d": "90d";
                        last_cycle: "last_cycle";
                        "1bc": "1bc";
                        "3bc": "3bc";
                    }>>;
                    binSize: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
                        day: "day";
                        hour: "hour";
                    }>>>;
                    customRange: z.ZodOptional<z.ZodObject<{
                        start: z.ZodNumber;
                        end: z.ZodNumber;
                    }, z.core.$strip>>;
                }, z.core.$strip>;
            } & {
                use: any[];
            };
            path: "/autumn/events/aggregate";
        };
    };
};

export { autumn };
