import { AxiosInstance } from 'axios'; import { Methods, AuthorizationHeader, TinkLinkQuery, TinkLinkData, TinkLoginData, } from '../types'; export class Tink { api: AxiosInstance; constructor(api: AxiosInstance) { this.api = api; this.link = this.link.bind(this); this.login = this.login.bind(this); } async link(query: TinkLinkQuery): Promise { const { data } = await this.api.request({ url: '/tink/link', method: Methods.GET, params: query, }); return data; } async login(code: string): Promise { const { data } = await this.api.request({ url: '/tink/login', method: Methods.POST, data: { code, }, }); if (data && data.token) { this.api.defaults.headers.common[ AuthorizationHeader ] = `Bearer ${data.token}`; } return data; } } export interface TinkRelations {} export type TinkWithRelations = Tink & TinkRelations;