@superadnim/osint-mcp-server
Version:
Professional OSINT MCP Server for intelligence gathering with privacy protection
85 lines • 3.52 kB
TypeScript
import { AxiosInstance, AxiosRequestConfig } from 'axios';
import { DataSource, RateLimitConfig } from '../types/osint-types.js';
import { RateLimiter } from '../utils/rate-limiter.js';
import { CacheManager } from '../utils/cache-manager.js';
import { Logger } from '../utils/logger.js';
export declare abstract class BaseDataSource implements DataSource {
abstract id: string;
abstract name: string;
abstract type: 'people' | 'phone' | 'email' | 'domain' | 'social' | 'vehicle' | 'address';
abstract tier: 1 | 2 | 3;
abstract rateLimit: RateLimitConfig;
abstract baseUrl: string;
abstract endpoints: any[];
protected httpClient: AxiosInstance;
protected rateLimiter: RateLimiter;
protected cache: CacheManager;
protected logger: Logger;
apiKey?: string;
constructor(rateLimiter: RateLimiter, cache: CacheManager, logger: Logger, apiKey?: string);
protected initializeSource(): void;
private setupRateLimiting;
private setupResponseInterceptors;
protected makeRequest<T>(config: AxiosRequestConfig, cacheKey?: string, cacheTTL?: number): Promise<T>;
abstract search(query: string, options?: Record<string, unknown>): Promise<unknown>;
protected generateCacheKey(method: string, params: Record<string, unknown>): string;
isAvailable(): boolean;
getUsageStats(): Promise<{
queued: number;
running: number;
}>;
}
export declare class GoogleSearchDataSource extends BaseDataSource {
id: string;
name: string;
type: "domain";
tier: 1;
baseUrl: string;
rateLimit: RateLimitConfig;
endpoints: never[];
constructor(rateLimiter: RateLimiter, cache: CacheManager, logger: Logger, apiKey?: string);
search(query: string, options?: Record<string, unknown>): Promise<unknown>;
}
export declare class PeopleSearchDataSource extends BaseDataSource {
id: string;
name: string;
type: "people";
tier: 2;
baseUrl: string;
rateLimit: RateLimitConfig;
endpoints: never[];
constructor(rateLimiter: RateLimiter, cache: CacheManager, logger: Logger, apiKey?: string);
search(query: string, options?: Record<string, unknown>): Promise<unknown>;
}
export declare class PhoneLookupDataSource extends BaseDataSource {
id: string;
name: string;
type: "phone";
tier: 2;
baseUrl: string;
rateLimit: RateLimitConfig;
endpoints: never[];
constructor(rateLimiter: RateLimiter, cache: CacheManager, logger: Logger, apiKey?: string);
search(query: string, options?: Record<string, unknown>): Promise<unknown>;
}
export declare class EmailLookupDataSource extends BaseDataSource {
id: string;
name: string;
type: "email";
tier: 2;
baseUrl: string;
rateLimit: RateLimitConfig;
endpoints: never[];
constructor(rateLimiter: RateLimiter, cache: CacheManager, logger: Logger, apiKey?: string);
search(query: string, options?: Record<string, unknown>): Promise<unknown>;
}
export declare class DataSourceManager {
private sources;
private logger;
constructor(rateLimiter: RateLimiter, cache: CacheManager, logger: Logger, apiKeys: Record<string, string>);
getSource(sourceId: string): BaseDataSource | undefined;
getSourcesByType(type: BaseDataSource['type']): BaseDataSource[];
getAvailableSources(): BaseDataSource[];
searchAcrossSources(type: BaseDataSource['type'], query: string, options?: Record<string, unknown>): Promise<unknown[]>;
}
//# sourceMappingURL=data-sources.d.ts.map