import {Socket} from 'net'
import {Buffer} from 'buffer'
import * as Commons from './utils'

export type IDictionary<T> = Commons.IDictionary<T>

export interface AuthenticatePatameters {
  socket: Socket
  buffer: Buffer
  options: Commons.Socks5ProxyOptions
  connect: (buffer: Buffer) => void
  end: (rpcReply: number, args: AuthenticateArgs) => void
  onAuthenticated: (args: AuthenticateArgs) => void
  onFailed: (args: AuthenticateArgs, error: any) => void
}

export type AuthenticateArgs = Commons.AuthenticateArgs
