//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// CommonHelpers satellite library | Author: Sergei Y.Kitáev
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Data.SqlClient;

namespace CommonHelpers {

public delegate Task<HSPCommandResultOutN<TOutData>> HAsyncSPCommandRoutineN<TOutData>()
                                                     where TOutData: class;
public delegate Task<HSPResultN<TListItem>>
   HAsyncSPRoutineN<TListItem>();
public delegate Task<HSPResultN_2<TList1_Item,TList2_Item>>
   HAsyncSPRoutineN_2<TList1_Item,TList2_Item>();
public delegate Task<HSPResultN_3<TList1_Item,TList2_Item,TList3_Item>>
   HAsyncSPRoutineN_3<TList1_Item,TList2_Item,TList3_Item>();
public delegate Task<HSPResultN_4<TList1_Item,TList2_Item,TList3_Item,TList4_Item>>
   HAsyncSPRoutineN_4<TList1_Item,TList2_Item,TList3_Item,TList4_Item>();
public delegate Task<HSPResultN_5<TList1_Item,TList2_Item,TList3_Item,TList4_Item,TList5_Item>>
   HAsyncSPRoutineN_5<TList1_Item,TList2_Item,TList3_Item,TList4_Item,TList5_Item>();

public delegate Task<HSPCommandResultOutRVN<TOutData>> HAsyncSPCommandRoutineRVN<TOutData>()
                                                       where TOutData: class;
public delegate Task<HSPResultRVN<TListItem>>
   HAsyncSPRoutineRVN<TListItem>();
public delegate Task<HSPResultRVN_2<TList1_Item,TList2_Item>>
   HAsyncSPRoutineRVN_2<TList1_Item,TList2_Item>();
public delegate Task<HSPResultRVN_3<TList1_Item,TList2_Item,TList3_Item>>
   HAsyncSPRoutineRVN_3<TList1_Item,TList2_Item,TList3_Item>();
public delegate Task<HSPResultRVN_4<TList1_Item,TList2_Item,TList3_Item,TList4_Item>>
   HAsyncSPRoutineRVN_4<TList1_Item,TList2_Item,TList3_Item,TList4_Item>();
public delegate Task<HSPResultRVN_5<TList1_Item,TList2_Item,TList3_Item,TList4_Item,TList5_Item>>
   HAsyncSPRoutineRVN_5<TList1_Item,TList2_Item,TList3_Item,TList4_Item,TList5_Item>();

public delegate Task<HSPResultOutN<TOutData,TListItem>>
   HAsyncSPRoutineOutN<TOutData,TListItem>()
   where TOutData: class;
public delegate Task<HSPResultOutN_2<TOutData,TList1_Item,TList2_Item>>
   HAsyncSPRoutineOutN_2<TOutData,TList1_Item,TList2_Item>()
   where TOutData: class;
public delegate Task<HSPResultOutN_3<TOutData,TList1_Item,TList2_Item,TList3_Item>>
   HAsyncSPRoutineOutN_3<TOutData,TList1_Item,TList2_Item,TList3_Item>()
   where TOutData: class;
public delegate Task<HSPResultOutN_4<TOutData,TList1_Item,TList2_Item,TList3_Item,TList4_Item>>
   HAsyncSPRoutineOutN_4<TOutData,TList1_Item,TList2_Item,TList3_Item,TList4_Item>()
   where TOutData: class;
public delegate Task<HSPResultOutN_5<TOutData,TList1_Item,TList2_Item,TList3_Item,TList4_Item,
                                              TList5_Item>>
   HAsyncSPRoutineOutN_5<TOutData,TList1_Item,TList2_Item,TList3_Item,TList4_Item,TList5_Item>()
   where TOutData: class;

public delegate Task<HSPResultOutRVN<TOutData,TListItem>>
   HAsyncSPRoutineOutRVN<TOutData,TListItem>()
   where TOutData: class;
public delegate Task<HSPResultOutRVN_2<TOutData,TList1_Item,TList2_Item>>
   HAsyncSPRoutineOutRVN_2<TOutData,TList1_Item,TList2_Item>()
   where TOutData: class;
public delegate Task<HSPResultOutRVN_3<TOutData,TList1_Item,TList2_Item,TList3_Item>>
   HAsyncSPRoutineOutRVN_3<TOutData,TList1_Item,TList2_Item,TList3_Item>()
   where TOutData: class;
public delegate Task<HSPResultOutRVN_4<TOutData,TList1_Item,TList2_Item,TList3_Item,TList4_Item>>
   HAsyncSPRoutineOutRVN_4<TOutData,TList1_Item,TList2_Item,TList3_Item,TList4_Item>()
   where TOutData: class;
public delegate Task<HSPResultOutRVN_5<TOutData,TList1_Item,TList2_Item,TList3_Item,TList4_Item,
                                                TList5_Item>>
   HAsyncSPRoutineOutRVN_5<TOutData,TList1_Item,TList2_Item,TList3_Item,TList4_Item,TList5_Item>()
   where TOutData: class;

} // CommonHelpers
