///
import { LanguageMap } from 'intl-ts';
import { EconomicSystem, EmailCheck, Game, User } from '@gecogvidanto/shared';
import { langType } from '../locale';
import { ServerInfo } from '../tools';
import Context from './Context';
import DryContextType from './DryContextType';
declare type UserReader = (id: string) => Promise;
declare type EmailChecker = (emailCheck: EmailCheck) => Promise;
declare type GamesSearcher = () => Promise;
declare type EconomicSystemSearcher = () => Promise[]>;
declare class SdataContext extends Context {
set serverInfo(serverInfo: ServerInfo);
get serverInfo(): ServerInfo;
set captchaKey(captchaKey: string);
get captchaKey(): string;
}
declare class LangContext extends Context {
set preferences(preferences: ReadonlyArray);
get preferences(): ReadonlyArray;
set languageMap(languageMap: LanguageMap);
}
declare class UserContext extends Context['user']> {
private static _userReader?;
private static _emailChecker?;
static set userReader(userReader: UserReader);
static set emailChecker(emailChecker: EmailChecker);
set logged(logged: User);
get logged(): User;
read: (id: string) => User;
checkEmail: (emailCheck: EmailCheck) => boolean;
}
declare class GameContext extends Context['game']> {
private static _gamesSearcher?;
static set gamesSearcher(gamesSearcher: GamesSearcher);
set current(current: Game);
get current(): Game;
search: () => Game[];
}
declare class EconomicSystemContext extends Context['economicSystems']> {
private static _economicSystemsSearcher?;
static set economicSystemsSearcher(economicSystemsSearcher: EconomicSystemSearcher);
search: () => EconomicSystem[];
}
/**
* The context used by server renderer.
*/
export default class ServerContext extends Context implements DryContextType {
statusCode?: number;
url?: string;
constructor();
static set dataProviders({ userReader, emailChecker, gamesSearcher, economicSystemsSearcher, }: {
userReader: UserReader;
emailChecker: EmailChecker;
gamesSearcher: GamesSearcher;
economicSystemsSearcher: EconomicSystemSearcher;
});
get sdata(): SdataContext;
get lang(): LangContext;
get user(): UserContext;
get game(): GameContext;
get economicSystems(): EconomicSystemContext;
}
export declare const ServerContextProvider: import("react").Provider;
export declare function useServerContext(): ServerContext | undefined;
export {};