namespace address {
    function ip(interfaceName?: string): string

    function ipv6(interfaceName?: string): string

    function mac(callback: (err: Error, addr: string) => void): void
    function mac(interfaceName: string, callback: (err: Error, addr: string) => void): void

    function dns(callback: (err: Error, servers: string[]) => void): void
    function dns(filePath: string, callback: (err: Error, servers: string[]) => void): void
}

function address(callback: (err: Error, addr: { ip: string, ipv6: string, mac: string }) => void): void
function address(interfaceName: string, callback: (err: Error, addr: { ip: string, ipv6: string, mac: string }) => void): void

export = address
