summaryrefslogtreecommitdiff
path: root/pbt/ts/src/bank.ts
diff options
context:
space:
mode:
Diffstat (limited to 'pbt/ts/src/bank.ts')
-rw-r--r--pbt/ts/src/bank.ts20
1 files changed, 11 insertions, 9 deletions
diff --git a/pbt/ts/src/bank.ts b/pbt/ts/src/bank.ts
index 1f47739..f5981a4 100644
--- a/pbt/ts/src/bank.ts
+++ b/pbt/ts/src/bank.ts
@@ -4,7 +4,7 @@ import {Option, fromNullable, matchW} from 'fp-ts/lib/Option';
export type Account = string;
export interface Bank {
- balance: (account: Account) => Option<number>;
+ balance: (account: Account) => Promise<Option<number>>;
/// Deposit amount into account
///
@@ -15,8 +15,8 @@ export interface Bank {
///
/// @param account The account to deposit into
/// @param amt The amount to deposit
- deposit: (account: Account, amt: number) => void;
- withdraw: (account: Account, amt: number) => void;
+ deposit: (account: Account, amt: number) => Promise<void>;
+ withdraw: (account: Account, amt: number) => Promise<void>;
}
export class SimpleBank implements Bank {
@@ -27,12 +27,12 @@ export class SimpleBank implements Bank {
this.accounts = new Map(accounts);
}
- balance(account: Account): Option<number> {
- return fromNullable(this.accounts.get(account));
+ balance(account: Account): Promise<Option<number>> {
+ return Promise.resolve(fromNullable(this.accounts.get(account)));
}
- deposit(account: Account, amt: number): void {
- const current = this.balance(account);
+ deposit(account: Account, amt: number): Promise<void> {
+ const current = fromNullable(this.accounts.get(account));
matchW(
() => {
throw new Error(`Unknown account ${account}`);
@@ -41,10 +41,11 @@ export class SimpleBank implements Bank {
this.accounts.set(account, bal + amt);
},
)(current);
+ return Promise.resolve();
}
- withdraw(account: Account, amt: number): void {
- const current = this.balance(account);
+ withdraw(account: Account, amt: number): Promise<void> {
+ const current = fromNullable(this.accounts.get(account));
matchW(
() => {
throw new Error(`Unknown account ${account}`);
@@ -53,6 +54,7 @@ export class SimpleBank implements Bank {
this.accounts.set(account, bal - amt);
},
)(current);
+ return Promise.resolve();
}
}