@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,27 @@
|
|
|
1
|
+
import { ProtocolType } from '@recoillink/provider-sdk';
|
|
2
|
+
export const DEFAULT_E2E_TEST_TIMEOUT = 300_000;
|
|
3
|
+
export const STARKNET_DEVNET_IMAGE = 'shardlabs/starknet-devnet-rs';
|
|
4
|
+
export const STARKNET_DEVNET_TAG = '0.4.2';
|
|
5
|
+
export const TEST_STARKNET_PRIVATE_KEY = '0x0000000000000000000000000000000071d7bb07b9a64f6f78ac4c816aff4da9';
|
|
6
|
+
export const TEST_STARKNET_ACCOUNT_ADDRESS = '0x064b48806902a367c8598f4f95c305e8c1a1acba5f082d294a43793113115691';
|
|
7
|
+
export const TEST_STARKNET_CHAIN_METADATA = {
|
|
8
|
+
name: 'starknetdevnet',
|
|
9
|
+
protocol: ProtocolType.Starknet,
|
|
10
|
+
chainId: '0x534e5f5345504f4c4941',
|
|
11
|
+
domainId: 5854809,
|
|
12
|
+
nativeToken: {
|
|
13
|
+
decimals: 18,
|
|
14
|
+
name: 'StarkNet Token',
|
|
15
|
+
symbol: 'STRK',
|
|
16
|
+
denom: '0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d',
|
|
17
|
+
},
|
|
18
|
+
blocks: {
|
|
19
|
+
confirmations: 0,
|
|
20
|
+
estimateBlockTime: 0.5,
|
|
21
|
+
},
|
|
22
|
+
rpcUrls: [{ http: 'http://127.0.0.1:5050' }],
|
|
23
|
+
rpcPort: 5050,
|
|
24
|
+
rpcUrl: 'http://127.0.0.1:5050',
|
|
25
|
+
restPort: 5050,
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/testing/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAEhD,MAAM,CAAC,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;AACpE,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAE3C,MAAM,CAAC,MAAM,yBAAyB,GACpC,oEAAoE,CAAC;AACvE,MAAM,CAAC,MAAM,6BAA6B,GACxC,oEAAoE,CAAC;AAEvE,MAAM,CAAC,MAAM,4BAA4B,GAAsB;IAC7D,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,YAAY,CAAC,QAAQ;IAC/B,OAAO,EAAE,wBAAwB;IACjC,QAAQ,EAAE,OAAO;IACjB,WAAW,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,oEAAoE;KAC5E;IACD,MAAM,EAAE;QACN,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,GAAG;KACvB;IACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC;IAC5C,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,uBAAuB;IAC/B,QAAQ,EAAE,IAAI;CACf,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { DEFAULT_E2E_TEST_TIMEOUT, STARKNET_DEVNET_IMAGE, STARKNET_DEVNET_TAG, TEST_STARKNET_ACCOUNT_ADDRESS, TEST_STARKNET_CHAIN_METADATA, TEST_STARKNET_PRIVATE_KEY, } from './constants.js';
|
|
2
|
+
export { runStarknetNode } from './node.js';
|
|
3
|
+
export { createProvider, createSigner } from './utils.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,6BAA6B,EAC7B,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { DEFAULT_E2E_TEST_TIMEOUT, STARKNET_DEVNET_IMAGE, STARKNET_DEVNET_TAG, TEST_STARKNET_ACCOUNT_ADDRESS, TEST_STARKNET_CHAIN_METADATA, TEST_STARKNET_PRIVATE_KEY, } from './constants.js';
|
|
2
|
+
export { runStarknetNode } from './node.js';
|
|
3
|
+
export { createProvider, createSigner } from './utils.js';
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,6BAA6B,EAC7B,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/testing/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AA0DnE,wBAAsB,eAAe,CACnC,aAAa,GAAE,iBAAgD,GAC9D,OAAO,CAAC,oBAAoB,CAAC,CA0C/B"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { GenericContainer } from 'testcontainers';
|
|
2
|
+
import { assert, retryAsync, rootLogger, sleep } from '@recoillink/utils';
|
|
3
|
+
import { STARKNET_DEVNET_IMAGE, STARKNET_DEVNET_TAG, TEST_STARKNET_CHAIN_METADATA, } from './constants.js';
|
|
4
|
+
const RPC_READY_MAX_ATTEMPTS = 20;
|
|
5
|
+
const RPC_READY_RETRY_MS = 1000;
|
|
6
|
+
async function waitForRpcReady(rpcUrl) {
|
|
7
|
+
let lastError;
|
|
8
|
+
for (let attempt = 1; attempt <= RPC_READY_MAX_ATTEMPTS; attempt += 1) {
|
|
9
|
+
try {
|
|
10
|
+
const response = await fetch(rpcUrl, {
|
|
11
|
+
method: 'POST',
|
|
12
|
+
headers: { 'content-type': 'application/json' },
|
|
13
|
+
body: JSON.stringify({
|
|
14
|
+
id: 1,
|
|
15
|
+
jsonrpc: '2.0',
|
|
16
|
+
method: 'starknet_blockNumber',
|
|
17
|
+
params: [],
|
|
18
|
+
}),
|
|
19
|
+
});
|
|
20
|
+
if (!response.ok) {
|
|
21
|
+
throw new Error(`rpc not ready: ${response.status}`);
|
|
22
|
+
}
|
|
23
|
+
const payload = await response.json();
|
|
24
|
+
if (payload &&
|
|
25
|
+
typeof payload === 'object' &&
|
|
26
|
+
'error' in payload &&
|
|
27
|
+
payload.error) {
|
|
28
|
+
throw new Error(`rpc returned error: ${JSON.stringify(payload.error)}`);
|
|
29
|
+
}
|
|
30
|
+
await sleep(1000);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
lastError = error;
|
|
35
|
+
if (attempt < RPC_READY_MAX_ATTEMPTS) {
|
|
36
|
+
await sleep(RPC_READY_RETRY_MS);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
throw new Error(`starknet rpc did not become ready after ${RPC_READY_MAX_ATTEMPTS} attempts: ${String(lastError)}`);
|
|
41
|
+
}
|
|
42
|
+
export async function runStarknetNode(chainMetadata = TEST_STARKNET_CHAIN_METADATA) {
|
|
43
|
+
const rpcUrl = chainMetadata.rpcUrl;
|
|
44
|
+
assert(rpcUrl, 'Expected Starknet rpc url to be defined for e2e tests');
|
|
45
|
+
return retryAsync(async () => {
|
|
46
|
+
let container;
|
|
47
|
+
try {
|
|
48
|
+
container = await new GenericContainer(`${STARKNET_DEVNET_IMAGE}:${STARKNET_DEVNET_TAG}`)
|
|
49
|
+
.withExposedPorts({
|
|
50
|
+
container: 5050,
|
|
51
|
+
host: chainMetadata.rpcPort,
|
|
52
|
+
})
|
|
53
|
+
.withCommand([
|
|
54
|
+
'--state-archive-capacity',
|
|
55
|
+
'full',
|
|
56
|
+
'--block-generation-on',
|
|
57
|
+
'transaction',
|
|
58
|
+
'--lite-mode',
|
|
59
|
+
'--seed',
|
|
60
|
+
'0',
|
|
61
|
+
])
|
|
62
|
+
.start();
|
|
63
|
+
await waitForRpcReady(rpcUrl);
|
|
64
|
+
return container;
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
if (container) {
|
|
68
|
+
await container.stop().catch((stopError) => {
|
|
69
|
+
rootLogger.debug('Failed to stop Starknet devnet container', {
|
|
70
|
+
stopError,
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
}, 3, 5000);
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/testing/node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TestChainMetadata } from '@recoillink/provider-sdk/chain';
|
|
2
|
+
import { StarknetProvider } from '../clients/provider.js';
|
|
3
|
+
import { StarknetSigner } from '../clients/signer.js';
|
|
4
|
+
export declare function createProvider(metadata?: TestChainMetadata): StarknetProvider;
|
|
5
|
+
export declare function createSigner(privateKey?: string, accountAddress?: string, metadata?: TestChainMetadata): Promise<StarknetSigner>;
|
|
6
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/testing/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQtD,wBAAgB,cAAc,CAC5B,QAAQ,GAAE,iBAAgD,GACzD,gBAAgB,CAElB;AAED,wBAAsB,YAAY,CAChC,UAAU,GAAE,MAAkC,EAC9C,cAAc,GAAE,MAAsC,EACtD,QAAQ,GAAE,iBAAgD,GACzD,OAAO,CAAC,cAAc,CAAC,CAMzB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { assert } from '@recoillink/utils';
|
|
2
|
+
import { StarknetProvider } from '../clients/provider.js';
|
|
3
|
+
import { StarknetSigner } from '../clients/signer.js';
|
|
4
|
+
import { TEST_STARKNET_ACCOUNT_ADDRESS, TEST_STARKNET_CHAIN_METADATA, TEST_STARKNET_PRIVATE_KEY, } from './constants.js';
|
|
5
|
+
export function createProvider(metadata = TEST_STARKNET_CHAIN_METADATA) {
|
|
6
|
+
return StarknetProvider.connect(metadata);
|
|
7
|
+
}
|
|
8
|
+
export async function createSigner(privateKey = TEST_STARKNET_PRIVATE_KEY, accountAddress = TEST_STARKNET_ACCOUNT_ADDRESS, metadata = TEST_STARKNET_CHAIN_METADATA) {
|
|
9
|
+
const signer = await StarknetSigner.connectWithSigner(metadata, privateKey, {
|
|
10
|
+
accountAddress,
|
|
11
|
+
});
|
|
12
|
+
assert(signer instanceof StarknetSigner, 'Expected StarknetSigner');
|
|
13
|
+
return signer;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/testing/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAExB,MAAM,UAAU,cAAc,CAC5B,QAAQ,GAAsB,4BAA4B;IAE1D,OAAO,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAU,GAAW,yBAAyB,EAC9C,cAAc,GAAW,6BAA6B,EACtD,QAAQ,GAAsB,4BAA4B;IAE1D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE;QAC1E,cAAc;KACf,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,YAAY,cAAc,EAAE,yBAAyB,CAAC,CAAC;IACpE,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e2e-test.setup.d.ts","sourceRoot":"","sources":["../../src/tests/e2e-test.setup.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { rootLogger } from '@recoillink/utils';
|
|
2
|
+
import { DEFAULT_E2E_TEST_TIMEOUT } from '../testing/constants.js';
|
|
3
|
+
import { runStarknetNode } from '../testing/node.js';
|
|
4
|
+
const SETUP_TIMEOUT = 2 * DEFAULT_E2E_TEST_TIMEOUT;
|
|
5
|
+
const TESTS_WITHOUT_DEVNET = new Set(['read-warp-token']);
|
|
6
|
+
const SKIP_DEVNET = TESTS_WITHOUT_DEVNET.has(process.env['STARKNET_SDK_E2E_TEST'] ?? '');
|
|
7
|
+
let starknetNode;
|
|
8
|
+
before(async function () {
|
|
9
|
+
if (SKIP_DEVNET)
|
|
10
|
+
return;
|
|
11
|
+
this.timeout(SETUP_TIMEOUT);
|
|
12
|
+
rootLogger.info('Starting Starknet devnet for e2e tests');
|
|
13
|
+
starknetNode = await runStarknetNode();
|
|
14
|
+
});
|
|
15
|
+
after(async function () {
|
|
16
|
+
if (SKIP_DEVNET)
|
|
17
|
+
return;
|
|
18
|
+
this.timeout(SETUP_TIMEOUT);
|
|
19
|
+
if (starknetNode) {
|
|
20
|
+
rootLogger.info('Stopping Starknet devnet for e2e tests');
|
|
21
|
+
await starknetNode.stop();
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=e2e-test.setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e2e-test.setup.js","sourceRoot":"","sources":["../../src/tests/e2e-test.setup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,aAAa,GAAG,CAAC,GAAG,wBAAwB,CAAC;AAEnD,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAC1C,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAC3C,CAAC;AAEF,IAAI,YAA8C,CAAC;AAEnD,MAAM,CAAC,KAAK;IACV,IAAI,WAAW;QAAE,OAAO;IACxB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5B,UAAU,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAC1D,YAAY,GAAG,MAAM,eAAe,EAAE,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,KAAK;IACT,IAAI,WAAW;QAAE,OAAO;IACxB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAE5B,IAAI,YAAY,EAAE,CAAC;QACjB,UAAU,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAC1D,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/hook.e2e-test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { AltVM } from '@recoillink/provider-sdk';
|
|
3
|
+
import { ArtifactState } from '@recoillink/provider-sdk/artifact';
|
|
4
|
+
import { assert, eqAddressStarknet } from '@recoillink/utils';
|
|
5
|
+
import { StarknetHookArtifactManager } from '../hook/hook-artifact-manager.js';
|
|
6
|
+
import { StarknetIsmArtifactManager } from '../ism/ism-artifact-manager.js';
|
|
7
|
+
import { StarknetMailboxArtifactManager } from '../mailbox/mailbox-artifact-manager.js';
|
|
8
|
+
import { DEFAULT_E2E_TEST_TIMEOUT, TEST_STARKNET_CHAIN_METADATA, } from '../testing/constants.js';
|
|
9
|
+
import { getCreateNoopHookTx } from '../hook/hook-tx.js';
|
|
10
|
+
import { createSigner } from '../testing/utils.js';
|
|
11
|
+
describe('3. starknet sdk hook e2e tests', function () {
|
|
12
|
+
this.timeout(DEFAULT_E2E_TEST_TIMEOUT);
|
|
13
|
+
let signer;
|
|
14
|
+
let mailboxAddress;
|
|
15
|
+
let artifactManager;
|
|
16
|
+
before(async () => {
|
|
17
|
+
signer = await createSigner();
|
|
18
|
+
const ismArtifactManager = new StarknetIsmArtifactManager(TEST_STARKNET_CHAIN_METADATA);
|
|
19
|
+
const [ism] = await ismArtifactManager
|
|
20
|
+
.createWriter(AltVM.IsmType.TEST_ISM, signer)
|
|
21
|
+
.create({ config: { type: AltVM.IsmType.TEST_ISM } });
|
|
22
|
+
const hookTx = getCreateNoopHookTx();
|
|
23
|
+
const hookReceipt = await signer.sendAndConfirmTransaction(hookTx);
|
|
24
|
+
assert(hookReceipt.contractAddress, 'failed to deploy noop hook');
|
|
25
|
+
const hookAddress = hookReceipt.contractAddress;
|
|
26
|
+
const mailboxArtifactManager = new StarknetMailboxArtifactManager(TEST_STARKNET_CHAIN_METADATA);
|
|
27
|
+
const [mailbox] = await mailboxArtifactManager
|
|
28
|
+
.createWriter('mailbox', signer)
|
|
29
|
+
.create({
|
|
30
|
+
config: {
|
|
31
|
+
owner: signer.getSignerAddress(),
|
|
32
|
+
defaultIsm: {
|
|
33
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
34
|
+
deployed: { address: ism.deployed.address },
|
|
35
|
+
},
|
|
36
|
+
defaultHook: {
|
|
37
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
38
|
+
deployed: { address: hookAddress },
|
|
39
|
+
},
|
|
40
|
+
requiredHook: {
|
|
41
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
42
|
+
deployed: { address: hookAddress },
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
mailboxAddress = mailbox.deployed.address;
|
|
47
|
+
artifactManager = new StarknetHookArtifactManager(TEST_STARKNET_CHAIN_METADATA, {
|
|
48
|
+
mailbox: mailboxAddress,
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
it('creates and reads merkle tree hook', async () => {
|
|
52
|
+
const writer = artifactManager.createWriter(AltVM.HookType.MERKLE_TREE, signer);
|
|
53
|
+
const [created] = await writer.create({
|
|
54
|
+
config: { type: AltVM.HookType.MERKLE_TREE },
|
|
55
|
+
});
|
|
56
|
+
expect(created.deployed.address).to.not.equal('');
|
|
57
|
+
const reader = artifactManager.createReader(AltVM.HookType.MERKLE_TREE);
|
|
58
|
+
const read = await reader.read(created.deployed.address);
|
|
59
|
+
expect(read.config.type).to.equal(AltVM.HookType.MERKLE_TREE);
|
|
60
|
+
expect(eqAddressStarknet(read.deployed.address, created.deployed.address)).to.equal(true);
|
|
61
|
+
const updateTxs = await writer.update(created);
|
|
62
|
+
expect(updateTxs).to.have.length(0);
|
|
63
|
+
});
|
|
64
|
+
it('creates, reads, and updates protocol fee hook', async () => {
|
|
65
|
+
const writer = artifactManager.createWriter(AltVM.HookType.PROTOCOL_FEE, signer);
|
|
66
|
+
const [created] = await writer.create({
|
|
67
|
+
config: {
|
|
68
|
+
type: AltVM.HookType.PROTOCOL_FEE,
|
|
69
|
+
owner: signer.getSignerAddress(),
|
|
70
|
+
beneficiary: '0x111',
|
|
71
|
+
maxProtocolFee: '20',
|
|
72
|
+
protocolFee: '10',
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
const reader = artifactManager.createReader(AltVM.HookType.PROTOCOL_FEE);
|
|
76
|
+
const read = await reader.read(created.deployed.address);
|
|
77
|
+
expect(read.config.type).to.equal(AltVM.HookType.PROTOCOL_FEE);
|
|
78
|
+
expect(read.config.protocolFee).to.equal('10');
|
|
79
|
+
const newOwner = '0x222';
|
|
80
|
+
const txs = await writer.update({
|
|
81
|
+
...created,
|
|
82
|
+
config: {
|
|
83
|
+
...created.config,
|
|
84
|
+
owner: newOwner,
|
|
85
|
+
beneficiary: '0x333',
|
|
86
|
+
protocolFee: '11',
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
expect(txs.length).to.be.greaterThan(0);
|
|
90
|
+
expect(txs[txs.length - 1]?.annotation).to.contain('ownership');
|
|
91
|
+
for (const tx of txs) {
|
|
92
|
+
await signer.sendAndConfirmTransaction(tx);
|
|
93
|
+
}
|
|
94
|
+
const updated = await reader.read(created.deployed.address);
|
|
95
|
+
expect(eqAddressStarknet(updated.config.owner, newOwner)).to.equal(true);
|
|
96
|
+
expect(updated.config.protocolFee).to.equal('11');
|
|
97
|
+
expect(eqAddressStarknet(updated.config.beneficiary, '0x333')).to.equal(true);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=hook.e2e-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.e2e-test.js","sourceRoot":"","sources":["../../src/tests/hook.e2e-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ism.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/ism.e2e-test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { AltVM } from '@recoillink/provider-sdk';
|
|
3
|
+
import { ArtifactState } from '@recoillink/provider-sdk/artifact';
|
|
4
|
+
import { eqAddressStarknet, normalizeAddressEvm } from '@recoillink/utils';
|
|
5
|
+
import { StarknetIsmArtifactManager } from '../ism/ism-artifact-manager.js';
|
|
6
|
+
import { DEFAULT_E2E_TEST_TIMEOUT, TEST_STARKNET_CHAIN_METADATA, } from '../testing/constants.js';
|
|
7
|
+
import { createSigner } from '../testing/utils.js';
|
|
8
|
+
function normalizeValidators(addresses) {
|
|
9
|
+
return addresses
|
|
10
|
+
.map((address) => normalizeAddressEvm(address).toLowerCase())
|
|
11
|
+
.sort();
|
|
12
|
+
}
|
|
13
|
+
describe('1. starknet sdk ISM e2e tests', function () {
|
|
14
|
+
this.timeout(DEFAULT_E2E_TEST_TIMEOUT);
|
|
15
|
+
let signer;
|
|
16
|
+
let artifactManager;
|
|
17
|
+
before(async () => {
|
|
18
|
+
signer = await createSigner();
|
|
19
|
+
artifactManager = new StarknetIsmArtifactManager(TEST_STARKNET_CHAIN_METADATA);
|
|
20
|
+
});
|
|
21
|
+
it('creates and reads test ISM', async () => {
|
|
22
|
+
const writer = artifactManager.createWriter(AltVM.IsmType.TEST_ISM, signer);
|
|
23
|
+
const [created] = await writer.create({
|
|
24
|
+
config: { type: AltVM.IsmType.TEST_ISM },
|
|
25
|
+
});
|
|
26
|
+
expect(created.deployed.address).to.not.equal('');
|
|
27
|
+
expect(created.config.type).to.equal(AltVM.IsmType.TEST_ISM);
|
|
28
|
+
const reader = artifactManager.createReader(AltVM.IsmType.TEST_ISM);
|
|
29
|
+
const read = await reader.read(created.deployed.address);
|
|
30
|
+
expect(read.config.type).to.equal(AltVM.IsmType.TEST_ISM);
|
|
31
|
+
expect(eqAddressStarknet(read.deployed.address, created.deployed.address)).to.equal(true);
|
|
32
|
+
});
|
|
33
|
+
it('creates and reads message-id and merkle-root multisig ISMs', async () => {
|
|
34
|
+
const validators = [
|
|
35
|
+
'0x3C24F29fa75869A1C9D19d9d6589Aae0B5227c3c',
|
|
36
|
+
'0xf719b4CC64d0E3a380e52c2720Abab13835F6d9c',
|
|
37
|
+
'0x98A56EdE1d6Dd386216DA8217D9ac1d2EE7c27c7',
|
|
38
|
+
];
|
|
39
|
+
const threshold = 2;
|
|
40
|
+
const messageWriter = artifactManager.createWriter(AltVM.IsmType.MESSAGE_ID_MULTISIG, signer);
|
|
41
|
+
const [messageCreated] = await messageWriter.create({
|
|
42
|
+
config: {
|
|
43
|
+
type: AltVM.IsmType.MESSAGE_ID_MULTISIG,
|
|
44
|
+
validators,
|
|
45
|
+
threshold,
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
const messageReader = artifactManager.createReader(AltVM.IsmType.MESSAGE_ID_MULTISIG);
|
|
49
|
+
const messageRead = await messageReader.read(messageCreated.deployed.address);
|
|
50
|
+
expect(messageRead.config.threshold).to.equal(threshold);
|
|
51
|
+
expect(normalizeValidators(messageRead.config.validators)).to.deep.equal(normalizeValidators(validators));
|
|
52
|
+
const merkleWriter = artifactManager.createWriter(AltVM.IsmType.MERKLE_ROOT_MULTISIG, signer);
|
|
53
|
+
const [merkleCreated] = await merkleWriter.create({
|
|
54
|
+
config: {
|
|
55
|
+
type: AltVM.IsmType.MERKLE_ROOT_MULTISIG,
|
|
56
|
+
validators,
|
|
57
|
+
threshold,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
const merkleReader = artifactManager.createReader(AltVM.IsmType.MERKLE_ROOT_MULTISIG);
|
|
61
|
+
const merkleRead = await merkleReader.read(merkleCreated.deployed.address);
|
|
62
|
+
expect(merkleRead.config.threshold).to.equal(threshold);
|
|
63
|
+
expect(normalizeValidators(merkleRead.config.validators)).to.deep.equal(normalizeValidators(validators));
|
|
64
|
+
});
|
|
65
|
+
it('updates routing ISM routes and owner', async () => {
|
|
66
|
+
const noopWriter = artifactManager.createWriter(AltVM.IsmType.TEST_ISM, signer);
|
|
67
|
+
const [noopAResult] = await noopWriter.create({
|
|
68
|
+
config: { type: AltVM.IsmType.TEST_ISM },
|
|
69
|
+
});
|
|
70
|
+
const [noopBResult] = await noopWriter.create({
|
|
71
|
+
config: { type: AltVM.IsmType.TEST_ISM },
|
|
72
|
+
});
|
|
73
|
+
const noopA = noopAResult.deployed.address;
|
|
74
|
+
const noopB = noopBResult.deployed.address;
|
|
75
|
+
const writer = artifactManager.createWriter(AltVM.IsmType.ROUTING, signer);
|
|
76
|
+
const [created] = await writer.create({
|
|
77
|
+
config: {
|
|
78
|
+
type: AltVM.IsmType.ROUTING,
|
|
79
|
+
owner: signer.getSignerAddress(),
|
|
80
|
+
domains: {
|
|
81
|
+
111: {
|
|
82
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
83
|
+
deployed: { address: noopA },
|
|
84
|
+
},
|
|
85
|
+
222: {
|
|
86
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
87
|
+
deployed: { address: noopB },
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
const newOwner = '0x1234567890abcdef1234567890abcdef1234567890abcdef';
|
|
93
|
+
const updateTxs = await writer.update({
|
|
94
|
+
...created,
|
|
95
|
+
config: {
|
|
96
|
+
type: AltVM.IsmType.ROUTING,
|
|
97
|
+
owner: newOwner,
|
|
98
|
+
domains: {
|
|
99
|
+
111: {
|
|
100
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
101
|
+
deployed: { address: noopB },
|
|
102
|
+
},
|
|
103
|
+
333: {
|
|
104
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
105
|
+
deployed: { address: noopA },
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
expect(updateTxs.length).to.be.greaterThan(0);
|
|
111
|
+
for (const tx of updateTxs) {
|
|
112
|
+
await signer.sendAndConfirmTransaction(tx);
|
|
113
|
+
}
|
|
114
|
+
const reader = artifactManager.createReader(AltVM.IsmType.ROUTING);
|
|
115
|
+
const updated = await reader.read(created.deployed.address);
|
|
116
|
+
expect(eqAddressStarknet(updated.config.owner, newOwner)).to.equal(true);
|
|
117
|
+
expect(Object.keys(updated.config.domains)).to.have.length(2);
|
|
118
|
+
expect(eqAddressStarknet(updated.config.domains[111].deployed.address, noopB)).to.equal(true);
|
|
119
|
+
expect(eqAddressStarknet(updated.config.domains[333].deployed.address, noopA)).to.equal(true);
|
|
120
|
+
expect(updated.config.domains[222]).to.equal(undefined);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=ism.e2e-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ism.e2e-test.js","sourceRoot":"","sources":["../../src/tests/ism.e2e-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailbox.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/mailbox.e2e-test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { AltVM } from '@recoillink/provider-sdk';
|
|
3
|
+
import { ArtifactState } from '@recoillink/provider-sdk/artifact';
|
|
4
|
+
import { assert, eqAddressStarknet } from '@recoillink/utils';
|
|
5
|
+
import { getCreateNoopHookTx } from '../hook/hook-tx.js';
|
|
6
|
+
import { StarknetIsmArtifactManager } from '../ism/ism-artifact-manager.js';
|
|
7
|
+
import { StarknetMailboxArtifactManager } from '../mailbox/mailbox-artifact-manager.js';
|
|
8
|
+
import { DEFAULT_E2E_TEST_TIMEOUT, TEST_STARKNET_CHAIN_METADATA, } from '../testing/constants.js';
|
|
9
|
+
import { createSigner } from '../testing/utils.js';
|
|
10
|
+
describe('2. starknet sdk mailbox e2e tests', function () {
|
|
11
|
+
this.timeout(DEFAULT_E2E_TEST_TIMEOUT);
|
|
12
|
+
let signer;
|
|
13
|
+
let artifactManager;
|
|
14
|
+
let ismArtifactManager;
|
|
15
|
+
before(async () => {
|
|
16
|
+
signer = await createSigner();
|
|
17
|
+
artifactManager = new StarknetMailboxArtifactManager(TEST_STARKNET_CHAIN_METADATA);
|
|
18
|
+
ismArtifactManager = new StarknetIsmArtifactManager(TEST_STARKNET_CHAIN_METADATA);
|
|
19
|
+
});
|
|
20
|
+
async function createPrerequisites() {
|
|
21
|
+
const [ism] = await ismArtifactManager
|
|
22
|
+
.createWriter(AltVM.IsmType.TEST_ISM, signer)
|
|
23
|
+
.create({
|
|
24
|
+
config: { type: AltVM.IsmType.TEST_ISM },
|
|
25
|
+
});
|
|
26
|
+
const hookTx = getCreateNoopHookTx();
|
|
27
|
+
const hookReceipt = await signer.sendAndConfirmTransaction(hookTx);
|
|
28
|
+
assert(hookReceipt.contractAddress, 'failed to deploy noop hook');
|
|
29
|
+
return {
|
|
30
|
+
ismAddress: ism.deployed.address,
|
|
31
|
+
hookAddress: hookReceipt.contractAddress,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
it('creates and reads mailbox artifact', async () => {
|
|
35
|
+
const { ismAddress, hookAddress } = await createPrerequisites();
|
|
36
|
+
const writer = artifactManager.createWriter('mailbox', signer);
|
|
37
|
+
const [created, receipts] = await writer.create({
|
|
38
|
+
config: {
|
|
39
|
+
owner: signer.getSignerAddress(),
|
|
40
|
+
defaultIsm: {
|
|
41
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
42
|
+
deployed: { address: ismAddress },
|
|
43
|
+
},
|
|
44
|
+
defaultHook: {
|
|
45
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
46
|
+
deployed: { address: hookAddress },
|
|
47
|
+
},
|
|
48
|
+
requiredHook: {
|
|
49
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
50
|
+
deployed: { address: hookAddress },
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
expect(created.deployed.address).to.not.equal('');
|
|
55
|
+
expect(created.deployed.domainId).to.equal(TEST_STARKNET_CHAIN_METADATA.domainId);
|
|
56
|
+
expect(receipts.length).to.be.greaterThan(0);
|
|
57
|
+
const reader = artifactManager.createReader('mailbox');
|
|
58
|
+
const read = await reader.read(created.deployed.address);
|
|
59
|
+
expect(eqAddressStarknet(read.config.owner, signer.getSignerAddress())).to.equal(true);
|
|
60
|
+
expect(eqAddressStarknet(read.config.defaultIsm.deployed.address, ismAddress)).to.equal(true);
|
|
61
|
+
expect(eqAddressStarknet(read.config.defaultHook.deployed.address, hookAddress)).to.equal(true);
|
|
62
|
+
expect(eqAddressStarknet(read.config.requiredHook.deployed.address, hookAddress)).to.equal(true);
|
|
63
|
+
});
|
|
64
|
+
it('updates mailbox ISM/hooks/owner', async () => {
|
|
65
|
+
const base = await createPrerequisites();
|
|
66
|
+
const next = await createPrerequisites();
|
|
67
|
+
const writer = artifactManager.createWriter('mailbox', signer);
|
|
68
|
+
const [created] = await writer.create({
|
|
69
|
+
config: {
|
|
70
|
+
owner: signer.getSignerAddress(),
|
|
71
|
+
defaultIsm: {
|
|
72
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
73
|
+
deployed: { address: base.ismAddress },
|
|
74
|
+
},
|
|
75
|
+
defaultHook: {
|
|
76
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
77
|
+
deployed: { address: base.hookAddress },
|
|
78
|
+
},
|
|
79
|
+
requiredHook: {
|
|
80
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
81
|
+
deployed: { address: base.hookAddress },
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
const newOwner = '0x1234567890abcdef1234567890abcdef1234567890abcdef';
|
|
86
|
+
const txs = await writer.update({
|
|
87
|
+
...created,
|
|
88
|
+
config: {
|
|
89
|
+
owner: newOwner,
|
|
90
|
+
defaultIsm: {
|
|
91
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
92
|
+
deployed: { address: next.ismAddress },
|
|
93
|
+
},
|
|
94
|
+
defaultHook: {
|
|
95
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
96
|
+
deployed: { address: next.hookAddress },
|
|
97
|
+
},
|
|
98
|
+
requiredHook: {
|
|
99
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
100
|
+
deployed: { address: next.hookAddress },
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
expect(txs.length).to.be.greaterThan(0);
|
|
105
|
+
for (const tx of txs) {
|
|
106
|
+
await signer.sendAndConfirmTransaction(tx);
|
|
107
|
+
}
|
|
108
|
+
const updated = await artifactManager.readMailbox(created.deployed.address);
|
|
109
|
+
expect(eqAddressStarknet(updated.config.owner, newOwner)).to.equal(true);
|
|
110
|
+
expect(eqAddressStarknet(updated.config.defaultIsm.deployed.address, next.ismAddress)).to.equal(true);
|
|
111
|
+
expect(eqAddressStarknet(updated.config.defaultHook.deployed.address, next.hookAddress)).to.equal(true);
|
|
112
|
+
expect(eqAddressStarknet(updated.config.requiredHook.deployed.address, next.hookAddress)).to.equal(true);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
//# sourceMappingURL=mailbox.e2e-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailbox.e2e-test.js","sourceRoot":"","sources":["../../src/tests/mailbox.e2e-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-warp-token.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/read-warp-token.e2e-test.ts"],"names":[],"mappings":""}
|