// @flow
import Extendable from './extendable.js';
import type { ExtensionMap } from './extendable.js';

type SuperPackedValue = Array<number>;
type Keyset = Array<string>;

declare export default class Encoder extends Extendable {
  encode(value: any, options?: {
    keysetsToOmit?: Array<Keyset>
  }): SuperPackedValue;
}

declare export function encode(
  value: any, options?: {
    keysetsToOmit?: Array<Keyset>,
    extensions?: ExtensionMap
  }): any