import { CreateLinkPayload } from '@event-inc/types';
import { Client } from '../../client';
import { getHeaders } from '../getHeaders';
import { matchResultAndHandleHttpError } from '@event-inc/utils';
import { identity } from 'ramda';
import { createLinkTokenApi } from '../../apis/link.api';

export const createLinkToken = async <T extends 'source' | 'destination'>(
	client: Client,
	payload: CreateLinkPayload<T>
) => {
	const secret = client._clientInfo.secret;
	const url = client._url;
	const headers = getHeaders(secret);

	const result = await createLinkTokenApi(headers, url, payload);
	const { data } = matchResultAndHandleHttpError(result, identity);
	return data;
};

