diff --git a/radius/radius-tests.ts b/radius/radius-tests.ts
new file mode 100644
index 000000000..5d06d2fcb
--- /dev/null
+++ b/radius/radius-tests.ts
@@ -0,0 +1,43 @@
+///
+
+import radius = require('radius');
+
+var radius_secret: string = "shhhh"
+
+radius.add_dictionary("./");
+var encodedPacket: NodeBuffer = radius.encode({
+ code: "Access-Request",
+ secret: radius_secret,
+ attributes: {
+ "NAS-IP-Address": "10.5.5.5",
+ "User-Name": "me",
+ "User-Password": "its-a-secret"
+ }
+});
+
+var radiusPacket: radius.RadiusPacket = radius.decode({
+ packet: encodedPacket,
+ secret: radius_secret
+});
+
+var response: NodeBuffer;
+
+if (radiusPacket.attributes["User-Name"] == "me" && radiusPacket.attributes["User-Password"] == "its-a-secret") {
+ response = radius.encode_response({
+ packet: radiusPacket,
+ code: "Access-Accept",
+ secret: radius_secret
+ });
+} else {
+ response = radius.encode_response({
+ packet: radiusPacket,
+ code: "Access-Reject",
+ secret: radius_secret
+ });
+}
+
+console.log(radius.verify_response({
+ request: encodedPacket,
+ response: response,
+ secret: radius_secret
+}));
\ No newline at end of file
diff --git a/radius/radius.d.ts b/radius/radius.d.ts
new file mode 100644
index 000000000..b1079fafd
--- /dev/null
+++ b/radius/radius.d.ts
@@ -0,0 +1,106 @@
+// Type definitions for node-radius
+// Project: https://github.com/retailnext/node-radius
+// Definitions by: Peter Harris
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+interface NodeBuffer { }
+
+declare module "radius" {
+ /**
+ * {@link https://github.com/retailnext/node-radius#radiusdecodeargs} for more info.
+ **/
+ export function decode(args: DecodeArgsWithSecret): RadiusPacket;
+
+ /**
+ * {@link https://github.com/retailnext/node-radius#radiusdecode_without_secretargs} for more info.
+ **/
+ export function decode_without_secret(args: DecodeArgs): RadiusPacket;
+
+ /**
+ * {@link https://github.com/retailnext/node-radius#radiusencodeargs} for more info.
+ **/
+ export function encode(args: EncodeArgs): NodeBuffer;
+
+ /**
+ * {@link https://github.com/retailnext/node-radius#radiusencode_responseargs} for more info.
+ **/
+ export function encode_response(args: EncodeResponseArgs): NodeBuffer;
+
+ /**
+ * {@link https://github.com/retailnext/node-radius#radiusverify_responseargs} for more info.
+ **/
+ export function verify_response(args: VerifyResponseArgs):boolean;
+
+ /**
+ * {@link https://github.com/retailnext/node-radius#radiusadd_dictionarypath} for more info.
+ *
+ * @param path Can be either a path to a file or a directory.
+ **/
+ export function add_dictionary(path:string): void;
+
+ export function unload_dictionaries(): void;
+
+
+
+
+
+
+ /**
+ * {@link https://github.com/retailnext/node-radius#radiusdecode_without_secretargs} for more info.
+ **/
+ interface DecodeArgs {
+ packet: NodeBuffer;
+ }
+
+ /**
+ * {@link https://github.com/retailnext/node-radius#radiusdecodeargs} for more info.
+ **/
+ interface DecodeArgsWithSecret extends DecodeArgs {
+ secret: string;
+ }
+
+ /**
+ * {@link https://github.com/retailnext/node-radius#radiusencodeargs} for more info.
+ **/
+ interface EncodeArgs {
+ code: string;
+ secret: string;
+ identifier?: number;
+ /**
+ * This can be an object: { attribute_name: attribute_value, ... },
+ * an array within an array: [ [ attribute_name, attribute_value ], ... ],
+ * or if you haven't loaded a dictionary for the attributes: [ [ attribute_id, Buffer ], ... ].
+ *
+ * Tag field-attributes can be specified like so: [ [ attribute_name, tag_number, attribute_value ] ... ]
+ **/
+ attributes?: any;
+ add_message_authenticator?: boolean;
+ }
+
+ /**
+ * {@link https://github.com/retailnext/node-radius#radiusencode_responseargs} for more info.
+ **/
+ interface EncodeResponseArgs {
+ packet: RadiusPacket;
+ code: string;
+ secret: string;
+ attributes?: any;
+ }
+
+ /**
+ * {@link https://github.com/retailnext/node-radius#radiusverify_responseargs} for more info.
+ **/
+ interface VerifyResponseArgs {
+ request: NodeBuffer;
+ response: NodeBuffer;
+ secret: string;
+ }
+
+ interface RadiusPacket {
+ code: string;
+ identifier: number;
+ length: number;
+ attributes: any;
+ raw_attributes: Array>
+ }
+}
\ No newline at end of file