import * as Settings from '@taqueria/protocol/Settings';

type MachineInfo = {
    arch: string;
    os: string;
    target: string;
    vendor: string;
};
type Consent = 'opt_in' | 'opt_out';
type EventName = string;
type EventParams = Record<string, string | boolean | number | ((string | boolean | number)[])>;
type StoredEvent = {
    name: EventName;
    params: EventParams;
};
type Deps = {
    isCICD: boolean;
    isTesting: boolean;
    settings: Settings.t;
    operatingSystem: string;
    taqVersion: string;
    taqBuild: string;
    fields?: EventParams;
    getMachineId: () => Promise<string>;
    fetch: (uri: string, opts: Record<string, unknown>) => Promise<unknown>;
};

export { Consent, Deps, EventName, EventParams, MachineInfo, StoredEvent };
