import * as better_auth from 'better-auth';
import { z } from 'zod';

declare const autumn: (options?: {
    url?: string;
    secretKey?: string;
}) => {
    id: "autumn";
    endpoints: {
        createCustomer: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    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_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: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
                    session: {
                        session: Record<string, any> & {
                            id: string;
                            token: string;
                            userId: string;
                            expiresAt: Date;
                            createdAt: Date;
                            updatedAt: Date;
                            ipAddress?: string | null | undefined;
                            userAgent?: string | null | undefined;
                        };
                        user: Record<string, any> & {
                            id: string;
                            name: string;
                            emailVerified: boolean;
                            email: string;
                            createdAt: Date;
                            updatedAt: Date;
                            image?: string | null | undefined;
                        };
                    };
                }>)[];
                body: z.ZodObject<{
                    expand: z.ZodOptional<z.ZodArray<z.ZodEnum<["invoices", "rewards", "trials_used", "entities", "referrals", "payment_method"]>, "many">>;
                }, "strip", z.ZodTypeAny, {
                    expand?: ("invoices" | "rewards" | "trials_used" | "entities" | "referrals" | "payment_method")[] | undefined;
                }, {
                    expand?: ("invoices" | "rewards" | "trials_used" | "entities" | "referrals" | "payment_method")[] | undefined;
                }>;
                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: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
                    session: {
                        session: Record<string, any> & {
                            id: string;
                            token: string;
                            userId: string;
                            expiresAt: Date;
                            createdAt: Date;
                            updatedAt: Date;
                            ipAddress?: string | null | undefined;
                            userAgent?: string | null | undefined;
                        };
                        user: Record<string, any> & {
                            id: string;
                            name: string;
                            emailVerified: boolean;
                            email: string;
                            createdAt: Date;
                            updatedAt: Date;
                            image?: string | null | undefined;
                        };
                    };
                }>)[];
            } & {
                use: any[];
            };
            path: "/autumn/products";
        };
        attach: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    entity_id?: string | undefined;
                    options?: {
                        feature_id: string;
                        quantity: number;
                    }[] | undefined;
                    metadata?: Record<string, string> | undefined;
                    product_id?: string | undefined;
                    product_ids?: string[] | undefined;
                    free_trial?: boolean | undefined;
                    success_url?: string | undefined;
                    force_checkout?: boolean | undefined;
                    customer_data?: {
                        name?: string | null | undefined;
                        email?: string | null | undefined;
                        fingerprint?: string | null | undefined;
                    } | undefined;
                    entity_data?: any;
                    checkout_session_params?: Record<string, any> | undefined;
                    reward?: 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";
                body: z.ZodObject<Omit<{
                    customer_id: z.ZodString;
                    product_id: z.ZodOptional<z.ZodString>;
                    entity_id: z.ZodOptional<z.ZodString>;
                    options: z.ZodOptional<z.ZodArray<z.ZodObject<{
                        feature_id: z.ZodString;
                        quantity: z.ZodNumber;
                    }, "strip", z.ZodTypeAny, {
                        feature_id: string;
                        quantity: number;
                    }, {
                        feature_id: string;
                        quantity: number;
                    }>, "many">>;
                    product_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                    free_trial: z.ZodOptional<z.ZodBoolean>;
                    success_url: z.ZodOptional<z.ZodString>;
                    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
                    force_checkout: z.ZodOptional<z.ZodBoolean>;
                    customer_data: z.ZodOptional<z.ZodObject<{
                        name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
                        email: z.ZodOptional<z.ZodNullable<z.ZodString>>;
                        fingerprint: z.ZodOptional<z.ZodNullable<z.ZodString>>;
                    }, "strip", z.ZodTypeAny, {
                        name?: string | null | undefined;
                        email?: string | null | undefined;
                        fingerprint?: string | null | undefined;
                    }, {
                        name?: string | null | undefined;
                        email?: string | null | undefined;
                        fingerprint?: string | null | undefined;
                    }>>;
                    entity_data: z.ZodOptional<z.ZodAny>;
                    checkout_session_params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
                    reward: z.ZodOptional<z.ZodString>;
                }, "customer_id">, "strip", z.ZodTypeAny, {
                    entity_id?: string | undefined;
                    options?: {
                        feature_id: string;
                        quantity: number;
                    }[] | undefined;
                    metadata?: Record<string, string> | undefined;
                    product_id?: string | undefined;
                    product_ids?: string[] | undefined;
                    free_trial?: boolean | undefined;
                    success_url?: string | undefined;
                    force_checkout?: boolean | undefined;
                    customer_data?: {
                        name?: string | null | undefined;
                        email?: string | null | undefined;
                        fingerprint?: string | null | undefined;
                    } | undefined;
                    entity_data?: any;
                    checkout_session_params?: Record<string, any> | undefined;
                    reward?: string | undefined;
                }, {
                    entity_id?: string | undefined;
                    options?: {
                        feature_id: string;
                        quantity: number;
                    }[] | undefined;
                    metadata?: Record<string, string> | undefined;
                    product_id?: string | undefined;
                    product_ids?: string[] | undefined;
                    free_trial?: boolean | undefined;
                    success_url?: string | undefined;
                    force_checkout?: boolean | undefined;
                    customer_data?: {
                        name?: string | null | undefined;
                        email?: string | null | undefined;
                        fingerprint?: string | null | undefined;
                    } | undefined;
                    entity_data?: any;
                    checkout_session_params?: Record<string, any> | undefined;
                    reward?: string | undefined;
                }>;
                use: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
                    session: {
                        session: Record<string, any> & {
                            id: string;
                            token: string;
                            userId: string;
                            expiresAt: Date;
                            createdAt: Date;
                            updatedAt: Date;
                            ipAddress?: string | null | undefined;
                            userAgent?: string | null | undefined;
                        };
                        user: Record<string, any> & {
                            id: string;
                            name: string;
                            emailVerified: boolean;
                            email: string;
                            createdAt: Date;
                            updatedAt: Date;
                            image?: string | null | undefined;
                        };
                    };
                }>)[];
            } & {
                use: any[];
            };
            path: "/autumn/attach";
        };
        check: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    feature_id?: string | undefined;
                    entity_id?: string | undefined;
                    required_balance?: number | undefined;
                    product_id?: string | undefined;
                    customer_data?: any;
                    entity_data?: {
                        feature_id: string;
                        name?: string | undefined;
                    } | undefined;
                    send_event?: boolean | undefined;
                    with_preview?: 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";
                body: z.ZodObject<Omit<{
                    customer_id: z.ZodString;
                    feature_id: z.ZodOptional<z.ZodString>;
                    product_id: z.ZodOptional<z.ZodString>;
                    entity_id: z.ZodOptional<z.ZodString>;
                    customer_data: z.ZodOptional<z.ZodAny>;
                    required_balance: z.ZodOptional<z.ZodNumber>;
                    send_event: z.ZodOptional<z.ZodBoolean>;
                    with_preview: z.ZodOptional<z.ZodBoolean>;
                    entity_data: z.ZodOptional<z.ZodObject<{
                        name: z.ZodOptional<z.ZodString>;
                        feature_id: z.ZodString;
                    }, "strip", z.ZodTypeAny, {
                        feature_id: string;
                        name?: string | undefined;
                    }, {
                        feature_id: string;
                        name?: string | undefined;
                    }>>;
                }, "customer_id">, "strip", z.ZodTypeAny, {
                    feature_id?: string | undefined;
                    entity_id?: string | undefined;
                    required_balance?: number | undefined;
                    product_id?: string | undefined;
                    customer_data?: any;
                    entity_data?: {
                        feature_id: string;
                        name?: string | undefined;
                    } | undefined;
                    send_event?: boolean | undefined;
                    with_preview?: boolean | undefined;
                }, {
                    feature_id?: string | undefined;
                    entity_id?: string | undefined;
                    required_balance?: number | undefined;
                    product_id?: string | undefined;
                    customer_data?: any;
                    entity_data?: {
                        feature_id: string;
                        name?: string | undefined;
                    } | undefined;
                    send_event?: boolean | undefined;
                    with_preview?: boolean | undefined;
                }>;
                use: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
                    session: {
                        session: Record<string, any> & {
                            id: string;
                            token: string;
                            userId: string;
                            expiresAt: Date;
                            createdAt: Date;
                            updatedAt: Date;
                            ipAddress?: string | null | undefined;
                            userAgent?: string | null | undefined;
                        };
                        user: Record<string, any> & {
                            id: string;
                            name: string;
                            emailVerified: boolean;
                            email: string;
                            createdAt: Date;
                            updatedAt: Date;
                            image?: string | null | undefined;
                        };
                    };
                }>)[];
            } & {
                use: any[];
            };
            path: "/autumn/check";
        };
        track: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    feature_id?: string | undefined;
                    entity_id?: string | undefined;
                    value?: number | undefined;
                    customer_data?: any;
                    entity_data?: any;
                    event_name?: string | undefined;
                    idempotency_key?: 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";
                body: z.ZodObject<Omit<{
                    customer_id: z.ZodString;
                    value: z.ZodOptional<z.ZodNumber>;
                    feature_id: z.ZodOptional<z.ZodString>;
                    event_name: z.ZodOptional<z.ZodString>;
                    entity_id: z.ZodOptional<z.ZodString>;
                    customer_data: z.ZodOptional<z.ZodAny>;
                    idempotency_key: z.ZodOptional<z.ZodString>;
                    entity_data: z.ZodOptional<z.ZodAny>;
                }, "customer_id">, "strip", z.ZodTypeAny, {
                    feature_id?: string | undefined;
                    entity_id?: string | undefined;
                    value?: number | undefined;
                    customer_data?: any;
                    entity_data?: any;
                    event_name?: string | undefined;
                    idempotency_key?: string | undefined;
                }, {
                    feature_id?: string | undefined;
                    entity_id?: string | undefined;
                    value?: number | undefined;
                    customer_data?: any;
                    entity_data?: any;
                    event_name?: string | undefined;
                    idempotency_key?: string | undefined;
                }>;
                use: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
                    session: {
                        session: Record<string, any> & {
                            id: string;
                            token: string;
                            userId: string;
                            expiresAt: Date;
                            createdAt: Date;
                            updatedAt: Date;
                            ipAddress?: string | null | undefined;
                            userAgent?: string | null | undefined;
                        };
                        user: Record<string, any> & {
                            id: string;
                            name: string;
                            emailVerified: boolean;
                            email: string;
                            createdAt: Date;
                            updatedAt: Date;
                            image?: string | null | undefined;
                        };
                    };
                }>)[];
            } & {
                use: any[];
            };
            path: "/autumn/track";
        };
        cancel: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    product_id: string;
                    entity_id?: string | undefined;
                    cancel_immediately?: 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";
                body: z.ZodObject<Omit<{
                    customer_id: z.ZodString;
                    product_id: z.ZodString;
                    entity_id: z.ZodOptional<z.ZodString>;
                    cancel_immediately: z.ZodOptional<z.ZodBoolean>;
                }, "customer_id">, "strip", z.ZodTypeAny, {
                    product_id: string;
                    entity_id?: string | undefined;
                    cancel_immediately?: boolean | undefined;
                }, {
                    product_id: string;
                    entity_id?: string | undefined;
                    cancel_immediately?: boolean | undefined;
                }>;
                use: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
                    session: {
                        session: Record<string, any> & {
                            id: string;
                            token: string;
                            userId: string;
                            expiresAt: Date;
                            createdAt: Date;
                            updatedAt: Date;
                            ipAddress?: string | null | undefined;
                            userAgent?: string | null | undefined;
                        };
                        user: Record<string, any> & {
                            id: string;
                            name: string;
                            emailVerified: boolean;
                            email: string;
                            createdAt: Date;
                            updatedAt: Date;
                            image?: string | null | undefined;
                        };
                    };
                }>)[];
            } & {
                use: any[];
            };
            path: "/autumn/cancel";
        };
        createReferralCode: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    program_id: 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";
                body: z.ZodObject<Omit<{
                    customer_id: z.ZodString;
                    program_id: z.ZodString;
                }, "customer_id">, "strip", z.ZodTypeAny, {
                    program_id: string;
                }, {
                    program_id: string;
                }>;
                use: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
                    session: {
                        session: Record<string, any> & {
                            id: string;
                            token: string;
                            userId: string;
                            expiresAt: Date;
                            createdAt: Date;
                            updatedAt: Date;
                            ipAddress?: string | null | undefined;
                            userAgent?: string | null | undefined;
                        };
                        user: Record<string, any> & {
                            id: string;
                            name: string;
                            emailVerified: boolean;
                            email: string;
                            createdAt: Date;
                            updatedAt: Date;
                            image?: string | null | undefined;
                        };
                    };
                }>)[];
            } & {
                use: any[];
            };
            path: "/autumn/referrals/create-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";
                body: z.ZodObject<Omit<{
                    code: z.ZodString;
                    customer_id: z.ZodString;
                }, "customer_id">, "strip", z.ZodTypeAny, {
                    code: string;
                }, {
                    code: string;
                }>;
                use: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
                    session: {
                        session: Record<string, any> & {
                            id: string;
                            token: string;
                            userId: string;
                            expiresAt: Date;
                            createdAt: Date;
                            updatedAt: Date;
                            ipAddress?: string | null | undefined;
                            userAgent?: string | null | undefined;
                        };
                        user: Record<string, any> & {
                            id: string;
                            name: string;
                            emailVerified: boolean;
                            email: string;
                            createdAt: Date;
                            updatedAt: Date;
                            image?: string | null | undefined;
                        };
                    };
                }>)[];
            } & {
                use: any[];
            };
            path: "/autumn/referrals/redeem-code";
        };
        billingPortal: {
            <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
                body: {
                    return_url?: 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";
                body: z.ZodObject<{
                    return_url: z.ZodOptional<z.ZodString>;
                }, "strip", z.ZodTypeAny, {
                    return_url?: string | undefined;
                }, {
                    return_url?: string | undefined;
                }>;
                metadata: {
                    isAction: boolean;
                };
                use: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
                    session: {
                        session: Record<string, any> & {
                            id: string;
                            token: string;
                            userId: string;
                            expiresAt: Date;
                            createdAt: Date;
                            updatedAt: Date;
                            ipAddress?: string | null | undefined;
                            userAgent?: string | null | undefined;
                        };
                        user: Record<string, any> & {
                            id: string;
                            name: string;
                            emailVerified: boolean;
                            email: string;
                            createdAt: Date;
                            updatedAt: Date;
                            image?: string | null | undefined;
                        };
                    };
                }>)[];
            } & {
                use: any[];
            };
            path: "/autumn/billing_portal";
        };
    };
};
declare const autumnClient: () => {
    id: "autumn";
    $InferServerPlugin: ReturnType<typeof autumn>;
};

export { autumn, autumnClient };
