class XDR_reexecute(XDRStruct):
    '''Reexecute argument'''
    members = (
        'object_id',
        XDR.string(),
        'attrs',
        XDR.optional(XDR.array(XDR.string())),
    )
class XDR_setup(XDRStruct):
    '''Search setup parameters'''
    members = (
        'cookies',
        XDR.array(XDR.string()),
        'filters',
        XDR.array(XDR.struct(XDR_filter_config)),
    )
class XDR_attribute(XDRStruct):
    '''An object attribute'''
    members = (
        'name',
        XDR.string(),
        'value',
        XDR.opaque(),
    )
class XDR_session_var(XDRStruct):
    '''Session variable'''
    members = (
        'name',
        XDR.string(),
        'value',
        XDR.double(),
    )
class XDR_filter_stats(XDRStruct):
    '''Filter statistics'''
    members = (
        'name',
        XDR.string(),
        'stats',
        XDR.array(XDR.struct(XDR_stat)),
    )
class XDR_stat(XDRStruct):
    '''Statistics key-value pair'''
    members = (
        "name",
        XDR.string(),
        "value",
        XDR.hyper(),
    )
class XDR_start(XDRStruct):
    '''Start-search parameters'''
    members = (
        'search_id',
        XDR.fopaque(36),
        'attrs',
        XDR.optional(XDR.array(XDR.string())),
    )
class XDR_filter_config(XDRStruct):
    '''Configuration for a single filter'''
    members = (
        'name',
        XDR.string(),
        'arguments',
        XDR.array(XDR.string()),
        'dependencies',
        XDR.array(XDR.string()),
        'min_score',
        XDR.double(),
        'max_score',
        XDR.double(),
        'code',
        XDR.string(),
        'blob',
        XDR.string(),
    )
class XDR_blob_list(XDRStruct):
    '''A list of blob URIs'''
    members = (
        'uris',
        XDR.array(XDR.string()),
    )