react-native-priv-sdk
Version:
Official MyCover.ai SDK. Supercharge your product with MyCover AI Insurance offerings. Create embedded insurance offerings or full white label insurance applications that excite your customers.
1,005 lines (901 loc) • 29.2 kB
text/typescript
// import ApiService from '../api/api_service'; // Import ApiService
import ApiEndpoints from '../../constants/ApiEndpoints'; // Import API endpoints
import mime from 'mime'; // For getting mime type of files
import GenericResponse from '../api/GenericResponse';
import { type FileData } from '../../screens/purchase/form/components/CustomImagePicker';
import { ClaimType } from '../../utils/enums';
import { type GlobalStore } from '../../store/globalStore';
import type {
AutoInspectionData,
GadgetClaimInspectionData,
GadgetInspectionData,
} from './inspection_repo';
import globalObject from '../../store/globalObject';
import { getApiServiceV1 } from '../../utils/getApiService';
// Assuming a generic response structure
// const global = useGlobalStore((state: GlobalStore) => state);
interface IClaimRepository {
submitVehicleClaim(data: VehicleClaimData): Promise<GenericResponse>;
submitGadgetClaim(data: GadgetClaimData): Promise<GenericResponse>;
submitTravelClaim(data: TravelClaimData): Promise<GenericResponse>;
submitAutoClaimInspection(
data: AutoClaimInspectionData
): Promise<GenericResponse>;
verifyClaimImageAI(data: ClaimImageData): Promise<GenericResponse>;
getClaimsById(policyId: string): Promise<GenericResponse>;
getPolicyInfo(email: string, policyNumber: string): Promise<GenericResponse>;
submitVehicleClaimEstimate(
data: VehicleClaimEstimateData
): Promise<GenericResponse>;
submitThirdPartyClaim(data: ThirdPartyClaimData): Promise<GenericResponse>;
submitTravelClaimMedicalDocumentation(
data: TravelClaimMedicalDocData
): Promise<GenericResponse>;
getBankList(): Promise<GenericResponse>;
verifyBankAccount(
accountNumber: VerifyBankAccountData
): Promise<GenericResponse>;
acceptClaimOffer(data: ClaimOfferData): Promise<GenericResponse>;
rejectClaimOffer(data: ClaimRejectData): Promise<GenericResponse>;
getPolicyById(policyId: string): Promise<GenericResponse>;
submitThirdPartyClaim(
data: SubmitThirdPartyClaimData
): Promise<GenericResponse>;
submitThirdPartyClaimInspection(
data: SubmitThirdPartyClaimInspectionData
): Promise<GenericResponse>;
submitTravelClaimMedicalDocumentation(
data: SubmitTravelClaimMedicalData
): Promise<GenericResponse>;
submitTravelClaimLossDocumentation(
data: SubmitTravelClaimLossData
): Promise<GenericResponse>;
submitTravelClaimBaggageLossDocumentation(
data: SubmitTravelClaimBaggageLossData
): Promise<GenericResponse>;
submitTravelClaimBaggageDelayDocumentation(
data: SubmitTravelClaimBaggageDelayData
): Promise<GenericResponse>;
submitTravelClaimPersonalMoneyDocumentation(
data: SubmitTravelClaimPersonalMoneyData
): Promise<GenericResponse>;
submitTravelClaimMissedDepartureDocumentation(
data: SubmitTravelClaimMissedDepartureData
): Promise<GenericResponse>;
submitTravelClaimFLightDelayDocumentation(
data: SubmitTravelClaimFlightDelayData
): Promise<GenericResponse>;
submitTravelClaimLegalExpenseDocumentation(
data: SubmitTravelClaimLegalExpenseData
): Promise<GenericResponse>;
submitVehiclePoliceReport(
data: SubmitVehiclePoliceReportData
): Promise<GenericResponse>;
submitGadgetClaimEstimate(
data: SubmitGadgetClaimEstimateData
): Promise<GenericResponse>;
getIncidentType(claimType: ClaimType): Promise<GenericResponse>;
}
// const apiService = new ApiService('https://staging.api.mycover.ai/v1', globalObject.publicKey??'');
const apiService = getApiServiceV1(false);
class ClaimRepository implements IClaimRepository {
async submitVehicleClaim(data: VehicleClaimData): Promise<GenericResponse> {
const requestData = {
claim_type: data.claimType,
description: data.description,
incident_date: data.incidentDate,
incident_location: data.incidentLocation,
incident_time: data.incidentTime,
incident_type: data.incidentType,
is_third_party: data.isThirdParty,
loss_type: data.lossType,
// third_party_loss_type: data.thirdPartyLossType,
// third_party_phone_number: data.thirdPartyPhoneNumber,
// third_party_full_name: data.thirdPartyFullName,
policy_id: data.policyId,
progress: 'submission',
};
const res = await apiService.post(
ApiEndpoints.submitVehicleClaim,
requestData,
{ useToken: true }
);
return new GenericResponse(res);
}
async submitGadgetClaim(data: GadgetClaimData): Promise<GenericResponse> {
const requestData = {
address: data.incidentLocation,
date: data.incidentDate,
description: data.description,
incident_type: data.incidentType,
payment_receipt: data.paymentReceiptUrl,
policy_number: data.policyNumber,
progress: 'submission',
time: data.incidentTime,
};
const res = await apiService.post(
ApiEndpoints.submitGadgetClaim,
requestData,
{ useToken: true }
);
return new GenericResponse(res);
}
async submitTravelClaim(data: TravelClaimData): Promise<GenericResponse> {
const requestData = {
address: data.incidentLocation,
boarding_pass: data.boardingPassUrl,
booking_invoice: data.bookingInvoiceUrl,
date: data.incidentDate,
description: data.description,
incident_type: data.incidentType,
policy_number: data.policyNumber,
progress: 'submission',
time: data.incidentTime,
};
const res = await apiService.post(
ApiEndpoints.submitTravelClaim,
requestData,
{ useToken: true }
);
return new GenericResponse(res);
}
async submitTravelClaimMedicalDocumentation(
data: TravelClaimMedicalDocData
): Promise<GenericResponse> {
const requestData = {
amount: data.amount,
claim_id: data.claimId,
medical_certificate: data.medicalCertificate,
incident_type: globalObject.claim?.travelClaimMeta.incident_type,
medical_receipt: data.medicalReceipt,
progress: 'documentation',
};
const res = await apiService.post(
ApiEndpoints.submitTravelClaimDocumentation,
requestData,
{
useToken: true,
headers: { 'Content-Type': 'multipart/form-data' },
}
);
return new GenericResponse(res);
}
async verifyClaimImageAI(data: ClaimImageData): Promise<GenericResponse> {
const formData = new FormData();
formData.append('file', {
uri: data.file.uri,
name: data.file.name,
type: mime.getType(data.file.name),
});
formData.append('action', data.action);
formData.append('vehicle_section', data.vehicleSection);
if (data.claimId) formData.append('claim_id', data.claimId);
if (data.policyId) formData.append('policy_id', data.policyId);
if (data.bypass) formData.append('bypass', 'true');
const res = await apiService.post(
ApiEndpoints.verifyClaimImageAI,
formData,
{
headers: { 'Content-Type': 'multipart/form-data' },
useToken: true,
}
);
return new GenericResponse(res);
}
async getClaimsById(policyId: string): Promise<GenericResponse> {
const res = await apiService.get(
`${ApiEndpoints.getClaimsById}/${policyId}`,
{ useToken: true }
);
return new GenericResponse(res);
}
async getPolicyInfo(
email: string,
policyNumber: string
): Promise<GenericResponse> {
const requestData = {
email: email,
policy_number: policyNumber,
};
const res = await apiService.post(ApiEndpoints.getPolicyInfo, requestData, {
useToken: true,
});
return new GenericResponse(res);
}
async submitVehicleClaimEstimate(
data: VehicleClaimEstimateData
): Promise<GenericResponse> {
const requestData = {
claim_id: data.claimId,
estimate_amount: data.estimateAmount,
claim_invoice_url: data.claimInvoiceUrl,
progress: 'repair_estimate',
};
const res = await apiService.post(
ApiEndpoints.submitVehicleClaimEstimate,
requestData,
{ useToken: true }
);
return new GenericResponse(res);
}
async submitThirdPartyClaim(
data: ThirdPartyClaimData
): Promise<GenericResponse> {
const requestData = {
claim_type: 'Vehicle',
description: data.description,
incident_date: data.incidentDate,
incident_location: data.incidentLocation,
incident_time: data.incidentTime,
incident_type: 'Accidental damage',
is_third_party: true,
loss_type: ['Collision'],
policy_id: data.policyId,
is_third_party_insured: data.isThirdPartyInsured,
progress: 'submission',
third_party_email: data.thirdPartyEmail,
third_party_full_name: data.thirdPartyFullName,
third_party_policy_number: data.thirdPartyPolicyNumber,
third_party_loss_type: data.thirdPartyLossType,
third_party_phone_number: data.thirdPartyPhoneNumber,
third_party_insurance_provider: data.thirdPartyInsuranceProvider,
};
const res = await apiService.post(
ApiEndpoints.submitVehicleClaim,
requestData,
{ useToken: true }
);
return new GenericResponse(res);
}
async getBankList(): Promise<GenericResponse> {
const res = await apiService.get(ApiEndpoints.getBankList, {
useToken: true,
});
return new GenericResponse(res);
}
async verifyBankAccount(
data: VerifyBankAccountData
): Promise<GenericResponse> {
const requestData = {
account_number: data.accountNumber,
bank_code: data.bankCode,
};
const res = await apiService.post(
ApiEndpoints.verifyBankAccount,
requestData,
{ useToken: true }
);
return new GenericResponse(res);
}
async acceptClaimOffer(data: ClaimOfferData): Promise<GenericResponse> {
const requestData = {
account_name: data.accountName,
account_number: data.accountNumber,
bank_code: data.bankCode,
bank_name: data.bankName,
claim_id: data.claimId,
claim_payment_method: 'bank transfer',
customer_id: data.customerId,
provider_id: data.providerId,
};
const res = await apiService.put(
ApiEndpoints.acceptClaimOffer,
requestData,
{ useToken: true }
);
return new GenericResponse(res);
}
async rejectClaimOffer(data: ClaimRejectData): Promise<GenericResponse> {
const requestData = {
claim_id: data.claimId,
comment: data.comment,
comment_type: 'Offer',
customer_id: data.customerId,
provider_id: data.providerId,
};
const res = await apiService.put(
ApiEndpoints.rejectClaimOffer,
requestData,
{ useToken: true }
);
return new GenericResponse(res);
}
async getPolicyById(policyId: string): Promise<GenericResponse> {
const query = `/${policyId}`;
const res = await apiService.get(`${ApiEndpoints.getPolicyById}${query}`, {
useToken: true,
});
return new GenericResponse(res);
}
async submitAutoClaimInspection(
data: AutoClaimInspectionData
): Promise<GenericResponse> {
const requestData = {
action: 'inspection',
policy_id: data.policyId,
timestamp: data.timeStamp,
geolocation: data.address ? data.address : 'home',
inspection_device_type: data.inspectionType,
inspection_duration: 'string',
video_url: data.videoUrl,
progress: 'inspection',
bypass: 'true',
claim_id: data.claimId,
claim_type: data.claimType,
description: globalObject.claim?.claimDescription,
incident_date: globalObject.claim?.vehicleClaimMeta.date,
incident_location: globalObject.claim?.vehicleClaimMeta.address,
incident_time: globalObject.claim?.vehicleClaimMeta.time,
incident_type: globalObject.claim?.vehicleClaimMeta.incident_type,
is_third_party: globalObject.claim?.vehicleClaimMeta.is_third_party,
loss_type: globalObject.claim?.vehicleClaimMeta.loss_type,
third_party_loss_type:
globalObject.claim?.vehicleClaimMeta.third_party_loss_type,
third_party_phone_number:
globalObject.claim?.vehicleClaimMeta.third_party_phone_number,
third_party_full_name: 'FUhad Aminu',
};
const res = await apiService.post(
ApiEndpoints.submitAutoClaims,
requestData,
{ useToken: true }
);
return new GenericResponse(res);
}
async submitAutoInspection(
data: AutoInspectionData
): Promise<GenericResponse> {
const requestData = {
reference: null,
action: 'inspection',
policy_id: data.policyId,
timestamp: data.timeStamp || '30',
geolocation: data.address ? data.address : 'home',
inspection_device_type: data.inspectionType,
inspection_duration: 'string',
video_url: data.videoUrl,
};
const res = await apiService.post(
ApiEndpoints.submitAutoInspection,
requestData,
{ useToken: true }
// {
// headers: {'Content-Type': 'multipart/form-data'},
// useToken: true,
// },
);
return new GenericResponse(res);
}
async submitGadgetInspection(
data: GadgetInspectionData
): Promise<GenericResponse> {
const requestData = {
reference: globalObject.reference,
policy_id: data.policyId,
front_image: data.frontImage,
back_image: data.backImage,
side_image: data.sideImage,
serial_number_image: data.serialNumberImage,
action: 'inspection',
timestamp: data.timeStamp || '30',
geolocation: data.address ? data.address : 'home',
inspection_device_type: data.inspectionType,
inspection_duration: 'string',
video_url: data.videoUrl,
};
const res = await apiService.post(
ApiEndpoints.submitGadgetInspection,
requestData,
{ useToken: true }
// {
// headers: {'Content-Type': 'multipart/form-data'},
// useToken: true,
// },
);
return new GenericResponse(res);
}
async submitGadgetClaimInspection(
data: GadgetClaimInspectionData
): Promise<GenericResponse> {
const requestData = {
reference: globalObject.reference,
policy_id: data.policyId,
front_image: data.frontImage,
back_image: data.backImage,
side_image: data.sideImage,
serial_number_image: data.serialNumberImage,
progress: 'inspection',
timestamp: data.timeStamp || '30',
geolocation: data.address ? data.address : 'home',
policy_number: data.policyNumber,
claim_id: data.claimId,
inspection_device_type: data.inspectionType,
inspection_duration: 'string',
video_url: data.videoUrl,
// police_report: policeReportUrl,
};
const res = await apiService.post(
ApiEndpoints.submitGadgetClaims,
requestData,
{ useToken: true }
// {
// headers: {'Content-Type': 'multipart/form-data'},
// useToken: true,
// },
);
return new GenericResponse(res);
}
// async submitThirdPartyClaim(data: SubmitThirdPartyClaimData): Promise<GenericResponse> {
// const requestData = {
// claim_type: "Vehicle",
// description: data.description,
// incident_date: data.incidentDate,
// incident_location: data.incidentLocation,
// incident_time: data.incidentTime,
// incident_type: "Accidental damage",
// is_third_party: true,
// loss_type: ["Collision"],
// policy_id: data.policyId,
// is_third_party_insured: data.isThirdPartyInsured,
// progress: "submission",
// third_party_email: data.thirdPartyEmail,
// third_party_full_name: data.thirdPartyFullName,
// third_party_policy_number: data.thirdPartyPolicyNumber,
// third_party_loss_type: data.thirdPartyLossType,
// third_party_phone_number: data.thirdPartyPhoneNumber,
// third_party_insurance_provider: data.thirdPartyInsuranceProvider,
// };
// const res = await apiService.post(ApiEndpoints.submitVehicleClaim, requestData, { useToken: true });
// return new GenericResponse(res);
// }
async submitThirdPartyClaimInspection(
data: SubmitThirdPartyClaimInspectionData
): Promise<GenericResponse> {
const requestData = {
amount: data.amount,
claim_id: data.claimId,
evidence_one: data.evidenceOne,
evidence_two: data.evidenceTwo,
evidence_three: data.evidenceThree,
evidence_four: data.evidenceFour,
progress: 'third_party_inspection',
};
const res = await apiService.post(
ApiEndpoints.submitThirdPartyAutoClaimInspection,
requestData,
{ useToken: true }
);
return new GenericResponse(res);
}
// async submitTravelClaimMedicalDocumentation(data: SubmitTravelClaimMedicalData): Promise<GenericResponse> {
// const requestData = {
// amount: data.amount,
// claim_id: data.claimId,
// incident_type: global.claim?.travelClaimMeta?.incident_type,
// medical_certificate: data.medicalCertificate,
// medical_receipt: data.medicalReceipt,
// progress: "documentation",
// };
// const res = await apiService.post(ApiEndpoints.submitTravelClaimDocumentation, requestData, {
// useToken: true,
// headers: { "Content-Type": "multipart/form-data" },
// });
// return new GenericResponse(res);
// }
async submitTravelClaimLossDocumentation(
data: SubmitTravelClaimLossData
): Promise<GenericResponse> {
const requestData = {
amount: data.amount,
claim_id: data.claimId,
incident_type: globalObject.claim?.travelClaimMeta?.incident_type,
consulate_confirmation_report: data.consulateConfirmationReport,
police_report: data.policeReport,
progress: 'documentation',
};
const res = await apiService.post(
ApiEndpoints.submitTravelClaimDocumentation,
requestData,
{
useToken: true,
headers: { 'Content-Type': 'multipart/form-data' },
}
);
return new GenericResponse(res);
}
async submitTravelClaimBaggageLossDocumentation(
data: SubmitTravelClaimBaggageLossData
): Promise<GenericResponse> {
const requestData = {
amount: data.amount,
claim_id: data.claimId,
incident_type: globalObject.claim?.travelClaimMeta?.incident_type,
purchase_receipt: data.purchaseReceipt,
police_report: data.policeReport,
repair_estimate: data.repairEstimate,
other_report: data.otherReport,
progress: 'documentation',
};
const res = await apiService.post(
ApiEndpoints.submitTravelClaimDocumentation,
requestData,
{
useToken: true,
headers: { 'Content-Type': 'multipart/form-data' },
}
);
return new GenericResponse(res);
}
async submitTravelClaimBaggageDelayDocumentation(
data: SubmitTravelClaimBaggageDelayData
): Promise<GenericResponse> {
const requestData = {
amount: data.amount,
claim_id: data.claimId,
incident_type: globalObject.claim?.travelClaimMeta?.incident_type,
property_irregularity_report: data.propertyIrregularityReport,
progress: 'documentation',
};
const res = await apiService.post(
ApiEndpoints.submitTravelClaimDocumentation,
requestData,
{
useToken: true,
headers: { 'Content-Type': 'multipart/form-data' },
}
);
return new GenericResponse(res);
}
async submitTravelClaimPersonalMoneyDocumentation(
data: SubmitTravelClaimPersonalMoneyData
): Promise<GenericResponse> {
const requestData = {
amount: data.amount,
claim_id: data.claimId,
incident_type: globalObject.claim?.travelClaimMeta?.incident_type,
debit_receipt: data.debitReceipt,
other_report: data.otherReport,
police_report: data.policeReport,
progress: 'documentation',
};
const res = await apiService.post(
ApiEndpoints.submitTravelClaimDocumentation,
requestData,
{
useToken: true,
headers: { 'Content-Type': 'multipart/form-data' },
}
);
return new GenericResponse(res);
}
async submitTravelClaimMissedDepartureDocumentation(
data: SubmitTravelClaimMissedDepartureData
): Promise<GenericResponse> {
const requestData = {
claim_id: data.claimId,
incident_type: data.globalStore.claim?.travelClaimMeta?.incident_type,
transporter_report: data.transporterReport,
other_report: data.otherReport,
missed_departure_reason: data.missedDepartureReason,
progress: 'documentation',
};
const res = await apiService.post(
ApiEndpoints.submitTravelClaimDocumentation,
requestData,
{
useToken: true,
headers: { 'Content-Type': 'multipart/form-data' },
}
);
return new GenericResponse(res);
}
async submitTravelClaimFLightDelayDocumentation(
data: SubmitTravelClaimFlightDelayData
): Promise<GenericResponse> {
const requestData = {
claim_id: data.claimId,
incident_type: data.globalStore.claim?.travelClaimMeta?.incident_type,
delay_confirmation: data.delayConfirmation,
departure_time: data.departureTime,
travel_delay_reason: data.travelDelayReason,
progress: 'documentation',
};
const res = await apiService.post(
ApiEndpoints.submitTravelClaimDocumentation,
requestData,
{
useToken: true,
headers: { 'Content-Type': 'multipart/form-data' },
}
);
return new GenericResponse(res);
}
async submitTravelClaimLegalExpenseDocumentation(
data: SubmitTravelClaimLegalExpenseData
): Promise<GenericResponse> {
const requestData = {
claim_id: data.claimId,
incident_type: data.globalStore.claim?.travelClaimMeta?.incident_type,
event_description: data.eventDescription,
witness_details: data.witnessDetails,
written_summon: data.writtenSummon,
progress: 'documentation',
};
const res = await apiService.post(
ApiEndpoints.submitTravelClaimDocumentation,
requestData,
{
useToken: true,
headers: { 'Content-Type': 'multipart/form-data' },
}
);
return new GenericResponse(res);
}
async submitVehiclePoliceReport(
data: SubmitVehiclePoliceReportData
): Promise<GenericResponse> {
const requestData = {
claim_id: data.claimId,
incident_type: 'Theft',
police_report: data.policeReportUrl,
progress: 'inspection',
policy_number: data.policyNumber,
};
const res = await apiService.post(
data.claimType === ClaimType.gadget
? ApiEndpoints.submitGadgetClaims
: ApiEndpoints.submitAutoClaims,
requestData,
{ useToken: true }
);
return new GenericResponse(res);
}
async submitGadgetClaimEstimate(
data: SubmitGadgetClaimEstimateData
): Promise<GenericResponse> {
const requestData = {
claim_id: data.claimId,
estimate_amount: data.estimateAmount,
claim_invoice_url: data.claimInvoiceUrl,
policy_number: data.policyNumber,
};
const res = await apiService.post(
ApiEndpoints.submitGadgetClaimEstimate,
requestData,
{ useToken: true }
);
return new GenericResponse(res);
}
async getIncidentType(claimType: ClaimType): Promise<GenericResponse> {
const res = await apiService.get(
claimType == ClaimType.travel
? ApiEndpoints.getTravelClaimIncidentType
: claimType == ClaimType.gadget
? ApiEndpoints.getGadgetClaimIncidentType
: ApiEndpoints.getVehicleClaimIncidentType,
{ claimType },
{ useToken: true }
);
return new GenericResponse(res);
}
}
export default ClaimRepository;
// Define types for input data for each method
export interface VehicleClaimData {
policyId: string;
claimType: string;
description: string;
incidentDate: string;
incidentTime: string;
incidentLocation: string;
incidentType: string;
isThirdParty: boolean;
lossType: string[];
// thirdPartyLossType: string[];
// thirdPartyPhoneNumber: string;
// thirdPartyFullName: string;
}
// export interface ThirdPartyClaimData {
// policyId: string;
// claimType: string;
// description: string;
// incidentDate: string;
// incidentTime: string;
// incidentLocation: string;
// incidentType: string;
// isThirdParty: boolean;
// lossType: string[];
// // thirdPartyLossType: string[];
// // thirdPartyPhoneNumber: string;
// // thirdPartyFullName: string;
// }
interface GadgetClaimData {
policyNumber: string;
paymentReceiptUrl: string;
description: string;
incidentDate: string;
incidentTime: string;
incidentLocation: string;
incidentType: string;
}
export interface InitialGadgetClaimData {
policyNumber: string;
paymentReceipt: FileData;
description: string;
incidentDate: string;
incidentTime: string;
incidentLocation: string;
incidentType: string;
}
interface TravelClaimData {
policyNumber: string;
boardingPassUrl: string;
bookingInvoiceUrl: string;
description: string;
incidentDate: string;
incidentTime: string;
incidentLocation: string;
incidentType: string;
}
export interface InitialTravelClaimData {
policyNumber: string;
boardingPass: FileData;
bookingInvoice: FileData;
description: string;
incidentDate: string;
incidentTime: string;
incidentLocation: string;
incidentType: string;
}
interface AutoClaimInspectionData {
vehicleImages: Record<string, FileData>;
videoUrl: string;
address: string;
longitude: string;
latitude: string;
inspectionType?: string;
timeStamp?: string;
policyId?: string;
claimId?: string;
claimType?: string;
}
interface ClaimImageData {
file: FileData;
action: string;
vehicleSection: string;
claimId?: string;
policyId?: string;
bypass?: boolean;
}
interface VehicleClaimEstimateData {
claimId: string;
estimateAmount: number;
claimInvoiceUrl: string;
}
export interface ThirdPartyClaimData {
policyId: string;
description: string;
incidentDate: string;
incidentTime: string;
incidentLocation: string;
thirdPartyPhoneNumber: string;
thirdPartyInsuranceProvider: string;
thirdPartyFullName: string;
thirdPartyPolicyNumber: string;
thirdPartyEmail: string;
isThirdPartyInsured: boolean;
thirdPartyLossType: string[];
}
interface ClaimOfferData {
accountName: string;
accountNumber: string;
bankCode: string;
bankName: string;
claimId: string;
customerId: string;
providerId: string;
}
interface VerifyBankAccountData {
accountNumber: string;
bankCode: string;
}
interface ClaimRejectData {
comment: string;
claimId: string;
customerId: string;
providerId: string;
}
interface TravelClaimMedicalDocData {
amount: number;
claimId?: string;
medicalCertificate: string;
medicalReceipt: string;
}
// Interfaces for data payloads
export interface SubmitThirdPartyClaimData {
policyId: string;
description: string;
incidentDate: string;
incidentTime: string;
incidentLocation: string;
thirdPartyPhoneNumber: string;
thirdPartyInsuranceProvider: string;
thirdPartyFullName: string;
thirdPartyPolicyNumber: string;
thirdPartyEmail: string;
isThirdPartyInsured: boolean;
thirdPartyLossType: string[];
}
export interface SubmitThirdPartyClaimInspectionData {
amount: number;
claimId: string;
evidenceOne: string;
evidenceTwo: string;
evidenceThree: string;
evidenceFour: string;
}
export interface SubmitTravelClaimMedicalData {
amount: number;
claimId?: string;
medicalCertificate: string;
medicalReceipt: string;
}
export interface SubmitTravelClaimLossData {
amount: number;
claimId?: string;
consulateConfirmationReport: string;
policeReport: string;
}
export interface SubmitTravelClaimBaggageLossData {
amount: number;
claimId?: string;
purchaseReceipt: string;
policeReport: string;
repairEstimate: string;
otherReport: string;
}
export interface SubmitTravelClaimBaggageDelayData {
amount: number;
claimId?: string;
propertyIrregularityReport: string;
}
export interface SubmitTravelClaimPersonalMoneyData {
amount: number;
claimId?: string;
debitReceipt: string;
otherReport: string;
policeReport: string;
}
export interface SubmitTravelClaimMissedDepartureData {
claimId?: string;
missedDepartureReason: string;
otherReport: string;
transporterReport: string;
globalStore: GlobalStore;
}
export interface SubmitTravelClaimFlightDelayData {
claimId?: string;
delayConfirmation: string;
departureTime: string;
travelDelayReason: string;
globalStore: GlobalStore;
}
export interface SubmitTravelClaimLegalExpenseData {
claimId?: string;
eventDescription: string;
witnessDetails: string;
writtenSummon: string;
globalStore: GlobalStore;
}
export interface SubmitVehiclePoliceReportData {
claimId: string;
policeReportUrl: string;
policyNumber: string;
claimType: ClaimType;
}
export interface SubmitGadgetClaimEstimateData {
claimId: string;
estimateAmount: number;
claimInvoiceUrl: string;
policyNumber: string;
}