export type ChipKind = "positive" | "negative" | "avatar";
export interface CardPolicyOwnerSeed {
    displayName: string;
    userId: string;
    roleLabel?: string;
}
export interface CardPolicyCardRowSeed {
    cardName: string;
    id: string;
    isChecked: boolean;
    last4: string;
    limitAmount: number;
    owner: CardPolicyOwnerSeed;
    utilizationAmount: number;
    limitCadence?: string;
}
export interface CardPolicySuggestedPolicyChipSeed {
    chipKind: ChipKind;
    id: string;
    label: string;
    cardIds?: string[];
}
export interface CardPolicySuggestedPolicyChipGroupSeed {
    chips: CardPolicySuggestedPolicyChipSeed[];
    id: string;
    label: string;
}
export interface CardPolicySuggestedPolicySeed {
    chipGroups: CardPolicySuggestedPolicyChipGroupSeed[];
    id: string;
    isChecked: boolean;
    name: string;
}
export interface CardPolicyDraftPolicyEntity {
    categoryCodes: string[];
    merchantNames: string[];
}
export interface CardPolicySpendLimits {
    transaction: number;
}
export interface CardPolicyDraftPolicy {
    allowedEntity: CardPolicyDraftPolicyEntity;
    applyToCards: string[];
    blockedEntity: CardPolicyDraftPolicyEntity;
    description: string;
    id: string;
    mode: string;
    name: string;
    requiredReceiptThreshold: number;
    spendLimits: CardPolicySpendLimits;
}
export interface CardPolicyStep5Review {
    draftPolicies: CardPolicyDraftPolicy[];
    groupingSource: string;
    prompt: string;
}
export interface CardPolicyWizardPlan {
    step5Review: CardPolicyStep5Review;
}
export interface CardPolicyUploadSource {
    confidenceScore: number;
    fileName: string;
    lowConfidenceFields: string[];
}
export type CardPolicyInitialData = {
    policyKind: "auto";
    wizardPlan: CardPolicyWizardPlan;
} | {
    policyKind: "guided";
    wizardPlan: CardPolicyWizardPlan;
} | {
    policyKind: "upload";
    source?: CardPolicyUploadSource;
    wizardPlan?: CardPolicyWizardPlan;
};
export interface CardPolicyChipFieldValue {
    id: string;
    isSelected: boolean;
    label: string;
    optionalCode?: string;
    optionalCodes?: string[];
}
export interface CardPolicyAllowBlockFieldValue {
    allowItems: CardPolicyChipFieldValue[];
    blockItems: CardPolicyChipFieldValue[];
    mode: "allow" | "block";
}
export interface CardPolicyCardSelectionRow {
    cardName: string;
    id: string;
    isChecked: boolean;
    last4: string;
    limitAmount: number;
    owner: CardPolicyOwnerSeed;
    utilizationAmount: number;
    limitCadence?: string;
}
export interface CardPolicyLimitFieldValue {
    id: string;
    isEnabled: boolean;
    amount?: number;
}
export interface CardPolicyReviewChip {
    chipKind: ChipKind;
    id: string;
    label: string;
    cardIds?: string[];
    helperText?: string;
    isSelected?: boolean;
    optionalCode?: string;
    placeholder?: string;
}
export interface CardPolicyReviewChipGroup {
    chips: CardPolicyReviewChip[];
    id: string;
    label: string;
    kind?: "chips" | "limits";
}
export interface CardPolicyReviewRow {
    chipGroups: CardPolicyReviewChipGroup[];
    id: string;
    isChecked: boolean;
    name: string;
}
export interface CardPolicyFormValues {
    cardSelections: CardPolicyCardSelectionRow[];
    categoryPolicy: CardPolicyAllowBlockFieldValue;
    limits: CardPolicyLimitFieldValue[];
    policiesReview: CardPolicyReviewRow[];
    policyKind: "auto" | "guided" | "upload";
    vendorPolicy: CardPolicyAllowBlockFieldValue;
}
export interface ExtractedCardPolicyDataView {
    allowedEntity: {
        categoryCodes: string[];
        merchantNames: string[];
    };
    blockedEntity: {
        categoryCodes: string[];
        merchantNames: string[];
    };
    confidenceScore: number;
    policyName: string;
    requiredReceiptThreshold: number;
    transactionLimit: number;
}
