/**
 * Options for searching code in Azure DevOps repositories
 */
export interface SearchCodeOptions {
    searchText: string;
    projectId?: string;
    filters?: {
        Repository?: string[];
        Path?: string[];
        Branch?: string[];
        CodeElement?: string[];
    };
    top?: number;
    skip?: number;
    includeSnippet?: boolean;
    includeContent?: boolean;
}
/**
 * Request body for the Azure DevOps Search API
 */
export interface CodeSearchRequest {
    searchText: string;
    $skip?: number;
    $top?: number;
    filters?: {
        Project?: string[];
        Repository?: string[];
        Path?: string[];
        Branch?: string[];
        CodeElement?: string[];
    };
    includeFacets?: boolean;
    includeSnippet?: boolean;
}
/**
 * Match information for search results
 */
export interface CodeSearchMatch {
    charOffset: number;
    length: number;
}
/**
 * Collection information for search results
 */
export interface CodeSearchCollection {
    name: string;
}
/**
 * Project information for search results
 */
export interface CodeSearchProject {
    name: string;
    id: string;
}
/**
 * Repository information for search results
 */
export interface CodeSearchRepository {
    name: string;
    id: string;
    type: string;
}
/**
 * Version information for search results
 */
export interface CodeSearchVersion {
    branchName: string;
    changeId: string;
}
/**
 * Individual code search result
 */
export interface CodeSearchResult {
    fileName: string;
    path: string;
    content?: string;
    matches: {
        content?: CodeSearchMatch[];
        fileName?: CodeSearchMatch[];
    };
    collection: CodeSearchCollection;
    project: CodeSearchProject;
    repository: CodeSearchRepository;
    versions: CodeSearchVersion[];
    contentId: string;
}
/**
 * Facet information for search results
 */
export interface CodeSearchFacet {
    name: string;
    id: string;
    resultCount: number;
}
/**
 * Response from the Azure DevOps Search API
 */
export interface CodeSearchResponse {
    count: number;
    results: CodeSearchResult[];
    infoCode?: number;
    facets?: {
        Project?: CodeSearchFacet[];
        Repository?: CodeSearchFacet[];
        Path?: CodeSearchFacet[];
        Branch?: CodeSearchFacet[];
        CodeElement?: CodeSearchFacet[];
    };
}
/**
 * Options for searching wiki pages in Azure DevOps projects
 */
export interface SearchWikiOptions {
    /**
     * The text to search for within wiki pages
     */
    searchText: string;
    /**
     * The ID or name of the project to search in
     * If not provided, search will be performed across the entire organization
     */
    projectId?: string;
    /**
     * Optional filters to narrow search results
     */
    filters?: {
        /**
         * Filter by project names. Useful for cross-project searches.
         */
        Project?: string[];
    };
    /**
     * Number of results to return
     * @default 100
     * @minimum 1
     * @maximum 1000
     */
    top?: number;
    /**
     * Number of results to skip for pagination
     * @default 0
     * @minimum 0
     */
    skip?: number;
    /**
     * Whether to include faceting in results
     * @default true
     */
    includeFacets?: boolean;
}
/**
 * Request body for the Azure DevOps Wiki Search API
 */
export interface WikiSearchRequest {
    /**
     * The search text to find in wiki pages
     */
    searchText: string;
    /**
     * Number of results to skip for pagination
     */
    $skip?: number;
    /**
     * Number of results to return
     */
    $top?: number;
    /**
     * Filters to be applied. Set to null if no filters are needed.
     */
    filters?: {
        /**
         * Filter by project names
         */
        Project?: string[];
    };
    /**
     * Options for sorting search results
     * If null, results are sorted by relevance
     */
    $orderBy?: SortOption[];
    /**
     * Whether to include faceting in the result
     * @default false
     */
    includeFacets?: boolean;
}
/**
 * Sort option for search results
 */
export interface SortOption {
    /**
     * Field to sort by
     */
    field: string;
    /**
     * Sort direction
     */
    sortOrder: 'asc' | 'desc' | 'ASC' | 'DESC';
}
/**
 * Defines the matched terms in the field of the wiki result
 */
export interface WikiHit {
    /**
     * Reference name of the highlighted field
     */
    fieldReferenceName: string;
    /**
     * Matched/highlighted snippets of the field
     */
    highlights: string[];
}
/**
 * Defines the wiki result that matched a wiki search request
 */
export interface WikiResult {
    /**
     * Name of the result file
     */
    fileName: string;
    /**
     * Path at which result file is present
     */
    path: string;
    /**
     * Collection of the result file
     */
    collection: {
        /**
         * Name of the collection
         */
        name: string;
    };
    /**
     * Project details of the wiki document
     */
    project: {
        /**
         * ID of the project
         */
        id: string;
        /**
         * Name of the project
         */
        name: string;
        /**
         * Visibility of the project
         */
        visibility?: string;
    };
    /**
     * Wiki information for the result
     */
    wiki: {
        /**
         * ID of the wiki
         */
        id: string;
        /**
         * Mapped path for the wiki
         */
        mappedPath: string;
        /**
         * Name of the wiki
         */
        name: string;
        /**
         * Version for wiki
         */
        version: string;
    };
    /**
     * Content ID of the result file
     */
    contentId: string;
    /**
     * Highlighted snippets of fields that match the search request
     * The list is sorted by relevance of the snippets
     */
    hits: WikiHit[];
}
/**
 * Defines a wiki search response item
 */
