import { UpdatePasswordParams, RegistrationResponse, SecurityVerificationDetails, UserResponse, UpdateProfileInput, UpdateSecurityInput, ResetByEmailInput, ValidateByEmailInput, UserActivationInput, ResetBySecurityQuestions as ResetBySecurityQuestionsInput, UserLoginInput } from '@skava/graphql-bindings';
import { AccountRegisterInput } from './typings';
import ObservableContainer from 'src/bootstrapper/connectData/ObservableContainer';
import { sessionApis } from './container.apis';
import { checkIsSessionExpired, mapCookiesOnResponse, checkSessionExpiredOnMyAccount } from './deps';
declare class SessionContainer extends ObservableContainer {
static debugName: string;
navigateBackTo: string;
readonly guestUserCookie: string | undefined;
readonly hasGuestUserCookie: boolean;
readonly hasOrchestartionGuestUserCookie: boolean;
readonly isGuestUser: boolean;
readonly isOrchestarionGuestUser: boolean;
readonly isRegisteredUser: boolean;
readonly hasUserCookie: boolean;
readonly userCookie: string | undefined;
readonly userName: string;
readonly isBuyerAdminUser: boolean;
readonly isBuyerUser: boolean;
handleProps: (props: any) => any;
registerUser: (data: RegistrationResponse, securityParams: SecurityVerificationDetails) => Promise<void>;
getAllListAPI: () => Promise<any>;
/**
* @todo @fixme this is to be done on graphql side!!!
*/
adminRegisterAccount: (data: AccountRegisterInput) => Promise<void>;
updateProfile: (profileData: UpdateProfileInput) => Promise<any>;
updateSecurity: (data: UpdateSecurityInput) => Promise<void>;
getSecurityQuestions: (data: UpdateSecurityInput) => Promise<void>;
resetPasswordThroughSms: (data: UpdateSecurityInput) => Promise<any>;
resetPasswordThroughEmail: (data: ResetByEmailInput) => Promise<any>;
validateByEmail: (data: ValidateByEmailInput) => Promise<any>;
userActivation: (data: UserActivationInput) => Promise<any>;
resetPasswordThroughSecurityQuestions: (data: ResetBySecurityQuestionsInput) => Promise<any>;
updatePassword: (password: UpdatePasswordParams) => Promise<any>;
registerGuestUser: () => Promise<false | void>;
/**
* @todo show toast
*/
logOut: () => Promise<void>;
handleLoginResponse: (response: UserResponse) => boolean;
handleRegisterResponse: (response: UserResponse) => UserResponse;
logIn: (data: UserLoginInput) => Promise<boolean | void>;
loginWithFacebook: (data: UserLoginInput) => Promise<void>;
loginWithTwitter: (data: UserLoginInput) => Promise<void>;
loginWithGoogle: (data: UserLoginInput) => Promise<void>;
getTokenAuth: () => Promise<any>;
fetchProfile: (shouldGetPayment?: boolean, shouldGetAddress?: boolean) => Promise<void | UserResponse>;
/**
* @desc much better perf to bind early
* @see https://mobx.js.org/best/react-performance.html#bind-functions-early
*/
handleError(error: Error): void;
/**
* @desc this is in parallel, to not block requests
*/
afterRegisterUser: () => Promise<void>;
navigateToLoginSuccess(isFromTwitter?: boolean): void;
/**
* moved out of flow to avoid guarenteed deopt
*/
_flow: () => Promise<void>;
/**
* @see https://github.com/petkaantonov/bluebird/wiki/Optimization-killers
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch
* @see https://github.com/aretecode/awesome-deopt
* ^ regarding try catch issues
*/
flow: () => Promise<void>;
}
declare const sessionContainer: SessionContainer;
export default sessionContainer;
export { sessionContainer, SessionContainer, sessionApis, mapCookiesOnResponse, checkIsSessionExpired, checkSessionExpiredOnMyAccount, };