1 import { Form, Person, TaxReturn } from '../core';
2 import { InputLine } from '../core/Line';
10 export interface SpecialProceeds {
11 collectibles?: boolean;
15 export interface IRSReporting {
16 grossProceeds?: boolean;
17 netProceeds?: boolean;
20 export interface Form1099BInput {
24 dateAcquired?: string;
28 accruedMarketDiscount?: number;
29 washSaleLossDisallowed?: number;
31 specialProceeds?: SpecialProceeds;
32 fedIncomeTax?: number;
33 nonCoveredSecurity?: boolean;
34 irsReporting?: IRSReporting;
35 disallowedLoss?: boolean;
36 profitOnClosedContracts?: number;
37 unrealizedProfitOnOpenContractsCurrentTY?: number;
38 unrealizedProfitOnOpenContractsNextTY?: number;
39 aggregateProfitOnContracts?: number;
40 basisReportedToIRS?: boolean;
44 class Input<T extends keyof Form1099BInput> extends InputLine<Form1099BInput, T> {};
46 export default class Form1099B extends Form<Form1099B['_lines'], Form1099BInput> {
47 readonly name = '1099-B';
49 readonly supportsMultipleCopies = true;
51 protected readonly _lines = {
52 'payer': new Input('payer'),
53 'recipient': new Input('payee'),
54 '1a': new Input('description'),
55 '1b': new Input('dateAcquired'),
56 '1c': new Input('dateSold'),
57 '1d': new Input('proceeds'),
58 '1e': new Input('costBasis'),
59 '1f': new Input('accruedMarketDiscount'),
60 '1g': new Input('washSaleLossDisallowed'),
61 '2': new Input('gainType'),
62 '3': new Input('specialProceeds'),
63 '4': new Input('fedIncomeTax'),
64 '5': new Input('nonCoveredSecurity'),
65 '6': new Input('irsReporting'),
66 '7': new Input('disallowedLoss'),
67 '8': new Input('profitOnClosedContracts'),
68 '9': new Input('unrealizedProfitOnOpenContractsCurrentTY'),
69 '10': new Input('unrealizedProfitOnOpenContractsNextTY'),
70 '11': new Input('aggregateProfitOnContracts'),
71 '12': new Input('basisReportedToIRS'),
72 '13': new Input('bartering')