/**
 * usePluginEditor Hook
 *
 * Manages state for editing a plugin's source configuration.
 * Loads plugin config, registry entry, and handles save/reset.
 *
 * @since v2.2.0
 */
import type { RegistryPlugin, RegistryPluginSource } from '../../core/registry/registry-types.js';
import type { Plugin, PluginSourceType } from '../../core/types/plugin.js';
export interface PluginEditorState {
    /** Plugin being edited */
    plugin: Plugin | null;
    /** Current edited type */
    editType: PluginSourceType;
    /** Current edited identifier (resourceId, projectSlug, repoSlug, etc.) */
    editIdentifier: string;
    /** Whether the plugin is enabled */
    editEnabled: boolean;
    /** Registry entry for this plugin (if available) */
    registryPlugin: RegistryPlugin | null;
    /** Available sources from registry */
    registrySources: RegistryPluginSource[];
    /** Currently selected field index for navigation */
    selectedField: number;
    /** Whether changes have been made */
    isDirty: boolean;
    /** Whether changes can be saved (dirty + valid identifier) */
    canSave: boolean;
    /** Set source type */
    setType: (type: PluginSourceType) => void;
    /** Set identifier value */
    setIdentifier: (value: string) => void;
    /** Set enabled state */
    setEnabled: (enabled: boolean) => void;
    /** Select a registry source (quick-pick) */
    selectRegistrySource: (index: number) => void;
    /** Reset to registry preferred source */
    resetToRegistry: () => void;
    /** Navigate selected field */
    setSelectedField: (index: number) => void;
    /** Build a Plugin object from current edit state */
    buildPlugin: () => Plugin;
    /** Total number of navigable fields */
    fieldCount: number;
}
/** Source types available for selection */
export declare const SOURCE_TYPES: PluginSourceType[];
/** Get the identifier field name for a source type */
export declare function getIdentifierFieldName(type: PluginSourceType): string;
export declare function usePluginEditor(pluginToEdit: Plugin | null): PluginEditorState;
//# sourceMappingURL=usePluginEditor.d.ts.map