// TODO move types export interface OAuthTokenResponse { access_token: string expires_in: number refresh_token_expires_in: number refresh_token_absolute_expires_in: number token_type: "Bearer" refresh_token: string } export interface Transaction { id: string date: string amount: number description: string cleanedDescription: string remoteAccountName: string [key: string]: string | number | boolean | unknown } export type Bank = Sparebank1 export interface Sparebank1 { accessToken: () => Promise refreshToken: (refreshToken: string) => Promise transactionsPastDay: ( accountKeys: ReadonlyArray | string, accessToken: string, ) => Promise> } export class Sparebank1Impl implements Sparebank1 { private baseUrl = "https://api.sparebank1.no" // TODO remove? async accessToken(): Promise { throw new Error("Not implemented") // if (response.ok) { // return await response.json() // } // throw new Error(`Failed to get access token. ${response.statusText}`) } async refreshToken(refreshToken: string): Promise { throw new Error("Not implemented") } async transactionsPastDay( accountKeys: ReadonlyArray | string, accessToken: string, ): Promise> { throw new Error("Not implemented") } }