diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000000000000000000000000000000000000..e5a793d927fba34cd1f3aef953714bd1d6a988d3
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,6 @@
+**/*.js
+
+dist/
+node_modules/
+tmp/
+example
diff --git a/.prettierignore b/.prettierignore
index 6461f1438c298c063c8fe5e9ad88f71bdc88f54e..d7a157fd1696fee4a48c129340a1be3a9f83b349 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -2,3 +2,4 @@ package.json
 package-lock.json
 yarn.lock
 dist
+example
diff --git a/.prettierrc.js b/.prettierrc.js
new file mode 100644
index 0000000000000000000000000000000000000000..c5166c2aeebaeb0a0f7654223c843c50cd4c8953
--- /dev/null
+++ b/.prettierrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+  ...require('gts/.prettierrc.json'),
+};
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000000000000000000000000000000000000..2d9fc37e567e7c9221f37f49b08d01fe02f5b11a
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,12 @@
+{
+  "extends": "./node_modules/gts/tsconfig-google.json",
+  "compilerOptions": {
+    "rootDir": ".",
+    "outDir": "./dist/",
+    "emitDecoratorMetadata": true,
+    "experimentalDecorators": true,
+    "lib": ["es2018", "DOM"]
+  },
+  "exclude": ["node_modules", "tmp", "dist", "example"],
+  "include": ["src"]
+}
diff --git a/tslint.json b/tslint.json
deleted file mode 100644
index c760beb5f6ddf15b0345497362695edf0a387f93..0000000000000000000000000000000000000000
--- a/tslint.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-  "extends": ["tslint:recommended", "tslint-etc"],
-  "rules": {
-    "array-type": false,
-    "arrow-parens": false,
-    "interface-name": false,
-    "max-classes-per-file": false,
-    "max-line-length": [
-      true,
-      {
-        "limit": 100,
-        "ignore-pattern": "^import |^export {(.*?)}",
-        "check-strings": true,
-        "check-regex": true
-      }
-    ],
-    "member-access": false,
-    "member-ordering": [
-      true,
-      {
-        "order": ["static-field", "instance-field", "static-method", "instance-method"]
-      }
-    ],
-    "no-consecutive-blank-lines": false,
-    "no-console": [true, "debug", "info", "time", "timeEnd", "trace"],
-    "no-empty": false,
-    "no-inferrable-types": [true, "ignore-params"],
-    "no-non-null-assertion": true,
-    "no-redundant-jsdoc": true,
-    "no-switch-case-fall-through": true,
-    "no-var-requires": false,
-    "object-literal-key-quotes": [true, "as-needed"],
-    "object-literal-sort-keys": false,
-    "ordered-imports": true,
-    "quotemark": [true, "single"],
-    "trailing-comma": false
-  }
-}