From d9621a145fd6a3bbfb30e5ca535f106d67b9f596 Mon Sep 17 00:00:00 2001 From: igorgogo <76840338+igorgogo@users.noreply.github.com> Date: Mon, 6 Sep 2021 18:05:05 +0800 Subject: [PATCH] Add Spanner (#6058) * added spanner and hammer info * added amplify yml * modified * updated logos and colors for spanner and hammer * updated wss endpoints * added spanner typebundle * removed amplify for pr * fixed lint errors --- packages/apps-config/src/api/spec/index.ts | 2 + packages/apps-config/src/api/spec/spanner.ts | 516 ++++++++++++++++++ .../apps-config/src/endpoints/production.ts | 7 + packages/apps-config/src/ui/colors.ts | 2 + .../src/ui/logos/chains/spanner.png | Bin 0 -> 20777 bytes packages/apps-config/src/ui/logos/index.ts | 3 + .../apps/public/locales/en/apps-config.json | 1 + 7 files changed, 531 insertions(+) create mode 100644 packages/apps-config/src/api/spec/spanner.ts create mode 100644 packages/apps-config/src/ui/logos/chains/spanner.png diff --git a/packages/apps-config/src/api/spec/index.ts b/packages/apps-config/src/api/spec/index.ts index 7e084d962e..a0ecb787cb 100644 --- a/packages/apps-config/src/api/spec/index.ts +++ b/packages/apps-config/src/api/spec/index.ts @@ -81,6 +81,7 @@ import riochain from './riochain'; import robonomics from './robonomics'; import snowbridge from './snowbridge'; import soraSubstrate from './soraSubstrate'; +import spanner from './spanner'; import stafi from './stafi'; import subdao from './subdao'; import subgame from './subgame'; @@ -199,6 +200,7 @@ const spec: Record = { robonomics, snowbridge, 'sora-substrate': soraSubstrate, + spanner, stafi, steam: eave, subdao, diff --git a/packages/apps-config/src/api/spec/spanner.ts b/packages/apps-config/src/api/spec/spanner.ts new file mode 100644 index 0000000000..f5819680b9 --- /dev/null +++ b/packages/apps-config/src/api/spec/spanner.ts @@ -0,0 +1,516 @@ +// Copyright 2017-2021 @polkadot/apps-config authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { OverrideBundleDefinition } from '@polkadot/types/types'; + +// structs need to be in order +/* eslint-disable sort-keys */ + +const definitions: OverrideBundleDefinition = { + types: [ + { + minmax: [0, 104], + types: { + CallOf: 'Call', + DispatchTime: { + _enum: { + At: 'BlockNumber', + After: 'BlockNumber' + } + }, + ScheduleTaskIndex: 'u32', + DelayedOrigin: { + delay: 'BlockNumber', + origin: 'PalletsOrigin' + }, + AuthorityOrigin: 'DelayedOrigin', + StorageValue: 'Vec', + GraduallyUpdate: { + key: 'StorageKey', + targetValue: 'StorageValue', + perBlock: 'StorageValue' + }, + StorageKeyBytes: 'Vec', + StorageValueBytes: 'Vec', + RpcDataProviderId: 'Text', + DataProviderId: 'u8', + TimestampedValue: { + value: 'OracleValue', + timestamp: 'Moment' + }, + TimestampedValueOf: 'TimestampedValue', + OrderedSet: 'Vec', + OrmlAccountData: { + free: 'Balance', + frozen: 'Balance', + reserved: 'Balance' + }, + OrmlBalanceLock: { + amount: 'Balance', + id: 'LockIdentifier' + }, + AuctionInfo: { + bid: 'Option<(AccountId, Balance)>', + start: 'BlockNumber', + end: 'Option' + }, + DelayedDispatchTime: { + _enum: { + At: 'BlockNumber', + After: 'BlockNumber' + } + }, + DispatchId: 'u32', + Price: 'FixedU128', + OrmlVestingSchedule: { + start: 'BlockNumber', + period: 'BlockNumber', + periodCount: 'u32', + perPeriod: 'Compact' + }, + VestingScheduleOf: 'OrmlVestingSchedule', + PoolInfo: { + total_shares: 'Balance', + total_rewards: 'Balance', + total_withdrawn_rewards: 'Balance' + }, + Share: 'u128', + OracleValue: 'FixedU128', + DpoInfo: 'DpoInfoV1', + Target: 'TargetV1', + DpoMemberInfo: 'DpoMemberInfoV1', + TravelCabinBuyerInfo: 'TravelCabinBuyerInfoV1', + TravelCabinIndex: 'u32', + TravelCabinInventoryIndex: 'u16', + DpoIndex: 'u32', + TravelCabinInfo: { + name: 'Text', + creator: 'AccountId', + token_id: 'CurrencyId', + index: 'TravelCabinIndex', + deposit_amount: 'Balance', + bonus_total: 'Balance', + yield_total: 'Balance', + maturity: 'BlockNumber' + }, + TravelCabinBuyerInfoV1: { + buyer: 'Buyer', + purchase_blk: 'BlockNumber', + yield_withdrawn: 'Balance', + fare_withdrawn: 'bool', + blk_of_last_withdraw: 'BlockNumber' + }, + MilestoneRewardInfo: { + token_id: 'CurrencyId', + deposited: 'Balance', + milestones: 'Vec<(Balance, Balance)>' + }, + DpoState: { + _enum: ['CREATED', 'ACTIVE', 'RUNNING', 'FAILED', 'COMPLETED'] + }, + TargetV1: { + _enum: { + Dpo: '(DpoIndex, u8)', + TravelCabin: 'TravelCabinIndex' + } + }, + Buyer: { + _enum: { + Dpo: 'DpoIndex', + Passenger: 'AccountId', + InvalidBuyer: null + } + }, + DpoInfoV1: { + index: 'DpoIndex', + name: 'Text', + token_id: 'CurrencyId', + manager: 'AccountId', + target: 'TargetV1', + target_maturity: 'BlockNumber', + target_amount: 'Balance', + target_yield_estimate: 'Balance', + target_bonus_estimate: 'Balance', + amount_per_seat: 'Balance', + empty_seats: 'u8', + fifo: 'Vec', + vault_deposit: 'Balance', + vault_withdraw: 'Balance', + vault_yield: 'Balance', + vault_bonus: 'Balance', + total_yield_received: 'Balance', + total_bonus_received: 'Balance', + total_milestone_received: 'Balance', + blk_of_last_yield: 'Option', + blk_of_dpo_filled: 'Option', + expiry_blk: 'BlockNumber', + state: 'DpoState', + referrer: 'Option', + fare_withdrawn: 'bool', + direct_referral_rate: 'u32', + fee: 'u32', + fee_slashed: 'bool' + }, + DpoMemberInfoV1: { + buyer: 'Buyer', + number_of_seats: 'u8', + referrer: 'Referrer' + }, + Referrer: { + _enum: { + None: null, + MemberOfDpo: 'Buyer', + External: '(AccountId, Buyer)' + } + }, + PaymentType: { + _enum: [ + 'Deposit', + 'Bonus', + 'MilestoneReward', + 'Yield', + 'UnusedFund', + 'WithdrawOnCompletion', + 'WithdrawOnFailure' + ] + }, + DpoInfoV2: { + index: 'DpoIndex', + name: 'Text', + token_id: 'CurrencyId', + manager: 'AccountId', + target: 'TargetV2', + target_maturity: 'BlockNumber', + target_amount: 'Balance', + target_yield_estimate: 'Balance', + target_bonus_estimate: 'Balance', + issued_shares: 'Balance', + share_rate: '(Balance, Balance)', + fifo: 'Vec', + base_fee: 'u32', + fee: 'u32', + fee_slashed: 'bool', + vault_deposit: 'Balance', + vault_withdraw: 'Balance', + vault_yield: 'Balance', + vault_bonus: 'Balance', + total_fund: 'Balance', + total_yield_received: 'Balance', + total_bonus_received: 'Balance', + total_milestone_received: 'Balance', + blk_of_last_yield: 'Option', + blk_of_dpo_filled: 'Option', + expiry_blk: 'BlockNumber', + state: 'DpoState', + referrer: 'Option', + fare_withdrawn: 'bool', + direct_referral_rate: 'u32' + }, + TargetV2: { + _enum: { + Dpo: '(DpoIndex, Balance)', + TravelCabin: 'TravelCabinIndex' + } + }, + DpoMemberInfoV2: { + buyer: 'Buyer', + share: 'Balance', + referrer: 'Referrer' + }, + TravelCabinBuyerInfoV2: { + buyer: 'Buyer', + purchase_blk: 'BlockNumber', + yield_withdrawn: 'Balance', + fare_withdrawn: 'bool' + }, + ExchangeRate: 'FixedU128', + Ratio: 'FixedU128', + Rate: 'FixedU128', + TradingPair: '(CurrencyId, CurrencyId)', + TradingPairStatus: { + _enum: { + NotEnabled: null, + Provisioning: 'TradingPairProvisionParameters', + Enabled: null + } + }, + TradingPairProvisionParameters: { + min_contribution: '(Balance, Balance)', + target_provision: '(Balance, Balance)', + accumulated_provision: '(Balance, Balance)', + not_before: 'BlockNumber' + }, + Amount: 'i128', + AmountOf: 'Amount', + TokenSymbol: { + _enum: ['BOLT', 'WUSD', 'BBOT', 'NCAT', 'PLKT'] + }, + CurrencyId: { + _enum: { + Token: 'TokenSymbol', + DexShare: '(TokenSymbol, TokenSymbol)' + } + }, + CurrencyIdOf: 'CurrencyId', + PoolId: { + _enum: { + DexYieldFarming: 'CurrencyId' + } + } + } + }, + { + minmax: [105, undefined], + types: { + CallOf: 'Call', + DispatchTime: { + _enum: { + At: 'BlockNumber', + After: 'BlockNumber' + } + }, + ScheduleTaskIndex: 'u32', + DelayedOrigin: { + delay: 'BlockNumber', + origin: 'PalletsOrigin' + }, + AuthorityOrigin: 'DelayedOrigin', + StorageValue: 'Vec', + GraduallyUpdate: { + key: 'StorageKey', + targetValue: 'StorageValue', + perBlock: 'StorageValue' + }, + StorageKeyBytes: 'Vec', + StorageValueBytes: 'Vec', + RpcDataProviderId: 'Text', + DataProviderId: 'u8', + TimestampedValue: { + value: 'OracleValue', + timestamp: 'Moment' + }, + TimestampedValueOf: 'TimestampedValue', + OrderedSet: 'Vec', + OrmlAccountData: { + free: 'Balance', + frozen: 'Balance', + reserved: 'Balance' + }, + OrmlBalanceLock: { + amount: 'Balance', + id: 'LockIdentifier' + }, + AuctionInfo: { + bid: 'Option<(AccountId, Balance)>', + start: 'BlockNumber', + end: 'Option' + }, + DelayedDispatchTime: { + _enum: { + At: 'BlockNumber', + After: 'BlockNumber' + } + }, + DispatchId: 'u32', + Price: 'FixedU128', + OrmlVestingSchedule: { + start: 'BlockNumber', + period: 'BlockNumber', + periodCount: 'u32', + perPeriod: 'Compact' + }, + VestingScheduleOf: 'OrmlVestingSchedule', + PoolInfo: { + total_shares: 'Balance', + total_rewards: 'Balance', + total_withdrawn_rewards: 'Balance' + }, + Share: 'u128', + OracleValue: 'FixedU128', + DpoInfo: 'DpoInfoV2', + Target: 'TargetV2', + DpoMemberInfo: 'DpoMemberInfoV2', + TravelCabinBuyerInfo: 'TravelCabinBuyerInfoV2', + TravelCabinIndex: 'u32', + TravelCabinInventoryIndex: 'u16', + DpoIndex: 'u32', + TravelCabinInfo: { + name: 'Text', + creator: 'AccountId', + token_id: 'CurrencyId', + index: 'TravelCabinIndex', + deposit_amount: 'Balance', + bonus_total: 'Balance', + yield_total: 'Balance', + maturity: 'BlockNumber' + }, + TravelCabinBuyerInfoV1: { + buyer: 'Buyer', + purchase_blk: 'BlockNumber', + yield_withdrawn: 'Balance', + fare_withdrawn: 'bool', + blk_of_last_withdraw: 'BlockNumber' + }, + MilestoneRewardInfo: { + token_id: 'CurrencyId', + deposited: 'Balance', + milestones: 'Vec<(Balance, Balance)>' + }, + DpoState: { + _enum: ['CREATED', 'ACTIVE', 'RUNNING', 'FAILED', 'COMPLETED'] + }, + TargetV1: { + _enum: { + Dpo: '(DpoIndex, u8)', + TravelCabin: 'TravelCabinIndex' + } + }, + Buyer: { + _enum: { + Dpo: 'DpoIndex', + Passenger: 'AccountId', + InvalidBuyer: null + } + }, + DpoInfoV1: { + index: 'DpoIndex', + name: 'Text', + token_id: 'CurrencyId', + manager: 'AccountId', + target: 'TargetV1', + target_maturity: 'BlockNumber', + target_amount: 'Balance', + target_yield_estimate: 'Balance', + target_bonus_estimate: 'Balance', + amount_per_seat: 'Balance', + empty_seats: 'u8', + fifo: 'Vec', + vault_deposit: 'Balance', + vault_withdraw: 'Balance', + vault_yield: 'Balance', + vault_bonus: 'Balance', + total_yield_received: 'Balance', + total_bonus_received: 'Balance', + total_milestone_received: 'Balance', + blk_of_last_yield: 'Option', + blk_of_dpo_filled: 'Option', + expiry_blk: 'BlockNumber', + state: 'DpoState', + referrer: 'Option', + fare_withdrawn: 'bool', + direct_referral_rate: 'u32', + fee: 'u32', + fee_slashed: 'bool' + }, + DpoMemberInfoV1: { + buyer: 'Buyer', + number_of_seats: 'u8', + referrer: 'Referrer' + }, + Referrer: { + _enum: { + None: null, + MemberOfDpo: 'Buyer', + External: '(AccountId, Buyer)' + } + }, + PaymentType: { + _enum: [ + 'Deposit', + 'Bonus', + 'MilestoneReward', + 'Yield', + 'UnusedFund', + 'WithdrawOnCompletion', + 'WithdrawOnFailure' + ] + }, + DpoInfoV2: { + index: 'DpoIndex', + name: 'Text', + token_id: 'CurrencyId', + manager: 'AccountId', + target: 'TargetV2', + target_maturity: 'BlockNumber', + target_amount: 'Balance', + target_yield_estimate: 'Balance', + target_bonus_estimate: 'Balance', + issued_shares: 'Balance', + share_rate: '(Balance, Balance)', + fifo: 'Vec', + base_fee: 'u32', + fee: 'u32', + fee_slashed: 'bool', + vault_deposit: 'Balance', + vault_withdraw: 'Balance', + vault_yield: 'Balance', + vault_bonus: 'Balance', + total_fund: 'Balance', + total_yield_received: 'Balance', + total_bonus_received: 'Balance', + total_milestone_received: 'Balance', + blk_of_last_yield: 'Option', + blk_of_dpo_filled: 'Option', + expiry_blk: 'BlockNumber', + state: 'DpoState', + referrer: 'Option', + fare_withdrawn: 'bool', + direct_referral_rate: 'u32' + }, + TargetV2: { + _enum: { + Dpo: '(DpoIndex, Balance)', + TravelCabin: 'TravelCabinIndex' + } + }, + DpoMemberInfoV2: { + buyer: 'Buyer', + share: 'Balance', + referrer: 'Referrer' + }, + TravelCabinBuyerInfoV2: { + buyer: 'Buyer', + purchase_blk: 'BlockNumber', + yield_withdrawn: 'Balance', + fare_withdrawn: 'bool' + }, + ExchangeRate: 'FixedU128', + Ratio: 'FixedU128', + Rate: 'FixedU128', + TradingPair: '(CurrencyId, CurrencyId)', + TradingPairStatus: { + _enum: { + NotEnabled: null, + Provisioning: 'TradingPairProvisionParameters', + Enabled: null + } + }, + TradingPairProvisionParameters: { + min_contribution: '(Balance, Balance)', + target_provision: '(Balance, Balance)', + accumulated_provision: '(Balance, Balance)', + not_before: 'BlockNumber' + }, + Amount: 'i128', + AmountOf: 'Amount', + TokenSymbol: { + _enum: ['BOLT', 'WUSD', 'BBOT', 'NCAT', 'PLKT'] + }, + CurrencyId: { + _enum: { + Token: 'TokenSymbol', + DexShare: '(TokenSymbol, TokenSymbol)' + } + }, + CurrencyIdOf: 'CurrencyId', + PoolId: { + _enum: { + DexYieldFarming: 'CurrencyId' + } + } + } + } + ] +}; + +export default definitions; diff --git a/packages/apps-config/src/endpoints/production.ts b/packages/apps-config/src/endpoints/production.ts index dc24ae66ab..06cc764d5c 100644 --- a/packages/apps-config/src/endpoints/production.ts +++ b/packages/apps-config/src/endpoints/production.ts @@ -162,6 +162,13 @@ export function createProduction (t: TFunction, firstOnly: boolean, withSort: bo 'SORA Community (Lux8)': 'wss://sora.lux8.net' } }, + { + info: 'spanner', + text: t('rpc.spanner', 'Spanner', { ns: 'apps-config' }), + providers: { + Spanner: 'wss://wss.spannerprotocol.com' + } + }, { info: 'stafi', isDisabled: true, // Cannot find type ChainId diff --git a/packages/apps-config/src/ui/colors.ts b/packages/apps-config/src/ui/colors.ts index 9cab5dd915..dac0a281a5 100644 --- a/packages/apps-config/src/ui/colors.ts +++ b/packages/apps-config/src/ui/colors.ts @@ -77,6 +77,7 @@ const chainSakura = '#ff5995'; const chainShadow = '#ffa940'; const chainShiden = '#5923B2'; const chainSnakenet = '#f653a2'; +const chainSpanner = '#EC3D3D'; const chainWestend = '#da68a7'; const chainWhala = '#03f3f3'; const chainGalois = '#000000'; @@ -264,6 +265,7 @@ export const chainColors: Record = Object.entries({ Shadow: chainShadow, sherpax: chainChainx, Shiden: chainShiden, + Spanner: chainSpanner, Statemine: specStatemine, 'Statemine Test': specStatemine, Statemint: specStatemint, diff --git a/packages/apps-config/src/ui/logos/chains/spanner.png b/packages/apps-config/src/ui/logos/chains/spanner.png new file mode 100644 index 0000000000000000000000000000000000000000..7e84574f2e63356ee66473374e696d8387ce1455 GIT binary patch literal 20777 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 = { shiden: chainShiden, snakenet: chainSnakenet, 'sora-substrate': nodeSora, + spanner: chainSpanner, stafi: nodeStafi, statemine: nodeStatemine, statemint: nodeStatemine, diff --git a/packages/apps/public/locales/en/apps-config.json b/packages/apps/public/locales/en/apps-config.json index ecab8ccea5..f1454a10f0 100644 --- a/packages/apps/public/locales/en/apps-config.json +++ b/packages/apps/public/locales/en/apps-config.json @@ -65,6 +65,7 @@ "rpc.prod.robonomics": "Robonomics", "rpc.prod.sora-substrate": "SORA", "rpc.prod.stafi": "Stafi", + "rpc.prod.spanner": "Spanner", "rpc.prod.subgame": "SubGame", "rpc.prod.subsocial": "Subsocial", "rpc.prod.uniarts": "UniArts",