export type AppId = "acode" | "claude" | "claudecode" | "codex" | "gemini" | "opencode" | "openclaw";
export type McpServerType = "stdio" | "sse" | "http";
export interface McpServerSpec {
    type?: McpServerType;
    command?: string;
    args?: string[];
    env?: Record<string, string>;
    cwd?: string;
    url?: string;
    headers?: Record<string, string>;
    [key: string]: unknown;
}
export interface AppFlags {
    acode: boolean;
    claude: boolean;
    claudecode: boolean;
    codex: boolean;
    gemini: boolean;
    opencode: boolean;
    openclaw: boolean;
}
export interface McpServer {
    id: string;
    name: string;
    server: McpServerSpec;
    description?: string;
    apps: AppFlags;
}
export interface InstalledSkill {
    id: string;
    name: string;
    directory: string;
    description?: string;
    apps: AppFlags;
    installedAt: number;
}
export type SkillSyncMethod = "auto" | "symlink" | "copy";
export interface SdkState {
    mcpServers: Record<string, McpServer>;
    skills: Record<string, InstalledSkill>;
}
export interface SdkPaths {
    stateFile: string;
    backupDir: string;
    claudeConfigFile: string;
    claudeSkillsDir: string;
    claudecodeConfigFile: string;
    claudecodeSkillsDir: string;
    codexConfigFile: string;
    codexSkillsDir: string;
    acodeConfigFile: string;
    acodeSkillsDir: string;
    opencodeConfigFile: string;
    opencodeSkillsDir: string;
    ssotSkillsDir: string;
}
export interface AdapterOverrides {
    mcp?: Partial<Record<AppId, IMcpAdapter>>;
    skill?: Partial<Record<AppId, ISkillAdapter>>;
}
export interface SdkOptions {
    rootDir?: string;
    paths?: Partial<SdkPaths>;
    skillSyncMethod?: SkillSyncMethod;
    adapters?: AdapterOverrides;
}
export interface IMcpAdapter {
    readonly appId: AppId;
    importServers(): Promise<McpServer[]>;
    syncServer(server: McpServer): Promise<void>;
    removeServer(server: McpServer): Promise<void>;
}
export interface ISkillAdapter {
    readonly appId: AppId;
    importSkills(): Promise<Array<Pick<InstalledSkill, "id" | "name" | "directory" | "description">>>;
    syncSkill(skill: InstalledSkill, sourceDir: string, method: SkillSyncMethod): Promise<void>;
    removeSkill(skill: InstalledSkill): Promise<void>;
}
//# sourceMappingURL=types.d.ts.map