// Path: bluez-dbus/src/main/java/org/bluez/datatypes/TwoTuple.java
// public class TwoTuple<A, B> extends Tuple {
// 
//     @Position(0)
//     private A firstValue;
//     @Position(1)
//     private B secondValue;
// 
//     public TwoTuple(A _firstValue, B _secondValue) {
//         firstValue = _firstValue;
//         secondValue = _secondValue;
//     }
// 
//     public A getFirstValue() {
//         return firstValue;
//     }
// 
//     public void setFirstValue(A _firstValue) {
//         firstValue = _firstValue;
//     }
// 
//     public B getSecondValue() {
//         return secondValue;
//     }
// 
//     public void setSecondValue(B _secondValue) {
//         secondValue = _secondValue;
//     }
// 
// }
// 
// Path: bluez-dbus/src/main/java/org/bluez/exceptions/BluezFailedException.java
// @SuppressWarnings("serial")
// public class BluezFailedException extends DBusException {
// 
//     public BluezFailedException(String _message) {
//         super(_message);
//     }
// 
// }
// 
// Path: bluez-dbus/src/main/java/org/bluez/exceptions/BluezInvalidArgumentsException.java
// @SuppressWarnings("serial")
// public class BluezInvalidArgumentsException extends DBusException {
// 
//     public BluezInvalidArgumentsException(String _message) {
//         super(_message);
//     }
// 
// }
// 
// Path: bluez-dbus/src/main/java/org/bluez/exceptions/BluezNotSupportedException.java
// @SuppressWarnings("serial")
// public class BluezNotSupportedException extends DBusException {
// 
//     public BluezNotSupportedException(String _message) {
//         super(_message);
//     }
// 
// }


import java.util.Map;
import java.util.Properties;
import org.bluez.datatypes.TwoTuple;
import org.bluez.exceptions.BluezFailedException;
import org.bluez.exceptions.BluezInvalidArgumentsException;
import org.bluez.exceptions.BluezNotSupportedException;
import org.freedesktop.dbus.DBusPath;
import org.freedesktop.dbus.interfaces.DBusInterface;
import org.freedesktop.dbus.types.Variant;
package org.bluez;



/**
 * File generated - 2020-06-18.<br>
 * Based on bluez Documentation: media-api.txt.<br>
 * <br>
 * <b>Service:</b> unique name (Target role)<br>
 * <b>Interface:</b> org.bluez.MediaFolder1<br>
 * <br>
 * <b>Object path:</b><br>
 *             freely definable (Target role)<br>
 *             [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/playerX<br>
 *             (Controller role)
 * <br>
 * <b>Supported properties:</b> <br>
 * <br>
 * 		uint32 NumberOfItems [readonly]<br>
 * <br>
 * 			Number of items in the folder<br>
 * <br>
 * 		string Name [readonly]<br>
 * <br>
 * 			Folder name:<br>
 * <br>
 * 			Possible values:<br>
 * 				"/Filesystem/...": Filesystem scope<br>
 * 				"/NowPlaying/...": NowPlaying scope<br>
 * <br>
 * 			Note: /NowPlaying folder might not be listed if player<br>
 * 			is stopped, folders created by Search are virtual so<br>
 * 			once another Search is perform or the folder is<br>
 * 			changed using ChangeFolder it will no longer be listed.<br>
 * <br>
 * <br>
 * 			Offset of the first item.<br>
 * <br>
 * 			Default value: 0<br>
 * <br>
 * 		uint32 End:<br>
 * <br>
 * 			Offset of the last item.<br>
 * <br>
 * 			Default value: NumbeOfItems<br>
 * <br>
 * 		array{string} Attributes<br>
 * <br>
 * 			Item properties that should be included in the list.<br>
 * <br>
 * 			Possible Values:<br>
 * <br>
 * 				"title", "artist", "album", "genre",<br>
 * 				"number-of-tracks", "number", "duration"<br>
 * <br>
 * 			Default Value: All<br>
 * <br>
 * <br>
 */
public interface MediaFolder1 extends DBusInterface {

    /**
     * <b>From bluez documentation:</b><br>
     * <br>
     * Return a folder object containing the search result.<br>
     * <br>
     * To list the items found use the folder object returned<br>
     * and pass to ChangeFolder.<br>
     * <br>
     * 
     * @param _value value
     * @param _filter filter
     * 
     * @return DBusPath - maybe null
     * 
     * @throws BluezNotSupportedException when operation not supported
     * @throws BluezFailedException on failure
     */
    DBusPath Search(String _value, Map<String, Variant<?>> _filter) throws BluezNotSupportedException, BluezFailedException;

