import { RequestClient } from '@segment/actions-core';
export type SupportedMethods = 'get' | 'post';
export type QualtricsApiResponse = {
    result?: Record<string, unknown>;
    meta: {
        httpStatusCode: string;
        requestId: string;
    };
};
export type QualtricsApiErrorResponse = {
    meta: {
        httpStatusCode: string;
        requestId: string;
        error?: {
            errorMessage: string;
            errorCode: string;
        };
    };
};
export type WhoAmiResponse = {
    brandId: string;
    userId: string;
    userName: string;
    accountType: string;
    firstName: string;
    lastName: string;
    email: string;
    datacenter: string;
};
export type Directory = {
    directoryId: string;
    name: string;
    contactCount: number;
    isDefault: boolean;
    deduplicationCriteria: {
        email: boolean;
        firstName: boolean;
        lastName: boolean;
        externalDataReference: boolean;
        phone: boolean;
    };
};
export type ListDirectoriesResponse = {
    elements: Directory[];
};
export type CreateDirectoryContactRequest = {
    firstName: string | undefined;
    lastName: string | undefined;
    email: string | undefined;
    phone: string | undefined;
    extRef: string | undefined;
    embeddedData: {
        [k: string]: unknown;
    } | undefined;
    language: string | undefined;
    unsubscribed: boolean | undefined;
};
export type CreateDirectoryContactResponse = {
    id: string;
};
export type CreateContactTransactionRequest = Record<string, {
    contactId: string;
    mailingListId: string;
    transactionDate: string;
    data?: Record<string, string | number | boolean>;
}>;
export type CreateContactTransactionResponse = {
    createdTransactions: Record<string, {
        id: string;
    }>;
    unprocessedTransactions: Record<string, {
        error: string;
        errorMessage: string;
    }>;
};
export type SearchDirectoryForContactRequest = {
    email?: string;
    extRef?: string;
    phone?: string;
};
export type SearchDirectoryContactResponse = {
    id: string;
    creationDate: string;
    lastModified: string;
    firstName: string;
    lastName: string;
    email: string;
    phoneNumber: string;
    externalDataReference: string;
    language: string;
    unsubscribed: boolean;
    unsubscribeDate: string;
    stats: Record<string, string>;
    embeddedData: Record<string, string>;
    segmentMembership: Record<string, any>;
};
export default class QualtricsApiClient {
    private baseUrl;
    private apiToken;
    private request;
    constructor(dc: string, apiToken: string, request: RequestClient);
    whoaAmI(): Promise<WhoAmiResponse>;
    listDirectories(): Promise<ListDirectoriesResponse>;
    createDirectoryContact(directoryId: string, body: CreateDirectoryContactRequest): Promise<CreateDirectoryContactResponse>;
    createContactTransaction(directoryId: string, body: CreateContactTransactionRequest): Promise<CreateContactTransactionResponse>;
    searchDirectoryForContact(directoryId: string, body: SearchDirectoryForContactRequest): Promise<SearchDirectoryContactResponse[]>;
    private makeRequest;
    private createFilterBody;
    private buildUrl;
    private buildRequestParams;
}
