import { GluegunRunContext, GluegunFilesystem, GluegunStrings, GluegunPrint, GluegunSystem, GluegunSemver, GluegunHttp, GluegunPatching, GluegunPrompt, GluegunTemplate, GluegunMeta } from 'gluegun'; export declare const solidarity: { binaryExists: any; getSolidaritySettings: any; setSolidaritySettings: any; setOutputMode: any; checkRequirement: any; updateRequirement: any; skipRule: any; checkENV: any; checkCLI: any; checkDir: any; checkFile: any; updateVersions: any; removeNonVersionCharacters: any; getVersion: any; getLineWithVersion: any; printResults: any; reviewRule: any; buildSpecificRequirement: any; appendSolidaritySettings: any; ruleHandlers: any; createPlugin: any; }; export interface SolidarityPlugin { readonly name: string; readonly description: string; readonly snapshot: string | SnapshotType; } export interface SolidarityRunContext extends GluegunRunContext { solidarity: typeof solidarity; _pluginsList: Array; addPlugin: (config: SolidarityPlugin) => void; printSeparator: () => void; outputMode: SolidarityOutputMode; envHelpers: any; filesystem: GluegunFilesystem; strings: GluegunStrings; print: GluegunPrint; system: GluegunSystem; semver: GluegunSemver; http: GluegunHttp; patching: GluegunPatching; prompt: GluegunPrompt; template: GluegunTemplate; meta: GluegunMeta; bufferSettings?: SolidaritySettings; } export declare type SnapshotType = (context: SolidarityRunContext) => Promise; export interface CLIRule { readonly rule: 'cli'; readonly binary: string; semver?: string; readonly version?: string; readonly line?: string | number; error?: string; readonly matchIndex?: number; platform?: string | string[]; ci?: boolean; fix?: string; } export interface ENVRule { readonly rule: 'env'; readonly variable: string; error?: string; platform?: string | string[]; ci?: boolean; fix?: string; } export interface FSRule { readonly rule: 'dir' | 'directory' | 'file'; readonly location: string; error?: string; platform?: string | string[]; ci?: boolean; fix?: string; } /** * Runs a shell command and evaluates the output is what we expect. */ export interface ShellRule { /** * We're a shell rule. */ readonly rule: 'shell'; /** * The command to execute. */ readonly command: string; /** * A regular expression to match the output against. * * If you add a capture group, it will only target that instead of the whole * expression. This is great for selecting a subset. */ readonly match: string; /** * An optional error message to override. */ error?: string; /** * An optional platform or platforms to target. */ platform?: string | string[]; /** * An optional flag to skip rule on CI */ ci?: boolean; fix?: string; } export interface CustomRule { readonly rule: 'custom'; readonly plugin: string; readonly name: string; error?: string; platform?: string | string[]; ci?: boolean; fix?: string; } export declare type SolidarityRule = CLIRule | ENVRule | FSRule | ShellRule | CustomRule; export declare type SolidarityChecker = (SolidarityRule: any, SolidarityRunContext: any) => any; export interface PluginFind { success: boolean; message?: string; plugin?: SolidarityRule; } export declare enum SolidarityOutputMode { MODERATE = 0, VERBOSE = 1, SILENT = 2 } export declare const enum FriendlyMessages { NONE = "NONE", NOTHING = "Nothing to do \u00AF\\_(\u30C4)_/\u00AF" } export declare type SolidarityRequirement = SolidarityRule[]; export declare type SolidarityRequirementChunk = [string, SolidarityRequirement]; export interface SolidarityConfig { output: SolidarityOutputMode; } export interface SolidaritySettings { readonly requirements: object; readonly config?: SolidarityConfig; } export interface CustomRulesConfig { title: string; table: Array>; } export interface SolidarityReportResults { basicInfo: Array>; cliRules: Array>; envRules: Array>; filesystemRules: Array>; shellRules: Array>; customRules?: Array; addCLI: (cliReportConfig: CLIReportConfig) => void; } export interface CLIReportConfig { binary: string; version: string; desired?: string; }