> User should not know implementation of it

no it is.
quotation from http://www.typescriptlang.org/Handbook#writing-dts-files

> The trade-offs here are as follows:
Standard classes can be inherited from using extends; decomposed classes cannot. This might change in later version of TypeScript if arbitrary extends expressions are allowed.
It is possible to add members later (through declaration merging) to the static side of both standard and decomposed classes
It is possible to add instance members to decomposed classes, but not standard classes
You'll need to come up with sensible names for more types when writing a decomposed class

i wrote a sample code http://goo.gl/vmsW6u