export interface WikiSearchResponse {
    /**
     * Total number of matched wiki documents
     */
    count: number;
    /**
     * List of top matched wiki documents
     */
    results: WikiResult[];
    /**
     * Numeric code indicating additional information:
     * 0 - Ok
     * 1 - Account is being reindexed
     * 2 - Account indexing has not started
     * 3 - Invalid Request
     * ... and others as defined in the API
     */
    infoCode?: number;
    /**
     * A dictionary storing an array of Filter objects against each facet
     */
    facets?: {
        /**
         * Project facets for filtering
         */
        Project?: CodeSearchFacet[];
    };
}
/**
 * Options for searching work items in Azure DevOps projects
 */
export interface SearchWorkItemsOptions {
    /**
     * The text to search for within work items
     */
    searchText: string;
    /**
     * The ID or name of the project to search in
     * If not provided, search will be performed across the entire organization
     */
    projectId?: string;
    /**
     * Optional filters to narrow search results
     */
    filters?: {
        /**
         * Filter by project names. Useful for cross-project searches.
         */
        'System.TeamProject'?: string[];
        /**
         * Filter by work item types (Bug, Task, User Story, etc.)
         */
        'System.WorkItemType'?: string[];
        /**
         * Filter by work item states (New, Active, Closed, etc.)
         */
        'System.State'?: string[];
        /**
         * Filter by assigned users
         */
        'System.AssignedTo'?: string[];
        /**
         * Filter by area paths
         */
        'System.AreaPath'?: string[];
    };
    /**
     * Number of results to return
     * @default 100
     * @minimum 1
     * @maximum 1000
     */
    top?: number;
    /**
     * Number of results to skip for pagination
     * @default 0
     * @minimum 0
     */
    skip?: number;
    /**
     * Whether to include faceting in results
     * @default true
     */
    includeFacets?: boolean;
    /**
     * Options for sorting search results
     * If null, results are sorted by relevance
     */
    orderBy?: SortOption[];
}
/**
 * Request body for the Azure DevOps Work Item Search API
 */
export interface WorkItemSearchRequest {
    /**
     * The search text to find in work items
     */
    searchText: string;
    /**
     * Number of results to skip for pagination
     */
    $skip?: number;
    /**
     * Number of results to return
     */
    $top?: number;
    /**
     * Filters to be applied. Set to null if no filters are needed.
     */
    filters?: {
        'System.TeamProject'?: string[];
        'System.WorkItemType'?: string[];
        'System.State'?: string[];
        'System.AssignedTo'?: string[];
        'System.AreaPath'?: string[];
    };
    /**
     * Options for sorting search results
     * If null, results are sorted by relevance
     */
    $orderBy?: SortOption[];
    /**
     * Whether to include faceting in the result
     * @default false
     */
    includeFacets?: boolean;
}
/**
 * Defines the matched terms in the field of the work item result
 */
export interface WorkItemHit {
    /**
     * Reference name of the highlighted field
     */
    fieldReferenceName: string;
    /**
     * Matched/highlighted snippets of the field
     */
    highlights: string[];
}
/**
 * Defines the work item result that matched a work item search request
 */
export interface WorkItemResult {
    /**
     * Project details of the work item
     */
    project: {
        /**
         * ID of the project
         */
        id: string;
        /**
         * Name of the project
         */
        name: string;
    };
    /**
     * A standard set of work item fields and their values
     */
    fields: {
        /**
         * ID of the work item
         */
        'system.id': string;
        /**
         * Type of the work item (Bug, Task, User Story, etc.)
         */
        'system.workitemtype': string;
        /**
         * Title of the work item
         */
        'system.title': string;
        /**
         * User assigned to the work item
         */
        'system.assignedto'?: string;
        /**
         * Current state of the work item
         */
        'system.state'?: string;
        /**
         * Tags associated with the work item
         */
        'system.tags'?: string;
        /**
         * Revision number of the work item
         */
        'system.rev'?: string;
        /**
         * Creation date of the work item
         */
        'system.createddate'?: string;
        /**
         * Last modified date of the work item
         */
        'system.changeddate'?: string;
        /**
         * Other fields may be included based on the work item type
         */
        [key: string]: string | number | boolean | null | undefined;
    };
    /**
     * Highlighted snippets of fields that match the search request
     * The list is sorted by relevance of the snippets
     */
    hits: WorkItemHit[];
    /**
     * URL to the work item
     */
    url: string;
}
/**
 * Defines a work item search response item
 */
export interface WorkItemSearchResponse {
    /**
     * Total number of matched work items
     */
    count: number;
    /**
     * List of top matched work items
     */
    results: WorkItemResult[];
    /**
     * Numeric code indicating additional information:
     * 0 - Ok
     * 1 - Account is being reindexed
     * 2 - Account indexing has not started
     * 3 - Invalid Request
     * ... and others as defined in the API
     */
    infoCode?: number;
    /**
     * A dictionary storing an array of Filter objects against each facet
     */
    facets?: {
        'System.TeamProject'?: CodeSearchFacet[];
        'System.WorkItemType'?: CodeSearchFacet[];
        'System.State'?: CodeSearchFacet[];
        'System.AssignedTo'?: CodeSearchFacet[];
        'System.AreaPath'?: CodeSearchFacet[];
    };
}
