Is it possible to create plugin without selector in eslint?

I want to create eslint plugin.

export const rule = ESLintUtils.RuleCreator(() => __filename)({
  name: RULE_NAME,
  meta: {
    type: 'problem',
    docs: {
      description: ``,
      recommended: 'error',
    },
    schema: [],
    messages: {},
  },
  defaultOptions: [],
  create(context) {
    return {};
  },
});

I’m not so familiar with eslint plugin.

From what I read in the eslint docs I need to return an object with a selector of what I looking for in the code (for example VariableDeclaration) and then I’ll get the ts node in the callback function.

But is it possible to not return the selector, instead just to return callback and in this callback I’ll get the root ts node and I’ll do my own logic there with ts-morph?

I mean something like this possible to do with eslint?

import { ts } from 'ts-morph';
...

  create(context) {
    const rootNode = context.getRootNode() as ts.Node;
    const nodes = rootNode.getChildren().map(n => ....)

    nodes.forEach(node => {
      context.report({
        node,
        messageId: 'some'
      })
    })

  },