001/*
002 * ObjectLab, http://www.objectlab.co.uk/open is sponsoring the ObjectLab Kit.
003 *
004 * Based in London, we are world leaders in the design and development
005 * of bespoke applications for the securities financing markets.
006 *
007 * <a href="http://www.objectlab.co.uk/open">Click here to learn more</a>
008 *           ___  _     _           _   _          _
009 *          / _ \| |__ (_) ___  ___| |_| |    __ _| |__
010 *         | | | | '_ \| |/ _ \/ __| __| |   / _` | '_ \
011 *         | |_| | |_) | |  __/ (__| |_| |__| (_| | |_) |
012 *          \___/|_.__// |\___|\___|\__|_____\__,_|_.__/
013 *                   |__/
014 *
015 *                     www.ObjectLab.co.uk
016 *
017 * Copyright 2006 the original author or authors.
018 *
019 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
020 * use this file except in compliance with the License. You may obtain a copy of
021 * the License at
022 *
023 * http://www.apache.org/licenses/LICENSE-2.0
024 *
025 * Unless required by applicable law or agreed to in writing, software
026 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
027 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
028 * License for the specific language governing permissions and limitations under
029 * the License.
030 */package net.objectlab.kit.datecalc.common.ccy;
031
032import java.util.Set;
033
034import net.objectlab.kit.datecalc.common.WorkingWeek;
035
036/**
037 * According to http://www.londonfx.co.uk/valdates.html, some currencies should
038 * take into account USD holidays for T+1 (whilst calculating the Spot Date).
039 *
040 * @author Benoit Xhenseval
041 * @since 1.4.0
042 */
043public interface CurrencyCalculatorConfig {
044    /**
045     * @param crossCcy the cross currency used
046     * @return set of currency code subject to CrossCcy Holidays for T+1. (for USD, typically MXN/CLP/ARS).
047     */
048    Set<String> getCurrenciesSubjectToCrossCcyForT1(String crossCcy);
049
050    /**
051     * Return a default Mon-Fri for most, but some might be Sun-Thu (Arabic countries).
052     * @param currency
053     * @return the WorkingWeek registered for this currency other the default Mon-Fri.
054     */
055    WorkingWeek getWorkingWeek(String currency);
056}