@recoillink/starknet-sdk 0.0.0-stage → 30.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +193 -0
- package/dist/clients/protocol.d.ts +26 -0
- package/dist/clients/protocol.d.ts.map +1 -0
- package/dist/clients/protocol.js +56 -0
- package/dist/clients/protocol.js.map +1 -0
- package/dist/clients/protocol.test.d.ts +2 -0
- package/dist/clients/protocol.test.d.ts.map +1 -0
- package/dist/clients/protocol.test.js +36 -0
- package/dist/clients/protocol.test.js.map +1 -0
- package/dist/clients/provider.d.ts +55 -0
- package/dist/clients/provider.d.ts.map +1 -0
- package/dist/clients/provider.js +432 -0
- package/dist/clients/provider.js.map +1 -0
- package/dist/clients/provider.test.d.ts +2 -0
- package/dist/clients/provider.test.d.ts.map +1 -0
- package/dist/clients/provider.test.js +271 -0
- package/dist/clients/provider.test.js.map +1 -0
- package/dist/clients/signer.d.ts +24 -0
- package/dist/clients/signer.d.ts.map +1 -0
- package/dist/clients/signer.js +200 -0
- package/dist/clients/signer.js.map +1 -0
- package/dist/clients/signer.test.d.ts +2 -0
- package/dist/clients/signer.test.d.ts.map +1 -0
- package/dist/clients/signer.test.js +232 -0
- package/dist/clients/signer.test.js.map +1 -0
- package/dist/contracts.d.ts +46 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +334 -0
- package/dist/contracts.js.map +1 -0
- package/dist/contracts.test.d.ts +2 -0
- package/dist/contracts.test.d.ts.map +1 -0
- package/dist/contracts.test.js +80 -0
- package/dist/contracts.test.js.map +1 -0
- package/dist/hook/hook-artifact-manager.d.ts +18 -0
- package/dist/hook/hook-artifact-manager.d.ts.map +1 -0
- package/dist/hook/hook-artifact-manager.js +69 -0
- package/dist/hook/hook-artifact-manager.js.map +1 -0
- package/dist/hook/hook-artifact-manager.test.d.ts +2 -0
- package/dist/hook/hook-artifact-manager.test.d.ts.map +1 -0
- package/dist/hook/hook-artifact-manager.test.js +157 -0
- package/dist/hook/hook-artifact-manager.test.js.map +1 -0
- package/dist/hook/hook-query.d.ts +7 -0
- package/dist/hook/hook-query.d.ts.map +1 -0
- package/dist/hook/hook-query.js +29 -0
- package/dist/hook/hook-query.js.map +1 -0
- package/dist/hook/hook-tx.d.ts +4 -0
- package/dist/hook/hook-tx.d.ts.map +1 -0
- package/dist/hook/hook-tx.js +19 -0
- package/dist/hook/hook-tx.js.map +1 -0
- package/dist/hook/interchain-gas-paymaster-hook-artifact-manager.d.ts +5 -0
- package/dist/hook/interchain-gas-paymaster-hook-artifact-manager.d.ts.map +1 -0
- package/dist/hook/interchain-gas-paymaster-hook-artifact-manager.js +23 -0
- package/dist/hook/interchain-gas-paymaster-hook-artifact-manager.js.map +1 -0
- package/dist/hook/merkle-tree-hook-artifact-manager.d.ts +18 -0
- package/dist/hook/merkle-tree-hook-artifact-manager.d.ts.map +1 -0
- package/dist/hook/merkle-tree-hook-artifact-manager.js +41 -0
- package/dist/hook/merkle-tree-hook-artifact-manager.js.map +1 -0
- package/dist/hook/protocol-fee-hook-artifact-manager.d.ts +22 -0
- package/dist/hook/protocol-fee-hook-artifact-manager.d.ts.map +1 -0
- package/dist/hook/protocol-fee-hook-artifact-manager.js +169 -0
- package/dist/hook/protocol-fee-hook-artifact-manager.js.map +1 -0
- package/dist/hook/unknown-hook-artifact-manager.d.ts +14 -0
- package/dist/hook/unknown-hook-artifact-manager.d.ts.map +1 -0
- package/dist/hook/unknown-hook-artifact-manager.js +20 -0
- package/dist/hook/unknown-hook-artifact-manager.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/ism/aggregation-ism-artifact-reader.d.ts +14 -0
- package/dist/ism/aggregation-ism-artifact-reader.d.ts.map +1 -0
- package/dist/ism/aggregation-ism-artifact-reader.js +42 -0
- package/dist/ism/aggregation-ism-artifact-reader.js.map +1 -0
- package/dist/ism/domain-routing-ism-artifact-manager.d.ts +20 -0
- package/dist/ism/domain-routing-ism-artifact-manager.d.ts.map +1 -0
- package/dist/ism/domain-routing-ism-artifact-manager.js +130 -0
- package/dist/ism/domain-routing-ism-artifact-manager.js.map +1 -0
- package/dist/ism/ism-artifact-manager.d.ts +14 -0
- package/dist/ism/ism-artifact-manager.d.ts.map +1 -0
- package/dist/ism/ism-artifact-manager.js +53 -0
- package/dist/ism/ism-artifact-manager.js.map +1 -0
- package/dist/ism/ism-artifact-manager.test.d.ts +2 -0
- package/dist/ism/ism-artifact-manager.test.d.ts.map +1 -0
- package/dist/ism/ism-artifact-manager.test.js +77 -0
- package/dist/ism/ism-artifact-manager.test.js.map +1 -0
- package/dist/ism/ism-query.d.ts +33 -0
- package/dist/ism/ism-query.d.ts.map +1 -0
- package/dist/ism/ism-query.js +118 -0
- package/dist/ism/ism-query.js.map +1 -0
- package/dist/ism/ism-reader.test.d.ts +2 -0
- package/dist/ism/ism-reader.test.d.ts.map +1 -0
- package/dist/ism/ism-reader.test.js +121 -0
- package/dist/ism/ism-reader.test.js.map +1 -0
- package/dist/ism/ism-tx.d.ts +28 -0
- package/dist/ism/ism-tx.d.ts.map +1 -0
- package/dist/ism/ism-tx.js +56 -0
- package/dist/ism/ism-tx.js.map +1 -0
- package/dist/ism/merkle-root-multisig-ism-artifact-manager.d.ts +20 -0
- package/dist/ism/merkle-root-multisig-ism-artifact-manager.d.ts.map +1 -0
- package/dist/ism/merkle-root-multisig-ism-artifact-manager.js +51 -0
- package/dist/ism/merkle-root-multisig-ism-artifact-manager.js.map +1 -0
- package/dist/ism/message-id-multisig-ism-artifact-manager.d.ts +20 -0
- package/dist/ism/message-id-multisig-ism-artifact-manager.d.ts.map +1 -0
- package/dist/ism/message-id-multisig-ism-artifact-manager.js +51 -0
- package/dist/ism/message-id-multisig-ism-artifact-manager.js.map +1 -0
- package/dist/ism/test-ism-artifact-manager.d.ts +20 -0
- package/dist/ism/test-ism-artifact-manager.d.ts.map +1 -0
- package/dist/ism/test-ism-artifact-manager.js +46 -0
- package/dist/ism/test-ism-artifact-manager.js.map +1 -0
- package/dist/mailbox/mailbox-artifact-manager.d.ts +15 -0
- package/dist/mailbox/mailbox-artifact-manager.d.ts.map +1 -0
- package/dist/mailbox/mailbox-artifact-manager.js +179 -0
- package/dist/mailbox/mailbox-artifact-manager.js.map +1 -0
- package/dist/mailbox/mailbox-artifact-manager.test.d.ts +2 -0
- package/dist/mailbox/mailbox-artifact-manager.test.d.ts.map +1 -0
- package/dist/mailbox/mailbox-artifact-manager.test.js +100 -0
- package/dist/mailbox/mailbox-artifact-manager.test.js.map +1 -0
- package/dist/mailbox/mailbox-query.d.ts +13 -0
- package/dist/mailbox/mailbox-query.d.ts.map +1 -0
- package/dist/mailbox/mailbox-query.js +29 -0
- package/dist/mailbox/mailbox-query.js.map +1 -0
- package/dist/mailbox/mailbox-tx.d.ts +25 -0
- package/dist/mailbox/mailbox-tx.d.ts.map +1 -0
- package/dist/mailbox/mailbox-tx.js +40 -0
- package/dist/mailbox/mailbox-tx.js.map +1 -0
- package/dist/runtime.d.ts +4 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +4 -0
- package/dist/runtime.js.map +1 -0
- package/dist/testing/constants.d.ts +8 -0
- package/dist/testing/constants.d.ts.map +1 -0
- package/dist/testing/constants.js +27 -0
- package/dist/testing/constants.js.map +1 -0
- package/dist/testing/index.d.ts +4 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +4 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/node.d.ts +4 -0
- package/dist/testing/node.d.ts.map +1 -0
- package/dist/testing/node.js +78 -0
- package/dist/testing/node.js.map +1 -0
- package/dist/testing/utils.d.ts +6 -0
- package/dist/testing/utils.d.ts.map +1 -0
- package/dist/testing/utils.js +15 -0
- package/dist/testing/utils.js.map +1 -0
- package/dist/tests/e2e-test.setup.d.ts +2 -0
- package/dist/tests/e2e-test.setup.d.ts.map +1 -0
- package/dist/tests/e2e-test.setup.js +24 -0
- package/dist/tests/e2e-test.setup.js.map +1 -0
- package/dist/tests/hook.e2e-test.d.ts +2 -0
- package/dist/tests/hook.e2e-test.d.ts.map +1 -0
- package/dist/tests/hook.e2e-test.js +100 -0
- package/dist/tests/hook.e2e-test.js.map +1 -0
- package/dist/tests/ism.e2e-test.d.ts +2 -0
- package/dist/tests/ism.e2e-test.d.ts.map +1 -0
- package/dist/tests/ism.e2e-test.js +123 -0
- package/dist/tests/ism.e2e-test.js.map +1 -0
- package/dist/tests/mailbox.e2e-test.d.ts +2 -0
- package/dist/tests/mailbox.e2e-test.d.ts.map +1 -0
- package/dist/tests/mailbox.e2e-test.js +115 -0
- package/dist/tests/mailbox.e2e-test.js.map +1 -0
- package/dist/tests/read-warp-token.e2e-test.d.ts +2 -0
- package/dist/tests/read-warp-token.e2e-test.d.ts.map +1 -0
- package/dist/tests/read-warp-token.e2e-test.js +67 -0
- package/dist/tests/read-warp-token.e2e-test.js.map +1 -0
- package/dist/tests/validator_announce.e2e-test.d.ts +2 -0
- package/dist/tests/validator_announce.e2e-test.d.ts.map +1 -0
- package/dist/tests/validator_announce.e2e-test.js +74 -0
- package/dist/tests/validator_announce.e2e-test.js.map +1 -0
- package/dist/tests/warp_core.e2e-test.d.ts +2 -0
- package/dist/tests/warp_core.e2e-test.d.ts.map +1 -0
- package/dist/tests/warp_core.e2e-test.js +217 -0
- package/dist/tests/warp_core.e2e-test.js.map +1 -0
- package/dist/tests/warp_transfer.e2e-test.d.ts +2 -0
- package/dist/tests/warp_transfer.e2e-test.d.ts.map +1 -0
- package/dist/tests/warp_transfer.e2e-test.js +149 -0
- package/dist/tests/warp_transfer.e2e-test.js.map +1 -0
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validator-announce/validator-announce-artifact-manager.d.ts +14 -0
- package/dist/validator-announce/validator-announce-artifact-manager.d.ts.map +1 -0
- package/dist/validator-announce/validator-announce-artifact-manager.js +125 -0
- package/dist/validator-announce/validator-announce-artifact-manager.js.map +1 -0
- package/dist/validator-announce/validator-announce-artifact-manager.test.d.ts +2 -0
- package/dist/validator-announce/validator-announce-artifact-manager.test.d.ts.map +1 -0
- package/dist/validator-announce/validator-announce-artifact-manager.test.js +66 -0
- package/dist/validator-announce/validator-announce-artifact-manager.test.js.map +1 -0
- package/dist/validator-announce/validator-announce-tx.d.ts +3 -0
- package/dist/validator-announce/validator-announce-tx.d.ts.map +1 -0
- package/dist/validator-announce/validator-announce-tx.js +12 -0
- package/dist/validator-announce/validator-announce-tx.js.map +1 -0
- package/dist/warp/collateral-token-artifact-manager.d.ts +14 -0
- package/dist/warp/collateral-token-artifact-manager.d.ts.map +1 -0
- package/dist/warp/collateral-token-artifact-manager.js +47 -0
- package/dist/warp/collateral-token-artifact-manager.js.map +1 -0
- package/dist/warp/native-token-artifact-manager.d.ts +13 -0
- package/dist/warp/native-token-artifact-manager.d.ts.map +1 -0
- package/dist/warp/native-token-artifact-manager.js +33 -0
- package/dist/warp/native-token-artifact-manager.js.map +1 -0
- package/dist/warp/synthetic-token-artifact-manager.d.ts +15 -0
- package/dist/warp/synthetic-token-artifact-manager.d.ts.map +1 -0
- package/dist/warp/synthetic-token-artifact-manager.js +53 -0
- package/dist/warp/synthetic-token-artifact-manager.js.map +1 -0
- package/dist/warp/token-artifact-manager.d.ts +43 -0
- package/dist/warp/token-artifact-manager.d.ts.map +1 -0
- package/dist/warp/token-artifact-manager.js +233 -0
- package/dist/warp/token-artifact-manager.js.map +1 -0
- package/dist/warp/warp-artifact-manager.d.ts +14 -0
- package/dist/warp/warp-artifact-manager.d.ts.map +1 -0
- package/dist/warp/warp-artifact-manager.js +54 -0
- package/dist/warp/warp-artifact-manager.js.map +1 -0
- package/dist/warp/warp-artifact-manager.test.d.ts +2 -0
- package/dist/warp/warp-artifact-manager.test.d.ts.map +1 -0
- package/dist/warp/warp-artifact-manager.test.js +93 -0
- package/dist/warp/warp-artifact-manager.test.js.map +1 -0
- package/dist/warp/warp-tx.d.ts +47 -0
- package/dist/warp/warp-tx.d.ts.map +1 -0
- package/dist/warp/warp-tx.js +110 -0
- package/dist/warp/warp-tx.js.map +1 -0
- package/package.json +63 -3
- package/README.md +0 -3
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { ArtifactState, } from '@recoillink/provider-sdk/artifact';
|
|
2
|
+
import { assert, eqAddressStarknet, isNullish, rootLogger, } from '@recoillink/utils';
|
|
3
|
+
import { hash } from 'starknet';
|
|
4
|
+
import { StarknetContractName, callContract, getFeeTokenAddress, getStarknetContract, normalizeStarknetAddressSafe, populateInvokeTx, shouldFallbackStorageRead, toBigInt, } from '../contracts.js';
|
|
5
|
+
const STARKNET_STORAGE_ADDRESS_BOUND = (1n << 251n) - 256n;
|
|
6
|
+
const logger = rootLogger.child({
|
|
7
|
+
module: 'starknet-hook-artifact-manager',
|
|
8
|
+
});
|
|
9
|
+
const MAX_PROTOCOL_FEE_STORAGE_KEYS = [
|
|
10
|
+
'max_protocol_fee',
|
|
11
|
+
'_max_protocol_fee',
|
|
12
|
+
].map((name) => hash.starknetKeccak(name) % STARKNET_STORAGE_ADDRESS_BOUND);
|
|
13
|
+
async function readUint256Storage(provider, contractAddress, key) {
|
|
14
|
+
try {
|
|
15
|
+
const rawProvider = provider.getRawProvider();
|
|
16
|
+
const [low, high] = await Promise.all([
|
|
17
|
+
rawProvider.getStorageAt(contractAddress, `0x${key.toString(16)}`),
|
|
18
|
+
rawProvider.getStorageAt(contractAddress, `0x${(key + 1n).toString(16)}`),
|
|
19
|
+
]);
|
|
20
|
+
return toBigInt(low) + (toBigInt(high) << 128n);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
if (!shouldFallbackStorageRead(error)) {
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
26
|
+
logger.warn({
|
|
27
|
+
contractAddress,
|
|
28
|
+
key: `0x${key.toString(16)}`,
|
|
29
|
+
error,
|
|
30
|
+
}, 'Falling back to lossy Starknet protocolFee max read after unsupported storage lookup');
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async function readProtocolFeeMaxFromStorage(provider, contractAddress, protocolFee) {
|
|
35
|
+
// Different Starknet contract builds have used different storage keys for
|
|
36
|
+
// max_protocol_fee. Accept any candidate that is at least the live
|
|
37
|
+
// protocolFee, prefer a single non-zero value over zero sentinels, and only
|
|
38
|
+
// fall back to all candidates when multiple non-zero slots are populated.
|
|
39
|
+
const candidates = (await Promise.all(MAX_PROTOCOL_FEE_STORAGE_KEYS.map(async (key) => readUint256Storage(provider, contractAddress, key)))).filter((value) => value !== undefined && value >= protocolFee);
|
|
40
|
+
if (candidates.length === 0)
|
|
41
|
+
return undefined;
|
|
42
|
+
const nonZeroCandidates = candidates.filter((value) => value > 0n);
|
|
43
|
+
const relevantCandidates = nonZeroCandidates.length === 1 ? nonZeroCandidates : candidates;
|
|
44
|
+
const uniqueValues = [
|
|
45
|
+
...new Set(relevantCandidates.map((value) => value.toString())),
|
|
46
|
+
];
|
|
47
|
+
if (uniqueValues.length === 1) {
|
|
48
|
+
const uniqueValue = uniqueValues[0];
|
|
49
|
+
assert(!isNullish(uniqueValue), 'Expected Starknet protocolFee storage read to yield one value');
|
|
50
|
+
return BigInt(uniqueValue);
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
export class StarknetProtocolFeeHookReader {
|
|
55
|
+
chainMetadata;
|
|
56
|
+
provider;
|
|
57
|
+
constructor(chainMetadata, provider) {
|
|
58
|
+
this.chainMetadata = chainMetadata;
|
|
59
|
+
this.provider = provider;
|
|
60
|
+
}
|
|
61
|
+
async read(address) {
|
|
62
|
+
const normalizedAddress = normalizeStarknetAddressSafe(address);
|
|
63
|
+
const hook = getStarknetContract(StarknetContractName.PROTOCOL_FEE, normalizedAddress, this.provider.getRawProvider());
|
|
64
|
+
const [owner, beneficiary, protocolFee] = await Promise.all([
|
|
65
|
+
callContract(hook, 'owner'),
|
|
66
|
+
callContract(hook, 'get_beneficiary'),
|
|
67
|
+
callContract(hook, 'get_protocol_fee'),
|
|
68
|
+
]);
|
|
69
|
+
const ownerAddress = normalizeStarknetAddressSafe(owner);
|
|
70
|
+
const beneficiaryAddress = normalizeStarknetAddressSafe(beneficiary);
|
|
71
|
+
const protocolFeeAmount = toBigInt(protocolFee);
|
|
72
|
+
const maxProtocolFee = await readProtocolFeeMaxFromStorage(this.provider, normalizedAddress, protocolFeeAmount);
|
|
73
|
+
const config = {
|
|
74
|
+
type: 'protocolFee',
|
|
75
|
+
owner: ownerAddress,
|
|
76
|
+
beneficiary: beneficiaryAddress,
|
|
77
|
+
maxProtocolFee: (maxProtocolFee ?? protocolFeeAmount).toString(),
|
|
78
|
+
protocolFee: protocolFeeAmount.toString(),
|
|
79
|
+
};
|
|
80
|
+
if (isNullish(maxProtocolFee)) {
|
|
81
|
+
// Starknet protocol_fee does not expose maxProtocolFee in its ABI.
|
|
82
|
+
// If storage lookup is unavailable or ambiguous, mark the read config
|
|
83
|
+
// as lossy so generic deploy logic can fail closed instead of silently
|
|
84
|
+
// ignoring maxProtocolFee drift.
|
|
85
|
+
Object.defineProperty(config, '__maxProtocolFeeUnknown', {
|
|
86
|
+
enumerable: true,
|
|
87
|
+
value: true,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
92
|
+
config,
|
|
93
|
+
deployed: { address: normalizedAddress },
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
export class StarknetProtocolFeeHookWriter extends StarknetProtocolFeeHookReader {
|
|
98
|
+
signer;
|
|
99
|
+
constructor(chainMetadata, provider, signer) {
|
|
100
|
+
super(chainMetadata, provider);
|
|
101
|
+
this.signer = signer;
|
|
102
|
+
}
|
|
103
|
+
async create(artifact) {
|
|
104
|
+
const tokenAddress = getFeeTokenAddress({
|
|
105
|
+
chainName: this.chainMetadata.name,
|
|
106
|
+
nativeDenom: this.chainMetadata.nativeToken?.denom,
|
|
107
|
+
});
|
|
108
|
+
const deployTx = {
|
|
109
|
+
kind: 'deploy',
|
|
110
|
+
contractName: StarknetContractName.PROTOCOL_FEE,
|
|
111
|
+
constructorArgs: [
|
|
112
|
+
artifact.config.maxProtocolFee,
|
|
113
|
+
artifact.config.protocolFee,
|
|
114
|
+
normalizeStarknetAddressSafe(artifact.config.beneficiary),
|
|
115
|
+
normalizeStarknetAddressSafe(artifact.config.owner),
|
|
116
|
+
tokenAddress,
|
|
117
|
+
],
|
|
118
|
+
};
|
|
119
|
+
const receipt = await this.signer.sendAndConfirmTransaction(deployTx);
|
|
120
|
+
assert(receipt.contractAddress, 'failed to deploy Starknet protocol_fee hook');
|
|
121
|
+
return [
|
|
122
|
+
{
|
|
123
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
124
|
+
config: artifact.config,
|
|
125
|
+
deployed: {
|
|
126
|
+
address: normalizeStarknetAddressSafe(receipt.contractAddress),
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
[receipt],
|
|
130
|
+
];
|
|
131
|
+
}
|
|
132
|
+
async update(artifact) {
|
|
133
|
+
const current = await this.read(artifact.deployed.address);
|
|
134
|
+
const maxProtocolFeeUnknown =
|
|
135
|
+
// CAST: Reflect.get requires an object argument; protocolFee config is always an object here.
|
|
136
|
+
Reflect.get(current.config, '__maxProtocolFeeUnknown') === true;
|
|
137
|
+
assert(!maxProtocolFeeUnknown, 'Cannot update Starknet protocolFee hook because the current maxProtocolFee is unreadable; redeploy required');
|
|
138
|
+
assert(current.config.maxProtocolFee === artifact.config.maxProtocolFee, 'Changing maxProtocolFee requires redeploying the Starknet protocolFee hook');
|
|
139
|
+
const contractAddress = artifact.deployed.address;
|
|
140
|
+
const contract = getStarknetContract(StarknetContractName.PROTOCOL_FEE, contractAddress, this.provider.getRawProvider());
|
|
141
|
+
const txs = [];
|
|
142
|
+
if (!eqAddressStarknet(current.config.beneficiary, artifact.config.beneficiary)) {
|
|
143
|
+
txs.push({
|
|
144
|
+
annotation: `Updating protocol fee beneficiary for ${contractAddress}`,
|
|
145
|
+
...(await populateInvokeTx(contract, 'set_beneficiary', [
|
|
146
|
+
normalizeStarknetAddressSafe(artifact.config.beneficiary),
|
|
147
|
+
])),
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
if (current.config.protocolFee !== artifact.config.protocolFee) {
|
|
151
|
+
txs.push({
|
|
152
|
+
annotation: `Updating protocol fee amount for ${contractAddress}`,
|
|
153
|
+
...(await populateInvokeTx(contract, 'set_protocol_fee', [
|
|
154
|
+
artifact.config.protocolFee,
|
|
155
|
+
])),
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
if (!eqAddressStarknet(current.config.owner, artifact.config.owner)) {
|
|
159
|
+
txs.push({
|
|
160
|
+
annotation: `Transferring protocol fee hook ownership for ${contractAddress}`,
|
|
161
|
+
...(await populateInvokeTx(contract, 'transfer_ownership', [
|
|
162
|
+
normalizeStarknetAddressSafe(artifact.config.owner),
|
|
163
|
+
])),
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
return txs;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=protocol-fee-hook-artifact-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol-fee-hook-artifact-manager.js","sourceRoot":"","sources":["../../src/hook/protocol-fee-hook-artifact-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ArtifactDeployed, type ArtifactNew, type ArtifactReader, type ArtifactWriter } from '@recoillink/provider-sdk/artifact';
|
|
2
|
+
import { type DeployedHookAddress, type RawHookArtifactConfigs } from '@recoillink/provider-sdk/hook';
|
|
3
|
+
import { type AnnotatedTx, type TxReceipt } from '@recoillink/provider-sdk/module';
|
|
4
|
+
export declare class StarknetUnknownHookReader implements ArtifactReader<RawHookArtifactConfigs['unknownHook'], DeployedHookAddress> {
|
|
5
|
+
read(address: string): Promise<ArtifactDeployed<RawHookArtifactConfigs['unknownHook'], DeployedHookAddress>>;
|
|
6
|
+
}
|
|
7
|
+
export declare class StarknetUnknownHookWriter extends StarknetUnknownHookReader implements ArtifactWriter<RawHookArtifactConfigs['unknownHook'], DeployedHookAddress> {
|
|
8
|
+
create(_artifact: ArtifactNew<RawHookArtifactConfigs['unknownHook']>): Promise<[
|
|
9
|
+
ArtifactDeployed<RawHookArtifactConfigs['unknownHook'], DeployedHookAddress>,
|
|
10
|
+
TxReceipt[]
|
|
11
|
+
]>;
|
|
12
|
+
update(_artifact: ArtifactDeployed<RawHookArtifactConfigs['unknownHook'], DeployedHookAddress>): Promise<AnnotatedTx[]>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=unknown-hook-artifact-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unknown-hook-artifact-manager.d.ts","sourceRoot":"","sources":["../../src/hook/unknown-hook-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EAEnB,KAAK,cAAc,EACpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,iCAAiC,CAAC;AAIzC,qBAAa,yBAA0B,YAAW,cAAc,CAC9D,sBAAsB,CAAC,aAAa,CAAC,EACrC,mBAAmB,CACpB;IACO,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CACR,gBAAgB,CAAC,sBAAsB,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC,CAC7E,CAMA;CACF;AAED,qBAAa,yBACX,SAAQ,yBACR,YACE,cAAc,CAAC,sBAAsB,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAEtE,MAAM,CACV,SAAS,EAAE,WAAW,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,GAC5D,OAAO,CACR;QACE,gBAAgB,CACd,sBAAsB,CAAC,aAAa,CAAC,EACrC,mBAAmB,CACpB;QACD,SAAS,EAAE;KACZ,CACF,CAIA;IAEK,MAAM,CACV,SAAS,EAAE,gBAAgB,CACzB,sBAAsB,CAAC,aAAa,CAAC,EACrC,mBAAmB,CACpB,GACA,OAAO,CAAC,WAAW,EAAE,CAAC,CAExB;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ArtifactState, } from '@recoillink/provider-sdk/artifact';
|
|
2
|
+
import { normalizeStarknetAddressSafe } from '../contracts.js';
|
|
3
|
+
export class StarknetUnknownHookReader {
|
|
4
|
+
async read(address) {
|
|
5
|
+
return {
|
|
6
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
7
|
+
config: { type: 'unknownHook' },
|
|
8
|
+
deployed: { address: normalizeStarknetAddressSafe(address) },
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export class StarknetUnknownHookWriter extends StarknetUnknownHookReader {
|
|
13
|
+
async create(_artifact) {
|
|
14
|
+
throw new Error('unknownHook artifacts are read-only on Starknet; deploy noop hooks via signer.createNoopHook');
|
|
15
|
+
}
|
|
16
|
+
async update(_artifact) {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=unknown-hook-artifact-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unknown-hook-artifact-manager.js","sourceRoot":"","sources":["../../src/hook/unknown-hook-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,aAAa,GAEd,MAAM,mCAAmC,CAAC;AAU3C,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,OAAO,yBAAyB;IAIpC,KAAK,CAAC,IAAI,CACR,OAAe;QAIf,OAAO;YACL,aAAa,EAAE,aAAa,CAAC,QAAQ;YACrC,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;YAC/B,QAAQ,EAAE,EAAE,OAAO,EAAE,4BAA4B,CAAC,OAAO,CAAC,EAAE;SAC7D,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,yBACX,SAAQ,yBAAyB;IAIjC,KAAK,CAAC,MAAM,CACV,SAA6D;QAU7D,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CACV,SAGC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { StarknetProtocolProvider } from './clients/protocol.js';
|
|
2
|
+
export { StarknetProvider } from './clients/provider.js';
|
|
3
|
+
export { StarknetSigner } from './clients/signer.js';
|
|
4
|
+
export { StarknetIsmArtifactManager } from './ism/ism-artifact-manager.js';
|
|
5
|
+
export { StarknetHookArtifactManager } from './hook/hook-artifact-manager.js';
|
|
6
|
+
export { StarknetMailboxArtifactManager } from './mailbox/mailbox-artifact-manager.js';
|
|
7
|
+
export { StarknetValidatorAnnounceArtifactManager } from './validator-announce/validator-announce-artifact-manager.js';
|
|
8
|
+
export { StarknetWarpArtifactManager } from './warp/warp-artifact-manager.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,wCAAwC,EAAE,MAAM,6DAA6D,CAAC;AACvH,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { StarknetProtocolProvider } from './clients/protocol.js';
|
|
2
|
+
export { StarknetProvider } from './clients/provider.js';
|
|
3
|
+
export { StarknetSigner } from './clients/signer.js';
|
|
4
|
+
export { StarknetIsmArtifactManager } from './ism/ism-artifact-manager.js';
|
|
5
|
+
export { StarknetHookArtifactManager } from './hook/hook-artifact-manager.js';
|
|
6
|
+
export { StarknetMailboxArtifactManager } from './mailbox/mailbox-artifact-manager.js';
|
|
7
|
+
export { StarknetValidatorAnnounceArtifactManager } from './validator-announce/validator-announce-artifact-manager.js';
|
|
8
|
+
export { StarknetWarpArtifactManager } from './warp/warp-artifact-manager.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,wCAAwC,EAAE,MAAM,6DAA6D,CAAC;AACvH,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ArtifactDeployed, type ArtifactReader } from '@recoillink/provider-sdk/artifact';
|
|
2
|
+
import { type DeployedIsmAddress, type RawIsmArtifactConfigs } from '@recoillink/provider-sdk/ism';
|
|
3
|
+
import { StarknetProvider } from '../clients/provider.js';
|
|
4
|
+
export declare class StarknetAggregationIsmReader implements ArtifactReader<RawIsmArtifactConfigs['staticAggregationIsm'], DeployedIsmAddress> {
|
|
5
|
+
private readonly provider;
|
|
6
|
+
constructor(provider: StarknetProvider);
|
|
7
|
+
read(address: string): Promise<ArtifactDeployed<RawIsmArtifactConfigs['staticAggregationIsm'], DeployedIsmAddress>>;
|
|
8
|
+
}
|
|
9
|
+
export declare class StarknetPausableIsmReader implements ArtifactReader<RawIsmArtifactConfigs['pausableIsm'], DeployedIsmAddress> {
|
|
10
|
+
private readonly provider;
|
|
11
|
+
constructor(provider: StarknetProvider);
|
|
12
|
+
read(address: string): Promise<ArtifactDeployed<RawIsmArtifactConfigs['pausableIsm'], DeployedIsmAddress>>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=aggregation-ism-artifact-reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregation-ism-artifact-reader.d.ts","sourceRoot":"","sources":["../../src/ism/aggregation-ism-artifact-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC3B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,qBAAa,4BAA6B,YAAW,cAAc,CACjE,qBAAqB,CAAC,sBAAsB,CAAC,EAC7C,kBAAkB,CACnB;IACa,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAArC,YAA6B,QAAQ,EAAE,gBAAgB,EAAI;IAErD,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CACR,gBAAgB,CACd,qBAAqB,CAAC,sBAAsB,CAAC,EAC7C,kBAAkB,CACnB,CACF,CAiBA;CACF;AAED,qBAAa,yBAA0B,YAAW,cAAc,CAC9D,qBAAqB,CAAC,aAAa,CAAC,EACpC,kBAAkB,CACnB;IACa,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAArC,YAA6B,QAAQ,EAAE,gBAAgB,EAAI;IAErD,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CACR,gBAAgB,CAAC,qBAAqB,CAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC,CAC3E,CAcA;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ArtifactState, } from '@recoillink/provider-sdk/artifact';
|
|
2
|
+
import { getAggregationIsmConfig, getPausableIsmConfig } from './ism-query.js';
|
|
3
|
+
export class StarknetAggregationIsmReader {
|
|
4
|
+
provider;
|
|
5
|
+
constructor(provider) {
|
|
6
|
+
this.provider = provider;
|
|
7
|
+
}
|
|
8
|
+
async read(address) {
|
|
9
|
+
const config = await getAggregationIsmConfig(this.provider.getRawProvider(), address);
|
|
10
|
+
return {
|
|
11
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
12
|
+
config: {
|
|
13
|
+
type: 'staticAggregationIsm',
|
|
14
|
+
threshold: config.threshold,
|
|
15
|
+
modules: config.modules.map((address) => ({
|
|
16
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
17
|
+
deployed: { address },
|
|
18
|
+
})),
|
|
19
|
+
},
|
|
20
|
+
deployed: { address: config.address },
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export class StarknetPausableIsmReader {
|
|
25
|
+
provider;
|
|
26
|
+
constructor(provider) {
|
|
27
|
+
this.provider = provider;
|
|
28
|
+
}
|
|
29
|
+
async read(address) {
|
|
30
|
+
const config = await getPausableIsmConfig(this.provider.getRawProvider(), address);
|
|
31
|
+
return {
|
|
32
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
33
|
+
config: {
|
|
34
|
+
type: 'pausableIsm',
|
|
35
|
+
owner: config.owner,
|
|
36
|
+
paused: config.paused,
|
|
37
|
+
},
|
|
38
|
+
deployed: { address: config.address },
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=aggregation-ism-artifact-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregation-ism-artifact-reader.js","sourceRoot":"","sources":["../../src/ism/aggregation-ism-artifact-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,GAGd,MAAM,mCAAmC,CAAC;AAO3C,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,MAAM,OAAO,4BAA4B;IAIV,QAAQ;IAArC,YAA6B,QAA0B;wBAA1B,QAAQ;IAAqB,CAAC;IAE3D,KAAK,CAAC,IAAI,CACR,OAAe;QAOf,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAC1C,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,EAC9B,OAAO,CACR,CAAC;QACF,OAAO;YACL,aAAa,EAAE,aAAa,CAAC,QAAQ;YACrC,MAAM,EAAE;gBACN,IAAI,EAAE,sBAAsB;gBAC5B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACxC,aAAa,EAAE,aAAa,CAAC,SAAS;oBACtC,QAAQ,EAAE,EAAE,OAAO,EAAE;iBACtB,CAAC,CAAC;aACJ;YACD,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;SACtC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,yBAAyB;IAIP,QAAQ;IAArC,YAA6B,QAA0B;wBAA1B,QAAQ;IAAqB,CAAC;IAE3D,KAAK,CAAC,IAAI,CACR,OAAe;QAIf,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,EAC9B,OAAO,CACR,CAAC;QACF,OAAO;YACL,aAAa,EAAE,aAAa,CAAC,QAAQ;YACrC,MAAM,EAAE;gBACN,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB;YACD,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;SACtC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ArtifactDeployed, type ArtifactNew, type ArtifactReader, type ArtifactWriter } from '@recoillink/provider-sdk/artifact';
|
|
2
|
+
import { type DeployedIsmAddress, type RawIsmArtifactConfigs } from '@recoillink/provider-sdk/ism';
|
|
3
|
+
import { type AnnotatedTx, type TxReceipt } from '@recoillink/provider-sdk/module';
|
|
4
|
+
import { StarknetProvider } from '../clients/provider.js';
|
|
5
|
+
import { StarknetSigner } from '../clients/signer.js';
|
|
6
|
+
export declare class StarknetRoutingIsmReader implements ArtifactReader<RawIsmArtifactConfigs['domainRoutingIsm'], DeployedIsmAddress> {
|
|
7
|
+
protected readonly provider: StarknetProvider;
|
|
8
|
+
constructor(provider: StarknetProvider);
|
|
9
|
+
read(address: string): Promise<ArtifactDeployed<RawIsmArtifactConfigs['domainRoutingIsm'], DeployedIsmAddress>>;
|
|
10
|
+
}
|
|
11
|
+
export declare class StarknetRoutingIsmWriter extends StarknetRoutingIsmReader implements ArtifactWriter<RawIsmArtifactConfigs['domainRoutingIsm'], DeployedIsmAddress> {
|
|
12
|
+
private readonly signer;
|
|
13
|
+
constructor(provider: StarknetProvider, signer: StarknetSigner);
|
|
14
|
+
create(artifact: ArtifactNew<RawIsmArtifactConfigs['domainRoutingIsm']>): Promise<[
|
|
15
|
+
ArtifactDeployed<RawIsmArtifactConfigs['domainRoutingIsm'], DeployedIsmAddress>,
|
|
16
|
+
TxReceipt[]
|
|
17
|
+
]>;
|
|
18
|
+
update(artifact: ArtifactDeployed<RawIsmArtifactConfigs['domainRoutingIsm'], DeployedIsmAddress>): Promise<AnnotatedTx[]>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=domain-routing-ism-artifact-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-routing-ism-artifact-manager.d.ts","sourceRoot":"","sources":["../../src/ism/domain-routing-ism-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EAEnB,KAAK,cAAc,EAIpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAUtD,qBAAa,wBAAyB,YAAW,cAAc,CAC7D,qBAAqB,CAAC,kBAAkB,CAAC,EACzC,kBAAkB,CACnB;IACa,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB;IAAzD,YAA+B,QAAQ,EAAE,gBAAgB,EAAI;IAEvD,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CACR,gBAAgB,CACd,qBAAqB,CAAC,kBAAkB,CAAC,EACzC,kBAAkB,CACnB,CACF,CAuBA;CACF;AAED,qBAAa,wBACX,SAAQ,wBACR,YACE,cAAc,CACZ,qBAAqB,CAAC,kBAAkB,CAAC,EACzC,kBAAkB,CACnB;IAID,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFzB,YACE,QAAQ,EAAE,gBAAgB,EACT,MAAM,EAAE,cAAc,EAGxC;IAEK,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,GAC/D,OAAO,CACR;QACE,gBAAgB,CACd,qBAAqB,CAAC,kBAAkB,CAAC,EACzC,kBAAkB,CACnB;QACD,SAAS,EAAE;KACZ,CACF,CAoDA;IAEK,MAAM,CACV,QAAQ,EAAE,gBAAgB,CACxB,qBAAqB,CAAC,kBAAkB,CAAC,EACzC,kBAAkB,CACnB,GACA,OAAO,CAAC,WAAW,EAAE,CAAC,CAuExB;CACF"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { ArtifactState, isArtifactDeployed, isArtifactNew, isArtifactUnderived, } from '@recoillink/provider-sdk/artifact';
|
|
2
|
+
import { assert, eqAddressStarknet } from '@recoillink/utils';
|
|
3
|
+
import { normalizeStarknetAddressSafe } from '../contracts.js';
|
|
4
|
+
import { getRoutingIsmConfig } from './ism-query.js';
|
|
5
|
+
import { getCreateRoutingIsmTx, getRemoveRoutingIsmRouteTx, getSetRoutingIsmOwnerTx, getSetRoutingIsmRouteTx, } from './ism-tx.js';
|
|
6
|
+
export class StarknetRoutingIsmReader {
|
|
7
|
+
provider;
|
|
8
|
+
constructor(provider) {
|
|
9
|
+
this.provider = provider;
|
|
10
|
+
}
|
|
11
|
+
async read(address) {
|
|
12
|
+
const routing = await getRoutingIsmConfig(this.provider.getRawProvider(), address);
|
|
13
|
+
const domains = {};
|
|
14
|
+
for (const route of routing.routes) {
|
|
15
|
+
domains[route.domainId] = {
|
|
16
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
17
|
+
deployed: { address: route.ismAddress },
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
22
|
+
config: {
|
|
23
|
+
type: 'domainRoutingIsm',
|
|
24
|
+
owner: routing.owner,
|
|
25
|
+
domains,
|
|
26
|
+
},
|
|
27
|
+
deployed: { address: routing.address },
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export class StarknetRoutingIsmWriter extends StarknetRoutingIsmReader {
|
|
32
|
+
signer;
|
|
33
|
+
constructor(provider, signer) {
|
|
34
|
+
super(provider);
|
|
35
|
+
this.signer = signer;
|
|
36
|
+
}
|
|
37
|
+
async create(artifact) {
|
|
38
|
+
const routes = Object.entries(artifact.config.domains).map(([domainId, domainIsm]) => {
|
|
39
|
+
assert(!isArtifactNew(domainIsm), `Routing ISM domain ${domainId} must be deployed before Starknet raw routing deployment`);
|
|
40
|
+
assert(isArtifactUnderived(domainIsm) || isArtifactDeployed(domainIsm), `Routing ISM domain ${domainId} has invalid state`);
|
|
41
|
+
return {
|
|
42
|
+
domainId: Number(domainId),
|
|
43
|
+
ismAddress: domainIsm.deployed.address,
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
const receipts = [];
|
|
47
|
+
const createTx = getCreateRoutingIsmTx(this.signer.getSignerAddress());
|
|
48
|
+
const createReceipt = await this.signer.sendAndConfirmTransaction(createTx);
|
|
49
|
+
receipts.push(createReceipt);
|
|
50
|
+
const ismAddress = createReceipt.contractAddress;
|
|
51
|
+
assert(ismAddress, 'failed to get Starknet routing ISM address');
|
|
52
|
+
const rawProvider = this.signer.getRawProvider();
|
|
53
|
+
for (const route of routes) {
|
|
54
|
+
const tx = await getSetRoutingIsmRouteTx(rawProvider, {
|
|
55
|
+
ismAddress,
|
|
56
|
+
route,
|
|
57
|
+
});
|
|
58
|
+
receipts.push(await this.signer.sendAndConfirmTransaction(tx));
|
|
59
|
+
}
|
|
60
|
+
if (!eqAddressStarknet(artifact.config.owner, this.signer.getSignerAddress())) {
|
|
61
|
+
const ownerTx = await getSetRoutingIsmOwnerTx(rawProvider, {
|
|
62
|
+
ismAddress,
|
|
63
|
+
newOwner: artifact.config.owner,
|
|
64
|
+
});
|
|
65
|
+
receipts.push(await this.signer.sendAndConfirmTransaction(ownerTx));
|
|
66
|
+
}
|
|
67
|
+
return [
|
|
68
|
+
{
|
|
69
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
70
|
+
config: artifact.config,
|
|
71
|
+
deployed: { address: ismAddress },
|
|
72
|
+
},
|
|
73
|
+
receipts,
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
async update(artifact) {
|
|
77
|
+
const current = await this.read(artifact.deployed.address);
|
|
78
|
+
const expectedRoutes = Object.entries(artifact.config.domains).map(([domainId, domainIsm]) => {
|
|
79
|
+
if (isArtifactUnderived(domainIsm) || isArtifactDeployed(domainIsm)) {
|
|
80
|
+
return {
|
|
81
|
+
domainId: Number(domainId),
|
|
82
|
+
ismAddress: normalizeStarknetAddressSafe(domainIsm.deployed.address),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
throw new Error(`Routing ISM domain ${domainId} has invalid state`);
|
|
86
|
+
});
|
|
87
|
+
const actualByDomain = new Map(Object.entries(current.config.domains).map(([domainId, domainIsm]) => [
|
|
88
|
+
Number(domainId),
|
|
89
|
+
normalizeStarknetAddressSafe(domainIsm.deployed.address),
|
|
90
|
+
]));
|
|
91
|
+
const expectedByDomain = new Map(expectedRoutes.map((route) => [route.domainId, route.ismAddress]));
|
|
92
|
+
const updateTxs = [];
|
|
93
|
+
const rawProvider = this.signer.getRawProvider();
|
|
94
|
+
for (const route of expectedRoutes) {
|
|
95
|
+
const actualAddress = actualByDomain.get(route.domainId);
|
|
96
|
+
if (!actualAddress ||
|
|
97
|
+
!eqAddressStarknet(actualAddress, route.ismAddress)) {
|
|
98
|
+
updateTxs.push({
|
|
99
|
+
annotation: `Setting routing ISM route ${route.domainId}`,
|
|
100
|
+
...(await getSetRoutingIsmRouteTx(rawProvider, {
|
|
101
|
+
ismAddress: artifact.deployed.address,
|
|
102
|
+
route,
|
|
103
|
+
})),
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
for (const [domainId] of actualByDomain) {
|
|
108
|
+
if (!expectedByDomain.has(domainId)) {
|
|
109
|
+
updateTxs.push({
|
|
110
|
+
annotation: `Removing routing ISM route ${domainId}`,
|
|
111
|
+
...(await getRemoveRoutingIsmRouteTx(rawProvider, {
|
|
112
|
+
ismAddress: artifact.deployed.address,
|
|
113
|
+
domainId,
|
|
114
|
+
})),
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (!eqAddressStarknet(current.config.owner, artifact.config.owner)) {
|
|
119
|
+
updateTxs.push({
|
|
120
|
+
annotation: `Updating routing ISM owner`,
|
|
121
|
+
...(await getSetRoutingIsmOwnerTx(rawProvider, {
|
|
122
|
+
ismAddress: artifact.deployed.address,
|
|
123
|
+
newOwner: artifact.config.owner,
|
|
124
|
+
})),
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return updateTxs;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=domain-routing-ism-artifact-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-routing-ism-artifact-manager.js","sourceRoot":"","sources":["../../src/ism/domain-routing-ism-artifact-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ChainMetadataForAltVM } from '@recoillink/provider-sdk';
|
|
2
|
+
import { type ISigner } from '@recoillink/provider-sdk/altvm';
|
|
3
|
+
import { type ArtifactReader, type ArtifactWriter } from '@recoillink/provider-sdk/artifact';
|
|
4
|
+
import { type DeployedIsmAddress, type DeployedRawIsmArtifact, type IRawIsmArtifactManager, type IsmType, type RawIsmArtifactConfigs } from '@recoillink/provider-sdk/ism';
|
|
5
|
+
import { type AnnotatedTx, type TxReceipt } from '@recoillink/provider-sdk/module';
|
|
6
|
+
export declare class StarknetIsmArtifactManager implements IRawIsmArtifactManager {
|
|
7
|
+
private readonly provider;
|
|
8
|
+
constructor(chainMetadata: ChainMetadataForAltVM);
|
|
9
|
+
private requireStarknetSigner;
|
|
10
|
+
readIsm(address: string): Promise<DeployedRawIsmArtifact>;
|
|
11
|
+
createReader<T extends IsmType>(type: T): ArtifactReader<RawIsmArtifactConfigs[T], DeployedIsmAddress>;
|
|
12
|
+
createWriter<T extends IsmType>(type: T, signer: ISigner<AnnotatedTx, TxReceipt>): ArtifactWriter<RawIsmArtifactConfigs[T], DeployedIsmAddress>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ism-artifact-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ism-artifact-manager.d.ts","sourceRoot":"","sources":["../../src/ism/ism-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,OAAO,EACZ,KAAK,qBAAqB,EAE3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,iCAAiC,CAAC;AA2BzC,qBAAa,0BAA2B,YAAW,sBAAsB;IACvE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAE5C,YAAY,aAAa,EAAE,qBAAqB,EAE/C;IAED,OAAO,CAAC,qBAAqB;IAOvB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAQ9D;IAED,YAAY,CAAC,CAAC,SAAS,OAAO,EAC5B,IAAI,EAAE,CAAC,GACN,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAoB9D;IAED,YAAY,CAAC,CAAC,SAAS,OAAO,EAC5B,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,GACtC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAmB9D;CACF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { AltVM } from '@recoillink/provider-sdk';
|
|
2
|
+
import { altVMIsmTypeToProviderSdkType, } from '@recoillink/provider-sdk/ism';
|
|
3
|
+
import { assert } from '@recoillink/utils';
|
|
4
|
+
import { StarknetProvider } from '../clients/provider.js';
|
|
5
|
+
import { StarknetSigner } from '../clients/signer.js';
|
|
6
|
+
import { getIsmType } from './ism-query.js';
|
|
7
|
+
import { StarknetAggregationIsmReader, StarknetPausableIsmReader, } from './aggregation-ism-artifact-reader.js';
|
|
8
|
+
import { StarknetRoutingIsmReader, StarknetRoutingIsmWriter, } from './domain-routing-ism-artifact-manager.js';
|
|
9
|
+
import { StarknetMerkleRootMultisigIsmReader, StarknetMerkleRootMultisigIsmWriter, } from './merkle-root-multisig-ism-artifact-manager.js';
|
|
10
|
+
import { StarknetMessageIdMultisigIsmReader, StarknetMessageIdMultisigIsmWriter, } from './message-id-multisig-ism-artifact-manager.js';
|
|
11
|
+
import { StarknetTestIsmReader, StarknetTestIsmWriter, } from './test-ism-artifact-manager.js';
|
|
12
|
+
export class StarknetIsmArtifactManager {
|
|
13
|
+
provider;
|
|
14
|
+
constructor(chainMetadata) {
|
|
15
|
+
this.provider = StarknetProvider.connect(chainMetadata);
|
|
16
|
+
}
|
|
17
|
+
requireStarknetSigner(signer) {
|
|
18
|
+
assert(signer instanceof StarknetSigner, 'Expected StarknetSigner');
|
|
19
|
+
return signer;
|
|
20
|
+
}
|
|
21
|
+
async readIsm(address) {
|
|
22
|
+
const type = await getIsmType(this.provider.getRawProvider(), address);
|
|
23
|
+
assert(type !== AltVM.IsmType.CUSTOM, `Unsupported Starknet ISM at ${address}; refusing to report it as testIsm`);
|
|
24
|
+
const reader = this.createReader(altVMIsmTypeToProviderSdkType(type));
|
|
25
|
+
return reader.read(address);
|
|
26
|
+
}
|
|
27
|
+
createReader(type) {
|
|
28
|
+
const readers = {
|
|
29
|
+
staticAggregationIsm: () => new StarknetAggregationIsmReader(this.provider),
|
|
30
|
+
pausableIsm: () => new StarknetPausableIsmReader(this.provider),
|
|
31
|
+
testIsm: () => new StarknetTestIsmReader(this.provider),
|
|
32
|
+
merkleRootMultisigIsm: () => new StarknetMerkleRootMultisigIsmReader(this.provider),
|
|
33
|
+
messageIdMultisigIsm: () => new StarknetMessageIdMultisigIsmReader(this.provider),
|
|
34
|
+
domainRoutingIsm: () => new StarknetRoutingIsmReader(this.provider),
|
|
35
|
+
};
|
|
36
|
+
const readerFactory = readers[type];
|
|
37
|
+
assert(readerFactory, `Unsupported Starknet ISM type: ${type}`);
|
|
38
|
+
return readerFactory();
|
|
39
|
+
}
|
|
40
|
+
createWriter(type, signer) {
|
|
41
|
+
const writers = {
|
|
42
|
+
testIsm: (starknetSigner) => new StarknetTestIsmWriter(this.provider, starknetSigner),
|
|
43
|
+
merkleRootMultisigIsm: (starknetSigner) => new StarknetMerkleRootMultisigIsmWriter(this.provider, starknetSigner),
|
|
44
|
+
messageIdMultisigIsm: (starknetSigner) => new StarknetMessageIdMultisigIsmWriter(this.provider, starknetSigner),
|
|
45
|
+
domainRoutingIsm: (starknetSigner) => new StarknetRoutingIsmWriter(this.provider, starknetSigner),
|
|
46
|
+
};
|
|
47
|
+
const writer = writers[type];
|
|
48
|
+
assert(writer, `Unsupported Starknet ISM type: ${type}`);
|
|
49
|
+
const starknetSigner = this.requireStarknetSigner(signer);
|
|
50
|
+
return writer(starknetSigner);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=ism-artifact-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ism-artifact-manager.js","sourceRoot":"","sources":["../../src/ism/ism-artifact-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ism-artifact-manager.test.d.ts","sourceRoot":"","sources":["../../src/ism/ism-artifact-manager.test.ts"],"names":[],"mappings":""}
|