import { Ref } from 'vue'; import { Gender, GraphQLClient, Contact, Customer, MagicToken, MagicTokenCreateInput } from '@propeller-commerce/propeller-sdk-v2'; import { Result } from '@propeller-commerce/propeller-v2-core-ui'; /** * Success payload for login / registerContact / registerCustomer. * * `user` + tokens are optional: the `autoLogin: false` branches of the * register flows complete server-side but deliberately drop the session, * yielding an `ok({})`. */ export interface AuthSuccess { user?: Contact | Customer; accessToken?: string; refreshToken?: string; expiresAt?: string; } /** Backwards-friendly alias kept for the public `UseAuth*` type re-exports. */ export type LoginResult = Result; export interface RegisterContactInput { email: string; password: string; firstName: string; middleName?: string; lastName: string; phone?: string; gender?: Gender; companyName?: string; vatNumber?: string; cocNumber?: string; street?: string; number?: string; numberExtension?: string; postalCode?: string; city?: string; country?: string; deliveryStreet?: string; deliveryNumber?: string; deliveryNumberExtension?: string; deliveryPostalCode?: string; deliveryCity?: string; deliveryCountry?: string; sameDeliveryAsBilling?: boolean; } export interface RegisterCustomerInput { email: string; password: string; firstName: string; middleName?: string; lastName: string; phone?: string; gender?: Gender; street?: string; number?: string; numberExtension?: string; postalCode?: string; city?: string; country?: string; deliveryStreet?: string; deliveryNumber?: string; deliveryNumberExtension?: string; deliveryPostalCode?: string; deliveryCity?: string; deliveryCountry?: string; sameDeliveryAsBilling?: boolean; } export interface UseAuthOptions { graphqlClient: GraphQLClient; language?: string; onAuthHeaderUpdate?: (token: string) => void; configuration?: any; } export interface UseAuthReturn { loading: Ref; error: Ref; login: (email: string, password: string, onLoginSubmit?: (email: string, password: string) => Promise) => Promise>; magicLogin: (token: string) => Promise>; createMagicToken: (input: MagicTokenCreateInput) => Promise>; registerContact: (input: RegisterContactInput, preferredLanguage?: string, autoLogin?: boolean) => Promise>; registerCustomer: (input: RegisterCustomerInput, preferredLanguage?: string, autoLogin?: boolean) => Promise>; forgotPassword: (email: string) => Promise>; } export declare function useAuth(options: UseAuthOptions): UseAuthReturn;