"use strict";

var Key = require('./Key');
var bignum = require('bignum');
var assert = require('assert');
var elliptic = require('elliptic');
var Point = require('../common/Point');

Point.add = function(p1, p2) {
  var ec = elliptic.curves.secp256k1;
  var ecp1 = ec.curve.point(p1.x, p1.y);
  var ecp2 = ec.curve.point(p2.x, p2.y);
  var ecp3 = ecp1.add(ecp2);
  //var p3 = ec.curve.point(ecp3.x, ecp3.y);
  var p3 = new Point(ecp3.x, ecp3.y);
  return p3;
};

Point.multiply = function(p1, x) {
  if (Buffer.isBuffer(x) && x.length !== 32)
    throw new Error('if x is a buffer, it must be 32 bytes')
  var ec = elliptic.curves.secp256k1;
  var ecp1 = ec.curve.point(p1.x, p1.y);
  if (typeof x === 'string')
    x = new bignum(x);
  var ecp = ecp1.mul(x);
  var p = new Point(ecp.x, ecp.y);
  return p;
};

module.exports = Point;