-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathDelegatedManagerAPI.ts
More file actions
74 lines (64 loc) · 2.73 KB
/
DelegatedManagerAPI.ts
File metadata and controls
74 lines (64 loc) · 2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
Copyright 2022 Set Labs Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
'use strict';
import { ContractTransaction } from 'ethers';
import { Provider } from '@ethersproject/providers';
import { Address } from '@setprotocol/set-protocol-v2/utils/types';
import { TransactionOverrides } from '@setprotocol/set-protocol-v2/dist/typechain';
import DelegatedManagerWrapper from '../wrappers/set-v2-strategies/DelegatedManagerWrapper';
import Assertions from '../assertions';
/**
* @title DelegatedManagerAPI
* @author Set Protocol
*
* The DelegatedManagerAPI exposes methods to call functions only available directly on the
* DelegatedManager contract. For the most part these are owner admin operations to reconfigure
* permissions and add modules / extensions.
*
* (This API will be extended as required by set-ui (tokensets). For other use-cases interacting
* with the contract via the Etherscan write API is the simplest option)
*/
export default class DelegatedManagerAPI {
private DelegatedManagerWrapper: DelegatedManagerWrapper;
private assert: Assertions;
public constructor(
provider: Provider,
assertions?: Assertions) {
this.DelegatedManagerWrapper = new DelegatedManagerWrapper(provider);
this.assert = assertions || new Assertions();
}
/**
* ONLY OWNER: Add new extension(s) that the DelegatedManager can call. Puts extensions into PENDING
* state, each must be initialized in order to be used.
*
* @param _delegatedManagerAddress DelegatedManager to addExtension for
* @param _extensions New extension(s) to add
* @param callerAddress Address of caller (optional)
* @param txOpts Overrides for transaction (optional)
*/
public async addExtensionsAsync(
delegatedManagerAddress: Address,
extensions: Address[],
callerAddress: Address = undefined,
txOpts: TransactionOverrides = {}
): Promise<ContractTransaction> {
this.assert.schema.isValidAddress('delegatedManagerAddress', delegatedManagerAddress);
this.assert.schema.isValidAddressList('extensions', extensions);
return await this.DelegatedManagerWrapper.addExtensions(
delegatedManagerAddress,
extensions,
callerAddress,
txOpts
);
}
}