import { useSDKModel } from './use-models'; import { ApiKeys, TinkLinkData, TinkLoginData } from '../types'; import { useAsync, UseAsyncResult } from './use-async'; import { TinkModel } from '../models/tink'; export type UseTinkModelType = { model: TinkModel; login: () => UseAsyncResult; link: () => UseAsyncResult; }; export const useTink = (): UseTinkModelType => { const model = (useSDKModel(ApiKeys.TINK)); return { model, login: login(model), link: link(model), }; }; const login = (model: TinkModel) => (): UseAsyncResult => { return useAsync(model.login.bind(model)); }; const link = (model: TinkModel) => (): UseAsyncResult => { return useAsync(model.link.bind(model)); };