/*
 * Copyright (c) 2021 Kentyou.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
*    Kentyou - initial API and implementation
 */
package org.eclipse.sensinact.gateway.historic.storage.reader.api;

/**
 *
 */
public interface HistoricTemporalRequest extends HistoricRequest<TemporalDTO> {

	void setFunction(String function);	

	void setTemporalWindow(long period);
	
}
