From c2944f2dc15c37e25a721784712aeef363e73ee1 Mon Sep 17 00:00:00 2001 From: Jegor Sidorenko <5252494+jsidorenko@users.noreply.github.com> Date: Mon, 24 Jul 2023 13:02:17 +0200 Subject: [PATCH] Add AssetConversionApi (#5694) * Add Asset Conversion Api * Fix lint errors --- packages/api-augment/src/substrate/runtime.ts | 22 +++++- .../types-augment/src/registry/interfaces.ts | 2 + .../interfaces/assetConversion/definitions.ts | 22 ++++++ .../src/interfaces/assetConversion/index.ts | 4 ++ .../src/interfaces/assetConversion/runtime.ts | 72 +++++++++++++++++++ .../src/interfaces/assetConversion/types.ts | 15 ++++ packages/types/src/interfaces/definitions.ts | 1 + packages/types/src/interfaces/types.ts | 1 + 8 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 packages/types/src/interfaces/assetConversion/definitions.ts create mode 100644 packages/types/src/interfaces/assetConversion/index.ts create mode 100644 packages/types/src/interfaces/assetConversion/runtime.ts create mode 100644 packages/types/src/interfaces/assetConversion/types.ts diff --git a/packages/api-augment/src/substrate/runtime.ts b/packages/api-augment/src/substrate/runtime.ts index a439bf216f..6262f30abc 100644 --- a/packages/api-augment/src/substrate/runtime.ts +++ b/packages/api-augment/src/substrate/runtime.ts @@ -6,8 +6,9 @@ import '@polkadot/api-base/types/calls'; import type { ApiTypes, AugmentedCall, DecoratedCallBase } from '@polkadot/api-base/types'; -import type { Bytes, Null, Option, Result, Vec, u32 } from '@polkadot/types-codec'; +import type { Bytes, Null, Option, Result, Vec, bool, u128, u32 } from '@polkadot/types-codec'; import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types'; +import type { MultiAssetId } from '@polkadot/types/interfaces/assetConversion'; import type { TAssetBalance } from '@polkadot/types/interfaces/assets'; import type { BabeEquivocationProof, BabeGenesisConfiguration, Epoch, OpaqueKeyOwnershipProof } from '@polkadot/types/interfaces/babe'; import type { CheckInherentsResult, InherentData } from '@polkadot/types/interfaces/blockbuilder'; @@ -43,6 +44,25 @@ declare module '@polkadot/api-base/types/calls' { **/ [key: string]: DecoratedCallBase; }; + /** 0x8a8047a53a8277ec/1 */ + assetConversionApi: { + /** + * Get pool reserves + **/ + getReserves: AugmentedCall Observable>>>; + /** + * Quote price: exact tokens for tokens + **/ + quotePriceExactTokensForTokens: AugmentedCall Observable>>; + /** + * Quote price: tokens for exact tokens + **/ + quotePriceTokensForExactTokens: AugmentedCall Observable>>; + /** + * Generic call + **/ + [key: string]: DecoratedCallBase; + }; /** 0x8453b50b22293977/1 */ assetsApi: { /** diff --git a/packages/types-augment/src/registry/interfaces.ts b/packages/types-augment/src/registry/interfaces.ts index 42bd218649..c52e57bd5b 100644 --- a/packages/types-augment/src/registry/interfaces.ts +++ b/packages/types-augment/src/registry/interfaces.ts @@ -7,6 +7,7 @@ import '@polkadot/types/types/registry'; import type { Data, StorageKey } from '@polkadot/types'; import type { BitVec, Bool, Bytes, F32, F64, I128, I16, I256, I32, I64, I8, ISize, Json, Null, OptionBool, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, f32, f64, i128, i16, i256, i32, i64, i8, isize, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec'; +import type { MultiAssetId } from '@polkadot/types/interfaces/assetConversion'; import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets'; import type { BlockAttestations, IncludedBlocks, MoreAttestations } from '@polkadot/types/interfaces/attestations'; import type { RawAuraPreDigest } from '@polkadot/types/interfaces/aura'; @@ -687,6 +688,7 @@ declare module '@polkadot/types/types/registry' { MultiAssetFilter: MultiAssetFilter; MultiAssetFilterV1: MultiAssetFilterV1; MultiAssetFilterV2: MultiAssetFilterV2; + MultiAssetId: MultiAssetId; MultiAssets: MultiAssets; MultiAssetsV1: MultiAssetsV1; MultiAssetsV2: MultiAssetsV2; diff --git a/packages/types/src/interfaces/assetConversion/definitions.ts b/packages/types/src/interfaces/assetConversion/definitions.ts new file mode 100644 index 0000000000..a8812568ea --- /dev/null +++ b/packages/types/src/interfaces/assetConversion/definitions.ts @@ -0,0 +1,22 @@ +// Copyright 2017-2023 @polkadot/types authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// order important in structs... :) +/* eslint-disable sort-keys */ + +import type { Definitions } from '../../types/index.js'; + +import { runtime } from './runtime.js'; + +export default { + rpc: {}, + runtime, + types: { + MultiAssetId: { + _enum: { + Native: null, + Asset: 'AssetId' + } + } + } +} as Definitions; diff --git a/packages/types/src/interfaces/assetConversion/index.ts b/packages/types/src/interfaces/assetConversion/index.ts new file mode 100644 index 0000000000..7f1de782f7 --- /dev/null +++ b/packages/types/src/interfaces/assetConversion/index.ts @@ -0,0 +1,4 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable */ + +export * from './types.js'; diff --git a/packages/types/src/interfaces/assetConversion/runtime.ts b/packages/types/src/interfaces/assetConversion/runtime.ts new file mode 100644 index 0000000000..2c1a5926a3 --- /dev/null +++ b/packages/types/src/interfaces/assetConversion/runtime.ts @@ -0,0 +1,72 @@ +// Copyright 2017-2023 @polkadot/types authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { DefinitionsCall } from '../../types/index.js'; + +export const runtime: DefinitionsCall = { + AssetConversionApi: [ + { + methods: { + get_reserves: { + description: 'Get pool reserves', + params: [ + { + name: 'asset1', + type: 'MultiAssetId' + }, + { + name: 'asset2', + type: 'MultiAssetId' + } + ], + type: 'Option<(Balance,Balance)>' + }, + quote_price_exact_tokens_for_tokens: { + description: 'Quote price: exact tokens for tokens', + params: [ + { + name: 'asset1', + type: 'MultiAssetId' + }, + { + name: 'asset2', + type: 'MultiAssetId' + }, + { + name: 'amount', + type: 'u128' + }, + { + name: 'include_fee', + type: 'bool' + } + ], + type: 'Option<(Balance)>' + }, + quote_price_tokens_for_exact_tokens: { + description: 'Quote price: tokens for exact tokens', + params: [ + { + name: 'asset1', + type: 'MultiAssetId' + }, + { + name: 'asset2', + type: 'MultiAssetId' + }, + { + name: 'amount', + type: 'u128' + }, + { + name: 'include_fee', + type: 'bool' + } + ], + type: 'Option<(Balance)>' + } + }, + version: 1 + } + ] +}; diff --git a/packages/types/src/interfaces/assetConversion/types.ts b/packages/types/src/interfaces/assetConversion/types.ts new file mode 100644 index 0000000000..3bfdb08be7 --- /dev/null +++ b/packages/types/src/interfaces/assetConversion/types.ts @@ -0,0 +1,15 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable */ + +import type { Enum } from '@polkadot/types-codec'; +import type { AssetId } from '@polkadot/types/interfaces/runtime'; + +/** @name MultiAssetId */ +export interface MultiAssetId extends Enum { + readonly isNative: boolean; + readonly isAsset: boolean; + readonly asAsset: AssetId; + readonly type: 'Native' | 'Asset'; +} + +export type PHANTOM_ASSETCONVERSION = 'assetConversion'; diff --git a/packages/types/src/interfaces/definitions.ts b/packages/types/src/interfaces/definitions.ts index 5fa7097a13..bb33362f2f 100644 --- a/packages/types/src/interfaces/definitions.ts +++ b/packages/types/src/interfaces/definitions.ts @@ -4,6 +4,7 @@ export * from './essentials.js'; // substrate types +export { default as assetConversion } from './assetConversion/definitions.js'; export { default as assets } from './assets/definitions.js'; export { default as aura } from './aura/definitions.js'; export { default as authorship } from './authorship/definitions.js'; diff --git a/packages/types/src/interfaces/types.ts b/packages/types/src/interfaces/types.ts index 087ec33db1..7c09252b32 100644 --- a/packages/types/src/interfaces/types.ts +++ b/packages/types/src/interfaces/types.ts @@ -1,6 +1,7 @@ // Auto-generated via `yarn polkadot-types-from-defs`, do not edit /* eslint-disable */ +export * from './assetConversion/types.js'; export * from './assets/types.js'; export * from './attestations/types.js'; export * from './aura/types.js';