// Copyright 2020 IOTA Stiftung
// SPDX-License-Identifier: Apache-2.0

// (Re-)generated by schema tool
// >>>> DO NOT CHANGE THIS FILE! <<<<
// Change the json schema instead

import * as wasmtypes from "wasmlib/wasmtypes";
import * as sc from "./index";

export class ImmutableDeployContractParams extends wasmtypes.ScProxy {
	// default 'N/A'
	description(): wasmtypes.ScImmutableString {
		return new wasmtypes.ScImmutableString(this.proxy.root(sc.ParamDescription));
	}

	name(): wasmtypes.ScImmutableString {
		return new wasmtypes.ScImmutableString(this.proxy.root(sc.ParamName));
	}

	// TODO variable init params for deployed contract
	programHash(): wasmtypes.ScImmutableHash {
		return new wasmtypes.ScImmutableHash(this.proxy.root(sc.ParamProgramHash));
	}
}

export class MutableDeployContractParams extends wasmtypes.ScProxy {
	// default 'N/A'
	description(): wasmtypes.ScMutableString {
		return new wasmtypes.ScMutableString(this.proxy.root(sc.ParamDescription));
	}

	name(): wasmtypes.ScMutableString {
		return new wasmtypes.ScMutableString(this.proxy.root(sc.ParamName));
	}

	// TODO variable init params for deployed contract
	programHash(): wasmtypes.ScMutableHash {
		return new wasmtypes.ScMutableHash(this.proxy.root(sc.ParamProgramHash));
	}
}

export class ImmutableGrantDeployPermissionParams extends wasmtypes.ScProxy {
	deployer(): wasmtypes.ScImmutableAgentID {
		return new wasmtypes.ScImmutableAgentID(this.proxy.root(sc.ParamDeployer));
	}
}

export class MutableGrantDeployPermissionParams extends wasmtypes.ScProxy {
	deployer(): wasmtypes.ScMutableAgentID {
		return new wasmtypes.ScMutableAgentID(this.proxy.root(sc.ParamDeployer));
	}
}

export class ImmutableRequireDeployPermissionsParams extends wasmtypes.ScProxy {
	deployPermissionsEnabled(): wasmtypes.ScImmutableBool {
		return new wasmtypes.ScImmutableBool(this.proxy.root(sc.ParamDeployPermissionsEnabled));
	}
}

export class MutableRequireDeployPermissionsParams extends wasmtypes.ScProxy {
	deployPermissionsEnabled(): wasmtypes.ScMutableBool {
		return new wasmtypes.ScMutableBool(this.proxy.root(sc.ParamDeployPermissionsEnabled));
	}
}

export class ImmutableRevokeDeployPermissionParams extends wasmtypes.ScProxy {
	deployer(): wasmtypes.ScImmutableAgentID {
		return new wasmtypes.ScImmutableAgentID(this.proxy.root(sc.ParamDeployer));
	}
}

export class MutableRevokeDeployPermissionParams extends wasmtypes.ScProxy {
	deployer(): wasmtypes.ScMutableAgentID {
		return new wasmtypes.ScMutableAgentID(this.proxy.root(sc.ParamDeployer));
	}
}

export class ImmutableSubscribeBlockContextParams extends wasmtypes.ScProxy {
	closeFunc(): wasmtypes.ScImmutableHname {
		return new wasmtypes.ScImmutableHname(this.proxy.root(sc.ParamCloseFunc));
	}

	openFunc(): wasmtypes.ScImmutableHname {
		return new wasmtypes.ScImmutableHname(this.proxy.root(sc.ParamOpenFunc));
	}
}

export class MutableSubscribeBlockContextParams extends wasmtypes.ScProxy {
	closeFunc(): wasmtypes.ScMutableHname {
		return new wasmtypes.ScMutableHname(this.proxy.root(sc.ParamCloseFunc));
	}

	openFunc(): wasmtypes.ScMutableHname {
		return new wasmtypes.ScMutableHname(this.proxy.root(sc.ParamOpenFunc));
	}
}

export class ImmutableFindContractParams extends wasmtypes.ScProxy {
	hname(): wasmtypes.ScImmutableHname {
		return new wasmtypes.ScImmutableHname(this.proxy.root(sc.ParamHname));
	}
}

export class MutableFindContractParams extends wasmtypes.ScProxy {
	hname(): wasmtypes.ScMutableHname {
		return new wasmtypes.ScMutableHname(this.proxy.root(sc.ParamHname));
	}
}
