import React from 'react'; import { type ReactNode } from 'react'; import type { SkmtcRoot } from '../lib/skmtc-root.js'; import type { Session } from '@supabase/supabase-js'; import type { Project } from '../lib/project.js'; import type { RemoteProject } from '../lib/remote-project.js'; import type { Key } from 'ink'; import type { Generator } from '../types/generator.generated.js'; export type ErrorMessage = { error: ReactNode; sub?: string; }; export type InfoMessage = { info: ReactNode; sub?: string; }; export type SuccessMessage = { success: ReactNode; sub?: string; }; export type SkmtcMessage = ErrorMessage | SuccessMessage | InfoMessage; type SkmtcAction = { type: 'set-view'; payload: ViewState; } | { type: 'set-session'; payload: { session: Session | null; }; } | { type: 'set-message'; payload: TimedMessage | null; } | { type: 'add-shortcut'; payload: Shortcut; } | { type: 'remove-shortcut'; payload: string; } | { type: 'set-generators'; payload: Generator[]; }; type Shortcut = { id: string; label: string; action: (input: string, key: Key) => void; }; export type SkmtcDispatch = (action: SkmtcAction) => void; export type ViewStateHome = { page: 'home'; }; export type ViewStateCreateProject = { page: 'create-project'; projectName?: string; generators?: string[]; basePath?: string; }; export type ViewStateLogin = { page: 'login'; }; export type ViewStateProject = { page: 'project'; projectName: string; }; export type ViewStateGenerate = { page: 'generate'; project: Project | RemoteProject; basePath?: string; schemaSourceString?: string; watchMode?: boolean; }; export type ViewStateDeploy = { page: 'deploy'; projectName: string; }; export type ViewStateGenerateConfirmed = { page: 'generate'; project: Project | RemoteProject; basePath: string; schemaSourceString: string; watchMode: boolean; }; export type ViewStateRuntimeLogs = { page: 'runtime-logs'; projectName: string; }; export type ViewStateServe = { page: 'serve'; projectName: string; port?: string; }; export type ViewStateListGenerators = { page: 'list-generators'; projectName: string; }; export type ViewStateAddGenerator = { page: 'add-generator'; projectName: string; generatorName?: string; generatorType?: 'operation' | 'model'; username?: string; }; export type ViewStateAddGeneratorConfirmed = { page: 'add-generator'; projectName: string; generatorName: string; generatorType: 'operation' | 'model'; username: string; }; export type ViewStateInstallGenerator = { page: 'install-generator'; projectName: string; }; export type ViewStateCloneGenerator = { page: 'clone-generator'; projectName: string; }; export type ViewStateRemoveGenerator = { page: 'remove-generator'; projectName: string; generatorName?: string; }; export type ViewStateExit = { page: 'exit'; }; export type ViewState = ViewStateHome | ViewStateCreateProject | ViewStateLogin | ViewStateProject | ViewStateGenerate | ViewStateDeploy | ViewStateRuntimeLogs | ViewStateServe | ViewStateListGenerators | ViewStateAddGenerator | ViewStateInstallGenerator | ViewStateCloneGenerator | ViewStateRemoveGenerator | ViewStateExit; export type TimedMessage = { content: SkmtcMessage; timeout: number; }; export type SkmtcState = { view: ViewState; skmtcRoot: SkmtcRoot; session: Session | null; message: TimedMessage | null; interactive: boolean; shortcuts: Shortcut[]; generators: Generator[]; }; type SkmtcProviderProps = { view: ViewState; skmtcRoot: SkmtcRoot; children: ReactNode; session: Session | null; interactive: boolean; }; declare const SkmtcProvider: ({ children, skmtcRoot, session, interactive, view }: SkmtcProviderProps) => React.JSX.Element; declare const useSkmtc: () => { state: SkmtcState; dispatch: SkmtcDispatch; dispatchMessage: (payload: SkmtcMessage) => void; }; export { SkmtcProvider, useSkmtc }; type ToProjectNameArgs = { view: ViewState; }; export declare const toProjectName: ({ view }: ToProjectNameArgs) => string | undefined; export declare const useProjectName: () => string | undefined; //# sourceMappingURL=SkmtcContext.d.ts.map