    /**
     * <b>From bluez documentation:</b><br>
     * <br>
     * Return a list of items found<br>
     * <br>
     * 
     * @param _filter filter
     * 
     * @return TwoTuple&lt;DBusPath, Properties&gt;[] - maybe null
     * 
     * @throws BluezInvalidArgumentsException when argument is invalid
     * @throws BluezNotSupportedException when operation not supported
     * @throws BluezFailedException on failure
     */
// Path: bluez-dbus/src/main/java/org/bluez/datatypes/TwoTuple.java
// public class TwoTuple<A, B> extends Tuple {
// 
//     @Position(0)
//     private A firstValue;
//     @Position(1)
//     private B secondValue;
// 
//     public TwoTuple(A _firstValue, B _secondValue) {
//         firstValue = _firstValue;
//         secondValue = _secondValue;
//     }
// 
//     public A getFirstValue() {
//         return firstValue;
//     }
// 
//     public void setFirstValue(A _firstValue) {
//         firstValue = _firstValue;
//     }
// 
//     public B getSecondValue() {
//         return secondValue;
//     }
// 
//     public void setSecondValue(B _secondValue) {
//         secondValue = _secondValue;
//     }
// 
// }
// 
// Path: bluez-dbus/src/main/java/org/bluez/exceptions/BluezFailedException.java
// @SuppressWarnings("serial")
// public class BluezFailedException extends DBusException {
// 
//     public BluezFailedException(String _message) {
//         super(_message);
//     }
// 
// }
// 
// Path: bluez-dbus/src/main/java/org/bluez/exceptions/BluezInvalidArgumentsException.java
// @SuppressWarnings("serial")
// public class BluezInvalidArgumentsException extends DBusException {
// 
//     public BluezInvalidArgumentsException(String _message) {
//         super(_message);
//     }
// 
// }
// 
// Path: bluez-dbus/src/main/java/org/bluez/exceptions/BluezNotSupportedException.java
// @SuppressWarnings("serial")
// public class BluezNotSupportedException extends DBusException {
// 
//     public BluezNotSupportedException(String _message) {
//         super(_message);
//     }
// 
// }


// Path: bluez-dbus/src/main/java/org/bluez/MediaFolder1.java
import java.util.Map;
import java.util.Properties;
import org.bluez.datatypes.TwoTuple;
import org.bluez.exceptions.BluezFailedException;
import org.bluez.exceptions.BluezInvalidArgumentsException;
import org.bluez.exceptions.BluezNotSupportedException;
import org.freedesktop.dbus.DBusPath;
import org.freedesktop.dbus.interfaces.DBusInterface;
import org.freedesktop.dbus.types.Variant;

package org.bluez;



/**
 * File generated - 2020-06-18.<br>
 * Based on bluez Documentation: media-api.txt.<br>
 * <br>
 * <b>Service:</b> unique name (Target role)<br>
 * <b>Interface:</b> org.bluez.MediaFolder1<br>
 * <br>
 * <b>Object path:</b><br>
 *             freely definable (Target role)<br>
 *             [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/playerX<br>
 *             (Controller role)
 * <br>
 * <b>Supported properties:</b> <br>
 * <br>
 * 		uint32 NumberOfItems [readonly]<br>
 * <br>
 * 			Number of items in the folder<br>
 * <br>
 * 		string Name [readonly]<br>
 * <br>
 * 			Folder name:<br>
 * <br>
 * 			Possible values:<br>
 * 				"/Filesystem/...": Filesystem scope<br>
 * 				"/NowPlaying/...": NowPlaying scope<br>
 * <br>
 * 			Note: /NowPlaying folder might not be listed if player<br>
 * 			is stopped, folders created by Search are virtual so<br>
 * 			once another Search is perform or the folder is<br>
 * 			changed using ChangeFolder it will no longer be listed.<br>
 * <br>
 * <br>
 * 			Offset of the first item.<br>
 * <br>
 * 			Default value: 0<br>
 * <br>
 * 		uint32 End:<br>
 * <br>
 * 			Offset of the last item.<br>
 * <br>
 * 			Default value: NumbeOfItems<br>
 * <br>
 * 		array{string} Attributes<br>
 * <br>
 * 			Item properties that should be included in the list.<br>
 * <br>
 * 			Possible Values:<br>
 * <br>
 * 				"title", "artist", "album", "genre",<br>
 * 				"number-of-tracks", "number", "duration"<br>
 * <br>
 * 			Default Value: All<br>
 * <br>
 * <br>
 */
public interface MediaFolder1 extends DBusInterface {

    /**
     * <b>From bluez documentation:</b><br>
     * <br>
     * Return a folder object containing the search result.<br>
     * <br>
     * To list the items found use the folder object returned<br>
     * and pass to ChangeFolder.<br>
     * <br>
     * 
     * @param _value value
     * @param _filter filter
     * 
     * @return DBusPath - maybe null
     * 
     * @throws BluezNotSupportedException when operation not supported
     * @throws BluezFailedException on failure
     */
    DBusPath Search(String _value, Map<String, Variant<?>> _filter) throws BluezNotSupportedException, BluezFailedException;

    /**
     * <b>From bluez documentation:</b><br>
     * <br>
     * Return a list of items found<br>
     * <br>
     * 
     * @param _filter filter
     * 
     * @return TwoTuple&lt;DBusPath, Properties&gt;[] - maybe null
     * 
     * @throws BluezInvalidArgumentsException when argument is invalid
     * @throws BluezNotSupportedException when operation not supported
     * @throws BluezFailedException on failure
     */
    TwoTuple<DBusPath, Properties>[] ListItems(Map<String, Variant<?>> _filter) throws BluezInvalidArgumentsException, BluezNotSupportedException, BluezFailedException;