diff --git a/Makefile b/Makefile index 0ab89662..c2edab7f 100644 --- a/Makefile +++ b/Makefile @@ -22,10 +22,18 @@ generate-rs: ## Generate Rust client rm -rf rust/gen/bluefin_api apigen -l rust -.PHONY: example-rs -example-rs: ## Run the example for the generated Rust client +.PHONY: py-example +py-example: ## Run the example for the generated Python client + cd python/example && python3 main.py + +.PHONY: rs-example +rs-example: ## Run the example for the generated Rust client cd rust; for i in `ls examples/ | grep -v shutdown`; do name=$${i::-3}; echo "$$name"; cargo run --example "$$name"; done .PHONY: ts-typecheck ts-typecheck: generate-ts ## Type check the generated TypeScript client docker run --rm -v "${PWD}:/work" -w /work/ts/sdk node:24 sh -lc "yarn install --frozen-lockfile && yarn build:types && yarn build:example" + +.PHONY: ts-example +ts-example: ## Run the example for the generated Typescript client + docker run --rm -v "${PWD}:/work" -w /work/ts/sdk node:24 sh -lc "yarn install --frozen-lockfile && yarn build:types && yarn tsx example.ts" diff --git a/python/sdk/src/openapi_client/test/test_contracts_config.py b/python/sdk/src/openapi_client/test/test_contracts_config.py index 49fdfc92..86864393 100644 --- a/python/sdk/src/openapi_client/test/test_contracts_config.py +++ b/python/sdk/src/openapi_client/test/test_contracts_config.py @@ -35,30 +35,30 @@ def make_instance(self, include_optional) -> ContractsConfig: model = ContractsConfig() if include_optional: return ContractsConfig( - eds_id = '0x7c723c16bc4a4d3e1067360de6963cfdfbdc51a128563fe052cb4f8f00d6150b', - ids_id = '0x7c723c16bc4a4d3e1067360de6963cfdfbdc51a128563fe052cb4f8f00d6150b', + eds_id = '0xb6a31fbd720b7032cc43714a57da0386c770e87fcad0eeb92fd5482e4163d5a2', + ids_id = '0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa', network = 'mainnet', - base_contract_address = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', - current_contract_address = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + base_contract_address = '0x1a67b3b13e8774bd5b746ac5a4acbcc15ed41010096fe642a1abf2e6f6e2285b', + current_contract_address = '0x1a67b3b13e8774bd5b746ac5a4acbcc15ed41010096fe642a1abf2e6f6e2285b', operators = openapi_client.models.operators.Operators( - admin = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', - operator = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', - sequencer = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', - funding = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + admin = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + operator = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + sequencer = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + funding = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', fee = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', ) ) else: return ContractsConfig( - eds_id = '0x7c723c16bc4a4d3e1067360de6963cfdfbdc51a128563fe052cb4f8f00d6150b', - ids_id = '0x7c723c16bc4a4d3e1067360de6963cfdfbdc51a128563fe052cb4f8f00d6150b', + eds_id = '0xb6a31fbd720b7032cc43714a57da0386c770e87fcad0eeb92fd5482e4163d5a2', + ids_id = '0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa', network = 'mainnet', - base_contract_address = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', - current_contract_address = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + base_contract_address = '0x1a67b3b13e8774bd5b746ac5a4acbcc15ed41010096fe642a1abf2e6f6e2285b', + current_contract_address = '0x1a67b3b13e8774bd5b746ac5a4acbcc15ed41010096fe642a1abf2e6f6e2285b', operators = openapi_client.models.operators.Operators( - admin = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', - operator = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', - sequencer = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', - funding = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + admin = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + operator = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + sequencer = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + funding = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', fee = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', ), ) """ diff --git a/python/sdk/src/openapi_client/test/test_exchange_info_response.py b/python/sdk/src/openapi_client/test/test_exchange_info_response.py index 9ad8601a..22153160 100644 --- a/python/sdk/src/openapi_client/test/test_exchange_info_response.py +++ b/python/sdk/src/openapi_client/test/test_exchange_info_response.py @@ -37,59 +37,59 @@ def make_instance(self, include_optional) -> ExchangeInfoResponse: return ExchangeInfoResponse( assets = [ openapi_client.models.asset_config.AssetConfig( - asset_type = '', - symbol = 'USDC', - decimals = 6, - weight = '1.0', + asset_type = '', + symbol = 'USDC', + decimals = 6, + weight = '1.0', margin_available = True, ) ], contracts_config = openapi_client.models.contracts_config.ContractsConfig( - eds_id = '0x7c723c16bc4a4d3e1067360de6963cfdfbdc51a128563fe052cb4f8f00d6150b', - ids_id = '0x7c723c16bc4a4d3e1067360de6963cfdfbdc51a128563fe052cb4f8f00d6150b', - network = 'mainnet', - base_contract_address = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', - current_contract_address = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + eds_id = '0xb6a31fbd720b7032cc43714a57da0386c770e87fcad0eeb92fd5482e4163d5a2', + ids_id = '0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa', + network = 'mainnet', + base_contract_address = '0x1a67b3b13e8774bd5b746ac5a4acbcc15ed41010096fe642a1abf2e6f6e2285b', + current_contract_address = '0x1a67b3b13e8774bd5b746ac5a4acbcc15ed41010096fe642a1abf2e6f6e2285b', operators = openapi_client.models.operators.Operators( - admin = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', - operator = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', - sequencer = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', - funding = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + admin = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + operator = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + sequencer = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', + funding = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', fee = '0xa6b939f57595fed2ae10ae4f3a37a410c94e5bdb7dde2e547022d1fe1b9791d0', ), ), markets = [ openapi_client.models.market.Market( - symbol = 'BTC-PERP', - market_address = '291', - status = 'ACTIVE', - base_asset_symbol = '', - base_asset_name = '', - base_asset_decimals = 56, - step_size_e9 = '10000000', - tick_size_e9 = '10000000', - min_order_quantity_e9 = '20000000', - max_limit_order_quantity_e9 = '25000000000', - max_market_order_quantity_e9 = '250000000000', - min_order_price_e9 = '10000000', - max_order_price_e9 = '10000000000', - maintenance_margin_ratio_e9 = '30000000', - initial_margin_ratio_e9 = '45000000', - insurance_pool_ratio_e9 = '3000000', - default_leverage_e9 = '3000000000', + symbol = 'BTC-PERP', + market_address = '291', + status = 'ACTIVE', + base_asset_symbol = '', + base_asset_name = '', + base_asset_decimals = 56, + step_size_e9 = '10000000', + tick_size_e9 = '10000000', + min_order_quantity_e9 = '20000000', + max_limit_order_quantity_e9 = '25000000000', + max_market_order_quantity_e9 = '250000000000', + min_order_price_e9 = '10000000', + max_order_price_e9 = '10000000000', + maintenance_margin_ratio_e9 = '30000000', + initial_margin_ratio_e9 = '45000000', + insurance_pool_ratio_e9 = '3000000', + default_leverage_e9 = '3000000000', max_notional_at_open_e9 = [ '' - ], - min_trade_quantity_e9 = '10000000', - max_trade_quantity_e9 = '100000000000', - min_trade_price_e9 = '50000000000', - max_trade_price_e9 = '50000000000000', - max_funding_rate_e9 = '1000000', - default_maker_fee_e9 = '150000', - default_taker_fee_e9 = '550000', - insurance_pool_address = '', - fee_pool_address = '', - trading_start_time_at_millis = '1724121094751', - mtb_long_e9 = '20000000', - mtb_short_e9 = '20000000', - delisting_price_e9 = '200000000', + ], + min_trade_quantity_e9 = '10000000', + max_trade_quantity_e9 = '100000000000', + min_trade_price_e9 = '50000000000', + max_trade_price_e9 = '50000000000000', + max_funding_rate_e9 = '1000000', + default_maker_fee_e9 = '150000', + default_taker_fee_e9 = '550000', + insurance_pool_address = '', + fee_pool_address = '', + trading_start_time_at_millis = '1724121094751', + mtb_long_e9 = '20000000', + mtb_short_e9 = '20000000', + delisting_price_e9 = '200000000', isolated_only = True, ) ], trading_gas_fee_e9 = '', @@ -100,47 +100,47 @@ def make_instance(self, include_optional) -> ExchangeInfoResponse: return ExchangeInfoResponse( assets = [ openapi_client.models.asset_config.AssetConfig( - asset_type = '', - symbol = 'USDC', - decimals = 6, - weight = '1.0', + asset_type = '', + symbol = 'USDC', + decimals = 6, + weight = '1.0', margin_available = True, ) ], markets = [ openapi_client.models.market.Market( - symbol = 'BTC-PERP', - market_address = '291', - status = 'ACTIVE', - base_asset_symbol = '', - base_asset_name = '', - base_asset_decimals = 56, - step_size_e9 = '10000000', - tick_size_e9 = '10000000', - min_order_quantity_e9 = '20000000', - max_limit_order_quantity_e9 = '25000000000', - max_market_order_quantity_e9 = '250000000000', - min_order_price_e9 = '10000000', - max_order_price_e9 = '10000000000', - maintenance_margin_ratio_e9 = '30000000', - initial_margin_ratio_e9 = '45000000', - insurance_pool_ratio_e9 = '3000000', - default_leverage_e9 = '3000000000', + symbol = 'BTC-PERP', + market_address = '291', + status = 'ACTIVE', + base_asset_symbol = '', + base_asset_name = '', + base_asset_decimals = 56, + step_size_e9 = '10000000', + tick_size_e9 = '10000000', + min_order_quantity_e9 = '20000000', + max_limit_order_quantity_e9 = '25000000000', + max_market_order_quantity_e9 = '250000000000', + min_order_price_e9 = '10000000', + max_order_price_e9 = '10000000000', + maintenance_margin_ratio_e9 = '30000000', + initial_margin_ratio_e9 = '45000000', + insurance_pool_ratio_e9 = '3000000', + default_leverage_e9 = '3000000000', max_notional_at_open_e9 = [ '' - ], - min_trade_quantity_e9 = '10000000', - max_trade_quantity_e9 = '100000000000', - min_trade_price_e9 = '50000000000', - max_trade_price_e9 = '50000000000000', - max_funding_rate_e9 = '1000000', - default_maker_fee_e9 = '150000', - default_taker_fee_e9 = '550000', - insurance_pool_address = '', - fee_pool_address = '', - trading_start_time_at_millis = '1724121094751', - mtb_long_e9 = '20000000', - mtb_short_e9 = '20000000', - delisting_price_e9 = '200000000', + ], + min_trade_quantity_e9 = '10000000', + max_trade_quantity_e9 = '100000000000', + min_trade_price_e9 = '50000000000', + max_trade_price_e9 = '50000000000000', + max_funding_rate_e9 = '1000000', + default_maker_fee_e9 = '150000', + default_taker_fee_e9 = '550000', + insurance_pool_address = '', + fee_pool_address = '', + trading_start_time_at_millis = '1724121094751', + mtb_long_e9 = '20000000', + mtb_short_e9 = '20000000', + delisting_price_e9 = '200000000', isolated_only = True, ) ], trading_gas_fee_e9 = '', diff --git a/python/sdk/tests/test_hash.py b/python/sdk/tests/test_hash.py index d56e12d3..b09d82ad 100644 --- a/python/sdk/tests/test_hash.py +++ b/python/sdk/tests/test_hash.py @@ -7,25 +7,25 @@ class TestHashable(unittest.TestCase): - + def test_withdraw_request_hash(self): signed_fields = WithdrawRequestSignedFields( - eds_id="0x9b11fafc580f23932f379d99ab6cc4c638e85ba4c252fc909296f3f9e6cea786", + eds_id="0xb6a31fbd720b7032cc43714a57da0386c770e87fcad0eeb92fd5482e4163d5a2", asset_symbol="BTC-PERP", account_address="0x9b11fafc580f23932f379d99ab6cc4c638e85ba4c252fc909296f3f9e6cea786", amount_e9="1000000000", salt="12345", signed_at_millis=1725931543867 ) - + request = WithdrawRequest( signed_fields=signed_fields, signature="" ) - + # Create withdraw request hashable = Hashable.WithdrawRequest(request) - + # Verify fields are set correctly self.assertEqual(hashable.eds, signed_fields.eds_id) self.assertEqual(hashable.asset_symbol, signed_fields.asset_symbol) @@ -33,29 +33,29 @@ def test_withdraw_request_hash(self): self.assertEqual(hashable.amount, int(signed_fields.amount_e9)) self.assertEqual(hashable.salt, int(signed_fields.salt)) self.assertEqual(hashable.signed_at, signed_fields.signed_at_millis) - + hash = hashable.hash() # Generated from the RUST SDK. The payload should give this hash. self.assertEqual(hash, "f637fa05edf97b1201520411dfa9656efc94e090a0e8dcdae7f24bc951ac13da") - - def test_authorize_account_request_hash(self): + + def test_authorize_account_request_hash(self): # Create signed fields signed_fields = AccountAuthorizationRequestSignedFields( - ids_id="0x9b11fafc580f23932f379d99ab6cc4c638e85ba4c252fc909296f3f9e6cea786", + ids_id="0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa", account_address="0x9b11fafc580f23932f379d99ab6cc4c638e85ba4c252fc909296f3f9e6cea786", authorized_account_address="0x9b11fafc580f23932f379d99ab6cc4c638e85ba4c252fc909296f3f9e6cea786", salt="67890", signed_at_millis=1725931543867 ) - + request = AccountAuthorizationRequest( signed_fields=signed_fields, signature="" ) - + # Create authorize account request authorize_request = Hashable.AuthorizeAccountRequest(request) - + # Verify fields are set correctly self.assertEqual(authorize_request.ids, signed_fields.ids_id) self.assertEqual(authorize_request.account, signed_fields.account_address) @@ -63,29 +63,29 @@ def test_authorize_account_request_hash(self): self.assertTrue(authorize_request.status) self.assertEqual(authorize_request.salt, int(signed_fields.salt)) self.assertEqual(authorize_request.signed_at, signed_fields.signed_at_millis) - + # Test hash method hash_result = authorize_request.hash() self.assertEqual(hash_result, "833f2bb970c74b3b2007d9be4e81386712586f4b34bde45228428a51e62113af") - + def test_deauthorize_account_request_hash(self): # Create signed fields signed_fields = AccountAuthorizationRequestSignedFields( - ids_id="0x9b11fafc580f23932f379d99ab6cc4c638e85ba4c252fc909296f3f9e6cea786", + ids_id="0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa", account_address="0x9b11fafc580f23932f379d99ab6cc4c638e85ba4c252fc909296f3f9e6cea786", authorized_account_address="0x9b11fafc580f23932f379d99ab6cc4c638e85ba4c252fc909296f3f9e6cea786", salt="67890", signed_at_millis=1725931543867 ) - + request = AccountAuthorizationRequest( signed_fields=signed_fields, signature="" ) - + # Create deauthorize account request deauthorize_request = Hashable.DeauthorizeAccountRequest(request) - + # Verify fields are set correctly self.assertEqual(deauthorize_request.ids, signed_fields.ids_id) self.assertEqual(deauthorize_request.account, signed_fields.account_address) @@ -93,11 +93,11 @@ def test_deauthorize_account_request_hash(self): self.assertFalse(deauthorize_request.status) self.assertEqual(deauthorize_request.salt, int(signed_fields.salt)) self.assertEqual(deauthorize_request.signed_at, signed_fields.signed_at_millis) - + # Test hash method hash_result = deauthorize_request.hash() self.assertEqual(hash_result, "13b284bb260af6b7086038981d7595275589620071fe02121ed9dabc653816e6") - + def test_create_order_request_hash(self): signed_fields = CreateOrderRequestSignedFields( symbol="BTC-PERP", @@ -108,11 +108,11 @@ def test_create_order_request_hash(self): leverage_e9="10000000000", is_isolated=False, salt="12345", - ids_id="0x9b11fafc580f23932f379d99ab6cc4c638e85ba4c252fc909296f3f9e6cea786", + ids_id="0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa", expires_at_millis=1725931543867, signed_at_millis=1725931543867 ) - + request = CreateOrderRequest( signed_fields=signed_fields, signature="", @@ -124,10 +124,10 @@ def test_create_order_request_hash(self): trigger_price_e9=None, self_trade_prevention_type=None ) - + # Create create order request hashable = Hashable.CreateOrderRequest(request) - + # Verify fields are set correctly self.assertEqual(hashable.ids, signed_fields.ids_id) self.assertEqual(hashable.account, signed_fields.account_address) @@ -136,12 +136,12 @@ def test_create_order_request_hash(self): self.assertEqual(hashable.quantity, int(signed_fields.quantity_e9)) self.assertEqual(hashable.leverage, int(signed_fields.leverage_e9)) self.assertEqual(hashable.side, signed_fields.side.value) - self.assertEqual(hashable.position_type, + self.assertEqual(hashable.position_type, PositionType.ISOLATED.value if signed_fields.is_isolated else PositionType.CROSS.value) self.assertEqual(hashable.expiration, signed_fields.expires_at_millis) self.assertEqual(hashable.salt, int(signed_fields.salt)) self.assertEqual(hashable.signed_at, signed_fields.signed_at_millis) - + # Test hash method hash_result = hashable.hash() self.assertEqual(hash_result, "c372f185f8ba230f4144102b7d4ce0a8840d17516696fdbe0ca2a135e147370e") @@ -149,22 +149,22 @@ def test_create_order_request_hash(self): def test_adjust_leverage_request_hash(self): signed_fields = AccountPositionLeverageUpdateRequestSignedFields( - ids_id="0x9b11fafc580f23932f379d99ab6cc4c638e85ba4c252fc909296f3f9e6cea786", + ids_id="0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa", account_address="0x9b11fafc580f23932f379d99ab6cc4c638e85ba4c252fc909296f3f9e6cea786", symbol="BTC-PERP", leverage_e9="10000000000", salt="12345", signed_at_millis=1725931543867 ) - + request = AccountPositionLeverageUpdateRequest( signed_fields=signed_fields, signature="" ) - + # Create adjust leverage request hashable = Hashable.AdjustLeverageRequest(request) - + # Verify fields are set correctly self.assertEqual(hashable.ids, signed_fields.ids_id) self.assertEqual(hashable.account, signed_fields.account_address) @@ -172,14 +172,14 @@ def test_adjust_leverage_request_hash(self): self.assertEqual(hashable.leverage, int(signed_fields.leverage_e9)) self.assertEqual(hashable.salt, int(signed_fields.salt)) self.assertEqual(hashable.signed_at, signed_fields.signed_at_millis) - + # Test hash method hash_result = hashable.hash() self.assertEqual(hash_result, "e4200a4f1a8d977ba86d5a7e1218499bd4a1b9ee47d42cc91096236833d74d69") - + def test_adjust_isolated_margin_request_hash(self): signed_fields = AdjustIsolatedMarginRequestSignedFields( - ids_id="0x9b11fafc580f23932f379d99ab6cc4c638e85ba4c252fc909296f3f9e6cea786", + ids_id="0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa", account_address="0x9b11fafc580f23932f379d99ab6cc4c638e85ba4c252fc909296f3f9e6cea786", symbol="BTC-PERP", operation=AdjustMarginOperation.ADD, @@ -187,15 +187,15 @@ def test_adjust_isolated_margin_request_hash(self): salt="12345", signed_at_millis=1725931543867 ) - + request = AdjustIsolatedMarginRequest( signedFields=signed_fields, signature="" ) - + # Create adjust isolated margin request hashable = Hashable.AdjustIsolatedMarginRequest(request) - + # Verify fields are set correctly self.assertEqual(hashable.ids, signed_fields.ids_id) self.assertEqual(hashable.account, signed_fields.account_address) @@ -208,7 +208,7 @@ def test_adjust_isolated_margin_request_hash(self): # Test hash method hash_result = hashable.hash() self.assertEqual(hash_result, "8f12ca81965e16955d523103a440eca598e9b3155c431ce8ef1d7a4268c48f43") - - + + if __name__ == '__main__': unittest.main() diff --git a/python/sdk/tests/test_signatures.py b/python/sdk/tests/test_signatures.py index 45a52c17..c29af016 100644 --- a/python/sdk/tests/test_signatures.py +++ b/python/sdk/tests/test_signatures.py @@ -20,7 +20,7 @@ async def test_withdraw_signature(): payload = WithdrawRequestSignedFields( asset_symbol='USDC', - eds_id='0x5ffe1778e69001cb87f457ac3997df7567d54c4010b8193e6797793213f29ea0', + eds_id='0xb6a31fbd720b7032cc43714a57da0386c770e87fcad0eeb92fd5482e4163d5a2', account_address='0x76a831f3a961579e5fd34b6cda412409dd41ba18fe0f10e149ecdad413af4050', amount_e9="1500000", salt="1739231818963", @@ -45,7 +45,7 @@ async def test_order_signature(): leverage_e9="0", is_isolated=False, salt= "1739491998372", - ids_id="0x38a9b1c542212bccc84bdf315afda5a15f00662520c25b31b47cdf87a3705ac9", + ids_id="0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa", expires_at_millis= 2037603360000, signed_at_millis=1739492801736, ) @@ -61,7 +61,7 @@ async def test_order_signature(): async def test_adjust_leverage_signature(): payload = AccountPositionLeverageUpdateRequestSignedFields( - ids_id="0x38a9b1c542212bccc84bdf315afda5a15f00662520c25b31b47cdf87a3705ac9", + ids_id="0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa", account_address="0x76a831f3a961579e5fd34b6cda412409dd41ba18fe0f10e149ecdad413af4050", symbol="ETH-PERP", leverage_e9="1000000000", @@ -80,7 +80,7 @@ async def test_adjust_leverage_signature(): async def test_adjust_margin_signature(): payload = AdjustIsolatedMarginRequestSignedFields( - ids_id="0x38a9b1c542212bccc84bdf315afda5a15f00662520c25b31b47cdf87a3705ac9", + ids_id="0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa", account_address="0x76a831f3a961579e5fd34b6cda412409dd41ba18fe0f10e149ecdad413af4050", symbol="ETH-PERP", operation=AdjustMarginOperation.ADD, @@ -99,7 +99,7 @@ async def test_adjust_margin_signature(): @pytest.mark.asyncio async def test_authorize_user_signature(): payload = AccountAuthorizationRequestSignedFields( - ids_id="0x38a9b1c542212bccc84bdf315afda5a15f00662520c25b31b47cdf87a3705ac9", + ids_id="0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa", account_address="0x76a831f3a961579e5fd34b6cda412409dd41ba18fe0f10e149ecdad413af4050", authorized_account_address="0x01b51fb67313ae92f57418bc16aebd6134a6f39c388a77092cfdc4c639863d68", salt="1739494582583", @@ -114,7 +114,7 @@ async def test_authorize_user_signature(): @pytest.mark.asyncio async def test_close_position_signature(): payload = { - "ids_id":"0x38a9b1c542212bccc84bdf315afda5a15f00662520c25b31b47cdf87a3705ac9", + "ids_id":"0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa", "account_address":"0x76a831f3a961579e5fd34b6cda412409dd41ba18fe0f10e149ecdad413af4050", "symbol": 'ETH-PERP', "is_isolated":True, diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 5e6da69c..797bf3e7 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -780,7 +780,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots 1.0.6", + "webpki-roots", ] [[package]] @@ -1482,7 +1482,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 1.0.6", + "webpki-roots", ] [[package]] @@ -2123,12 +2123,10 @@ checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" dependencies = [ "futures-util", "log", - "rustls", - "rustls-pki-types", + "native-tls", "tokio", - "tokio-rustls", + "tokio-native-tls", "tungstenite", - "webpki-roots 0.26.11", ] [[package]] @@ -2213,9 +2211,8 @@ dependencies = [ "http", "httparse", "log", + "native-tls", "rand 0.8.5", - "rustls", - "rustls-pki-types", "sha1", "thiserror 1.0.69", "utf-8", @@ -2384,15 +2381,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki-roots" -version = "0.26.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" -dependencies = [ - "webpki-roots 1.0.6", -] - [[package]] name = "webpki-roots" version = "1.0.6" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index b70537bf..49ce2948 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -64,7 +64,7 @@ features = ["full"] version = "1.50.0" [dev-dependencies.tokio-tungstenite] -features = ["rustls-tls-webpki-roots"] +features = ["native-tls"] version = "0.24.0" [features] diff --git a/rust/src/account_authorization.rs b/rust/src/account_authorization.rs index 4374d37d..ae7b7426 100644 --- a/rust/src/account_authorization.rs +++ b/rust/src/account_authorization.rs @@ -192,7 +192,7 @@ mod tests { "0x8e78225d72b1d7b1f63e5e9f88f09b12ca66c84e2fc8b91fc10f6a0c51230615".into(), authorized_account_address: "0x8e78225d72b1d7b1f63e5e9f88f09b12ca66c84e2fc8b91fc10f6a0c51230615".into(), - ids_id: "0x8e78225d72b1d7b1f63e5e9f88f09b12ca66c84e2fc8b91fc10f6a0c51230615" + ids_id: "0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa" .into(), salt: "1725930601205".into(), signed_at_millis: 1_725_931_543_867, diff --git a/rust/src/adjust_isolated_margin.rs b/rust/src/adjust_isolated_margin.rs index 5e8d3d13..b6f283a7 100644 --- a/rust/src/adjust_isolated_margin.rs +++ b/rust/src/adjust_isolated_margin.rs @@ -96,7 +96,7 @@ mod tests { operation: AdjustMarginOperation::Add, quantity_e9: "1000000000000000000".into(), salt: "1725930601205".into(), - ids_id: "0x8e78225d72b1d7b1f63e5e9f88f09b12ca66c84e2fc8b91fc10f6a0c51230615".into(), + ids_id: "0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa".into(), signed_at_millis: 1_725_931_543_867, }, ..AdjustIsolatedMarginRequest::default() diff --git a/rust/src/create_order.rs b/rust/src/create_order.rs index d9a713d1..60ce1ac6 100644 --- a/rust/src/create_order.rs +++ b/rust/src/create_order.rs @@ -99,7 +99,7 @@ mod tests { leverage_e9: "0".into(), is_isolated: false, salt: "1725930601205".into(), - ids_id: "0x8e78225d72b1d7b1f63e5e9f88f09b12ca66c84e2fc8b91fc10f6a0c51230615".into(), + ids_id: "0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa".into(), expires_at_millis: 2_037_603_360_000, signed_at_millis: 1_725_931_543_867, }, diff --git a/rust/src/update_leverage.rs b/rust/src/update_leverage.rs index a7595b54..bc64fb29 100644 --- a/rust/src/update_leverage.rs +++ b/rust/src/update_leverage.rs @@ -102,7 +102,7 @@ mod tests { "0x8e78225d72b1d7b1f63e5e9f88f09b12ca66c84e2fc8b91fc10f6a0c51230615".into(), leverage_e9: "0".into(), salt: "1725930601205".into(), - ids_id: "0x8e78225d72b1d7b1f63e5e9f88f09b12ca66c84e2fc8b91fc10f6a0c51230615".into(), + ids_id: "0xeb46bc9cd8cca03f9cabde46bf280a5aae264668877b7ee2f24cbaf0692089aa".into(), signed_at_millis: 1_725_931_543_867, }, ..AccountPositionLeverageUpdateRequest::default() diff --git a/rust/src/withdraw.rs b/rust/src/withdraw.rs index eece8b6d..2d390f03 100644 --- a/rust/src/withdraw.rs +++ b/rust/src/withdraw.rs @@ -94,7 +94,7 @@ mod tests { "0x8e78225d72b1d7b1f63e5e9f88f09b12ca66c84e2fc8b91fc10f6a0c51230615".into(), amount_e9: "3500000000000".to_string(), salt: "1725930601205".to_string(), - eds_id: "0x8e78225d72b1d7b1f63e5e9f88f09b12ca66c84e2fc8b91fc10f6a0c51230615".into(), + eds_id: "0xb6a31fbd720b7032cc43714a57da0386c770e87fcad0eeb92fd5482e4163d5a2".into(), signed_at_millis: 1_725_931_543_867, }, ..WithdrawRequest::default() diff --git a/ts/sdk/package.json b/ts/sdk/package.json index 3aaa70c2..551a52e6 100644 --- a/ts/sdk/package.json +++ b/ts/sdk/package.json @@ -6,11 +6,13 @@ "@types/ws": "^8.5.13", "axios": "^1.13.6", "isomorphic-ws": "^5.0.0", + "ts-node": "^10.9.2", "ws": "^8.18.0" }, "description": "OpenAPI client for @bluefin-exchange/pro-sdk", "devDependencies": { "@types/node": "^22.10.7", + "tsx": "^4.22.4", "typescript": "^4.0 || ^5.0" }, "exports": { @@ -38,7 +40,8 @@ "@mysten/sui": "^2.13.0" }, "resolutions": { - "@mysten/sui": "^2.13.0" + "@mysten/sui": "^2.13.0", + "@noble/curves": "^1.8.1" }, "publishConfig": { "access": "public" diff --git a/ts/sdk/yarn.lock b/ts/sdk/yarn.lock index b151820c..13a35ad0 100644 --- a/ts/sdk/yarn.lock +++ b/ts/sdk/yarn.lock @@ -469,6 +469,143 @@ dependencies: uuid "^13.0.0" +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@esbuild/aix-ppc64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz#7a01a8d2ec2fbb2dac78adad09b0fa781e4082be" + integrity sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ== + +"@esbuild/android-arm64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz#b540a27d14e4afd058496a4dbec4d3f414db110a" + integrity sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg== + +"@esbuild/android-arm@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.28.1.tgz#704bd297de6d762de54eabbeafbf55f6756abe2f" + integrity sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ== + +"@esbuild/android-x64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.28.1.tgz#d1cb166d34b0fbf0fe8ab460a5594f24a378701e" + integrity sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng== + +"@esbuild/darwin-arm64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz#1034b26457fc886368fe61bbd09f653f6afa8e54" + integrity sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q== + +"@esbuild/darwin-x64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz#65556a432a1e4d72032d8218c1932fcca1a49772" + integrity sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ== + +"@esbuild/freebsd-arm64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz#2e61e0592f9030d7e3dae18ee25ebc535918aef6" + integrity sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw== + +"@esbuild/freebsd-x64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz#c95ec289959ef8079c4dca817a1e2c4be66b9bd3" + integrity sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ== + +"@esbuild/linux-arm64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz#40b22175dda06182f3ee8141186c5ff304c4a717" + integrity sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g== + +"@esbuild/linux-arm@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz#c09a0f67917592ac0de892a9be4d3814debd2a6c" + integrity sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ== + +"@esbuild/linux-ia32@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz#a580f9c676797833891e519fc7a1337c8afd8db3" + integrity sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w== + +"@esbuild/linux-loong64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz#46452cf321dc7f9e91c2fa780a56bb56e79cd68b" + integrity sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg== + +"@esbuild/linux-mips64el@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz#4211b3184dd6608f53dcb22e39f5d34ee08852c8" + integrity sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ== + +"@esbuild/linux-ppc64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz#697857c2a61cb9b0b6bb6652e40c1dc5e1ca8e5d" + integrity sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ== + +"@esbuild/linux-riscv64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz#d192943eb146a40ac4c6497d0cf7be35b986bf08" + integrity sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ== + +"@esbuild/linux-s390x@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz#acea0356da0e0ebc08f97cf7b9c2e401e1e648dc" + integrity sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag== + +"@esbuild/linux-x64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz#6f0c3ce0cb64c534b70c4c45ecb2c16d34e35dfd" + integrity sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA== + +"@esbuild/netbsd-arm64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz#8bcd77077a0dce3378b574fedb26d2a253b73d36" + integrity sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw== + +"@esbuild/netbsd-x64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz#e7fb2a01e99c830c94e6623cd9fefb4c8fb58347" + integrity sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg== + +"@esbuild/openbsd-arm64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz#c52909372db8b86e2c55e05a8940033b5660a3b2" + integrity sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q== + +"@esbuild/openbsd-x64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz#c427b9be5a64c262ff9a7eb70b5fbbaadf446c6c" + integrity sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw== + +"@esbuild/openharmony-arm64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz#dc9b147baca2e6c4b3c85571741ef4860a489097" + integrity sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg== + +"@esbuild/sunos-x64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz#ce866d12df13c15e4c99f073a3d466f6e0649b3a" + integrity sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ== + +"@esbuild/win32-arm64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz#7468e3692d01d629d5941e5d83817bb80f9e39b4" + integrity sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA== + +"@esbuild/win32-ia32@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz#a5bc0063fb2bcab6d0ed63f2a1537958bc269ec6" + integrity sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg== + +"@esbuild/win32-x64@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz#10064ee44f4347b90c9a02b446bbf80a91632b12" + integrity sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A== + "@firefly-exchange/library-sui@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@firefly-exchange/library-sui/-/library-sui-3.0.0.tgz#35877827e262799087d73179d574d3288dd1530e" @@ -523,6 +660,24 @@ resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@mysten/bcs@^2.0.0", "@mysten/bcs@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@mysten/bcs/-/bcs-2.0.3.tgz#c1ec110fb67e1a5e45a58da97210ad62ee2c03fe" @@ -573,23 +728,23 @@ dependencies: "@mysten/sui" "1.16.1" -"@noble/curves@2.0.1", "@noble/curves@^2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz" - integrity sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw== +"@noble/curves@2.0.1", "@noble/curves@^1.8.1", "@noble/curves@^2.0.1": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== dependencies: - "@noble/hashes" "2.0.1" + "@noble/hashes" "1.8.0" + +"@noble/hashes@1.8.0", "@noble/hashes@^1.2.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" + integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== "@noble/hashes@2.0.1", "@noble/hashes@^2.0.1": version "2.0.1" resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz" integrity sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw== -"@noble/hashes@^1.2.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz" - integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== - "@noble/secp256k1@^1.7.1": version "1.7.2" resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.2.tgz" @@ -1063,6 +1218,26 @@ resolved "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz" integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== +"@tsconfig/node10@^1.0.7": + version "1.0.12" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.12.tgz#be57ceac1e4692b41be9de6be8c32a106636dba4" + integrity sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + "@types/bn.js@^5.1.0": version "5.2.0" resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz" @@ -1148,6 +1323,18 @@ resolved "https://registry.npmjs.org/@zodios/core/-/core-10.9.6.tgz" integrity sha512-aH4rOdb3AcezN7ws8vDgBfGboZMk2JGGzEq/DtW65MhnRxyTGRuLJRWVQ/2KxDgWvV2F5oTkAS+5pnjKbl0n+A== +acorn-walk@^8.1.1: + version "8.3.5" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.5.tgz#8a6b8ca8fc5b34685af15dabb44118663c296496" + integrity sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw== + dependencies: + acorn "^8.11.0" + +acorn@^8.11.0, acorn@^8.4.1: + version "8.17.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.17.0.tgz#1785adb84faf8d8add10369b93826fc2bd08f1fe" + integrity sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg== + add@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/add/-/add-2.0.6.tgz" @@ -1170,6 +1357,11 @@ ansi-styles@^4.0.0: dependencies: color-convert "^2.0.1" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + asn1.js@^5.4.1: version "5.4.1" resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" @@ -1416,6 +1608,11 @@ create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + debug@^4.3.1, debug@~4.4.1: version "4.4.3" resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz" @@ -1442,6 +1639,11 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +diff@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.4.tgz#7a6dbfda325f25f07517e9b518f897c08332e07d" + integrity sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ== + dotenv-parse-variables@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/dotenv-parse-variables/-/dotenv-parse-variables-2.0.0.tgz" @@ -1525,6 +1727,38 @@ es-set-tostringtag@^2.1.0: has-tostringtag "^1.0.2" hasown "^2.0.2" +esbuild@~0.28.0: + version "0.28.1" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.28.1.tgz#ef45b4634c9c9d97a296aea4114a5f9840f95578" + integrity sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw== + optionalDependencies: + "@esbuild/aix-ppc64" "0.28.1" + "@esbuild/android-arm" "0.28.1" + "@esbuild/android-arm64" "0.28.1" + "@esbuild/android-x64" "0.28.1" + "@esbuild/darwin-arm64" "0.28.1" + "@esbuild/darwin-x64" "0.28.1" + "@esbuild/freebsd-arm64" "0.28.1" + "@esbuild/freebsd-x64" "0.28.1" + "@esbuild/linux-arm" "0.28.1" + "@esbuild/linux-arm64" "0.28.1" + "@esbuild/linux-ia32" "0.28.1" + "@esbuild/linux-loong64" "0.28.1" + "@esbuild/linux-mips64el" "0.28.1" + "@esbuild/linux-ppc64" "0.28.1" + "@esbuild/linux-riscv64" "0.28.1" + "@esbuild/linux-s390x" "0.28.1" + "@esbuild/linux-x64" "0.28.1" + "@esbuild/netbsd-arm64" "0.28.1" + "@esbuild/netbsd-x64" "0.28.1" + "@esbuild/openbsd-arm64" "0.28.1" + "@esbuild/openbsd-x64" "0.28.1" + "@esbuild/openharmony-arm64" "0.28.1" + "@esbuild/sunos-x64" "0.28.1" + "@esbuild/win32-arm64" "0.28.1" + "@esbuild/win32-ia32" "0.28.1" + "@esbuild/win32-x64" "0.28.1" + escalade@^3.1.1: version "3.2.0" resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" @@ -1626,6 +1860,11 @@ form-data@^4.0.5: hasown "^2.0.2" mime-types "^2.1.12" +fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -1806,6 +2045,11 @@ lodash@^4.17.21: resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz" integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w== +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + math-intrinsics@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" @@ -2083,11 +2327,39 @@ ts-binary-serializer@^2.1.3: resolved "https://registry.npmjs.org/ts-binary-serializer/-/ts-binary-serializer-2.1.3.tgz" integrity sha512-I+EAMFu4agNYoyiBq9V/cjyTS5Jy1c7aO+s9/PNdSPBVQKe2LkZbufRAzi5TAuntpE3JJ0GW1/DkkcvH1gWmtA== +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + tslib@^2.6.2: version "2.8.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== +tsx@^4.22.4: + version "4.22.4" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.22.4.tgz#0ab3b7fb4ec7feeee74e5b1f26337caa71e44700" + integrity sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg== + dependencies: + esbuild "~0.28.0" + optionalDependencies: + fsevents "~2.3.3" + tweetnacl@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" @@ -2132,6 +2404,11 @@ uuid@^8.3.2: resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + valibot@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/valibot/-/valibot-1.2.0.tgz" @@ -2197,6 +2474,11 @@ yarn@^1.22.19: resolved "https://registry.npmjs.org/yarn/-/yarn-1.22.22.tgz" integrity sha512-prL3kGtyG7o9Z9Sv8IPfBNrWTDmXB4Qbes8A9rEzt6wkJV8mUvoirjU0Mp3GGAU06Y0XQyA3/2/RQFVuK7MTfg== +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + zod@^3.23.8: version "3.25.76" resolved "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz"