/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
export class ChargeProportionalDesignators {
  public static readonly NOT_PROPORTIONAL = '{notproportional}';

  public static readonly MAXIMUM_BALANCE_DESIGNATOR = '{maximumbalance}';

  public static readonly RUNNING_BALANCE_DESIGNATOR = '{runningbalance}';

  public static readonly PRINCIPAL_DESIGNATOR = '{principal}';

  public static readonly REQUESTED_DISBURSEMENT_DESIGNATOR = '{requesteddisbursement}';

  public static readonly TO_ACCOUNT_DESIGNATOR = '{toAccount}';

  public static readonly FROM_ACCOUNT_DESIGNATOR = '{fromAccount}';

  public static readonly REQUESTED_REPAYMENT_DESIGNATOR = '{requestedrepayment}';

  public static readonly CONTRACTUAL_REPAYMENT_DESIGNATOR = '{contractualrepayment}';
}
