import { RelatedResource, Money, Resource, ResourceType, PaginatedResponse, NullableRelatedResource, RelatedResources, Self, Params, Response, } from '../../common/types'; export enum TransactionStatus { HELD = 'HELD', SETTLED = 'SETTLED', } export interface TransactionsParams extends Params { status?: TransactionStatus; since?: string; until?: string; category?: string; tag?: string; } interface HoldInfo { amount: Money; foreignAmount: Money | null; } interface RoundUp { amount: Money; boostPortion: Money | null; } interface Cashback { description: string; amount: Money; } interface TransactionAttributes { status: TransactionStatus; rawText: string | null; description: string; message: string | null; holdInfo: HoldInfo | null; roundUp: RoundUp | null; cashback: Cashback | null; amount: Money; foreignAmount: Money | null; settledAt: string; createdAt: string; } interface TransactionRelationships { account: RelatedResource; category: NullableRelatedResource; parentCategory: NullableRelatedResource; tags: RelatedResources; } type TransactionResource = Resource< ResourceType.TRANSACTIONS, TransactionAttributes, TransactionRelationships >; export type TransactionsResponse = PaginatedResponse; export type TransactionResponse = Response;