Design a system to filter and paginate a list of transaction records. Each record is represented as a list of strings in the format [timestamp, id, userId, currency]. You need to implement a function that, given a list of such transactions and a set of filters plus pagination parameters, returns the correctly filtered and paginated result. The filters to support are: userId (optional), currency (optional), and a time range given by startTime and endTime (both optional). Pagination must be cursor-based: the caller provides a page size and an opaque cursor string that encodes the last seen (timestamp, id) tuple; the function returns the next page of results sorted by ascending timestamp and, secondarily, by ascending id. To indicate whether more pages exist, fetch page_size + 1 items but return only page_size, using the extra item only to set a has_more flag.