(document: Document) => {
    // $ExpectType RenderResult
    template
        .renderSync({ name: 'Marko' })
        .appendTo(document.body);

    createServer((req, res) => {
        res.setHeader('content-type', 'text/html');
        // $ExpectType void
        template.render({ name: 'Marko' }, res);
    }).listen(8080);

    template
        .render({ $global: { flags: ['mobile'] } })
        .then((result) => {
            // $ExpectType RenderResult
            result.appendTo(document.body);
        });

    template.render({}, (err: Error | null, result: RenderResult) => {
        // $ExpectType RenderResult
        result.appendTo(document.body);
    });
};
(req: Request) => {
    // $ExpectType Readable
    template.stream({ name: 'Frank' });
};
 createServer((req, res) => {
     res.setHeader('content-type', 'text/html');
     // $ExpectType void
     template.render({ name: 'Marko' }, res);
 }).listen(8080);
            // $ExpectType RenderResult
            result.appendTo(document.body);
        });

    template.render({}, (err: Error | null, result: RenderResult) => {
        // $ExpectType RenderResult
        result.appendTo(document.body);
    });
};

// WriteStream tests

const writeStream = createWriteStream('template.html', { encoding: 'utf8' });

// $ExpectType void
template.render({ name: 'Frank' }, writeStream);

// $ExpectType WriteStream
template.stream({}).pipe(writeStream);

(req: Request) => {
    // $ExpectType Readable
    template.stream({ name: 'Frank' });
};

// rendering tests

const out = template.createOut();

// $ExpectType void
template.render({}, out);