import { FlairDefinition } from '@devvit/protos/types/devvit/plugin/redditapi/flair/flair_svc.js';
import { GraphQLDefinition } from '@devvit/protos/types/devvit/plugin/redditapi/graphql/graphql_svc.js';
import { LinksAndCommentsDefinition } from '@devvit/protos/types/devvit/plugin/redditapi/linksandcomments/linksandcomments_svc.js';
import { ListingsDefinition } from '@devvit/protos/types/devvit/plugin/redditapi/listings/listings_svc.js';
import { ModerationDefinition } from '@devvit/protos/types/devvit/plugin/redditapi/moderation/moderation_svc.js';
import { ModNoteDefinition } from '@devvit/protos/types/devvit/plugin/redditapi/modnote/modnote_svc.js';
import { NewModmailDefinition } from '@devvit/protos/types/devvit/plugin/redditapi/newmodmail/newmodmail_svc.js';
import { PrivateMessagesDefinition } from '@devvit/protos/types/devvit/plugin/redditapi/privatemessages/privatemessages_svc.js';
import { SubredditsDefinition } from '@devvit/protos/types/devvit/plugin/redditapi/subreddits/subreddits_svc.js';
import { UsersDefinition } from '@devvit/protos/types/devvit/plugin/redditapi/users/users_svc.js';
import { WidgetsDefinition } from '@devvit/protos/types/devvit/plugin/redditapi/widgets/widgets_svc.js';
import { WikiDefinition } from '@devvit/protos/types/devvit/plugin/redditapi/wiki/wiki_svc.js';
import { EchoDefinition } from '@devvit/protos/types/devvit/runtime/actor/echo.js';
import { SupervisorDefinition } from '@devvit/protos/types/devvit/runtime/actor/supervisor.js';
import { ECHO_CNAME, REDDIT_API_CNAME, SUPERVISOR_CNAME, } from '@devvit/shared-types/HostnameUtil.js';
/**
 * A system worker is a worker/plugin that is provided by the runtime, and is loaded at startup/init time.  We probably don't want many of these,
 * and we should make sure to sync this manifest with go.
 *
 * Ordering here implies that we want to load these in the order they are listed in the manifest.
 */
export const defaultSystemWorkerSpec = [
    {
        cname: SUPERVISOR_CNAME,
        workerFileBaseName: SUPERVISOR_CNAME,
        provides: [SupervisorDefinition],
    },
    {
        cname: ECHO_CNAME,
        workerFileBaseName: ECHO_CNAME,
        provides: [EchoDefinition],
    },
    {
        cname: REDDIT_API_CNAME,
        workerFileBaseName: REDDIT_API_CNAME,
        provides: [
            ListingsDefinition,
            NewModmailDefinition,
            FlairDefinition,
            GraphQLDefinition,
            LinksAndCommentsDefinition,
            ModerationDefinition,
            ModNoteDefinition,
            PrivateMessagesDefinition,
            UsersDefinition,
            SubredditsDefinition,
            WidgetsDefinition,
            WikiDefinition,
        ],
    },
];
