import type { Pathy } from '@bscotch/pathy';
import { z } from 'zod';
import type { GameMakerChannel } from './GameMakerFeeds.types.js';
export { gameMakerChannelSchema, gameMakerFeedOptionsSchema, type GameMakerChannel, type GameMakerFeedOptions, type GameMakerSearch, } from './GameMakerFeeds.types.js';
export type GameMakerKnownPathId = z.infer<typeof gameMakerKnownPathIdSchema>;
declare const gameMakerKnownPathIdSchema: z.ZodEnum<{
    gameMakerDataDir: "gameMakerDataDir";
    defaultMacrosFile: "defaultMacrosFile";
    runtimeFeedsConfigFile: "runtimeFeedsConfigFile";
    initialDefaultMacrosFile: "initialDefaultMacrosFile";
    runtimesCacheDir: "runtimesCacheDir";
    gameMakerIdeDir: "gameMakerIdeDir";
    gameMakerIdeExe: "gameMakerIdeExe";
    gameMakerUserDir: "gameMakerUserDir";
    activeUserFile: "activeUserFile";
    uiLogFile: "uiLogFile";
    activeRuntimeConfigFile: "activeRuntimeConfigFile";
}>;
export type GameMakerKnownPath = z.infer<typeof gameMakerKnownPathSchema>;
export declare const gameMakerKnownPathSchema: z.ZodObject<{
    id: z.ZodEnum<{
        gameMakerDataDir: "gameMakerDataDir";
        defaultMacrosFile: "defaultMacrosFile";
        runtimeFeedsConfigFile: "runtimeFeedsConfigFile";
        initialDefaultMacrosFile: "initialDefaultMacrosFile";
        runtimesCacheDir: "runtimesCacheDir";
        gameMakerIdeDir: "gameMakerIdeDir";
        gameMakerIdeExe: "gameMakerIdeExe";
        gameMakerUserDir: "gameMakerUserDir";
        activeUserFile: "activeUserFile";
        uiLogFile: "uiLogFile";
        activeRuntimeConfigFile: "activeRuntimeConfigFile";
    }>;
    path: z.ZodString;
    name: z.ZodString;
    description: z.ZodString;
}, z.core.$strip>;
/**
 * The subset of Stitch's `Gms2Project`
 * interface that the launcher needs access to.
 */
export interface GameMakerProject {
    readonly name: string;
    readonly yypPathAbsolute: string;
    readonly yypDirAbsolute: string;
}
export interface GameMakerInstalledVersion {
    version: string;
    executablePath: Pathy;
    directory: Pathy;
    channel?: GameMakerChannel;
    publishedAt?: Date;
    feedUrl?: string;
}
export type GameMakerParsedFeed = z.output<typeof gameMakerParsedFeedSchema>;
export declare const gameMakerParsedFeedSchema: z.ZodObject<{
    rss: z.ZodObject<{
        channel: z.ZodObject<{
            title: z.ZodString;
            description: z.ZodString;
            link: z.ZodString;
            item: z.ZodPipe<z.ZodTransform<any[], unknown>, z.ZodArray<z.ZodObject<{
                title: z.ZodString;
                pubDate: z.ZodString;
                link: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>>>;
        }, z.core.$strip>;
    }, z.core.$strip>;
}, z.core.$strip>;
export interface GameMakerLogOptions {
    logDir?: string;
    /**
     * If `true`, will not include the timestamp
     * in the logfile names. This is useful when
     * you want to clobber the logs files with the
     * latest logs.
     */
    excludeLogFileTimestamps?: boolean;
}
export declare const gameMakerUserTokenPayloadSchema: z.ZodObject<{
    exp: z.ZodNumber;
}, z.core.$loose>;
export declare const gameMakerUserDataSchema: z.ZodObject<{
    deviceID: z.ZodOptional<z.ZodString>;
    login: z.ZodOptional<z.ZodString>;
    userID: z.ZodOptional<z.ZodString>;
    accessToken: z.ZodOptional<z.ZodString>;
    refreshToken: z.ZodOptional<z.ZodString>;
}, z.core.$loose>;
export type GameMakerUserData = z.output<typeof gameMakerUserDataSchema>;
export interface GameMakerDefaultMacros {
    updateURI?: string;
    runtimeURI?: string;
}
//# sourceMappingURL=GameMakerLauncher.types.d.ts.map