package com.bocloud.ims.interfaces.resource;

import com.bocloud.common.model.BocloudResult;
import com.bocloud.common.model.GridBean;
import com.bocloud.common.model.Pager;
import com.bocloud.common.model.RequestContext;
import com.bocloud.ims.entity.resource.NatGateway;

import java.util.List;
import java.util.Map;

public interface NatGatewayService {

	BocloudResult<GridBean<NatGateway>> list(Pager pager, RequestContext context);

	BocloudResult<NatGateway> create(NatGateway natGateway, RequestContext context);

	BocloudResult remove(Long id, RequestContext context);

	BocloudResult remove(Long id, Boolean force, RequestContext context);

	BocloudResult<NatGateway> modify(NatGateway gateway, RequestContext context);

	BocloudResult<NatGateway> detail(Long id);

	BocloudResult<List<NatGateway>> listAvailableGateway(Long vendorId, String regionId);

	BocloudResult<List<String>> listBindElasticIp(Long natGatewayId);

	BocloudResult<List<Map<String, Object>>> listAvailablePrivateIp(Long natGatewayId);

	BocloudResult<List<NatGateway>> list(Long vendorId, String regionId, Long vpcId);

	BocloudResult<List<NatGateway>> listAvailableGateway(Long vendorId, Long routeTableId);

}
