module bank { enum AccountType { NIL, Checking, Saving }; struct AccountInformation { string accNum; AccountType accType; }; exception NoSuchAccountException { }; exception UnknownException { string reason; }; exception InvalidOperationException { string reason; }; interface Account { readonly attribute float balance; readonly attribute string accountNumber; readonly attribute AccountType accountType; void deposit(in float amt) raises(InvalidOperationException, UnknownException); void withdraw(in float amt) raises(InvalidOperationException, UnknownException); }; typedef sequence Accounts; interface Bank { Account openAccount(in AccountInformation accInfo) raises(UnknownException); void closeAccount(in string accNum) raises(UnknownException); Accounts findAccounts(in AccountInformation accInfo) raises(UnknownException); }; };