package Ġse . activ out . pay back . domain Ċ Ċ import Ġse . activ out . pay back . oauth 2 . domain . OAuth 2 Token Ċ Ċ data Ġclass ĠBank Name ( val Ġvalue : ĠString ) Ċ Ċ interface ĠBank Credential Ċ Ċ interface ĠBank Principal Ġ{ ĊĠĠĠ Ġfun Ġget Credential ( bank Name : ĠBank Name ): ĠBank Credential ? Ċ } Ċ Ċ data Ġclass ĠBank OAuth 2 Settings ( ĊĠĠĠĠĠĠĠ Ġval ĠbaseUrl : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġauthorize Path : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġtoken Path : ĠString , ĊĠĠĠĠĠĠĠ Ġval ĠclientId : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġclient Secret : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġredirect Url : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġscopes : ĠList < String >, ĊĠĠĠĠĠĠĠ Ġval Ġauthorize Params : ĠMap < String , ĠString > Ġ= Ġmap Of (), ĊĠĠĠĠĠĠĠ Ġval Ġcheck State : ĠBoolean Ġ= Ġtrue Ċ ) Ċ Ċ interface ĠBank OAuth 2 Ġ{ ĊĠĠĠ Ġval Ġsettings : ĠBank OAuth 2 Settings ĊĠĠĠ Ġfun Ġcreate Bank Credential ( token : ĠOAuth 2 Token ): ĠBank Credential Ċ } Ċ Ċ data Ġclass ĠBank OAuth 2 Credential ( val Ġtoken : ĠOAuth 2 Token ) Ġ: ĠBank Credential Ċ Ċ interface ĠBank Login Ġ{ ĊĠĠĠ Ġfun Ġo Auth 2 ( bank OAuth 2 : ĠBank OAuth 2 ) Ċ } ĊĊ Ċ interface ĠBank Plugin Ġ{ ĊĠĠĠ Ġval Ġname : ĠBank Name ĊĠĠĠ Ġval Ġaccount Backend : ĠAccount Plugin ĊĊĠĠĠ Ġfun Ġlogin ( bank Login : ĠBank Login ) Ċ }